Half-Life и Adrenaline Gamer форум

Всё об игре в Халф-Лайф и АГ
Текущее время: 18 дек 2018, 18:02

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 15 янв 2018, 15:22 
Не в сети
Зарегистрирован:
18 янв 2016, 20:31
Последнее посещение:
27 ноя 2018, 03:24
Сообщения: 41
Откуда: Yoshkar-Ola
Нужна помощь по изменению оружия в logmessage при выполнении ExecuteHamB(Ham_Killed) на игроке.
При обычном вызове сервер логирует как убийство миром (world):
Код:
"MXPLRS | Kirill<49><STEAM><CT>" killed "4yBa4oK :D<48><STEAM><TERRORIST>" with "world"

Хотелось бы видеть там использованное (либо намеренно указанное) оружие - в моем случае гранату:
Код:
"MXPLRS | Kirill<49><STEAM><CT>" killed "4yBa4oK :D<48><STEAM><TERRORIST>" with "grenade"

Испытал метод stock log_kill отсюда, но первое сообщение от world всё равно появляется (я так понял что оно блочит только вывод на экран).


Вернуться к началу
 Профиль 
  
СообщениеДобавлено: 15 янв 2018, 15:47 
Не в сети
Аватара пользователя
Зарегистрирован:
22 окт 2014, 19:26
Последнее посещение:
16 дек 2018, 22:03
Сообщения: 952
Код:
   register_message(get_user_msgid("DeathMsg"), "Message_DeathMsg")
}

public Message_DeathMsg() {
   
   
   static const nameWeapon[] = "rocket_crowbar"
   static text[64]
   
   get_msg_arg_string(3, text, 63)
   
   if (equal(text, nameWeapon))
      set_msg_arg_string( 3, "crowbar" )
      
   return PLUGIN_CONTINUE
}
this code frome here (v 2.5):
viewtopic.php?f=19&t=2525

so u can change :
Код:
static const nameWeapon[] = "rocket_crowbar"
Код:
set_msg_arg_string( 3, "crowbar" )
to
Код:
static const nameWeapon[] = "world"
Код:
set_msg_arg_string( 3, "grenade" )

_________________
https://vk.com/kgbaghl


Вернуться к началу
 Профиль 
  
СообщениеДобавлено: 15 янв 2018, 16:35 
Не в сети
Зарегистрирован:
18 янв 2016, 20:31
Последнее посещение:
27 ноя 2018, 03:24
Сообщения: 41
Откуда: Yoshkar-Ola
Спасибо. Идея понятна, но не работает. Сейчас ищу различия с реализацией под CS.


Вернуться к началу
 Профиль 
  
СообщениеДобавлено: 15 янв 2018, 16:58 
Не в сети
Аватара пользователя
Зарегистрирован:
22 окт 2014, 19:26
Последнее посещение:
16 дек 2018, 22:03
Сообщения: 952
I think to a large extent it does not differ
Especially if a new entity is used
What exactly do you want to solve?

_________________
https://vk.com/kgbaghl


Вернуться к началу
 Профиль 
  
СообщениеДобавлено: 15 янв 2018, 17:13 
Не в сети
Зарегистрирован:
18 янв 2016, 20:31
Последнее посещение:
27 ноя 2018, 03:24
Сообщения: 41
Откуда: Yoshkar-Ola
Одно различие есть - порядок переменных. В CS третьим идет headshot:
Код:
/* Creates a death message. */
stock make_deathmsg(killer, victim, headshot, const weapon[])
{
   message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0,0,0}, 0);
   write_byte(killer);
   write_byte(victim);

   new mod_name[32];
   get_modname(mod_name, 31);
   if (equal(mod_name, "cstrike") || equal(mod_name, "czero") || equal(mod_name, "csv15") || equal(mod_name, "cs13"))
      write_byte(headshot);
   write_string(weapon);
   message_end();

   return 1;
}
Поменял значение на 4, и даже перепроверил:
Код:
public Message_DeathMsg() {
   static const nameWeapon[] = "world";
   static text[64];

   get_msg_arg_string(4, text, 63);
   server_print(text);
   if (equal(text, nameWeapon))
      set_msg_arg_string(4, "grenade");
   server_print(get_msg_arg_string(4);
   return PLUGIN_CONTINUE;
}
Цитата:
>> world <<
"MXPLRS | Kirill<56><STEAM><CT>" killed "Player<58><STEAM><TERRORIST>" with "world"
Странно, но не поменялось...

abdobiskra писал(а):
What exactly do you want to solve?
Я пытаюсь сделать KillBomb для ZP 4.3. При взрыве гранаты выполняется следующий код:
Код:
   while((victim=engfunc(EngFunc_FindEntityInSphere,victim,flOrigin,RADIUS)) != 0){
      if(pev(victim,pev_takedamage) != DAMAGE_NO && pev(victim,pev_solid) != SOLID_NOT){
         if(!is_user_alive(victim) || victim==id || !zp_get_user_zombie(victim) || zp_get_user_nemesis(victim))
            continue;
         ExecuteHamB(Ham_Killed, victim, id, 2)
         zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id)+2);
      }
   }
