[pwn]#include <a_samp> #define COLOR_WHITE 0xFFFFFFAA
#define COLOR_GOLD 0xFF9900AA
#define COLOR_RED 0xFF0000FF
#define COLOR_GRAD5 0xE3E3E3FF
#define COLOR_GRAD1 0xB4B5B7FF
#define COLOR_GREY 0xBEBEBEAA
#define COLOUR_GREEN 0x33AA33AA
#define COLOUR_LIME 0x10F441AA
#define COLOUR_GREY 0xAFAFAFAA
#define COLOR_BLUE 0x0000BBAA
#define COLOR_BLACK 0x00000000
forward JailTimer(playerid);
new jail[MAX_PLAYERS];
new jailtimer;
public OnPlayerCommandText(playerid,cmdtext[])
{
new cmd[256];
new idx;
cmd = strtok(cmdtext, idx);
new tmp[256];
new playername[MAX_PLAYER_NAME];
new Adminname[MAX_PLAYER_NAME];
new string[256];
if(strcmp(cmd,"/jail",true) == 0)
{
new tmpp[256];
tmp = strtok(cmdtext, idx);
if(!IsPlayerAdmin(playerid))
{
SendClientMessage(playerid,COLOR_RED,"ХраП: ТЫ НЕ АДМИН МАТЬ ТВОЯ ЖЕНЩИНА!");
return 1;
}
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GREY, " Ошибка: /jail ID секунд");
return 1;
}
tmpp = strtok(cmdtext, idx);
if(!strlen(tmpp))
{
SendClientMessage(playerid, COLOR_GREY, " Ошибка: /jail ID время");
return 1;
}
new giveID, JailTime;
giveID = strval(tmp);
JailTime = strval(tmpp);
jailtimer = SetTimer("JailTimer",JailTime*1000,0);
jail[giveID] = 1;
GetPlayerName(giveID,playername,sizeof(playername));
GetPlayerName(playerid,Adminname,sizeof(Adminname));
format(string,sizeof(string)," %s был посажен в тюрьму админом %s",playername,Adminname);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(i != playerid && i != giveID)
{
SendClientMessage(i,COLOR_BLUE,string);
}
}
format(string,sizeof(string)," Вы посадили в тюрьму игрока %s на %d секунд",playername,JailTime);
SendClientMessage(playerid,COLOR_BLUE,string);
format(string,sizeof(string)," Админ %s посадил вас в тюрьму на %d секунд",playername,JailTime);
SendClientMessage(giveID,COLOR_BLUE,string);
SetPlayerInterior(giveID,6);
SetPlayerPos(giveID,265.1273,77.6823,1001.0391);
SetPlayerFacingAngle(giveID,0);
SetPlayerWantedLevel(giveID, 6);
SetPlayerArmour(giveID, 0);
SetPlayerHealth(giveID, 10);
ResetPlayerMoney(giveID);
ResetPlayerWeapons(giveID);
PlayerPlaySound(giveID,1082,198.3797,160.8905,1003.0300);
}
if(strcmp(cmd,"/unjail",true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!IsPlayerAdmin(playerid))
{
SendClientMessage(playerid,COLOR_RED," Ты не админ МАТЬ ТВОЮ!.");
return 1;
}
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GREY, " Ошибка: /unjail ID");
return 1;
}
new giveID = strval(tmp);
if(jail[playerid] != 1)
{
SendClientMessage(playerid,COLOR_RED," Админ ты кусок, этот игрок итак на воле");
return 1;
}
else
{
jail[playerid] = 0;
KillTimer(jailtimer);
SetPlayerInterior(giveID,0);
SetPlayerWantedLevel(giveID,2);
SetPlayerHealth(giveID,99);
format(string,sizeof(string)," Вы вызвалили игрока %s из тюрьмы",playername);
SendClientMessage(playerid,COLOR_BLUE,string);
format(string,sizeof(string)," Админ %s высвободил вас из тюрьмы",playername);
SendClientMessage(giveID,COLOR_BLUE,string);
}
}
return 0;
}
public OnPlayerDisconnect(playerid,reason)
{
jail[playerid] = 0;
}
public OnPlayerUpdate(playerid)
{
if(jail[playerid] == 1)
{
if(!PlayerToPoint(20,playerid,265.1273,77.6823,1001.0391))
{
SetPlayerInterior(playerid,6);
SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
SetPlayerFacingAngle(playerid,0);
SetPlayerWantedLevel(playerid, 6);
SetPlayerArmour(playerid, 0);
SetPlayerHealth(playerid, 10);
ResetPlayerMoney(playerid);
ResetPlayerWeapons(playerid);
PlayerPlaySound(playerid,1082,198.3797,160.8905,1003.0300);
SendClientMessage(playerid,COLOR_WHITE,"ХраП: Ты еще не отсидел свое!");
}
}
return 1;
}
public JailTimer(playerid)
{
if(jail[playerid] == 1)
{
new name1[20],string[256];
jail[playerid] = 0;
SpawnPlayer(playerid);
SetPlayerInterior(playerid,0);
SendClientMessage(playerid,COLOR_WHITE,"ХраП: ты отсидел свое");
GetPlayerName(playerid,name1,sizeof(name1));
format(string,sizeof(string)," %s вышел с зоны",name1);
SendClientMessageToAll(COLOR_WHITE,string);
}
return 1;
}
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}[/pwn]
Сажает игрока в тюрягу нормально. Но почему то, когда время истекает игрок остается в тюрьме. Освободить его можно только командой.
Что делать?