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

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

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

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

2 страниц V   1 2

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

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


Стаж: 12 лет

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

Цитата(Vaqtincha @ 3.1.2016, 21:25) *
да бедный сервер надеюсь теставой

Тестовый конечно же ))

если знаешь как решить проблему - помоги плиз.



[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:37
Сообщение #22
Стаж: 14 лет
Город: Moscow

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

Цитата(ssx @ 3.1.2016, 22:22) *
Код
L 01/03/2016 - 21:24:01: FATAL ERROR (shutting down): Host_Error: WriteDest_Parm: not a client

Ты проверяй перед отправкой, кому шлёшь, что это игрок smile.gif
С ботами, небось, тестишь?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.1.2016, 21:46
Сообщение #23


Стаж: 12 лет

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

Цитата(Safety1st @ 3.1.2016, 21:33) *
Ты проверяй перед отправкой, кому шлёшь, что это игрок smile.gif
С ботами, небось, тестишь?

с ботами ..

Не могу понять ..
Если только кому-то одному (убийце или жертве) отправлять сообщение то серв не падает ..
Если же и тому и тому - падает .

Подскажи плиз куда и какие проверки всунуть .



[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:50
Сообщение #24
Стаж: 14 лет
Город: Moscow

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

Код:
if( !is_user_bot(id) )
// send message
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.1.2016, 21:53
Сообщение #25


Стаж: 12 лет

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

Вот так вот не падает ..

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

server_cmd("say KILLER TRUE")
}


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

server_cmd("say VICTIM TRUE")
}

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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.1.2016, 22:06
Сообщение #26


Стаж: 12 лет

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

Запилил еще проверку if (is_user_connected(victim) && killer != victim) что бы по два раза самоубийство не отображало.
И интегрировал в плагин блокировку стандартных сообщений об убийстве.

Похоже, финальная версия плагина:
Код:
#include <amxmodx>

public plugin_init()
{
register_plugin("Death Messages", "1.0", "SSX")
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")
}

register_message(get_user_msgid("DeathMsg"),"message");
}

public message(msg_id,msg_dest,msg_entity)
{
return PLUGIN_HANDLED;
}

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( 3, weapon, charsmax(weapon) )

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


if (is_user_connected(victim) && killer != victim)
{
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;
}


Есть у кого-то замечания по плагину?

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


