Как получить нестандартный DeathMsg?

Сообщения
8
Реакции
1
Допустим на сервере есть нестандартное оружие, или сторожевая пушка, лазер.

При убийстве с этого нестандартного оружия в консоль игроку пишет:
** ATTACKER killed VICTIM with a headshot from SENTYGUN **
А в консоль самого сервера при этом
L 07/28/2023 - 10:01:13: "ATTACKER <644><BOT><TERRORIST>" killed "VICTIM <637><BOT><CT>" with "world"

Нужно получить в стороннем плагине при убийстве, не влезая в код нестандартной пушки/объекта, именно значение SENTRYGUN, но получается только world, есть ли возможность это сделать?
 
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
Ничего не понятно. Причём тут лог сервера к DeathMsg?
 
Сообщения
8
Реакции
1
Nordic Warrior, может не лучшим образом сформулировано, но вопрос в том каким образом получить значение с нестандартным оружием, что выводит игроку в консоль при фраге, типа "** ATTACKER killed VICTIM with a headshot from SENTYGUN **" из стороннего плагина?
 
Сообщения
397
Реакции
221
Помог
13 раз(а)
Jimmy, можешь прикрепить исходник какой нибудь пушки?
 
Сообщения
8
Реакции
1
b0t.,в этом и смысл, что код плагинов, которые нестандартное значение отдают не должен быть использован, потому что на сервере он может быть любой, но пример вот


public message_DeathMsg(msg_id, msg_dest, id)
{
static szTruncatedWeapon[33], iattacker, ivictim

get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon))

iattacker = get_msg_arg_int(1)
ivictim = get_msg_arg_int(2)

if(!is_user_connected(iattacker) || iattacker == ivictim)
return 0

if (!zp_get_user_zombie(iattacker))
{


if(equal(szTruncatedWeapon, "knife") && get_user_weapon(iattacker) == CSW_KNIFE)
{
if(g_KNIFE3[iattacker])
set_msg_arg_string(4, "DraGon Katana")
}



if(equal(szTruncatedWeapon, "knife") && get_user_weapon(iattacker) == CSW_KNIFE)
{
if(!g_KNIFE1[iattacker] && !g_KNIFE2[iattacker] && !g_KNIFE3[iattacker] && !g_KNIFE4[iattacker] && !g_KNIFE5[iattacker] && !g_KNIFE6[iattacker] && !g_KNIFE7[iattacker] && !zp_get_user_zombie(iattacker))
set_msg_arg_string(4, "knife")
}
}
if (zp_get_user_zombie(iattacker))
{
if(equal(szTruncatedWeapon, "knife") && get_user_weapon(iattacker) == CSW_KNIFE)
{
if(!g_KNIFE1[iattacker] && !g_KNIFE2[iattacker] && !g_KNIFE3[iattacker] && !g_KNIFE4[iattacker] && !g_KNIFE5[iattacker] && !g_KNIFE6[iattacker]&& !g_KNIFE7[iattacker] && !zp_get_user_zombie(iattacker))
set_msg_arg_string(4, "knife")
}
}
return 0
}

Виталя killed Андрей with DraGon Katana

В этом случае "DraGon Katana" нужно получить в другом плагине
 
Последнее редактирование:
Сообщения
397
Реакции
221
Помог
13 раз(а)
Jimmy, ну тогда ловить и сравнивать наверное...
На мой взгляд лучше сразу в момент создания объекта указывать его имя(спойлер)

Код:
rg_set_iteminfo(iItem,ItemInfo_pszName,"SENTRYGUN");
 
  • Нравится
Реакции: ssx
Сообщения
8
Реакции
1
b0t., нет, плагины самого оружия/объекта, с которого делается фраг не должны быть модифицированы, они уже так или иначе отдают значение с названием оружия на сервер при убийстве "set_msg_arg_string(4, "DraGon Katana")"
 
Сообщения
397
Реакции
221
Помог
13 раз(а)
Jimmy, я не о том.
Отдают то понятно, но можно без этого. Сразу в момент создания задать имя, тогда и отправлять ни чего не придётся. Сервер сам справится
 
Сообщения
8
Реакции
1
Нет, это насколько я понял, не подходит. Мне не нужно задавать имя, на сервере может быть много разных плагинов с оружием/объектами, у которых уже есть имена, заданные их плагинами, и мне о них ничего неизвестно, кроме того что они заданы и выводятся при смерти игроку (
set_msg_arg_string(4, "DraGon Katana")), вот их мне нужно получить в момент смерти из своего плагина. Может как-то можно спарсить консоль или еще какой вариант?
 

hajimura

Е777КХ05
Сообщения
290
Реакции
228
Помог
6 раз(а)
Jimmy, при выдаче пушки задавай ей кастомный импульс. При убийстве игрока проверяй импульс и в случае совпадения выводи в консоль сервера свой лог
 
Сообщения
855
Реакции
532
Помог
13 раз(а)
b0t., нет, плагины самого оружия/объекта, с которого делается фраг не должны быть модифицированы, они уже так или иначе отдают значение с названием оружия на сервер при убийстве "set_msg_arg_string(4, "DraGon Katana")"
малой кровью не получится
меняй класснейм объекта

у пушки, кстати, тоже можно класснейм менять, но есть пару нюансов
 
Сообщения
855
Реакции
532
Помог
13 раз(а)
1. пушка должна быть наименована как "weapon_<ваше имя>", иначе в слоте выбрать не получится
2. должен быть заслан веапонлист на слот пушки с кастомным именем, иначе выбрать так же не получится
3. у игрока может быть в инвентаре как пушка референс, так и пушка кастомная с одинаковыми m_iId, но слот будет занимать лишь одна из них (очевидно та, на которую заслан веапонлист)
4. get_weaponame в стоке drop_weapons не будет возвращать имя для кастомной пушки, поэтому у старых модов придется исправлять код на дроп по var_classname

для первого пункта можно сделать хук на выборку, чтобы не ложить файл веапонлиста в дефолтную папку sprites
например register_clcmd("dnd/weapon_m24", "clcmd_select");
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу