Problem: Pokusavam da napravim posao taxiste, i toliko sam nesto upetljao (jer nisam dobro osmislio tj nije dobra ideja za nacin pravljenja posla), da sad ne znam gde je greska (posto ih svuda verovatno ima), ni kako da ih ispravim.
Sad, dacu vam kodove kako sam ja to smislio i pokusao da napravim sam, pa ako mozete vi da mi kazete drugi nacin, ili jos bolje ako neko ima gotov kod...
Samo da pojasnim zasto sam neke stvari ovako uradio:
OnPlayerUpdate - Posto se igracu tj putniku taxija povecava TaxiTime (cena za placanje), onda sam ovde stavio proveru da li ima dovoljno novca, ako nema, da ga izbaci iz vozila i skine mu za 1$ manje od TaxiTimea...
TaxiMeter - Da povecava svakih 5 sekundi za po 1 ($)
Code:
Komanda fare:
YCMD:fare(playerid, params[], help)
{
#pragma unused help
new str, sendername;
if(PlayerInfo != 3) return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Niste taxista!");
if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Niste u vozilu!");
new vID = GetPlayerVehicleID(playerid);
if(!IsATaxiJobVehicle(vID)) return SCM(playerid, -1, ""CRVENA"GRESKA"BELA": Niste u taxiju!");
TaxiDuty = 1;
TaxiStartingPrice = 30;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(str, sizeof(str), ""NARANDZASTA"Taxista %s je sada na duznosti, pocetna cena %d$", sendername, TaxiStartingPrice);
SendClientMessageToAll(-1, str);
return 1;
}OnPlayerStateChange
if(newstate == PLAYER_STATE_PASSENGER)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
new vID = GetPlayerVehicleID(playerid);
if(IsATaxiJobVehicle(vID) && GetPlayerState(i) == PLAYER_STATE_DRIVER) TaxiDriver = i;
if(IsATaxiJobVehicle(vID) && TaxiDuty[TaxiDriver] == 1)
{
if(GetPlayerMoney(playerid) < TaxiStartingPrice[TaxiDriver])
{
SCM(playerid, -1, "Nemate dovoljno novca da bi zapoceli voznju!");
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
}
else
{
TaxiTime = 0;
SetTimerEx("TaxiMeter", 5000, true, "i", playerid);
SCM(playerid, -1, "Pocinje voznja, polecemo (poruka cisto za debug)");
}
}
}
}
if(newstate == PLAYER_STATE_ONFOOT)
{
if(TaxiTime != 0)
{
new str;
GivePlayerMoney(playerid, -TaxiTime);
GivePlayerMoney(TaxiDriver, TaxiTime);
format(str, sizeof(str), ""NARANDZASTA"Platili ste taxi %d$", TaxiTime);
SCM(playerid, -1, str);
format(str, sizeof(str), ""NARANDZASTA"Putnik je napustio taxi, zaradili ste %d$", TaxiTime);
SCM(TaxiDriver, -1, str);
KillTimer(TaxiMeter(playerid));
TaxiTime = 0;
TaxiDriver = 0;
}
}OnPlayerUpdate
if(IsPlayerInAnyVehicle(playerid) && IsATaxiJobVehicle(GetPlayerVehicleID(playerid)) && TaxiTime != 0)
{
if(GetPlayerMoney(playerid) < TaxiTime)
{
RemovePlayerFromVehicle(playerid);
GivePlayerMoney(playerid, -(TaxiTime-1));
SCM(playerid, -1, ""NARANDZASTA"Nemate dovoljno novca da nastavite voznju!");
}
}TaxiMeter (timer)
forward TaxiMeter(playerid);
public TaxiMeter(playerid)
{
TaxiTime++;
}