Sziasztok!
Találta itt a fórumon egy ATM Rablás scriptet és egy kicsit át alakítottam olyanra hogy a játékost ne fagyassza le rablás közben hanem 1 bizonyos helyen kell maradnia hogy ki tudja teljesen rabolni az atm-et.
Az lenne a kérdésem tõletek hogy hogyan lehetne azt megoldani hogy ne csak egyszer kérdezze le hogy a játékos nem ment ki e az adott helyrõl. Próbáltam OnPlayerUpdate-al de ott nem lehet lekérni a \"Distance\"-t. Vagy van olyan funkció amivel ki lehetne kérni ebbõl a sorból
ATMRobbery(playerid,-315.5501,1520.7670,75.3594,2,20);
az X (-315.5501) Y (1520.7670) Z (75.3594) és a Distance (2)
Teljes script:
#include <a_samp>
#include <zcmd>
#include <fixchars>
new ATMRobberyTimer[MAX_PLAYERS];
new ATMRobTime[MAX_PLAYERS];
new ATMRabol[MAX_PLAYERS];
forward ATMRobberyCD(playerid);
forward ATMRobberyEx(playerid);
forward ATMRobbery(playerid,Float:XPos,Float:YPos,Float:ZPos,Distance,RobTime);
CMD:atmrob(playerid,params[])
{
ATMRobbery(playerid,-315.5501,1520.7670,75.3594,3,20);
ATMRabol[playerid]=1;
return 1;
}
public ATMRobbery(playerid,Float:XPos,Float:YPos,Float:ZPos,Distance,RobTime)
{
new string[128];
if(IsPlayerInRangeOfPoint(playerid,Distance,XPos,YPos,ZPos))
{
SetPlayerCheckpoint(playerid,XPos,YPos,ZPos,Distance);
SendClientMessage(playerid,-1,\"{FF7F50}[AtmRobbery]: {90EE90}Elkezdted kirabolni az ATM-et.\");
format(string,sizeof(string),\"{FF7F50}[AtmRobbery]: {D2691E}%s {00BFFF}elkezdett kirabolni egy ATM-et.\",Name(playerid));
SendClientMessageToAll(-1,string);
ATMRobberyTimer[playerid] = SetTimerEx(\"ATMRobberyCD\",1000,true,\"i\",playerid);
ATMRobTime[playerid]=RobTime;
}
else
{
SendClientMessage(playerid,-1,\"{FF7F50}[AtmRobbery]: {808000}Nem vagy az ATM közelében.\");
}
if(ATMRabol[playerid] == 1)
{
if(!IsPlayerInRangeOfPoint(playerid,Distance,XPos,YPos,ZPos))
{
KillTimer(ATMRobberyTimer[playerid]);
DisablePlayerCheckpoint(playerid);
ATMRabol[playerid]=0;
SendClientMessage(playerid,-1,\"Elhagytad a rablási helyszint ezért megszakadt a rablás!\");
}
}
return 1;
}
public ATMRobberyCD(playerid)
{
new string[128];
ATMRobTime[playerid]--;
if(ATMRobTime[playerid]==0)
{
KillTimer(ATMRobberyTimer[playerid]);
DisablePlayerCheckpoint(playerid);
ATMRabol[playerid]=0;
ATMRobTime[playerid]=0;
ATMRobberyEx(playerid);
}
else
{
format(string, sizeof(string), \"~y~Rablás vége: ~r~%d\",ATMRobTime[playerid]);
GameTextForPlayer(playerid,string,3000,5);
}
return 1;
}
public ATMRobberyEx(playerid)
{
new string[128],rand = random(40000);
GivePlayerMoney(playerid,rand);
format(string,sizeof(string),\"{FF7F50}[AtmRobbery]: {9932CC}A rablás sikeresen elvégezve! {A9A9A9}Bevétel: {40E0D0}$%d{A9A9A9}.\",rand);
SendClientMessage(playerid,-1,string);
format(string,sizeof(string),\"{FF7F50}[AtmRobbery]: {D2691E}%s {00BFFF}sikeresen kirabolt egy ATM-et.\",Name(playerid));
SendClientMessageToAll(-1,string);
return 1;
}
stock Name(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
return name;
}
És ezzel kérdezem le hogy még nem ment e el a játékos a rablási helyszínrõl:
if(ATMRabol[playerid] == 1)
{
if(!IsPlayerInRangeOfPoint(playerid,Distance,XPos,YPos,ZPos))
{
KillTimer(ATMRobberyTimer[playerid]);
DisablePlayerCheckpoint(playerid);
ATMRabol[playerid]=0;
SendClientMessage(playerid,-1,\"Elhagytad a rablási helyszint ezért megszakadt a rablás!\");
}
}
Eredeti téma:
ATM robbery system