Cześć.
Mam problem z pluginem FBPunish.
Chodzi o to, że plugin zlicza ilość rzuconych flashy swoim z drużyny - przy np. 5 flashu kickuje. Problem jest w tym, że po zmianie mapy licznik się nie zeruje i ilość ostrzeżeń z poprzedniej mapy przechodzi na kolejną.
proszę o pomoc w "dorobieniu" zdarzenia, które będzie resetować licznik ostrzeżeń po zmianie mapy.
/*
PLUGIN: TeamFlash Punisher
AUTOR: DAWEDOV
WERSJA: 1.0
CVARY:
* fb_FlashTypeCount:
0 - nie naliczaj, daje tylko info o oslepieniu
1 - naliczaj tylko flashe ktore calkowicie oslepily
2 - naliczaj wszystkie flashe
* fb_PunishType:
0 - brak kary
1 - zablokuj kupowanie flashbangów
2 - kick
* fb_CountToPunish:
x - ilosc oslepionych przyjaciol po ktorej ma wymierzyc kare
* fb_ShowInfo
0 - nie pokazuj informacji o flashu
1 - pokazuj info tylko zfleszowanemu
2 - pokazuj info zfleszowanemu i fleszujacemu
* fb_MakeTeamImmune
0 - fb oslepia kolegow z druzyny
1 - fb nie oslepia kolegow z druzyny
*/
#include <amxmodx>
#include <fakemeta>
#include <colorchat>
#define PLUGIN "TeamFlash Punisher"
#define VERSION "1.0"
#define AUTHOR "Dawedov"
#define FB_OWNERCHECK_TASK 542
#define FB_EXPLODE_TIME 1.52
new const tag[] = "[Only-DD2.pl]"
new gFlashBangOwner;
new gTeamFlashCounter[33];
new gCvarFlashType;
new gCvarPunishType;
new gCvarCountToPunish;
new gCvarShowInfo;
new gCvarImmune;
new gSyncHudObj;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
// CVARS
gCvarFlashType = register_cvar("fb_FlashTypeCount","2");
gCvarPunishType = register_cvar("fb_PunishType","1");
gCvarCountToPunish = register_cvar("fb_CountToPunish","10");
gCvarShowInfo = register_cvar("fb_ShowInfo","1");
gCvarImmune = register_cvar("fb_MakeTeamImmune","0");
// Forwards
register_forward(FM_SetModel, "fmSetModel")
register_event("ScreenFade","event_ScreenFade","be","4=255","5=255","6=255","7>199")
// HUD
gSyncHudObj = CreateHudSyncObj();
// Buy cmds
register_clcmd("flash","BuyCheck");
register_clcmd("autobuy","BuyCheck");
register_clcmd("fullupdate","BuyCheck");
register_clcmd("cl_rebuy","BuyCheck");
register_clcmd("cl_autobuy","BuyCheck");
}
public fmSetModel(ent, model[])
{
if(equal(model, "models/w_flashbang.mdl"))
{
new iEntOwner;
iEntOwner = pev(ent, pev_owner)
if(pev_valid(iEntOwner))
set_task(FB_EXPLODE_TIME,"task_OwnerCheck", FB_OWNERCHECK_TASK+iEntOwner);
}
}
public task_OwnerCheck(taskid)
{
gFlashBangOwner = taskid - FB_OWNERCHECK_TASK;
}
public event_ScreenFade(id)
{
if(is_user_alive(id))
{
if(id != gFlashBangOwner && get_user_team(id) == get_user_team(gFlashBangOwner))
{
if(get_pcvar_num(gCvarFlashType))
{
new flashalpha = read_data(7)
if((get_pcvar_num(gCvarFlashType) == 2 && flashalpha > 0)
|| flashalpha == 255)
{
gTeamFlashCounter[gFlashBangOwner]++;
ShowHud(gFlashBangOwner);
}
}
if(get_pcvar_num(gCvarShowInfo))
{
new name[64];
get_user_name(gFlashBangOwner,name,63);
ColorChat(id,GREEN,"%s^x04 Zostales oslepiony przez:^x03 %s",tag,name)
if(get_pcvar_num(gCvarShowInfo) > 1)
{
new victimname[64];
get_user_name(gFlashBangOwner,victimname,63);
ColorChat(id,GREEN,"%s^x04 Wlasnie oslepiles^x03 %s^x04! Uwazaj jak rzucasz flashe!",tag,victimname)
}
}
if(get_pcvar_num(gCvarImmune))
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"),{0,0,0},id);
write_short(1<<12);
write_short(1<<12);
write_short(1<<12);
write_byte (0);
write_byte (0);
write_byte (0);
write_byte (0);
message_end();
}
}
}
}
public ShowHud(id)
{
set_hudmessage(255, 0, 0, 0.02, 0.55, 0, 6.0, 5.0)
ShowSyncHudMsg(id,gSyncHudObj,"Ostrzezenia za FB %i/%i.",gTeamFlashCounter[id],get_pcvar_num(gCvarCountToPunish))
PunishPlayer(id);
}
public PunishPlayer(id)
{
if(!is_user_connected(id)
|| gTeamFlashCounter[id] < get_pcvar_num(gCvarCountToPunish)
|| get_pcvar_num(gCvarPunishType) != 2)
return;
server_cmd("kick #%d ^"Zostales wyrzucony za 5-krotne oslepianie kolegow z druzyny!^"",get_user_userid(id))
}
public BuyCheck(id)
{
if(gTeamFlashCounter[id] >= get_pcvar_num(gCvarCountToPunish) && get_pcvar_num(gCvarPunishType) == 1)
{
ColorChat(id,GREEN,"%s^x01 Nie mozesz kupowac flashbangow, oslepiles za duzo kolegow z druzyny!",tag);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public client_connect(id)
{
gTeamFlashCounter[id] = 0;
}
Z góry dzięki za pomoc.
Załączone pliki
Użytkownik Tymo edytował ten post 02.11.2016 15:20


Dodatki SourceMod




fbpunish.amxx