[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, 22:13
Сообщение #27
Стаж: 14 лет
Город: Moscow

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

Жесть как она есть crazy.gif

Для начала перечитай предложенный мной алгоритм действий; ты сделал иначе.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.1.2016, 22:32
Сообщение #28


Стаж: 12 лет

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

Цитата(Safety1st @ 3.1.2016, 22:09) *
Жесть как она есть crazy.gif

Для начала перечитай предложенный мной алгоритм действий; ты сделал иначе.

Перечитал несколько раз, так и не понял что не так..

На тестовом с ботами и на живом с игроками последний код Отображение убийств только если тебя или ты (Пост #878777) работает отлично!



[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, 22:35
Сообщение #29
Стаж: 14 лет
Город: Moscow

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

Ну, работает, и ладно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
serfreeman1337
сообщение 3.1.2016, 22:56
Сообщение #30
Стаж: 13 лет

Сообщений: 912
Благодарности: выкл.

Цитата(ssx @ 4.1.2016, 1:02) *
Есть у кого-то замечания по плагину?

Не проще в register_message все это дело проверить и заблочить?
Код:
public message(msg_id,msg_dest,msg_entity)
{
if(get_msg_arg_int(1) != msg_entity && get_msg_arg_int(2) != msg_entity)
return PLUGIN_HANDLED;

return PLUGIN_CONTINUE
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 3.1.2016, 22:57
Сообщение #31
Стаж: 14 лет
Город: Moscow

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

Не получится: там же MSG_ALL, receiver = 0 smile.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Vaqtincha
сообщение 3.1.2016, 23:20
Сообщение #32
Стаж: 11 лет

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

Мой вариант

Код:
#include <amxmodx>

new g_cstrike
public plugin_init()
{
register_plugin("Death Messages", "0.0.1", "Vaqtincha")
new modname[8]
get_modname(modname, charsmax(modname))
if (equal(modname, "cstrike", 7) || equal(modname, "czero", 5))
{
g_cstrike = true
}
register_message(get_user_msgid("DeathMsg"),"message")
}

public message(msg_id, msg_dest, msg_entity)
{
new killer = get_msg_arg_int(1)
new victim = get_msg_arg_int(2)
new szWeapon[11]; get_msg_arg_string(4, szWeapon, charsmax(szWeapon))
if(g_cstrike)
{
new headshot = get_msg_arg_int(3)
send_deathmsg(victim, victim, killer, headshot, szWeapon)
send_deathmsg(killer, victim, killer, headshot, szWeapon)
}else{
send_deathmsg(victim, victim, killer, 0, szWeapon)
send_deathmsg(killer, victim, killer, 0, szWeapon)
}
return PLUGIN_HANDLED
}

stock send_deathmsg(const id, victim, killer, headshot, const weapon[])
{
if(is_user_connected(id) && !is_user_bot(id))
{
message_begin(MSG_ONE, get_user_msgid("DeathMsg"), {0,0,0}, .player = id)
write_byte(killer);
write_byte(victim);
if(g_cstrike)
write_byte(headshot);
write_string(weapon);
message_end();
}
}

тестил на КС работает.
не тестил на ХЛ!

Отредактировал: Vaqtincha, - 3.1.2016, 23:25
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 3.1.2016, 23:47
Сообщение #33
Стаж: 14 лет
Город: Moscow

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

Покажите мне приличный код crazy.gif
serfreeman1337 говорит, проверки на connected достаточно smile.gif

А для Vaqtincha следующей будет задача похитрее smile.gif

Отредактировал: Safety1st, - 3.1.2016, 23:47
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Vaqtincha
сообщение 4.1.2016, 0:13
Сообщение #34
Стаж: 11 лет

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

фикс дубла при cmd kill
Код:
#include <amxmodx>

new g_cstrike
public plugin_init()
{
register_plugin("Death Messages", "0.0.2", "Vaqtincha")
new modname[8]
get_modname(modname, charsmax(modname))
if (equal(modname, "cstrike", 7) || equal(modname, "czero", 5))
{
g_cstrike = true
}
register_message(get_user_msgid("DeathMsg"),"message")
}

public message(msg_id, msg_dest, msg_entity)
{
new killer = get_msg_arg_int(1)
new victim = get_msg_arg_int(2)
new szWeapon[11]; get_msg_arg_string(4, szWeapon, charsmax(szWeapon))
if(killer == victim)
return PLUGIN_CONTINUE
if(g_cstrike)
{
new headshot = get_msg_arg_int(3)
send_deathmsg(victim, victim, killer, headshot, szWeapon)
send_deathmsg(killer, victim, killer, headshot, szWeapon)
}else{
send_deathmsg(victim, victim, killer, 0, szWeapon)
send_deathmsg(killer, victim, killer, 0, szWeapon)
}
return PLUGIN_HANDLED
}

stock send_deathmsg(const id, victim, killer, headshot, const weapon[])
{
if(is_user_connected(id) && !is_user_bot(id))
{
message_begin(MSG_ONE, get_user_msgid("DeathMsg"), {0,0,0}, .player = id)
write_byte(killer);
write_byte(victim);
if(g_cstrike)
write_byte(headshot);
write_string(weapon);
message_end();
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 4.1.2016, 11:24
Сообщение #35
Стаж: 14 лет
Город: Moscow

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

Цитата(Vaqtincha @ 4.1.2016, 1:09) *
фикс дубла при cmd kill

Да что ж такое! Снова попытка чтения 4-го аргумента в HL cbf1b2bfde1a.gif
А всё потому, что магические числа 'рулят' smile.gif

Смотрите и учитесь blum2.gif
Прикрепленный файл  death_messages.sma ( 1,39 килобайт ) Кол-во скачиваний: 30
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Vaqtincha
сообщение 4.1.2016, 12:51
Сообщение #36
Стаж: 11 лет

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

Safety1st, :D вполне возможно. Проверить код на практике не могу тк запускал HL всего один раз и удалил можно сказать что я вообще ничего незнаю о нем.

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