Ostatnio założyłem temat w którym szukałem pluginu, który po 10 sekundach zablokuje dołączenie do gry od rozpoczęcia rundy - dlaczego ?
Prowadzę serwer only awp_india i osoba, która padnie, robi reconnecta i znowu gra.
Plugin wgrałem stąd:
https://forums.allie...ad.php?t=103733
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <hamsandwich>
new bool:lockspawn
new bool:is_user_late[33]
new useroldmoney[33]
new lockenable,locktime,locktype,round
new lockmoney,gmsg_ScoreInfo
public plugin_init()
{
register_plugin("Anti Late Join","1.3","Biscuit")
RegisterHam(Ham_Spawn, "player", "Spawn", 1)
register_logevent("Roundstart", 2, "1=Round_Start")
register_logevent("UnLockSpawn", 2, "1=Round_End")
register_event("TextMsg","UnLockSpawn","a","2&#Game_C")
register_event("DeathMsg","deathevent","a","1>0")
lockenable = register_cvar("LockSpawn","1")
lockmoney = register_cvar("LockSpawnMoney","1")
locktime = register_cvar("LockSpawnTime","5")
locktype = register_cvar("LockSpawnType","3")
gmsg_ScoreInfo = get_user_msgid ( "ScoreInfo" );
}
public deathevent()
{
if(get_pcvar_num(lockenable))
{
//Firstblood,lock spawn
new type = get_pcvar_num(locktype)
if((type == 2 || type == 3) && !lockspawn)
{
new id = read_data(1);
if(is_user_alive(id)) //is not kill by worldspawn
{
lockspawn = true
}
}
}
}
public Roundstart()
{
if(get_pcvar_num(lockenable))
{
UnLockSpawn()
new type = get_pcvar_num(locktype)
if(type == 1 || type == 3)
{
if(round >1 ) //is not first round
set_task(get_pcvar_float(locktime),"LockSpawn")
else
round++
}
}
}
public Spawn(id)
{
if(get_pcvar_num(lockenable))
{
if(!is_user_alive(id))
return PLUGIN_HANDLED
if(get_pcvar_num(lockmoney) && is_user_late[id])
{
is_user_late[id] = false
cs_set_user_money(id,useroldmoney[id])
}
if(lockspawn)
{
client_print(id,print_chat,"Nie mozesz teraz dolaczyc! Minelo 15 sekund od rozpoczecia obecnej rundy - poczekaj do nastepnej <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/smile.png' class='bbc_emoticon' alt=':)' />")
is_user_late[id] = true
//save user money
useroldmoney[id] = cs_get_user_money(id)
//kill user
user_kill(id,1)
//reset user score
cs_set_user_deaths(id, 0)
set_user_frags(id, 0)
//scorebroad
message_begin ( MSG_BROADCAST , gmsg_ScoreInfo );
write_byte( id );
write_short( 0 ) ;
write_short( 0 ) ;
write_short( 0 ) ;
write_short( get_user_team(id) );
message_end();
}
}
return PLUGIN_HANDLED
}
public LockSpawn() lockspawn = true
public UnLockSpawn() lockspawn = false
Cvary ustawiłem na:
LockSpawn "1" LockSpawnMoney "0" LockSpawnTime "13" LockSpawnType "1"
Opis problemu:
Plugin ogólnie działa, nie można dołączyć po czasie ale po kilku rundach (5-10) buguje się i jak rozpoczyna się runda to każdego zabija (każdy ma status DEAD) i nie rozpoczyna się nowa runda - dopiero, gdy zmienię mapę, można rozpocząć gre.
Pozdrawiam oraz każdą pomoc wynagrodzę reputacją.


Dodatki SourceMod








anti_late_join.amxx






