Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Modyfikacja

[ROZWIĄZANE] Przerobic, aby nie wyrzucało graczy z immunitetem

Modyfikacja

  • Zamknięty Temat jest zamknięty
3 odpowiedzi w tym temacie

#1 Słupski

    Banned

  • Zbanowany

Reputacja: 0
Nowy

  • Postów:69
  • Imię:Kamil
  • Lokalizacja:Słupsk
Offline

Napisano 05.05.2012 22:58

Witam. Potrzebuję na prawdę małej przeróbki pluginu, wyrzucającego graczy za AFK. Chciałbym, aby nie wyrzucało graczy z immunitetem. Oto plugin:


/*
 *
 *    Author:        Cheesy Peteza
 *    Date:        18-Mar-2004
 *        Odwiedz PlayCS.pl
 *
 *    Description:    A generic AFK Kicker that should work with nearly all Half-Life mods.
 *            Tested with Natural-Selection v3.0 beta 3, Counter-Strike 1.6 and Day of Defeat.
 *
 *    Cvars:
 *            mp_afktime 90        Time a player is allowed to be AFK in seconds before they are kicked. (minimum 30 sec)
 *                        They time is only accumulated while they are alive.
 *            mp_afkminplayers 8    Minimum number of players required to be on the server before the plugin starts kicking.
 *
 *
 *    Requirements:    AMXModX
 *
 *
 */

#include <amxmodx>

#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("afk_version", "1.0b", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)

    register_cvar("mp_afktime", "90")
    register_cvar("mp_afkminplayers", "8")
    set_task(float(CHECK_FREQ),"checkPlayers",_,_,_,"b")
    register_event("ResetHUD", "playerSpawned", "be")
}

public checkPlayers() {
    for (new i = 1; i <= get_maxplayers(); i++) {
        if (is_user_alive(i) && is_user_connected(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, "[Deathrun] Masz %i sekund zeby poruszyc sie albo zostaniesz wywalony za AFK", timeleft)
        } else if (g_afktime[id] > maxafktime) {
            new name[32]
            get_user_name(id, name, 31)
            client_print(0, print_chat, "[Deathrun] %s zostal wyrzucony za bycie AFK przez %i sekund", name, maxafktime)
            log_amx("%s zostal wywalony za bycie AFK przez %i sekund", name, maxafktime)
            server_cmd("kick #%d ^"Zostales wywalony za bycie AFK przez %i sekund^"", get_user_userid(id), maxafktime)
        }
    }
}

public client_connect(id) {
    g_afktime[id] = 0
    return PLUGIN_HANDLED
}

public client_putinserver(id) {
    g_afktime[id] = 0
    return PLUGIN_HANDLED
}

public playerSpawned(id) {
    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
    return PLUGIN_HANDLED
}

public delayedSpawn(sid[]) {
    get_user_origin(sid[0], g_oldangles[sid[0]])
    g_spawned[sid[0]] = true
    return PLUGIN_HANDLED
}

Oczywiście będzie + :)

#2 ParadisO

    Wszechmogący

  • Power User

Reputacja: 128
Zaawansowany

  • Postów:689
  • Lokalizacja:Częstochowa
Offline

Napisano 05.05.2012 23:29

/*
*
* Author: Cheesy Peteza
* Date: 18-Mar-2004
* Odwiedz PlayCS.pl
*
* Description: A generic AFK Kicker that should work with nearly all Half-Life mods.
* Tested with Natural-Selection v3.0 beta 3, Counter-Strike 1.6 and Day of Defeat.
*
* Cvars:
* mp_afktime 90 Time a player is allowed to be AFK in seconds before they are kicked. (minimum 30 sec)
* They time is only accumulated while they are alive.
* mp_afkminplayers 8 Minimum number of players required to be on the server before the plugin starts kicking.
*
*
* Requirements: AMXModX
*
*
*/
#include <amxmodx>
#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("afk_version", "1.0b", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)
register_cvar("mp_afktime", "90")
register_cvar("mp_afkminplayers", "8")
set_task(float(CHECK_FREQ),"checkPlayers",_,_,_,"b")
register_event("ResetHUD", "playerSpawned", "be")
}
public checkPlayers() {
for (new i = 1; i <= get_maxplayers(); i++) {
if (is_user_alive(i) && is_user_connected(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, "[Deathrun] Masz %i sekund zeby poruszyc sie albo zostaniesz wywalony za AFK", timeleft)
} else if (g_afktime[id] > maxafktime) {
if(get_user_flags(id) & ADMIN_IMMUNITY)
return PLUGIN_HANDLED
else
{
new name[32]
get_user_name(id, name, 31)
client_print(0, print_chat, "[Deathrun] %s zostal wyrzucony za bycie AFK przez %i sekund", name, maxafktime)
log_amx("%s zostal wywalony za bycie AFK przez %i sekund", name, maxafktime)
server_cmd("kick #%d ^"Zostales wywalony za bycie AFK przez %i sekund^"", get_user_userid(id), maxafktime)
}
}
}
}
public client_connect(id) {
g_afktime[id] = 0
return PLUGIN_HANDLED
}
public client_putinserver(id) {
g_afktime[id] = 0
return PLUGIN_HANDLED
}
public playerSpawned(id) {
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
return PLUGIN_HANDLED
}
public delayedSpawn(sid[]) {
get_user_origin(sid[0], g_oldangles[sid[0]])
g_spawned[sid[0]] = true
return PLUGIN_HANDLED
}

sprawdź
  • +
  • -
  • 1

#3 Słupski

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 0
Nowy

  • Postów:69
  • Imię:Kamil
  • Lokalizacja:Słupsk
Offline

Napisano 13.05.2012 14:02

Przepraszam że dopiero teraz, ale nie miałem wcześniej możliwości sprawdzenia tego. Plugin działa, bardzo dziękuję. Łap plusik :)

Temat do zamknięcia

#4 Ojciec Dyrektor

    papa smerf.

  • Przyjaciel

Reputacja: 477
Wszechobecny

  • Postów:3 035
  • Imię:Paweł
  • Lokalizacja:Rabka-Zdrój
Offline

Napisano 13.05.2012 19:41

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: Modyfikacja

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych