F[a]ust
Умник
Идея немного взята с тринити.
Когда игроку кидают звезды или уже есть звезды, то полиция может объявить его в розыск командой /ch id, после этого ему на экране высветится сообщение, что его пытается задержать полиция и после закрытия диалога пойдет отсчет 15 секунд в течении которых он может сам сдаться и его отвезут в кпз или же он проигнорирует и будет скрываться. После 15 секунд начнет отсчет 2 минут в течении которых игрок не может выйти из игры и если выйдет, то сразу сядет и если он смог скрываться 2 минуты, то начнется отсчет 20 секунд, в течении которых он может выйти из игры и уже появится на спавне/отеле и тд. Но он все равно остается в розыске и если он попадет в радиус видимости полиции, то у него опять пойдет отсчет 2 минут и напишет, что он попал в поле зрения полиции и полицейскому напишет, что обнаружен преступник. Так же у полиции есть команда /find которая работает на игроков, которые в розыске и показывает стрелкой их местонахождение. Если игрока убивают во время погони, то он садится.
Я использовал для тестов GF мод.
Ко всем new добавляем
К enum pInfo добавляем
В Public OnPlayerSpawn
В OnGameModeInit
В секундный таймер добавляем ( в моем случае был OtherTimer)
В OnPlayerEnterCheckpoint (чекпонит создается игроку, когда его сажают в машину командой /cput(
pJailed - в моем случае она устанавливала сидит игрок или нет. Нужно менять под ваш мод.
pJailTime - в моем случае отвечала за время на которое сажало игрока. Нужно менять под ваш мод.
WantedPoints- у меня отвечал за уровень розыска(звезды), нужно заменить на переменную, которая отвечает за это в вашем моде.
Если нету добавьте OnPlayerStreamIn. В него
PlayerInfo[forplayerid][pLeader] == 1 - ставим свою проверку на копов.
В OnPlayerKeyStateChange
В OnDialogResponse
В OnPlayerUpdate
В OnPlayerCommandText
IsACop - ставим свою проверку на копов и меняем WantedPoints
В команду /cuff (надеть наручники) надо добавить
Сама команда из gf
В конец мода
В OnPlayerDeath
В OnPlayerDisconnect
Если у кого то нету, то в конец мода
Так же нужно сделать сохранение на pSearch. В моем случае сделано так.
В OnPlayerLogin
В OnPlayerUpdate
В OnPlayerRegister
Со стороны полицейского видео 1. И преступника
Со стороны полицейского видео 3. И преступника Когда игрок вышел из игры и попал опять в радиус полиции.
В машине стрелочка смотри более менее лучше, чем на мотоцикле
---------- Сообщение добавлено в 15:04 ---------- Предыдущее сообщение добавлено в 15:03 ----------
Когда игроку кидают звезды или уже есть звезды, то полиция может объявить его в розыск командой /ch id, после этого ему на экране высветится сообщение, что его пытается задержать полиция и после закрытия диалога пойдет отсчет 15 секунд в течении которых он может сам сдаться и его отвезут в кпз или же он проигнорирует и будет скрываться. После 15 секунд начнет отсчет 2 минут в течении которых игрок не может выйти из игры и если выйдет, то сразу сядет и если он смог скрываться 2 минуты, то начнется отсчет 20 секунд, в течении которых он может выйти из игры и уже появится на спавне/отеле и тд. Но он все равно остается в розыске и если он попадет в радиус видимости полиции, то у него опять пойдет отсчет 2 минут и напишет, что он попал в поле зрения полиции и полицейскому напишет, что обнаружен преступник. Так же у полиции есть команда /find которая работает на игроков, которые в розыске и показывает стрелкой их местонахождение. Если игрока убивают во время погони, то он садится.
Я использовал для тестов GF мод.
Ко всем new добавляем
PHP:
new FindObject[MAX_PLAYERS char];
new PlayerText:TextdrawTimer[MAX_PLAYERS char];
new Text:TextdrawFlasher[6];
new Text:TextdrawSearch[3];
new bool:flasher;
new bool:search[MAX_PLAYERS char];
PHP:
pSearch
PHP:
TextdrawTimer[playerid] = CreatePlayerTextDraw(playerid, 284.666656, 50.933288, "00:00");
PlayerTextDrawLetterSize(playerid, TextdrawTimer[playerid], 0.356999, 1.637333);
PlayerTextDrawAlignment(playerid, TextdrawTimer[playerid], 1);
PlayerTextDrawColor(playerid, TextdrawTimer[playerid], -1);
PlayerTextDrawSetShadow(playerid, TextdrawTimer[playerid], 0);
PlayerTextDrawSetOutline(playerid, TextdrawTimer[playerid], 1);
PlayerTextDrawBackgroundColor(playerid, TextdrawTimer[playerid], 51);
PlayerTextDrawFont(playerid, TextdrawTimer[playerid], 2);
PlayerTextDrawSetProportional(playerid, TextdrawTimer[playerid], 1);
PHP:
TextdrawFlasher[0] = TextDrawCreate(383.666687, 6.344436, "usebox");
TextDrawLetterSize(TextdrawFlasher[0], 0.000000, 1.931069);
TextDrawTextSize(TextdrawFlasher[0], 229.000000, 0.000000);
TextDrawAlignment(TextdrawFlasher[0], 1);
TextDrawColor(TextdrawFlasher[0], 0);
TextDrawUseBox(TextdrawFlasher[0], true);
TextDrawBoxColor(TextdrawFlasher[0], 102);
TextDrawSetShadow(TextdrawFlasher[0], 0);
TextDrawSetOutline(TextdrawFlasher[0], 0);
TextDrawFont(TextdrawFlasher[0], 0);
TextdrawFlasher[1] = TextDrawCreate(311.000000, 26.5, "usebox");
TextDrawLetterSize(TextdrawFlasher[1], 0.000000, -2.575103);
TextDrawTextSize(TextdrawFlasher[1], 303.333312, 0.000000);
TextDrawAlignment(TextdrawFlasher[1], 1);
TextDrawColor(TextdrawFlasher[1], 0);
TextDrawUseBox(TextdrawFlasher[1], true);
TextDrawBoxColor(TextdrawFlasher[1], 102);
TextDrawSetShadow(TextdrawFlasher[1], 0);
TextDrawSetOutline(TextdrawFlasher[1], 0);
TextDrawFont(TextdrawFlasher[1], 0);
TextdrawFlasher[2] = TextDrawCreate(311.000000, 8.833343, "usebox");
TextDrawLetterSize(TextdrawFlasher[2], 0.000000, 1.342591);
TextDrawTextSize(TextdrawFlasher[2], 378.666656, 0.000000);
TextDrawAlignment(TextdrawFlasher[2], 1);
TextDrawColor(TextdrawFlasher[2], 0);
TextDrawUseBox(TextdrawFlasher[2], true);
TextDrawBoxColor(TextdrawFlasher[2], 65535);
TextDrawSetShadow(TextdrawFlasher[2], 0);
TextDrawSetOutline(TextdrawFlasher[2], 0);
TextDrawFont(TextdrawFlasher[2], 0);
TextdrawFlasher[3] = TextDrawCreate(306.000091, 8.585189, "usebox");
TextDrawLetterSize(TextdrawFlasher[3], 0.000000, 1.355347);
TextDrawTextSize(TextdrawFlasher[3], 231.000030, 0.000000);
TextDrawAlignment(TextdrawFlasher[3], 1);
TextDrawColor(TextdrawFlasher[3], 0);
TextDrawUseBox(TextdrawFlasher[3], true);
TextDrawBoxColor(TextdrawFlasher[3], -16776961);
TextDrawSetShadow(TextdrawFlasher[3], 0);
TextDrawSetOutline(TextdrawFlasher[3], 0);
TextDrawFont(TextdrawFlasher[3], 0);
TextdrawFlasher[4] = TextDrawCreate(273.333282, 25.585174, "surrender!");
TextDrawLetterSize(TextdrawFlasher[4], 0.270000, 1.546074);
TextDrawAlignment(TextdrawFlasher[4], 1);
TextDrawColor(TextdrawFlasher[4], -1);
TextDrawSetShadow(TextdrawFlasher[4], 0);
TextDrawSetOutline(TextdrawFlasher[4], 1);
TextDrawFont(TextdrawFlasher[4], 2);
TextDrawBackgroundColor(TextdrawFlasher[4], 51);
TextDrawSetProportional(TextdrawFlasher[4], 1);
TextdrawSearch[0] = TextDrawCreate(325.333251, 1.085165, "usebox");
TextDrawLetterSize(TextdrawSearch[0], 0.000000, 49.881671);
TextDrawTextSize(TextdrawSearch[0], 313.666748, 0.000000);
TextDrawAlignment(TextdrawSearch[0], 1);
TextDrawColor(TextdrawSearch[0], 0);
TextDrawUseBox(TextdrawSearch[0], true);
TextDrawBoxColor(TextdrawSearch[0], 102);
TextDrawSetShadow(TextdrawSearch[0], 0);
TextDrawSetOutline(TextdrawSearch[0], 0);
TextDrawFont(TextdrawSearch[0], 0);
TextdrawSearch[1] = TextDrawCreate(641.333374, 1.500000, "usebox");
TextDrawLetterSize(TextdrawSearch[1], 0.000000, 49.415019);
TextDrawTextSize(TextdrawSearch[1], 322.666687, 0.000000);
TextDrawAlignment(TextdrawSearch[1], 1);
TextDrawColor(TextdrawSearch[1], 0);
TextDrawUseBox(TextdrawSearch[1], true);
TextDrawBoxColor(TextdrawSearch[1], -16777150);//16776961
TextDrawSetShadow(TextdrawSearch[1], 0);
TextDrawSetOutline(TextdrawSearch[1], 0);
TextDrawFont(TextdrawSearch[1], 0);
TextdrawSearch[2] = TextDrawCreate(0.666666, 1.500000, "usebox");
TextDrawLetterSize(TextdrawSearch[2], 0.000000, 49.415019);
TextDrawTextSize(TextdrawSearch[2], 313.666656, 0.000000);
TextDrawAlignment(TextdrawSearch[2], 1);
TextDrawColor(TextdrawSearch[2], 0);
TextDrawUseBox(TextdrawSearch[2], true);
TextDrawBoxColor(TextdrawSearch[2], 65342);//16776961
TextDrawSetShadow(TextdrawSearch[2], 0);
TextDrawSetOutline(TextdrawSearch[2], 0);
TextDrawFont(TextdrawSearch[2], 0);
В секундный таймер добавляем ( в моем случае был OtherTimer)
PHP:
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(search[i])
{
flasher = (flasher) ? false : true;
TextDrawHideForPlayer(i,TextdrawFlasher[3]);
TextDrawHideForPlayer(i,TextdrawFlasher[2]);
TextDrawBoxColor(TextdrawFlasher[3], (flasher) ? -16776961 : -16777118);
TextDrawBoxColor(TextdrawFlasher[2], (flasher) ? 65335 : 65535);
TextDrawShowForPlayer(i,TextdrawFlasher[3]);
TextDrawShowForPlayer(i,TextdrawFlasher[2]);
if(GetPVarInt(i,"SurrTime") > 0 && GetPVarInt(i,"SearchTime") == 0){
updateTimer(i,GetPVarInt(i,"SurrTime"));
SetPVarInt(i,"SurrTime", GetPVarInt(i,"SurrTime")-1);
if(GetPVarInt(i,"SurrTime") == 0){
SetPVarInt(i,"SearchTime", 120);
DeletePVar(i, "SurrTime");
if(GetPlayerSpecialAction(i) == SPECIAL_ACTION_CUFFED) SetPlayerSpecialAction(i, SPECIAL_ACTION_NONE);
}
return true;
}
if(GetPVarInt(i,"SearchTime") > 0 && GetPVarInt(i,"ExitTime") == 0){
updateTimer(i,GetPVarInt(i,"SearchTime"));
SetPVarInt(i,"SearchTime", GetPVarInt(i,"SearchTime")-1);
if(GetPVarInt(i,"SearchTime") == 0){
DeletePVar(i, "SearchTime");
SetPVarInt(i,"ExitTime", 20);
}
return true;
}
if(GetPVarInt(i,"ExitTime") > 0 && GetPVarInt(i,"SearchTime") == 0){
updateTimer(i,GetPVarInt(i,"ExitTime"));
SetPVarInt(i,"ExitTime", GetPVarInt(i,"ExitTime")-1);
if(GetPVarInt(i,"ExitTime") == 0){
DeletePVar(i, "ExitTime");
SetPVarInt(i,"SearchTime", 120);
}
return true;
}
}
}
}
В OnPlayerEnterCheckpoint (чекпонит создается игроку, когда его сажают в машину командой /cput(
pJailed - в моем случае она устанавливала сидит игрок или нет. Нужно менять под ваш мод.
pJailTime - в моем случае отвечала за время на которое сажало игрока. Нужно менять под ваш мод.
WantedPoints- у меня отвечал за уровень розыска(звезды), нужно заменить на переменную, которая отвечает за это в вашем моде.
PHP:
if(IsPlayerInRangeOfPoint(playerid,5.0,1545.2976,-1675.7847,13.5601))
{
PlayerInfo[playerid][pJailed] = 1;
PlayerInfo[playerid][pJailTime] = WantedPoints[playerid]*60;
WantedPoints[playerid] = 0;
PlayerInfo[playerid][pSearch] = 0;
search[playerid] = false;
SetPlayerInterior(playerid, 6); //менять на свое
SetPlayerPos(playerid, 264.6288,77.5742,1001.0391); //менять на свое
SetPlayerSpecialAction(playerid,SPECIAL_ACTION_NONE);
RemovePlayerAttachedObject(playerid,0);
DisablePlayerCheckpoint(playerid);
return true;
}
PlayerInfo[forplayerid][pLeader] == 1 - ставим свою проверку на копов.
PHP:
public OnPlayerStreamIn(playerid, forplayerid)
{
new string[65],playername[MAX_PLAYER_NAME];
if(!search[playerid] && PlayerInfo[playerid][pSearch] == 1 && PlayerInfo[forplayerid][pLeader] == 1)
{
GetPlayerName(playerid, playername, sizeof(playername));
format(string, sizeof(string), "• Информация: Неподалёку от вас замечен преступник %s [%d].",playername,playerid);
SendClientMessage(forplayerid,COLOR_LIGHTRED,strin g);
SendClientMessage(playerid,COLOR_LIGHTRED,"Вы попали в поле зрения полиции.");
SetPVarInt(playerid, "SearchTime",120);
SetPVarInt(playerid, "ExitTime",0);
TextDrawShowForPlayer(playerid,TextdrawFlasher[0]);
TextDrawShowForPlayer(playerid,TextdrawFlasher[1]);
TextDrawShowForPlayer(playerid,TextdrawFlasher[4]);
PlayerTextDrawShow(playerid, TextdrawTimer[playerid]);
search[playerid] = true;
return true;
}
return true;
}
PHP:
if(newkeys == 1024 && GetPVarInt(playerid, "SurrTime") > 0 && GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_NONE)
{
new string[50],playername[MAX_PLAYER_NAME];
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CUFFED);
GetPlayerName(playerid, playername, sizeof(playername));
format(string, sizeof(string), "%s [%d] кричит: Я СДАЮСЬ!",playername,playerid);
ProxDetector(34.0, playerid, string,COLOR_LIGHTBLUE,COLOR_LIGHTBLUE,COLOR_LIGHT BLUE,COLOR_LIGHTBLUE,COLOR_LIGHTBLUE);
}
PHP:
if(dialogid == 111){
search[playerid] = true;
for(new i; i != 3; i++) TextDrawHideForPlayer(playerid,TextdrawSearch[i]);
TextDrawShowForPlayer(playerid,TextdrawFlasher[0]);
TextDrawShowForPlayer(playerid,TextdrawFlasher[1]);
TextDrawShowForPlayer(playerid,TextdrawFlasher[4]);
PlayerTextDrawShow(playerid, TextdrawTimer[playerid]);
SetPVarInt(playerid, "SurrTime",15);
SetPVarInt(playerid, "SearchTime",0);
SetPVarInt(playerid, "ExitTime",0);
}
PHP:
if(GetPVarInt(playerid,"SearchID") >= 0)
{
if(!IsPlayerConnected(GetPVarInt(playerid,"SearchID")))
{
SendClientMessage(playerid,-1,"Игрок вышел из игры");
DestroyObject(FindObject[playerid]);
SetPVarInt(playerid,"SearchID", -1);
return 1;
}
new Float:VPos[6], Float:Rotation;
GetPlayerPos(playerid,VPos[0],VPos[1],VPos[2]);
GetPlayerPos(GetPVarInt(playerid,"SearchID"),VPos[3],VPos[4],VPos[5]);
Rotation = PointAngle(playerid, VPos[0],VPos[1], VPos[3],VPos[4]);
AttachObjectToVehicle(FindObject[playerid], GetPlayerVehicleID(playerid), 0.0, 0.0, 1.5, 0.0, 90.0, Rotation);
}
IsACop - ставим свою проверку на копов и меняем WantedPoints
PHP:
if(strcmp(cmd, "/ch", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(IsACop(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ch [Playerid/PartOfName]");
giveplayerid = ReturnUser(tmp);
if(WantedPoints[giveplayerid] == 0) return SendClientMessage(playerid, COLOR_WHITE, "У игрока нету звезд");
if (!ProxDetectorS(2.0, playerid, giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "Игрок далеко от вас");
if( giveplayerid == playerid) return 1;
if(search[giveplayerid] == true) return SendClientMessage(playerid, COLOR_WHITE, "Игрок уже в розыске");
ShowPlayerDialog(giveplayerid, 111, DIALOG_STYLE_MSGBOX, "{DC143C}", "{9ACD32}\nВас пытается задержать полиция!{FFFFFF}\
\n\nВы совершили преступления и сейчас вас пытаются задержать.\
\n\nВ случае, если вы сдадитесь, вы будите доставлены в ближайший участок.\
\n\nВы можете попытаться уйти от погони и проигнорировать преследование.\
\n\nУ вас есть {DC143C}15{FFFFFF} секунд на то, чтобы подчиниться.\
\n\nНажмите {00FFFF}кнопку ходьбы (Alt по умолчанию){FFFFFF}, если хотите сдаться.","X","");
for(new i; i != 3; i++)TextDrawShowForPlayer(giveplayerid,TextdrawSea rch[i]);
PlayerInfo[giveplayerid][pSearch] = 1;
}
}
}
if(strcmp(cmd, "/find", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(IsACop(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /find [Playerid/PartOfName]");
giveplayerid = ReturnUser(tmp);
if(!search[giveplayerid]) return SendClientMessage(playerid, COLOR_WHITE, "Игрок не в розыске");
FindObject[playerid] = CreateObject(1559, 0, 0, 0, 0.0, 0.0, 0);
SetPVarInt(playerid, "SearchID",giveplayerid);
}
}
}
if(strcmp(cmd, "/findoff", true) == 0)
{
SetPVarInt(playerid, "SearchID",-1);
DestroyObject(FindObject[playerid]);
}
if(strcmp(cmd, "/cput", true) == 0)//
{
if(IsACop(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_RED, "Используйте: /cput [id] [Место (1-3)]");
if(!ProxDetectorS(8.0, playerid, giveplayerid))return SendClientMessage(playerid, COLOR_GRAD1, "Игрок не рядом с вами!");
giveplayerid = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
new seatid = strval(tmp);
{
PutPlayerInVehicle(giveplayerid, GetPlayerVehicleID(playerid), seatid);
if(PlayerInfo[playerid][pSearch] == 1) SetPlayerCheckpoint(giveplayerid, 1545.2976,-1675.7847,13.5601, 5.0);
return 1;
}
}
return 1;
}
В команду /cuff (надеть наручники) надо добавить
PHP:
if(search[giveplayerid]){
search[giveplayerid] = false;
for(new i; i < sizeof(TextdrawFlasher); i++) TextDrawHideForPlayer(giveplayerid,TextdrawFlasher[i]);
PlayerTextDrawHide(giveplayerid, TextdrawTimer[giveplayerid]);
}
PHP:
if(strcmp(cmd, "/cuff", true) == 0)
{
if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pMember] == 10 || PlayerInfo[playerid][pMember] == 21 || IsACop(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "::: Ведите: /cuff [id]");
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if(IsACop(giveplayerid)) return SendClientMessage(playerid, COLOR_GREY, "Вы не можете надеть наручники на законника !");
if(PlayerCuffed[giveplayerid] > 0) return SendClientMessage(playerid, COLOR_GREY, "игрок уже в наручниках!");
if (ProxDetectorS(8.0, playerid, giveplayerid))
{
if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Вы не можете надеть наручники на самого себя!"); return 1; }
if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pMember] == 10 || PlayerInfo[playerid][pMember] == 21 || IsACop(playerid))
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "На вас надел(а) наручники %s.", sendername);
SendClientMessage(giveplayerid, 0x6495EDFF, string);
format(string, sizeof(string), "Вы надели наручники на %s.", giveplayer);
SendClientMessage(playerid, 0x6495EDFF, string);
format(string, sizeof(string), "%s надел(а) на %s наручники.", sendername ,giveplayer);
SetPlayerAttachedObject(giveplayerid, 0, 19418, 6, -0.011000, 0.028000, -0.022000, -15.600012, -33.699977, -81.700035, 0.891999, 1.000000, 1.168000);
SetPlayerSpecialAction(giveplayerid,SPECIAL_ACTION _CUFFED);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPL E,COLOR_PURPLE);
PlayerCuffed[giveplayerid] = 2;
PlayerCuffedTime[giveplayerid] = 3600;
if(search[giveplayerid]){
search[giveplayerid] = false;
for(new i; i < sizeof(TextdrawFlasher); i++) TextDrawHideForPlayer(giveplayerid,TextdrawFlasher[i]);
PlayerTextDrawHide(giveplayerid, TextdrawTimer[giveplayerid]);
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Вы не законник!!!");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Рядом с вами никого нет !");
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Игрок оффлайн!");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Вы не сотрудник правохранительных органов !");
}
return 1;
}
PHP:
stock Float:PointAngle(playerid, Float:xa, Float:ya, Float:xb, Float:yb)
{
new Float:carangle;
new Float:xc, Float:yc;
new Float:angle;
xc = floatabs(floatsub(xa,xb));
yc = floatabs(floatsub(ya,yb));
if (yc == 0.0 || xc == 0.0)
{
if(yc == 0 && xc > 0) angle = 0.0;
else if(yc == 0 && xc < 0) angle = 180.0;
else if(yc > 0 && xc == 0) angle = 90.0;
else if(yc < 0 && xc == 0) angle = 270.0;
else if(yc == 0 && xc == 0) angle = 0.0;
}
else
{
angle = atan(xc/yc);
if(xb > xa && yb <= ya) angle += 90.0;
else if(xb <= xa && yb < ya) angle = floatsub(90.0, angle);
else if(xb < xa && yb >= ya) angle -= 90.0;
else if(xb >= xa && yb > ya) angle = floatsub(270.0, angle);
}
GetVehicleZAngle(GetPlayerVehicleID(playerid), carangle);
return floatadd(angle, -carangle);
}
stock updateTimer(playerid,time){
new str[30];
format(str, sizeof(str), "%02d:%02d", time/60%60, time%60);
PlayerTextDrawSetString(playerid, TextdrawTimer[playerid],str);
return true;
}
В OnPlayerDeath
PHP:
if(search[playerid]){
if(IsACop(killerid)){
PlayerInfo[playerid][pSearch] = 0;
PlayerInfo[playerid][pJailed] = 1;
PlayerInfo[playerid][pJailTime] = WantedPoints[playerid]*60;
if(GetPVarInt(killerid,"SearchID") >= 0){
DestroyObject(FindObject[killerid]);
SetPVarInt(killerid,"SearchID", -1);
}
}
else PlayerInfo[playerid][pSearch] = 1;
search[playerid] = false;
for(new i; i < sizeof(TextdrawFlasher); i++) TextDrawHideForPlayer(playerid,TextdrawFlasher[i]);
PlayerTextDrawHide(playerid, TextdrawTimer[playerid]);
DeletePVar(playerid, "SurrTime");
DeletePVar(playerid, "SearchTime");
DeletePVar(playerid, "ExitTime");
}
PHP:
if(IsPlayerAttachedObjectSlotUsed(playerid,0) || search[playerid] && GetPVarInt(playerid, "ExitTime") == 0){
PlayerInfo[playerid][pJailed] = 1;
PlayerInfo[playerid][pJailTime] = WantedPoints[playerid]*60;
PlayerInfo[playerid][pSearch] = 0;
}
else if(GetPVarInt(playerid, "ExitTime") > 0) PlayerInfo[playerid][pSearch] = 1;
PHP:
forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);
public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
{
if(IsPlayerConnected(playerid))
{
new Float:posx, Float:posy, Float:posz;
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
//radi = 2.0; //Trigger Radius
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(!BigEar[i])
{
GetPlayerPos(i, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
//printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
{
SendClientMessage(i, col1, string);
}
else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
{
SendClientMessage(i, col2, string);
}
else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
{
SendClientMessage(i, col3, string);
}
else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
{
SendClientMessage(i, col4, string);
}
else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
SendClientMessage(i, col5, string);
}
}
else
{
SendClientMessage(i, col1, string);
}
}
}
}//not connected
return 1;
}
В OnPlayerLogin
PHP:
if( strcmp( key , "Search" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pSearch] = strval( val ); }
PHP:
format(var, 32, "Search=%d\n",PlayerInfo[playerid][pSearch]);fwrite(hFile, var);
PHP:
format(var, 32, "Search=%d\n",PlayerInfo[playerid][pSearch]);fwrite(hFile, var);
В машине стрелочка смотри более менее лучше, чем на мотоцикле
---------- Сообщение добавлено в 15:04 ---------- Предыдущее сообщение добавлено в 15:03 ----------
