Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

Отображение убийств только если тебя или ты

Статус пользователя ssx
сообщение 3.1.2016, 17:50
Сообщение #1


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Всем привет!
Играя на HLDM/CSDM сервере при большом кол-ве игроков не уследить кто тебя убил или ты кого ..

Пришла идея написать плагин:
Отображать игроку инфу об убийстве только если его ник в этом убийстве фигурирует.

То есть если тебя убили или ты кого-то убил - отображать.

Не знаю с чего начать и как правильно реализовать задумку. Подскажите пожалуйста.



[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя ThisIsSparta
сообщение 3.1.2016, 18:02
Сообщение #2
Стаж: 11 лет

Сообщений: 566
Благодарностей: 307
Полезность: 600

ssx,
CS:GO Features / Kill Assists может тут найдешь от чего оттолкнуться)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.1.2016, 19:10
Сообщение #3


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Цитата(ThisIsSparta @ 3.1.2016, 17:58) *
ssx,
CS:GO Features / Kill Assists может тут найдешь от чего оттолкнуться)

Не совсем все понятно мне в коде ..

пока что нашел как блокировать Death Message Block https://forums.alliedmods.net/showthread.php?t=41078
Так же нашел Fake Death Messages https://forums.alliedmods.net/showthread.php?t=830

Изучаю .. по моей логики, нужно блокировать все сообщения а затем вручную рисовать только двум игрокам (убийце и жертве) сообщения кто кого убил ..

Вот как реализовать - не знаю.


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 3.1.2016, 19:11
Сообщение #4
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Инфа об убийстве – результат 'действия' месседжа DeathMsg, его структура для HL:
Код
byte    KillerID  
byte    VictimID  
string  TruncatedWeaponName

Собственно, всё просто: если index игрока не совпадает с KillerID или VictimID – месседж он получить не должен.

Но есть одна проблема: месседж шлётся как MSG_ALL (reliable to all), один – сразу всем. Поэтому оригинальный месседж придётся блокировать, а дальше самостоятельно рассылать копии, но уже персонально: как MSG_ONE.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.1.2016, 19:24
Сообщение #5


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Нашел
http://amxxmodx.ru/core/message_stocksinc/...tve-igroka.html

П.С.

А интересно, в HL есть значек хедшота ?
Реально ли запилить что бы сразу отображалось хед или нет ?
Сами хедшоты в ХЛ есть и отлавливаются так же как и в КС:
if (HeadShot(victim))


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 3.1.2016, 19:45
Сообщение #6
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

ssx, https://wiki.alliedmods.net/Half-life_1_game_events#DeathMsg
В сообщении ХЛ хедшотов нет
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.1.2016, 19:47
Сообщение #7


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Первая часть плагина: блокировка сообщений
Код:
#include <amxmodx>

public plugin_init() {
register_plugin("Death Message Blocker","1.2","Jordan44053");
register_message(get_user_msgid("DeathMsg"),"message");
}

public message(msg_id,msg_dest,msg_entity)
{
if(msg_id == get_user_msgid("DeathMsg"))
{
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}


Теперь буду писать отлов убийства и пробовать рисовать киллеру и жертве инфу об этом .


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 3.1.2016, 19:54
Сообщение #8
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

msgid в функции проверять не нужно: при регистрации как раз ставится фильтр на message id smile.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.1.2016, 20:37
Сообщение #9


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Не получается создать сообщение вообще ..

Код:
#include <amxmodx>

public plugin_init()
{
register_plugin("Death Messages", "1.0", "blablabla")
register_event("DeathMsg", "OnDeathMsg", "a")
}

public OnDeathMsg()
{
new killer = read_data(1)
new victim = read_data(2)
new bodypart = read_data(3)
new weapon = read_data(4)

make_deathmsg(killer,victim,bodypart, weapon)
}


Отредактировал: ssx, - 3.1.2016, 20:40


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 3.1.2016, 20:43
Сообщение #10
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Не bodypart, а headshot :)

Цитата(message_stocks.inc)
Код:
/* Creates a death message. */
stock make_deathmsg(killer, victim, headshot, const weapon[])


Не получается, потому что строки читаются иначе, нежели integer'ы:
Код:
new weapon[32]
read_data( 4, weapon, charsmax(weapon) )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.1.2016, 20:54
Сообщение #11


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

При таком коде отображает все убийства но вместо оружия значек черепок.

Что-то не правильно оно передает оружие ..

Код:
#include <amxmodx>

public plugin_init()
{
register_plugin("Death Messages", "1.0", "blablabla")
register_event("DeathMsg", "OnDeathMsg", "a")
}

public OnDeathMsg()
{
new killer = read_data(1)
new victim = read_data(2)
new headshot = read_data(3)
new weapon[32]
read_data( 4, weapon, charsmax(weapon) )

make_deathmsg(killer,victim,headshot, weapon)

}


Я понял .. нужен блок

Код:
stock const g_weapon_names[][] ={
"", // NULL
"p228", "shield","scout","grenade",
"xm1014","c4","mac10","aug","smokegrenade",
"elite","fiveseven","ump45","sg550","galil",
"famas","usp","glock18","awp","mp5navy",
"m249","m3","m4a1","tmp","g3sg1","flashbang",
"deagle","sg552","ak47","knife","p90"
}

Только с именами для ХЛ ..

Не могу нагуглить для ХЛ .


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 3.1.2016, 20:57
Сообщение #12
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Какой в попу блок smile.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.1.2016, 21:00
Сообщение #13


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Safety1st,
а что не так ?



Вот последний код что начеркал .. делаю сразу под кс 1.6 и под ХЛ .
Код:
#include <amxmodx>

public plugin_init()
{
register_plugin("Death Messages", "1.0", "blablabla")
new mod_name[32];
get_modname(mod_name, 31);
if (equal(mod_name, "cstrike") )
{
register_event("DeathMsg", "OnDeathMsg", "a")
}
else
{
register_event("DeathMsg", "OnDeathMsg_HL", "a")
}
}

public OnDeathMsg()
{
new killer = read_data(1)
new victim = read_data(2)
new headshot = read_data(3)
new weapon[32]
read_data( 4, weapon, charsmax(weapon) )

make_deathmsg(killer,victim,headshot, weapon)
}

public OnDeathMsg_HL()
{
new killer = read_data(1)
new victim = read_data(2)
new weapon[32]
read_data( 4, weapon, charsmax(weapon) )

make_deathmsg_hl(killer,victim, weapon)
}
stock make_deathmsg_hl(killer, victim, const weapon[])
{
message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0,0,0}, 0);
write_byte(killer);
write_byte(victim);
write_string(weapon);
message_end();

return 1;
}


Отредактировал: ssx, - 3.1.2016, 21:00


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 3.1.2016, 21:04
Сообщение #14
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Блок тебе не нужен.

Осиль плагин сначала для одной игры smile.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.1.2016, 21:10
Сообщение #15


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

В КС 1.6 Все работает отлично.
В ХЛ же отображается как убийство черепком а в консоли пишет
Player1 killed Player2 with
То есть не пишет с чего убили.

Пока что осиливаю эту часть .. следующим этапом будет "отображать только убийцу и жертве"

Отредактировал: ssx, - 3.1.2016, 21:11


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 3.1.2016, 21:12
Сообщение #16
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

В HL только три 'куска' у месседжа, а ты упорно читаешь 4-й smile.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.1.2016, 21:16
Сообщение #17


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Цитата(Safety1st @ 3.1.2016, 21:07) *
В HL только три 'куска' у месседжа, а ты упорно читаешь 4-й smile.gif

Три же
Код:
public OnDeathMsg_HL()
{
new killer = read_data(1)
new victim = read_data(2)
new weapon[32]
read_data( 4, weapon, charsmax(weapon) )

make_deathmsg_hl(killer,victim, weapon)
}
stock make_deathmsg_hl(killer, victim, const weapon[])
{
message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0,0,0}, 0);
write_byte(killer);
write_byte(victim);
write_string(weapon);
message_end();

return 1;
}


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 3.1.2016, 21:17
Сообщение #18
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(ssx @ 3.1.2016, 22:11) *
Код:
read_data( 4, weapon, charsmax(weapon) )

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.1.2016, 21:26
Сообщение #19


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

При
Код:
stock make_deathmsg_hl(killer, victim, const weapon[])
{
message_begin(MSG_ONE, get_user_msgid("DeathMsg"), {0,0,0}, killer);
write_byte(killer);
write_byte(victim);
write_string(weapon);
message_end();

message_begin(MSG_ONE, get_user_msgid("DeathMsg"), {0,0,0}, victim);
write_byte(killer);
write_byte(victim);
write_string(weapon);
message_end();

return 1;
}

Упал серв..
Код
L 01/03/2016 - 21:24:01: Server shutdown
L 01/03/2016 - 21:24:01: Log file closed
L 01/03/2016 - 21:24:01: [META] (debug:3) Calling hl.dll:Sys_Error()
L 01/03/2016 - 21:24:01: FATAL ERROR (shutting down): Host_Error: WriteDest_Parm: not a client


А так же если сам себя убил то два раза отображает , что логично .. надо будет как-то сделать что бы один раз отображало ..


Отредактировал: ssx, - 3.1.2016, 21:29


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Vaqtincha
сообщение 3.1.2016, 21:30
Сообщение #20
Стаж: 11 лет

Сообщений: 981
Благодарностей: 352
Полезность: < 0

да бедный сервер надеюсь теставой
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 2 гостей читают эту тему: