[Natives]
=================================================================================*/
public plugin_natives()
{
register_native("is_zombie","native_get_zombie",1)
register_native("is_survivor", "native_get_human", 1)
register_native("get_user_class","native_get_class",1)
}
public native_get_zombie(id)
{
return g_zombie[id]
}
public native_get_human(id)
{
if(g_zombie[id])
return false
else
return true
}
public native_get_class(id)
{
return Class[id]
}
static fx_blood_small (origin[3],num) {
// Small splash
for (new j = 0; j < num; j++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_WORLDDECAL)
write_coord(origin[0]+random_num(-100,100))
write_coord(origin[1]+random_num(-100,100))
write_coord(origin[2]-36)
write_byte(random_num(190,197)) // Blood decals
message_end()
}
}
static fx_blood_large (origin[3],num) {
// Large splash
for (new i = 0; i < num; i++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_WORLDDECAL)
write_coord(origin[0] + random_num(-50,50))
write_coord(origin[1] + random_num(-50,50))
write_coord(origin[2]-36)
write_byte(random_num(204,205)) // Blood decals
message_end()
}
}
public death_message(Killer, Victim, const Weapon [], ScoreBoard)
{
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
ExecuteHamB(Ham_Killed, Victim, Killer, 0)
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)
// Death
make_deathmsg(Killer, Victim, 0, Weapon)
// Update score board
if (ScoreBoard)
{
message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
write_byte(Killer) // id
write_short(pev(Killer, pev_frags)) // frags
write_short(cs_get_user_deaths(Killer)) // deaths
write_short(0) // class?
write_short(get_user_team(Killer)) // team
message_end()
message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
write_byte(Victim) // id
write_short(pev(Victim, pev_frags)) // frags
write_short(cs_get_user_deaths(Victim)) // deaths
write_short(0) // class?
write_short(get_user_team(Victim)) // team
message_end()
}
}
Slay/kick Zombies when they dont attack/move
Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com
Forum rules
Accesează link-ul pentru a putea vedea regulile forumului
Daca doriti sa vi se modifice un plugin, va rugam postati aici .
Accesează link-ul pentru a putea vedea regulile forumului
Daca doriti sa vi se modifice un plugin, va rugam postati aici .
-
- Membru, skill +1
- Posts: 228
- Joined: 11 Feb 2017, 12:13
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Fond eXtream: 0
- Has thanked: 2 times
- Contact:
- levin
- Scripter eXtreamCS
- Posts: 3850
- Joined: 24 Aug 2011, 12:24
- Detinator Steam: Da
- CS Status: ♅
- Detinator server CS: ☯∴
- SteamID: 76561198063679589
- Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy - Location: ҳ̸Ҳ̸ҳ
- Discord: devilclass
- Has thanked: 36 times
- Been thanked: 595 times
- Contact:
in finally...
amxx after mode base
Code: Select all
#include <amxmodx>
#include <hamsandwich>
native is_zombie(id)
#define MIN_AFK_TIME 30 // I use this incase stupid admins accidentally set mp_afktime to something silly.
#define WARNING_TIME 15 // Start warning the user this many seconds before they are about to be kicked.
#define CHECK_FREQ 5 // This is also the warning message frequency.
new g_oldangles[33][3]
new g_afktime[33]
new bool:g_spawned[33] = {true, ...}
public plugin_init()
{
register_plugin("AFK Kicker","1.0b","Cheesy Peteza")
register_cvar("mp_afktime", "10") // Kick people AFK longer than this time
register_cvar("mp_afkminplayers", "3") // Only kick AFKs when there is atleast this many players on the server
set_task(float(CHECK_FREQ),"checkPlayers",_,_,_,"b")
RegisterHam(Ham_Spawn,"player","playerSpawned",1)
}
public checkPlayers()
{
for (new i = 1; i <= get_maxplayers(); i++)
{
if (is_user_alive(i) && is_zombie(i) && !is_user_bot(i) && !is_user_hltv(i) && g_spawned[i])
{
new newangle[3]
get_user_origin(i, newangle)
if ( newangle[0] == g_oldangles[i][0] && newangle[1] == g_oldangles[i][1] && newangle[2] == g_oldangles[i][2] )
{
g_afktime[i] += CHECK_FREQ
check_afktime(i)
}
else
{
g_oldangles[i][0] = newangle[0]
g_oldangles[i][1] = newangle[1]
g_oldangles[i][2] = newangle[2]
g_afktime[i] = 0
}
}
}
return PLUGIN_HANDLED
}
check_afktime(id)
{
new numplayers = get_playersnum()
new minplayers = get_cvar_num("mp_afkminplayers")
if (numplayers >= minplayers)
{
new maxafktime = get_cvar_num("mp_afktime")
if (maxafktime < MIN_AFK_TIME)
{
log_amx("cvar mp_afktime %i is too low. Minimum value is %i.", maxafktime, MIN_AFK_TIME)
maxafktime = MIN_AFK_TIME
set_cvar_num("mp_afktime", MIN_AFK_TIME)
}
if ( maxafktime-WARNING_TIME <= g_afktime[id] < maxafktime)
{
new timeleft = maxafktime - g_afktime[id]
client_print(id, print_chat, "[AFK] You have %i seconds to move or you will be slayed for being AFK", timeleft)
}
else if (g_afktime[id] > maxafktime)
{
new name[33]
get_user_name(id, name, 32)
client_print(0, print_chat, "[AFK] %s was slayed for being AFK longer than %i seconds", name, maxafktime)
log_amx("%s was slayed for being AFK longer than %i seconds", name, maxafktime)
user_silentkill(id)
}
}
}
public playerSpawned(id)
{
g_afktime[id] = 0
g_spawned[id] = false
new sid[1]
sid[0] = id
set_task(0.75, "delayedSpawn",_, sid, 1) // Give the player time to drop to the floor when spawning
}
public delayedSpawn(sid[])
{
get_user_origin(sid[0], g_oldangles[sid[0]])
g_spawned[sid[0]] = true
return PLUGIN_HANDLED
}
Nu îmi mai trimiteți PM pe forum! Nu merge să răspund
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
-
- Membru, skill +1
- Posts: 228
- Joined: 11 Feb 2017, 12:13
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Fond eXtream: 0
- Has thanked: 2 times
- Contact:
thx i will test it ♥ and let u know it.
-
- Membru, skill +1
- Posts: 228
- Joined: 11 Feb 2017, 12:13
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Fond eXtream: 0
- Has thanked: 2 times
- Contact:
works fine but the kick dont work.
BUT BIG THX for this ♥
BUT BIG THX for this ♥
- levin
- Scripter eXtreamCS
- Posts: 3850
- Joined: 24 Aug 2011, 12:24
- Detinator Steam: Da
- CS Status: ♅
- Detinator server CS: ☯∴
- SteamID: 76561198063679589
- Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy - Location: ҳ̸Ҳ̸ҳ
- Discord: devilclass
- Has thanked: 36 times
- Been thanked: 595 times
- Contact:
slay/kick / = OR => slay OR kick... not AND
5s to be slayed isn't ok, minim 15 it's ok
5s to be slayed isn't ok, minim 15 it's ok
Code: Select all
#include <amxmodx>
#include <hamsandwich>
#pragma tabsize 0
native is_zombie(id)
#define MIN_AFK_TIME 30 // I use this incase stupid admins accidentally set mp_afktime to something silly.
#define WARNING_TIME 15 // Start warning the user this many seconds before they are about to be kicked.
#define CHECK_FREQ 5 // This is also the warning message frequency.
new g_oldangles[33][3]
new g_afktime[33]
new bool:g_spawned[33] = {true, ...}
new count[33]
public plugin_init()
{
register_plugin("AFK Kicker","1.0b","Cheesy Peteza")
register_cvar("mp_slaytime", "10") // Slay people AFK longer than this time
register_cvar("mp_kicknum", "5") // Kick after x slays counted
register_cvar("mp_afkminplayers", "3") // Only check for AFKs when there is atleast this many players on the server
set_task(float(CHECK_FREQ),"checkPlayers",_,_,_,"b")
RegisterHam(Ham_Spawn,"player","playerSpawned",1)
register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
}
public event_new_round() arrayset(count,0,charsmax(count))
public checkPlayers()
{
for (new i = 1; i <= get_maxplayers(); i++)
{
if (is_user_alive(i) && is_zombie(i) && !is_user_bot(i) && !is_user_hltv(i) && g_spawned[i])
{
new newangle[3]
get_user_origin(i, newangle)
if ( newangle[0] == g_oldangles[i][0] && newangle[1] == g_oldangles[i][1] && newangle[2] == g_oldangles[i][2] )
{
g_afktime[i] += CHECK_FREQ
check_afktime(i)
}
else
{
g_oldangles[i][0] = newangle[0]
g_oldangles[i][1] = newangle[1]
g_oldangles[i][2] = newangle[2]
g_afktime[i] = 0
}
}
}
return PLUGIN_HANDLED
}
check_afktime(id)
{
new numplayers = get_playersnum()
new minplayers = get_cvar_num("mp_afkminplayers")
if (numplayers >= minplayers)
{
new maxafktime = get_cvar_num("mp_afktime")
if (maxafktime < MIN_AFK_TIME)
{
log_amx("cvar mp_afktime %i is too low. Minimum value is %i.", maxafktime, MIN_AFK_TIME)
maxafktime = MIN_AFK_TIME
set_cvar_num("mp_afktime", MIN_AFK_TIME)
}
if ( maxafktime-WARNING_TIME <= g_afktime[id] < maxafktime)
{
new timeleft = maxafktime - g_afktime[id]
client_print(id, print_chat, "[AFK] You have %i seconds to move or you will be slayed for being AFK. %d chance%s left", timeleft,count[id],count[id]==1?"":"s")
}
else if (g_afktime[id] > maxafktime)
{
new name[33]
get_user_name(id, name, 32)
client_print(0, print_chat, "[AFK] %s was slayed for being AFK longer than %i seconds", name, maxafktime)
log_amx("%s was slayed for being AFK longer than %i seconds", name, maxafktime)
user_silentkill(id)
count[id]++
if(count[id]>=get_cvar_num("mp_kicknum")){
log_amx("%s was kicked for being AFK longer than %i seconds", name, maxafktime+get_cvar_num("mp_kicknum"))
server_cmd("kick #%d ^"You have been AFK too much as ZM^"",get_user_userid(id))
}
else if(count[id]==get_cvar_num("mp_kicknum")-1) client_print(id,print_chat,"Please attack as a zombie")
}
}
}
public client_putinserver(id) if(is_user_connected(id)&&!is_user_bot(id)||!is_user_hltv(id)) count[id]=0
public playerSpawned(id)
{
g_afktime[id] = 0
g_spawned[id] = false
new sid[1]
sid[0] = id
set_task(0.75, "delayedSpawn",_, sid, 1) // Give the player time to drop to the floor when spawning
}
public delayedSpawn(sid[])
{
get_user_origin(sid[0], g_oldangles[sid[0]])
g_spawned[sid[0]] = true
return PLUGIN_HANDLED
}
Nu îmi mai trimiteți PM pe forum! Nu merge să răspund
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
-
- Membru, skill +1
- Posts: 228
- Joined: 11 Feb 2017, 12:13
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Fond eXtream: 0
- Has thanked: 2 times
- Contact:
works i think. I dont see any kick messages but i see that Players left after multiple time SLAY. Thx for the Plugin, you are really an brilliant good Scripter and User.