Всем привет. Имеется плагин для покупки вражеского скина. Покупается он только на раунд. Мне же хочется, что бы скин оставался до смерти игрока. Вот код плагина
Начал ковырять код и вот что поменял: register_logevent("Event_Round_Start",2,"1=Round_Start") поменял на register_event("DeathMsg", "Event_DeathMsg", "a")
А public Event_Round_Start() поменял на public Event_DeathMsg(). И да, скин теперь сохраняется более чем на один раунд.. Но, теперь он пропадает при смерти любого игрока, а не именно того кто его купил. В принципе, ожидаемо. Ведь на сколько я понял, Event_DeathMsg ловит любое событие смерти на серве, если можно так выразиться. А как сделать так, чтоб он отлавливал событие смерти только того, кто купил этот скин? В кодинге я слаб, так что надеюсь на более развёрнутый ответ. Если он, конечно, последует. Всем добра.
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#define PLUGIN "Bou Spy"
#define VERSION "1.0"
#define AUTHOR "Eg@r4$il{"
new spy[33]
public plugin_init() {
register_plugin("Spy","1.1","Eg@r4$il{")
// Add your code here...
register_concmd("amx_spy", "cmd_spy", ADMIN_SLAY, "< name | #userid > 1/0")
register_cvar("amx_spy_cost","6000")
register_cvar("amx_spy_enable","2")
register_clcmd("say /spy","cmd_bouspy")
register_clcmd("say_team /spy","cmd_bouspy")
register_logevent("Event_Round_Start",2,"1=Round_Start")
}
public plugin_precache()
{
precache_model("models/player/sas/sas.mdl")
precache_model("models/player/guerilla/guerilla.mdl")
}
public cmd_spy(id, level, cid)
{
if (!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED
new Argument[32], status[4]
read_argv(1, Argument, 31)
read_argv(2, status, 3)
new Target = cmd_target(id, Argument, CMDTARGET_ALLOW_SELF | CMDTARGET_OBEY_IMMUNITY)
if (Target)
{
if (equal(status, "1"))
{
if (cs_get_user_team(Target) == CS_TEAM_CT)
{
cs_set_user_model(Target, "guerilla")
return PLUGIN_HANDLED
}
else if(cs_get_user_team(Target) == CS_TEAM_T)
{
cs_set_user_model(Target, "sas")
return PLUGIN_HANDLED
}
else
{
cs_reset_user_model(Target)
return PLUGIN_HANDLED
}
}
if (equal(status, "0"))
{
cs_reset_user_model(Target)
return PLUGIN_HANDLED
}
}
return PLUGIN_HANDLED
}
public cmd_bouspy(id)
{
if (!get_cvar_num("amx_spy_enable")) return PLUGIN_CONTINUE
if(!is_user_alive(id))
{
client_print(id,print_center,"Чтобы замаскироваться вы должны быть живым")
return PLUGIN_CONTINUE
}
if(spy[id]==1)
{
client_print(id,print_center,"Вы уже замаскированы")
return PLUGIN_CONTINUE
}
if(cs_get_user_money(id)>=get_cvar_num("amx_spy_cost"))
{
spy[id]=1
client_print(id,print_center,"Вы замаскировались")
cs_set_user_money(id,cs_get_user_money(id)-get_cvar_num("amx_spy_cost"))
cs_get_user_team(id) == CS_TEAM_CT ? cs_set_user_model(id, "guerilla") : cs_set_user_model(id, "sas")
return PLUGIN_CONTINUE
}
else
client_print(id,print_center,"У вас не хватает денег")
return PLUGIN_CONTINUE
}
public Event_Round_Start()
{
for (new a=1;a<33;a++)
{
spy[a]=0
if (is_user_connected(a))
cs_reset_user_model(a)
}
if (get_cvar_num("amx_spy_enable")>1)
{
client_print(0,print_chat,"say /spy чтобы замаскироваться")
client_print(0,print_console,"say /spy чтобы замаскироваться")
}
}
#include <amxmisc>
#include <cstrike>
#define PLUGIN "Bou Spy"
#define VERSION "1.0"
#define AUTHOR "Eg@r4$il{"
new spy[33]
public plugin_init() {
register_plugin("Spy","1.1","Eg@r4$il{")
// Add your code here...
register_concmd("amx_spy", "cmd_spy", ADMIN_SLAY, "< name | #userid > 1/0")
register_cvar("amx_spy_cost","6000")
register_cvar("amx_spy_enable","2")
register_clcmd("say /spy","cmd_bouspy")
register_clcmd("say_team /spy","cmd_bouspy")
register_logevent("Event_Round_Start",2,"1=Round_Start")
}
public plugin_precache()
{
precache_model("models/player/sas/sas.mdl")
precache_model("models/player/guerilla/guerilla.mdl")
}
public cmd_spy(id, level, cid)
{
if (!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED
new Argument[32], status[4]
read_argv(1, Argument, 31)
read_argv(2, status, 3)
new Target = cmd_target(id, Argument, CMDTARGET_ALLOW_SELF | CMDTARGET_OBEY_IMMUNITY)
if (Target)
{
if (equal(status, "1"))
{
if (cs_get_user_team(Target) == CS_TEAM_CT)
{
cs_set_user_model(Target, "guerilla")
return PLUGIN_HANDLED
}
else if(cs_get_user_team(Target) == CS_TEAM_T)
{
cs_set_user_model(Target, "sas")
return PLUGIN_HANDLED
}
else
{
cs_reset_user_model(Target)
return PLUGIN_HANDLED
}
}
if (equal(status, "0"))
{
cs_reset_user_model(Target)
return PLUGIN_HANDLED
}
}
return PLUGIN_HANDLED
}
public cmd_bouspy(id)
{
if (!get_cvar_num("amx_spy_enable")) return PLUGIN_CONTINUE
if(!is_user_alive(id))
{
client_print(id,print_center,"Чтобы замаскироваться вы должны быть живым")
return PLUGIN_CONTINUE
}
if(spy[id]==1)
{
client_print(id,print_center,"Вы уже замаскированы")
return PLUGIN_CONTINUE
}
if(cs_get_user_money(id)>=get_cvar_num("amx_spy_cost"))
{
spy[id]=1
client_print(id,print_center,"Вы замаскировались")
cs_set_user_money(id,cs_get_user_money(id)-get_cvar_num("amx_spy_cost"))
cs_get_user_team(id) == CS_TEAM_CT ? cs_set_user_model(id, "guerilla") : cs_set_user_model(id, "sas")
return PLUGIN_CONTINUE
}
else
client_print(id,print_center,"У вас не хватает денег")
return PLUGIN_CONTINUE
}
public Event_Round_Start()
{
for (new a=1;a<33;a++)
{
spy[a]=0
if (is_user_connected(a))
cs_reset_user_model(a)
}
if (get_cvar_num("amx_spy_enable")>1)
{
client_print(0,print_chat,"say /spy чтобы замаскироваться")
client_print(0,print_console,"say /spy чтобы замаскироваться")
}
}
А public Event_Round_Start() поменял на public Event_DeathMsg(). И да, скин теперь сохраняется более чем на один раунд.. Но, теперь он пропадает при смерти любого игрока, а не именно того кто его купил. В принципе, ожидаемо. Ведь на сколько я понял, Event_DeathMsg ловит любое событие смерти на серве, если можно так выразиться. А как сделать так, чтоб он отлавливал событие смерти только того, кто купил этот скин? В кодинге я слаб, так что надеюсь на более развёрнутый ответ. Если он, конечно, последует. Всем добра.