 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
AFK сис-ма
| |
| Ghost-X | Дата: Вторник, 24.03.2009, 14:08 | Сообщение # 1 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус: 
| Ищу кик за афк 10 минут. Т.е. Idle kicker как в Катрине
Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит. Хочешь остаться при своем мнении - держи его при себе.
|
| |
|
|
| Ghost-X | Дата: Вторник, 24.03.2009, 21:34 | Сообщение # 2 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус: 
| Все нашел. Кому надо: Code #define MAX_IDLE_TIME 7 enum pPos { Float:LastX, Float:LastY, Float:LastZ, }
new PlayerLastPos[MAX_PLAYERS][pPos], PlayerAfkTicks[MAX_PLAYERS], Float:PlayerCurrentPos[3];
public OnGameModeInit() { SetTimer("IdleKicker",1000,1); }
forward IdleKicker(); public IdleKicker() { for(new i = 0; i < MAX_PLAYERS; i++) { GetPlayerPos(i, PlayerCurrentPos[0], PlayerCurrentPos[1], PlayerCurrentPos[2]); if(!floatcmp(PlayerCurrentPos[0], PlayerLastPos[i][LastX]) && !floatcmp(PlayerCurrentPos[1], PlayerLastPos[i][LastY])) { PlayerAfkTicks[i] ++; } else { PlayerAfkTicks[i] = 0; } PlayerLastPos[i][LastX] = PlayerCurrentPos[0]; PlayerLastPos[i][LastY] = PlayerCurrentPos[1]; PlayerLastPos[i][LastZ] = PlayerCurrentPos[2]; if(PlayerAfkTicks[i] == MAX_IDLE_TIME*50) { SendClientMessage(i, COLOUR_WHITE, "Вы простояли 7 минут на месте, вас скоро кикнут!!!"); return 1; } if(PlayerAfkTicks[i] == MAX_IDLE_TIME*60) { new name[MAX_PLAYER_NAME]; new string[64]; GetPlayerName(i, name, sizeof(name)); SendClientMessage(i, COLOUR_LIGHTRED, "Вы были кикнуты за простой 7 минут на месте"); format(string, sizeof(string), "%s был кикнут за простой на месте 7 минут!",name); SendClientMessageToAll(COLOUR_LIGHTRED, string); Kick(i); return 1; } } return 1; }
Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит. Хочешь остаться при своем мнении - держи его при себе.
|
| |
|
|
| stepmex | Дата: Вторник, 24.03.2009, 22:01 | Сообщение # 3 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| В воде остаться и не будет работать этот код
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| [TDM]Kosmos | Дата: Среда, 25.03.2009, 14:46 | Сообщение # 4 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2046
Награды: 8
Город: Йошкар-Ола
Репутация: 126
Замечания: 40%
Статус: 
| stepmex, то есть? оО
Я вернулся =)
|
| |
|
|
| stepmex | Дата: Среда, 25.03.2009, 15:50 | Сообщение # 5 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| [TDM]Kosmos, когда ты в воде за счет её движения твои координаты всегда меняются, также если сесть к кому-нибудь в машину или встать на неё.
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| 33pavlik33 | Дата: Четверг, 16.04.2009, 15:31 | Сообщение # 6 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 194
Награды: 1
Город: Ковров
Репутация: 9
Замечания: 0%
Статус: 
| Quote .pwn(987) : error 021: symbol already defined: "OnGameModeInit" .pwn(989) : warning 209: function "OnGameModeInit" should return a value Это если просто в конец кода мода вставить. Если же вставляю в паблик public OnGameModeInit() Quote { SetTimer("IdleKicker",1000,1); } forward IdleKicker(); А остальное в конец мода, то вообще кучища ошибок появляется
|
| |
|
|
| [RD]Chez | Дата: Четверг, 16.04.2009, 15:57 | Сообщение # 7 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 3687
Награды: 206
Город: St. P
Репутация: 0
Замечания: 20%
Статус: 
| stepmex, слух а как насчет движение + keystate? чот я тут подумал и решил что выгодней OnPlayerText+OnPlayerCommandText+OnPlayerStateChange+OnPlayerKeyStateChange+OnPlayerUpdate+ сравнение координат. ты пробовал писатть кикер с изменением нажатий клавиш? я к тому, что стоит изобретать велосипед, если он уже создан7 =)
1 час моей работы стоит минимум 800 рублей для срочных работ. Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS. Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы. Немного ассемблер. Ох**тельный верстальщик какб.
Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^
chezrd@gmail.com lance@chez-lab.ru
|
| |
|
|
| 33pavlik33 | Дата: Четверг, 16.04.2009, 17:38 | Сообщение # 8 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 194
Награды: 1
Город: Ковров
Репутация: 9
Замечания: 0%
Статус: 
| Помогите хотя бы тогда скрипт из этого сделать
|
| |
|
|
| stepmex | Дата: Четверг, 16.04.2009, 18:48 | Сообщение # 9 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| [RD]Chez, я уже давно написал АФК с применением 1 таймера и OnPlayerUpdate(playerid), чтобы изменить сие чуда на кикер нужно добавить 3-5 строчек. И кстати я сам лично это уже сделал у себя на сервере, но там кикает через 2 часа.Добавлено (16.04.2009, 18:46) --------------------------------------------- Вот тема: http://www.samp-rus.com/forum/15-8705-1 Код: [pwn] Code #include <a_samp>
#define TIME_IO_KICK 10 //в секундах
forward System(); new AFKPlayer[MAX_PLAYERS],timer,PlayerName[MAX_PLAYERS][MAX_PLAYER_NAME];
public OnFilterScriptInit() { print("\n--------------------------------------"); print(" AFK system by $tepashka"); print("--------------------------------------\n"); timer = SetTimer("System",1000,1); for(new playerid;playerid < MAX_PLAYERS;playerid++) { if(IsPlayerConnected(playerid)){AFKPlayer[playerid] = 0;} } return 1; }
public OnFilterScriptExit() { KillTimer(timer); for(new playerid;playerid < MAX_PLAYERS;playerid++) { if(IsPlayerConnected(playerid) && AFKPlayer[playerid] > 0) { SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(playerid)-1); SetPlayerName(playerid,PlayerName[playerid]); } } return 1; }
public OnPlayerConnect(playerid) { AFKPlayer[playerid] = -5; return 1; }
public OnPlayerSpawn(playerid) { AFKPlayer[playerid] = 0; return 1; }
public OnPlayerDeath(playerid, killerid, reason) { AFKPlayer[playerid] = -5; return 1; }
public OnPlayerUpdate(playerid) { if(AFKPlayer[playerid] > -5) { if(AFKPlayer[playerid] > 0) { new string[128]; format(string,sizeof(string),"SERVER: игрок %s вернулся из AFK продолжительностью %s",PlayerName[playerid],ConvertSeconds(AFKPlayer[playerid])); SendClientMessageToAll(0xFFA500AA,string); SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(playerid)-1); SetPlayerName(playerid,PlayerName[playerid]); } AFKPlayer[playerid] = 0; } return 1; }
public System() { for(new playerid;playerid < MAX_PLAYERS;playerid++) { if(IsPlayerConnected(playerid)) { new string[128]; if(-5 < AFKPlayer[playerid] <= 0) { AFKPlayer[playerid] -= 1; } else if(AFKPlayer[playerid] == -3) { AFKPlayer[playerid] = 1; GetPlayerName(playerid, PlayerName[playerid], MAX_PLAYER_NAME); format(string,sizeof(string),"SERVER: игрок %s ушел в AFK",PlayerName[playerid]); SendClientMessageToAll(0xFFA500AA,string); SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(playerid)+1); format(string,MAX_PLAYER_NAME,"%s[AFK]",PlayerName[playerid]); SetPlayerName(playerid,string); } else if(0 < AFKPlayer[playerid] < 7200) { AFKPlayer[playerid] += 1; } else if(AFKPlayer[playerid] >= TIME_IO_KICK) { SendClientMessage(playerid,0xFFA500AA,"Вы были кикнуты за 10 секундное отсутствие."); SetPlayerName(playerid,PlayerName[playerid]); Kick(playerid); } } } }
ConvertSeconds(time) { new string[128]; if(time < 60) { format(string, sizeof(string), "%d секунд", time); } else if(time == 60) { string = "1 минуту"; } else if(time > 60 && time < 3600) { new Float: minutes; new seconds; minutes = time / 60; seconds = time % 60; format(string, sizeof(string), "%.0f минут и %d секунд", minutes, seconds); } else if(time == 3600) { string = "1 час"; } else if(time > 3600) { new Float: hours; new minutes_int; new Float: minutes; new seconds; hours = time / 3600; minutes_int = time % 3600; minutes = minutes_int / 60; seconds = minutes_int % 60; format(string, sizeof(string), "%.0f:%.0f:%d", hours, minutes, seconds); } return string; } [/pwn]Добавлено (16.04.2009, 18:48) --------------------------------------------- Учтена даже возможность краткосрочной потери пакетов от клиента.
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| Phenom | Дата: Пятница, 17.04.2009, 18:35 | Сообщение # 10 |
|
Постоялец
Группа:
Пользователи
Сообщений: 496
Награды: 16
Город: Киров
Репутация: 78
Замечания: 100%
Статус: 
| stepmex, , то что надо.
|
| |
|
|
|
 |
|
 | |
| |
|