Slay/kick Zombies when they dont attack/move

Categoria cu cereri de pluginuri si nu numai.

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 .
Infamous2017
Membru, skill +1
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:

09 Jul 2020, 18:16

[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()
}
}
RoyalServer
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

09 Jul 2020, 19:56

in finally...

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
}
amxx after mode base
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)
Infamous2017
Membru, skill +1
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:

09 Jul 2020, 20:09

thx i will test it ♥ and let u know it.
Infamous2017
Membru, skill +1
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:

09 Jul 2020, 20:25

works fine but the kick dont work.

BUT BIG THX for this ♥
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

10 Jul 2020, 10:32

slay/kick / = OR => slay OR kick... not AND
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
}
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)
Infamous2017
Membru, skill +1
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:

12 Jul 2020, 10:25

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.
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: Semrush [Bot] and 34 guests