Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Сервер падает из за плагина

Статус пользователя cArn
сообщение 25.11.2013, 14:50
Сообщение #1


Стаж: 12 лет

Сообщений: 157
Благодарностей: 31
Полезность: 161

Добрый день!
У меня такая проблема, на той неделе я поставил плагин afk_manager, и уже выяснил что из за этой плагина сервер валится.
В чем может быть проблема?

Исходник плагина
#define PLUGIN "AFK Manager"
#define AUTHOR "Adrenaline & Leon McVeran"
#define VERSION "1.7"

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <colorchat>

#define KICK_IMMUNITY ADMIN_RESERVATION

#define TASK_AFK_CHECK 142500
#define FREQ_AFK_CHECK 5.0
#define MAX_WARN 3

static const OFFSET_LINUX = 5
new const m_iJoiningState = 125

new bool:g_bSpec[33]
new bool:g_bSpecAccess[33]
new Float:g_fLastActivity[33]
new g_iAFKCheck
new g_iAFKTime[33]
new g_iDropBomb
new g_iKickTime
new g_iMaxPlayers
new g_iMinPlayers
new g_iTransferTime
new g_iWarn[33]
new g_vOrigin[33][3]

new CVAR_afk_drop_bomb
new CVAR_afk_check
new CVAR_afk_transfer_time
new CVAR_afk_kick_time
new CVAR_afk_kick_players

new CVAR_afk_spec_pw


public plugin_init(){
register_plugin(PLUGIN, VERSION, AUTHOR)

register_logevent("event_round_end", 2, "0=World triggered", "1=Round_End")
register_logevent("event_round_start", 2, "0=World triggered", "1=Round_Start")

register_clcmd("jointeam", "cmd_jointeam") // new menu
register_menucmd(register_menuid("Team_Select", 1), 511, "cmd_jointeam") // old menu

register_clcmd("joinclass", "cmd_joinclass") // new menu
register_menucmd(register_menuid("Terrorist_Select", 1), 511, "cmd_joinclass") // old menu
register_menucmd(register_menuid("CT_Select", 1), 511, "cmd_joinclass") // old menu

register_clcmd("say", "cmd_say")

CVAR_afk_check = register_cvar("afk_check", "1")
CVAR_afk_drop_bomb = register_cvar("afk_drop_bomb", "2")
CVAR_afk_transfer_time = register_cvar("afk_transfer_time", "9")
CVAR_afk_kick_time = register_cvar("afk_kick_time", "12")
CVAR_afk_kick_players = register_cvar("afk_kick_players", "20")

CVAR_afk_spec_pw = register_cvar("afk_spec_pw", "password")
}

public plugin_cfg(){
g_iMaxPlayers = get_maxplayers()
}

public client_connect(id){

g_bSpec[id] = false
g_bSpecAccess[id] = false

g_vOrigin[id] = {0, 0, 0}

g_iAFKTime[id] = 0
g_iWarn[id] = 0
}

public event_round_start(){

g_iAFKCheck = get_pcvar_num(CVAR_afk_check)
if (g_iAFKCheck){

new iPlayers[32], pNum
get_players(iPlayers, pNum, "a")
for (new p = 0; p < pNum; p++){
get_user_origin(iPlayers[p], g_vOrigin[iPlayers[p]])
}

if (!task_exists(TASK_AFK_CHECK)) set_task(FREQ_AFK_CHECK, "func_afk_check", TASK_AFK_CHECK, _, _, "b")

if (get_pcvar_num(CVAR_afk_transfer_time) < 6) set_pcvar_num(CVAR_afk_transfer_time, 6)
if (get_pcvar_num(CVAR_afk_kick_time) < 6) set_pcvar_num(CVAR_afk_kick_time, 6)
g_iDropBomb = get_pcvar_num(CVAR_afk_drop_bomb)
g_iTransferTime = get_pcvar_num(CVAR_afk_transfer_time)
g_iKickTime = get_pcvar_num(CVAR_afk_kick_time)
g_iMinPlayers = get_pcvar_num(CVAR_afk_kick_players)
}

else{

if (task_exists(TASK_AFK_CHECK)) remove_task(TASK_AFK_CHECK)
}


}

public event_round_end(){

g_iAFKCheck = 0
}

public cmd_jointeam(id){

g_bSpec[id] = true
}

public cmd_joinclass(id){

g_bSpec[id] = false

g_vOrigin[id] = {0, 0, 0}

g_iAFKTime[id] = 0
g_iWarn[id] = 0
}

public cmd_say(id){
new szMsg[64], szCommand[16], szTrash[2]
read_args(szMsg, 63)
remove_quotes(szMsg)
parse(szMsg, szCommand, 15, szTrash, 1)

if (!szTrash[0]){

new szPassword[32]
get_pcvar_string(CVAR_afk_spec_pw, szPassword, 31)
if (equal(szCommand, szPassword)){
client_print(id, print_chat, "Доступ разрешен. Вы не будутете исключены с сервера")
g_bSpecAccess[id] = true
return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}

public func_afk_check(taskid){
if (g_iAFKCheck){
new CsTeams:eTeam

for (new id = 1; id <= g_iMaxPlayers; id++){

if (is_user_bot(id)) continue

if (is_user_connected(id) && !is_user_hltv(id)){
eTeam = cs_get_user_team(id)
if (eTeam == CS_TEAM_SPECTATOR || eTeam == CS_TEAM_UNASSIGNED || g_bSpec[id]){

g_iAFKTime[id]++

if (g_iAFKTime[id] >= g_iKickTime - MAX_WARN){
func_kick_player(id)
}
}
}

if (is_user_alive(id)){

if (g_iAFKCheck == 1){
new vOrigin[3]
get_user_origin(id, vOrigin)

if (g_vOrigin[id][0] != vOrigin[0] || g_vOrigin[id][1] != vOrigin[1]){
g_vOrigin[id][0] = vOrigin[0]
g_vOrigin[id][1] = vOrigin[1]
g_vOrigin[id][2] = vOrigin[2]
g_iAFKTime[id] = 0
g_iWarn[id] = 0
}
else{
g_iAFKTime[id]++
}
}

else{
new Float:fLastActivity
fLastActivity = cs_get_user_lastactivity(id)

if (fLastActivity != g_fLastActivity[id]){
g_fLastActivity[id] = fLastActivity
g_iAFKTime[id] = 0
g_iWarn[id] = 0
}
else{
g_iAFKTime[id] = floatround((get_gametime() - fLastActivity) / FREQ_AFK_CHECK)
}
}

if (g_iDropBomb && g_iAFKTime[id] >= 3){
if (g_iDropBomb == 1){
if (pev(id, pev_weapons) & (1 << CSW_C4)) engclient_cmd(id, "drop", "weapon_c4")
}
else{
func_transfer_bomb(id)
}
}

if (g_iAFKTime[id] >= g_iTransferTime - MAX_WARN){
func_transfer_player(id)
}
}
}
}
}

public func_transfer_bomb(id){

if (!(pev(id, pev_weapons) & (1 << CSW_C4))) return

new iPlayers[32], pNum
get_players(iPlayers, pNum, "ae", "TERRORIST")

if (pNum < 2) return

new vCarrier[3], vRecipient[3], iRecipient, iDistance, iMinDistance = 999999
get_user_origin(id, vCarrier)
for (new p = 0; p < pNum; p++){
if (g_iAFKTime[iPlayers[p]] < 2){
get_user_origin(iPlayers[p], vRecipient)
iDistance = get_distance(vCarrier, vRecipient)
if (iDistance < iMinDistance){
iMinDistance = iDistance
iRecipient = iPlayers[p]
}
}
}

if (!iRecipient) return

engclient_cmd(id, "drop", "weapon_c4")
new iC4 = engfunc(EngFunc_FindEntityByString, -1, "classname", "weapon_c4")
if (pev_valid(iC4)){
new iBackpack = pev(iC4, pev_owner)
if (iBackpack > g_iMaxPlayers){
set_pev(iBackpack, pev_flags, pev(iBackpack, pev_flags) | FL_ONGROUND)
dllfunc(DLLFunc_Touch, iBackpack, iRecipient)
}
}

new szRecipient[32]
get_user_name(iRecipient, szRecipient, 31)
set_hudmessage(255, 255, 0, -1.0, 0.8, 0, 3.0, 6.0, 0.1, 0.2, -1)
for (new p = 0; p < pNum; p++){
if (iPlayers[p] != iRecipient){
ColorChat(iPlayers[p], RED,"^1[^3ANTI-AFK^1] бомба передена ^4%s", szRecipient)
}
}
ColorChat(iRecipient, RED,"^1[^3ANTI-AFK^1] бомба передана вам")
}

public func_transfer_player(id){

if (g_iWarn[id] < MAX_WARN){
set_hudmessage (250, 50, 0, -1.0, 0.60, 1, 0.0, 4.0, 0.0, 1.0, 3)
show_hudmessage(id, "У вас %i секунд чтобы начать играть^nиначе вы будете переведены в наблюдатели", floatround(FREQ_AFK_CHECK) * (MAX_WARN - g_iWarn[id]))
g_iWarn[id]++
return
}

if (pev(id, pev_weapons) & (1 << CSW_C4)){
engclient_cmd(id, "drop", "weapon_c4")
}

if (is_user_alive(id)) user_silentkill(id)

new szName[32]
get_user_name(id, szName, 31)

set_pdata_int(id, m_iJoiningState, get_pdata_int(id, m_iJoiningState, OFFSET_LINUX) & ~(1<<8), OFFSET_LINUX)
engclient_cmd(id, "jointeam", "6")

new message[512]
format(message, 511, "<meta charset=UTF-8><style>body{background:#252525;font-family:Verdana}g{color:#7BA60D;font-size:16px}o{color:#FFB000;font-size:12px}</style><center><g>%s,<br><br><o>вы переведены в наблюдатели за бездействие.<br><img src=^"http://life-game.in/img/wasd.png^">", szName)
show_motd(id, message, "ANTI-AFK")

set_pdata_int(id, m_iJoiningState, get_pdata_int(id, m_iJoiningState, OFFSET_LINUX) & ~(1<<8), OFFSET_LINUX)


g_vOrigin[id] = {0, 0, 0}

g_iAFKTime[id] = 0
g_iWarn[id] = 0

ColorChat(0, RED,"^1[^3ANTI-AFK^1]^4 %s перемещен в наблюдатели за бездействие", szName)
log_amx("Player ^"%s^" was transferred to the spectators for being AFK.", szName)
}

public func_kick_player(id){


if (get_user_flags(id) & KICK_IMMUNITY || g_bSpecAccess[id]) return

new iCurrentPlayers = get_playersnum(1)

if (iCurrentPlayers < g_iMinPlayers || !g_iMinPlayers) return

if (g_iWarn[id] < MAX_WARN){
client_print(id, print_chat, "[AMXX] %L", LANG_PLAYER, "AFK_KICK_WARN", floatround(FREQ_AFK_CHECK) * (MAX_WARN - g_iWarn[id]))
set_hudmessage (250, 50, 0, -1.0, 0.60, 1, 0.0, 4.0, 0.0, 1.0, 3)
show_hudmessage(id, "У вас %i секунд чтобы начать играть^nиначе вы будете отключены от сервера", floatround(FREQ_AFK_CHECK) * (MAX_WARN - g_iWarn[id]))
g_iWarn[id]++
return
}

new szMsg[192]
format(szMsg, 191, "Вы исключены за бездействие")
server_cmd("kick #%d ^"%s^"", get_user_userid(id), szMsg)

new szName[32]
get_user_name(id, szName, 31)
ColorChat(0, RED,"^1[^3ANTI-AFK^1]^4 %s исключен за бездействие", szName)
log_amx("Player ^"%s^" was kicked for being AFK.", szName)
}


Может быть тут проблема в операционной системе?
Потому что я ставил этот плагин на Linux и все прекрасно работало, а у меня на данный момент стоит Windows.
Меня смутила эта строка в исходнике:
Код:
OFFSET_LINUX 

За что эта строка вообще отвечает?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
XyLiGaN
сообщение 25.11.2013, 14:59
Сообщение #2
Стаж: 13 лет
Город: Югорск

Сообщений: 11668
Благодарностей: 6450
Полезность: 1052

Меценат Меценат

Используй другой AFK менеджер... Например от UFPS...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 25.11.2013, 15:22
Сообщение #3
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Строка отвечает за то, чтобы плагин работал и на Windows, и на Linux.
Убедитесь, что вы используете последнюю версию плагина.

Почему падает из-за него - нужно больше информации: текст сообщения об ошибке в консоли сервера, на худой конец - обьстоятельства, при которых происходит падение.

Ну, и неплохой вариант перейти на другой плагин, если уверены, что падения именно из-за этого.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя cArn
сообщение 25.11.2013, 15:37
Сообщение #4


Стаж: 12 лет

Сообщений: 157
Благодарностей: 31
Полезность: 161

Safety1st,
Ошибки о падении не в логи не в консоль не заносит.
А выяснил я методом исключения. По очереди отключал каждый плагин. И в итоге оказалось, что из за него и валится сервер.

Ладно, придется перейти на другой плагин.
Посоветуйте какие-нибудь хороший, и настраиваемые плагин против афк.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Алексей355
сообщение 27.11.2013, 20:49
Сообщение #5
Стаж: 14 лет

Сообщений: 12
Благодарностей: 2
Полезность: 0

Попробуй этот
Вот

#define PLUGIN "AFK Manager"
#define AUTHOR "Leon McVeran"
#define VERSION "v1.4d"
#define PDATE "19th May 2010"

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <colorchat>

#define KICK_IMMUNITY ADMIN_BAN

#define TASK_AFK_CHECK 142500
#define FREQ_AFK_CHECK 5.0
#define MAX_WARN 3

static const OFFSET_LINUX = 5
new const m_iJoiningState = 125

new bool:g_bSpec[33]
new Float:g_fLastActivity[33]
new g_iAFKCheck
new g_iAFKTime[33]
new g_iDropBomb
new g_iKickTime
new g_iMaxPlayers
new g_iMinPlayers
new g_iTransferTime
new g_iWarn[33]
new g_vOrigin[33][3]

new CVAR_afk_drop_bomb
new CVAR_afk_check
new CVAR_afk_transfer_time
new CVAR_afk_kick_time
new CVAR_afk_kick_players

public plugin_init(){
register_plugin(PLUGIN, VERSION, AUTHOR)
register_dictionary("afk_manager.txt")

register_logevent("event_round_end", 2, "0=World triggered", "1=Round_End")
register_logevent("event_round_start", 2, "0=World triggered", "1=Round_Start")

// Support der alten Mens
register_clcmd("jointeam", "cmd_jointeam") // new menu
register_menucmd(register_menuid("Team_Select", 1), 511, "cmd_jointeam") // old menu

register_clcmd("joinclass", "cmd_joinclass") // new menu
register_menucmd(register_menuid("Terrorist_Select", 1), 511, "cmd_joinclass") // old menu
register_menucmd(register_menuid("CT_Select", 1), 511, "cmd_joinclass") // old menu

CVAR_afk_check = register_cvar("afk_check", "1")
CVAR_afk_drop_bomb = register_cvar("afk_drop_bomb", "2")
CVAR_afk_transfer_time = register_cvar("afk_transfer_time", "12")
CVAR_afk_kick_time = register_cvar("afk_kick_time", "9999")
CVAR_afk_kick_players = register_cvar("afk_kick_players", "0")
}

public plugin_cfg(){
g_iMaxPlayers = get_maxplayers()
}

public client_connect(id){

// Spieler als Spectator entmarkieren
g_bSpec[id] = false

// Positionen zurcksetzen
g_vOrigin[id] = {0, 0, 0}

// Counter zurcksetzen
g_iAFKTime[id] = 0
g_iWarn[id] = 0
}

public event_round_start(){

// AFK Check eingeschaltet
g_iAFKCheck = get_pcvar_num(CVAR_afk_check)
if (g_iAFKCheck){

// Spawn-Positionen aktualisieren
new iPlayers[32], pNum
get_players(iPlayers, pNum, "a")
for (new p = 0; p < pNum; p++){
get_user_origin(iPlayers[p], g_vOrigin[iPlayers[p]])
}

// Loop anlegen falls nicht vorhanden
if (!task_exists(TASK_AFK_CHECK)) set_task(FREQ_AFK_CHECK, "func_afk_check", TASK_AFK_CHECK, _, _, "b")

// Kick und Transferzeiten festlegen
if (get_pcvar_num(CVAR_afk_transfer_time) < 6) set_pcvar_num(CVAR_afk_transfer_time, 6)
if (get_pcvar_num(CVAR_afk_kick_time) < 6) set_pcvar_num(CVAR_afk_kick_time, 6)
g_iDropBomb = get_pcvar_num(CVAR_afk_drop_bomb)
g_iTransferTime = get_pcvar_num(CVAR_afk_transfer_time)
g_iKickTime = get_pcvar_num(CVAR_afk_kick_time)
g_iMinPlayers = get_pcvar_num(CVAR_afk_kick_players)
}

// AFK Check ausgeschaltet
else{

// Loop l��en falls vorhanden
if (task_exists(TASK_AFK_CHECK)) remove_task(TASK_AFK_CHECK)
}


}

public cmd_jointeam(id){

// Spieler als Spectator markieren, sonst kann man den Kick umgehen, indem man keiner Klasse joined.
g_bSpec[id] = true
}

public cmd_joinclass(id){

// Spieler als Spectator entmarkieren
g_bSpec[id] = false

// Positionen zurcksetzen
g_vOrigin[id] = {0, 0, 0}

// Counter zurcksetzen
g_iAFKTime[id] = 0
g_iWarn[id] = 0
}

public event_round_end(){

// Check darf nicht durchgefhrt werden
g_iAFKCheck = 0
}

public func_afk_check(taskid){
if (g_iAFKCheck){
new CsTeams:eTeam

// Alle Spieler berprfen
for (new id = 1; id <= g_iMaxPlayers; id++){

// Bots nicht berprfen
if (is_user_bot(id)) continue

// AFK Funktionen fr Specs
if (is_user_connected(id) && !is_user_hltv(id)){
eTeam = cs_get_user_team(id)
if (eTeam == CS_TEAM_SPECTATOR || eTeam == CS_TEAM_UNASSIGNED || g_bSpec[id]){

// Counter erh��
g_iAFKTime[id]++

// Spec-Kick
if (g_iAFKTime[id] >= g_iKickTime - MAX_WARN){
func_kick_player(id)
}
}
}

// AFK Funktionen fr lebende Spieler
if (is_user_alive(id)){

// Positionen berprfen
if (g_iAFKCheck == 1){
new vOrigin[3]
get_user_origin(id, vOrigin)

if (g_vOrigin[id][0] != vOrigin[0] || g_vOrigin[id][1] != vOrigin[1]){
g_vOrigin[id][0] = vOrigin[0]
g_vOrigin[id][1] = vOrigin[1]
g_vOrigin[id][2] = vOrigin[2]
g_iAFKTime[id] = 0
g_iWarn[id] = 0
}
else{
g_iAFKTime[id]++
}
}

// Letzte Aktivit㲠ermitteln
else{
new Float:fLastActivity
fLastActivity = cs_get_user_lastactivity(id)

if (fLastActivity != g_fLastActivity[id]){
g_fLastActivity[id] = fLastActivity
g_iAFKTime[id] = 0
g_iWarn[id] = 0
}
else{
g_iAFKTime[id] = floatround((get_gametime() - fLastActivity) / FREQ_AFK_CHECK)
}
}

// Bombentransfer
if (g_iDropBomb && g_iAFKTime[id] >= 3){
if (g_iDropBomb == 1){
if (pev(id, pev_weapons) & (1 << CSW_C4)) engclient_cmd(id, "drop", "weapon_c4")
}
else{
func_transfer_bomb(id)
}
}

// Spec-Switch
if (g_iAFKTime[id] >= g_iTransferTime - MAX_WARN){
func_transfer_player(id)
}
}
}
}
}

public func_transfer_bomb(id){

// Abbrechen wenn der Spieler keine Bombe hat
if (!(pev(id, pev_weapons) & (1 << CSW_C4))) return

// Ermittle alle lebenden Terroristen
new iPlayers[32], pNum
get_players(iPlayers, pNum, "ae", "TERRORIST")

// Abbrechen falls weniger als 2 Terroristen leben
if (pNum < 2) return

// Finde den n㢨sten Terroristen der nicht AFK ist
new vCarrier[3], vRecipient[3], iRecipient, iDistance, iMinDistance = 999999
get_user_origin(id, vCarrier)
for (new p = 0; p < pNum; p++){
if (g_iAFKTime[iPlayers[p]] < 2){
get_user_origin(iPlayers[p], vRecipient)
iDistance = get_distance(vCarrier, vRecipient)
if (iDistance < iMinDistance){
iMinDistance = iDistance
iRecipient = iPlayers[p]
}
}
}

// Abbrechen wenn alle Terroristen AFK sind
if (!iRecipient) return

// Bombe transferieren
engclient_cmd(id, "drop", "weapon_c4")
new iC4 = engfunc(EngFunc_FindEntityByString, -1, "classname", "weapon_c4")
if (pev_valid(iC4)){
new iBackpack = pev(iC4, pev_owner)
if (iBackpack > g_iMaxPlayers){
set_pev(iBackpack, pev_flags, pev(iBackpack, pev_flags) | FL_ONGROUND)
dllfunc(DLLFunc_Touch, iBackpack, iRecipient)
}
}

// Nachrichten anzeigen
new szRecipient[32], szMsg[128]
get_user_name(iRecipient, szRecipient, 31)
set_hudmessage(255, 255, 0, -1.0, 0.8, 0, 3.0, 6.0, 0.1, 0.2, -1)
for (new p = 0; p < pNum; p++){
if (iPlayers[p] != iRecipient){
format(szMsg, 127, "%L", iPlayers[p], "AFK_TRANSFER_BOMB", szRecipient)
show_hudmessage(iPlayers[p], "%s", szMsg)
}
}
format(szMsg, 127, "%L", iRecipient, "AFK_GOT_BOMB")
show_hudmessage(iRecipient, szMsg)
}

public func_transfer_player(id){

// Warnung anzeigen, wenn nicht schon max-mal verwarnt
if (g_iWarn[id] < MAX_WARN){
ColorChat(id, RED, "У вас^x04 %i^x03 секунд чтобы начать играть, иначе вы будете перенесены в наблюдатели", floatround(FREQ_AFK_CHECK) * (MAX_WARN - g_iWarn[id]))
g_iWarn[id]++
return
}

// Eigentlich sollte die Bombe schon transferiert worden sein
if (pev(id, pev_weapons) & (1 << CSW_C4)){
engclient_cmd(id, "drop", "weapon_c4")
}

// Spieler tranferieren
if (is_user_alive(id)) user_silentkill(id)

// Allow players to choose a team more than one time per round (Thanks ConnorMcLeod)
// I use this method caused of some issue with deathmatch (Player will be respawned as T or CT)
set_pdata_int(id, m_iJoiningState, get_pdata_int(id, m_iJoiningState, OFFSET_LINUX) & ~(1<<8), OFFSET_LINUX)
engclient_cmd(id, "jointeam", "6")
set_pdata_int(id, m_iJoiningState, get_pdata_int(id, m_iJoiningState, OFFSET_LINUX) & ~(1<<8), OFFSET_LINUX)
//cs_set_user_team(id, CS_TEAM_SPECTATOR)
//cs_reset_user_model(id)

// Positionen zurcksetzen
g_vOrigin[id] = {0, 0, 0}

// Counter zurcksetzen
g_iAFKTime[id] = 0
g_iWarn[id] = 0

// Nachrichten anzeigen
new szName[32]
get_user_name(id, szName, 31)
ColorChat(0, RED, "Игрок^x04 ^"%s^" ^x03был перемещен за наблюдателей. Причина:^x04 AFK.", szName)
}

public func_kick_player(id){

// Abbrechen wenn es sich um einen Admin handelt
if (get_user_flags(id) & KICK_IMMUNITY) return

// Anzahl der aktuellen Spieler ermitteln
new iCurrentPlayers = get_playersnum(1)

// Sind noch Pl㳺e frei?
if (iCurrentPlayers < g_iMinPlayers || !g_iMinPlayers) return

// Warnung anzeigen, wenn nicht schon max-mal verwarnt
if (g_iWarn[id] < MAX_WARN){
ColorChat(id, RED, "%L", LANG_PLAYER, "AFK_KICK_WARN", floatround(FREQ_AFK_CHECK) * (MAX_WARN - g_iWarn[id]))
g_iWarn[id]++
return
}

// Spieler kicken
new szMsg[192]
format(szMsg, 191, "%L", id, "AFK_KICK_REASON")
server_cmd("kick #%d ^"%s^"", get_user_userid(id), szMsg)

// Nachrichten anzeigen
new szName[32]
get_user_name(id, szName, 31)
ColorChat(0, RED, "^x03%L", LANG_PLAYER, "AFK_KICK_PLAYER", szName)
}


Отредактировал: Алексей355, - 27.11.2013, 20:55
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: