Текущая версия SA-MP: 0.3.7


IP: 77.220.180.96:7777
  Новые сообщения · Поиск
  • Страница 1 из 1
  • 1
Модератор форума: KaTacTpOqpa  
Анти-Афк
BJIADOKC Сообщение # 1  | 22:56:03
Скриптеры
Сообщений: 601
Репутация: 161
ну начнем-с biggrin
в начало:
Code

#define sO 1000
new Perviy[MAX_PLAYERS],Obnovka[MAX_PLAYERS],m,cb[50],vremya[MAX_PLAYERS];
forward proverka();

в OnGameModeInit:
Code

m = SetTimer("proverka",sO,1);

в OnPlayerConnect
Code

vremya[playerid] = 0,Obnovka[playerid] = 0,Perviy[playerid] = 0;

в OnPlayerUpdate:
Code

Obnovka[playerid]++;

в конец:
Code

public proverka()
{

for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
{
if(IsPlayerConnected(playerid))
{
new fvr = floatround((vremya[playerid]) / 1000),Cek = fvr % 60,MuH = floatround((fvr/60), floatround_floor);
if(Obnovka[playerid] == 0)
{
vremya[playerid] += sO;
format(cb, sizeof(cb),"ESC: %02d:%02d",MuH,Cek);
SetPlayerChatBubble(playerid,cb,0xA0F935AA,20.0,sO);
}
else
{
Perviy[playerid] = 1,vremya[playerid] = 0,Obnovka[playerid] = 0;
}
}
else return false;
}
}
return true;
}

ыы
будут баги выкладываем тут
если ошибся в чемто, не бейте, пост написан не на трезвую голову xD
урок от BJIADOKC


тут больше не сижу... открыл свой проект


Редактировано BJIADOKC - Суббота, 22 Янв 2011, 22:58:46
BJIADOKC Сообщение # 2  | 22:33:05
Скриптеры
Сообщений: 601
Репутация: 161
сразу поправлюсь: это не анти-афк, а афк-система (тоесть показывает, но ничего более не делает)
вот вам пример действующего анти-афка:
изменяем паблик проверки на это:
Code


public proverka()
{

for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
{
if(IsPlayerConnected(playerid))
{
new fvr = floatround((vremya[playerid]) / 1000),Cek = fvr % 60,MuH = floatround((fvr/60), floatround_floor);
if(Obnovka[playerid] == 0)
{
SetTimerEx("KickAfker",1000*60,false,"d",playerid);
vremya[playerid] += sO;
format(cb, sizeof(cb),"ESC: %02d:%02d",MuH,Cek);
SetPlayerChatBubble(playerid,cb,0xA0F935AA,20.0,sO);
}
else
{
Perviy[playerid] = 1,vremya[playerid] = 0,Obnovka[playerid] = 0;
}
}
else return false;
}
}
return true;
}  

и в конец
Code

forward KickAfker(player);
public KickAfker(player)
{
new name[24], str[128];
GetPlayerName(player,name,24);
format(str,128,"%s (ID: %d) кикнут за долгое пребывание в АФК (> 1 минуты)",name,player);
SendClientMessageToAll(0xFF0000AA,str);
Kick(player);
}

чтобы увеличить или уменьшить время афка за которое будет кикать, поменяйте значение таймера (1000*60) на свое (не забывайте что в таймере время измеряется в МИЛЛИСЕКУНДАХ!)


тут больше не сижу... открыл свой проект
NeaKTIV Сообщение # 3  | 22:14:38
Пользователи
Сообщений: 10
Репутация: 0
Цитата BJIADOKC ()
BJIADOKC

Можешь сделать, чтобы над игроком была написано что он афк?, без разницы что, будь то esc или afk


[img]http://gta-fspoint.my1.ru/rineview1.png[/img]
[JIuC]eH[oK] Сообщение # 4  | 13:13:32
Модераторы
Сообщений: 972
Репутация: 414
Цитата NeaKTIV ()
Можешь сделать, чтобы над игроком была написано что он афк?, без разницы что, будь то esc или afk

Цитата NeaKTIV ()
тут больше не сижу... открыл свой проект

Я думаю врятли он тебе сделает.


Администратор Универсала.
По вопросам обращайтесь ко мне в
Личку.
NeaKTIV Сообщение # 5  | 13:23:01
Пользователи
Сообщений: 10
Репутация: 0
Цитата [JIuC]eH[oK] ()
Я думаю врятли он тебе сделает.

Понятно


[img]http://gta-fspoint.my1.ru/rineview1.png[/img]
  • Страница 1 из 1
  • 1
Поиск: