• Vom crea o enumerare, o variabila care vom verifica daca jucatorul livreaza pizza in acel moment si un checkpoint folosit pentru acest job. In emumerare vom stoca doua lucruri si anume, job-ul si banii;


enum pInfo
{
pMoney,
pJob
};
new PlayerInfo[MAX_PLAYERS][pInfo];
new CPizza[MAX_PLAYERS];
new livrare[MAX_PLAYERS];
  • Vom adauga cele doua enumerari in callback-ul OnPlayerConnect;


PlayerInfo[playerid][pMoney] = 0;
PlayerInfo[playerid][pJob] = 0;
CPizza[playerid] = 0;
livrare[playerid] = 0;
  • Dupa ce am facut cei doi pasi, vom crea un pickup, de unde putem lua job-ul Pizza Boy. Adaugam in callback-ul OnGameModeInit functia CreatePickup;


CreatePickup(1239, 2, 2105.1707, -1806.5607, 13.5547, 0);
/*
1239 - ID-ul pickup-ului;
2 - este tipul pickup-ului, adica atunci cand intri in el dispare si reapare daca jucatorul este la o distanta mai mare de 15 metri;
2105.1707, -1806.5607, 13.5547 - coordonatele pick-ului
0 - este virtual world.
*/
  • Dupa ce am creat pickup-ul vom crea locatiile unde vom merge cu un vehicul pentru a livra pizza. Deoarece nu am vrut ca sa fie mereu aceeasi locatie, am ales sa le fac random.


new Float:RandomPizza[4][3] = {
{2241.8647, -1882.2562, 14.2344},
{2296.5591, -1882.4100, 14.2344},
{2067.3420, -1731.7321, 13.8762},
{2066.3320, -1717.3853, 14.1363}
};
  • Acum vom crea comanda care vom lua job-ul;


CMD:takejob(playerid, params[])
{
if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1, "Nu esti conectat.");
if(!IsPlayerInRangeOfPoint(playerid, 1.0, 2066.3320, -1717.3853, 14.1363)) return SendClientMessage(playerid, -1, "Trebuie sa fii in fata magazinului de pizza pentru a te angaja la acest job.");
if(PlayerInfo[playerid][pJob] != 0) return SendClientMessage(playerid, -1, "Deja detii un job.");
PlayerInfo[playerid][pJob] = 1;
SendClientMessage(playerid, -1, "Felicitari! Acum detii job-ul Pizza Boy.");
return 1;
}
  • Acum vom crea comanda cu care vom incepe livrarile;


CMD:startdelivery(playerid, params[])
{
new rand;
if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1, "Nu esti conectat.");
if(PlayerInfo[playerid][pJob] != 1) return SendClientMessage(playerid, -1, "Nu detii job-ul Pizza Boy.");
if(livrare[playerid] != 0) return SendClientMessage(playerid, -1, "Deja livrezi pizza.");
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "Trebuie sa fii intr-un vehicul pentru a incepe livrarile.");
if(!IsPlayerInRangeOfPoint(playerid, 4.0, 2066.3320, -1717.3853, 14.1363)) return SendClientMessage(playerid, -1, "Trebuie sa fii in fata magazinui de pizza pentru a incepe livrarile.");
rand = random(sizeof(RandomPizza));
CPizza[playerid] = 1;
livrare[playerid] = 1;
SetPlayerCheckpoint(playerid, RandomPizza[rand][0], RandomPizza[rand][1], RandomPizza[rand][2], 2.0);
SendClientMessage(playerid, -1, "Mergi la punctul marcat pe harta pentru a livra pizza."); 
SendClientMessage(playerid, -1, "Daca doresti sa anulezi livrarea foloseste comanda /stopdelivery.");
return 1;
}
  • Acum vom crea comanda /stopdelivery;


CMD:stopdelivery(playerid, params[])
{
if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1, "Nu esti conectat.");
if(PlayerInfo[playerid][pJob] != 1) return SendClientMessage(playerid, -1, "Nu detii job-ul Pizza Boy.");
if(livrare[playerid] == 0) return SendClientMessage(playerid, -1, "Nu livrezi pizza pentru a opri livrarile.");
DisablePlayerCheckpoint(playerid);
livrare[playerid] = 0;
CPizza[playerid] = 0;
return 1;
}
  • Acum vom verifica daca jucatorul este in checkpoint-ul setat pentru livrare. Merge la callback-ul OnPlayerEnterCheckpoint si adaugam CP-ul 1;


if(CPizza[playerid] == 1)
{
PlayerInfo[playerid][pCash] = PlayerInfo[playerid][pCash] + 3000;
SendClientMessage(playerid, -1, "Ai primit 3000$ pentru aceasta livrare.");
SendClientMessage(playerid, -1, "Daca doresti sa mai livrezi pizza, mergi inapoi la magazin si foloseste comanda /startdelivery.");
CPizza[playerid] = 0;
livrare[playerid] = 0;
DisablePlayerCheckpoint(playerid);
}