Причина, по которой мне необходимо изменять значение - HLStatsX. Учет world как оружия в нем не ведется.


Вернуться к началу
 Профиль 
  
СообщениеДобавлено: 15 янв 2018, 18:27 
Не в сети
Аватара пользователя
Зарегистрирован:
22 окт 2014, 19:26
Последнее посещение:
16 дек 2018, 22:03
Сообщения: 952
MXPLRS|Kirill писал(а):
Одно различие есть - порядок переменных. В CS третьим идет headshot:
Yes I forgot it contains 4.

Цитата:
Я пытаюсь сделать KillBomb для ZP 4.3. При взрыве гранаты выполняется следующий код:
Код:
   while((victim=engfunc(EngFunc_FindEntityInSphere,victim,flOrigin,RADIUS)) != 0){
      if(pev(victim,pev_takedamage) != DAMAGE_NO && pev(victim,pev_solid) != SOLID_NOT){
         if(!is_user_alive(victim) || victim==id || !zp_get_user_zombie(victim) || zp_get_user_nemesis(victim))
            continue;
         ExecuteHamB(Ham_Killed, victim, id, 2)
         zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id)+2);
      }
   }
Причина, по которой мне необходимо изменять значение - HLStatsX. Учет world как оружия в нем не ведется.
I think you can find many answers in Rocket_Crowbar_2.5 plug-in ))
ex:
1) set your entity classname if they do not contain it after they are created
why that ? ... bcz there many entitys has this name ..This will determine which entity is intended to replace.
Код:
entity_set_string(Ent,EV_SZ_classname,"rocket_crowbar")
2) Then you can replace them :
Код:
public Message_DeathMsg() {
   
   
   static const nameWeapon[] = "rocket_crowbar"
   static text[64]
   
   get_msg_arg_string(4, text, 63)
   
   if (equal(text, nameWeapon))
      set_msg_arg_string( 4, "crowbar" )
      
   return PLUGIN_CONTINUE
}

3) about frag calculation you can use :
Код:
ExecuteHamB( Ham_TakeDamage, pEntity, Ent , pevInflictor, flAdjustedDamage, DMG_BLAST | 8);
Clearer ==>
Код:
ExecuteHamB( Ham_TakeDamage, victim,  "rocket_crowbar" , killer, Damage, DMG_BLAST);
Will work like an engine.

_________________
https://vk.com/kgbaghl


Вернуться к началу
 Профиль 
  
СообщениеДобавлено: 15 янв 2018, 19:53 
Не в сети
Зарегистрирован:
18 янв 2016, 20:31
Последнее посещение:
27 ноя 2018, 03:24
Сообщения: 41
Откуда: Yoshkar-Ola
Мне помогла замена Ham_Killed на Ham_TakeDamage.
Конечно в этом случае надо получать HP игрока, который get_user_health почему-то всегда выдает на 1.33(3) меньше чем в игре... видимо из-за ZP :%)
Пункты 1 и 2 даже не потребовались.


Вернуться к началу
 Профиль 
  
СообщениеДобавлено: 15 янв 2018, 20:38 
Не в сети
Аватара пользователя
Зарегистрирован:
22 окт 2014, 19:26
Последнее посещение:
16 дек 2018, 22:03
Сообщения: 952
In fact, I did not understand what you would like to explain.

_________________
https://vk.com/kgbaghl


Вернуться к началу
 Профиль 
  
СообщениеДобавлено: 16 янв 2018, 04:57 
Не в сети
Зарегистрирован:
18 янв 2016, 20:31
Последнее посещение:
27 ноя 2018, 03:24
Сообщения: 41
Откуда: Yoshkar-Ola
abdobiskra писал(а):
In fact, I did not understand what you would like to explain.
Replacing Ham_Killed to Ham_TakeDamage helped to solve problem, but in that way I must set damage for every execution.

get_user_health returns incorrect amount of health, less in 1.33 times (got value * 1.33 = real HP).
Classname and replacing is not required, because _explode(env) executed from think have env variable that I used for Ham_TakeDamage, and victim killed with correct weapon (grenade).

Issue still opened due incorrect getting of player's HP, and, maybe, we'll find one more way to block original logmessage and replace it with manually written by log_message.


Вернуться к началу
 Профиль 
  
СообщениеДобавлено: 16 янв 2018, 17:44 
Не в сети
Site Admin
Зарегистрирован:
01 июн 2010, 01:27
Последнее посещение:
16 дек 2018, 16:23
Сообщения: 6701
Можно в Killed включать хук на FM_AlertMessage и заменять строчку для лога, а на выходе отключать хук.


Вернуться к началу
 Профиль 
  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB