Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: 032.Marcus poslato Jun 22, 2014, 12:50:09 POSLE PODNE

Naslov: [POMOC] Taxi
Poruka od: 032.Marcus poslato Jun 22, 2014, 12:50:09 POSLE PODNE
Scripta: Moja od nule
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[256], sendername[MAX_PLAYER_NAME];
if(PlayerInfo[playerid][pJob] != 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[playerid] = 1;
TaxiStartingPrice[playerid] = 30;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(str, sizeof(str), ""NARANDZASTA"Taxista %s je sada na duznosti, pocetna cena %d$", sendername, TaxiStartingPrice[playerid]);
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[playerid] = i;
if(IsATaxiJobVehicle(vID) && TaxiDuty[TaxiDriver[playerid]] == 1)
{
if(GetPlayerMoney(playerid) < TaxiStartingPrice[TaxiDriver[playerid]])
{
SCM(playerid, -1, "Nemate dovoljno novca da bi zapoceli voznju!");
      RemovePlayerFromVehicle(playerid);
      TogglePlayerControllable(playerid, 1);
}
else
{
TaxiTime[playerid] = 0;
SetTimerEx("TaxiMeter", 5000, true, "i", playerid);
SCM(playerid, -1, "Pocinje voznja, polecemo (poruka cisto za debug)");
}
}
}
}

if(newstate == PLAYER_STATE_ONFOOT)
{
    if(TaxiTime[playerid] != 0)
{
    new str[256];
    GivePlayerMoney(playerid, -TaxiTime[playerid]);
    GivePlayerMoney(TaxiDriver[playerid], TaxiTime[playerid]);
format(str, sizeof(str), ""NARANDZASTA"Platili ste taxi %d$", TaxiTime[playerid]);
SCM(playerid, -1, str);
format(str, sizeof(str), ""NARANDZASTA"Putnik je napustio taxi, zaradili ste %d$", TaxiTime[playerid]);
SCM(TaxiDriver[playerid], -1, str);
KillTimer(TaxiMeter(playerid));
TaxiTime[playerid] = 0;
TaxiDriver[playerid] = 0;
}
}


OnPlayerUpdate

if(IsPlayerInAnyVehicle(playerid) && IsATaxiJobVehicle(GetPlayerVehicleID(playerid)) && TaxiTime[playerid] != 0)
{
if(GetPlayerMoney(playerid) < TaxiTime[playerid])
{
RemovePlayerFromVehicle(playerid);
GivePlayerMoney(playerid, -(TaxiTime[playerid]-1));
SCM(playerid, -1, ""NARANDZASTA"Nemate dovoljno novca da nastavite voznju!");
}
}


TaxiMeter (timer)
forward TaxiMeter(playerid);
public TaxiMeter(playerid)
{
TaxiTime[playerid]++;
}
Naslov: Odg: [POMOC] Taxi
Poruka od: Acke poslato Jun 22, 2014, 12:56:25 POSLE PODNE
Ali kakvu gresku imas,jel to sto je napisao u kodu radi sve lepo ili ne radi,ako ne radi reci sta ne radi.
Naslov: Odg: [POMOC] Taxi
Poruka od: 032.Marcus poslato Jun 22, 2014, 13:33:13 POSLE PODNE
Pa kada putnik sedne, ne povecava mu svakih pet sekundi TaxiTime, vec brzo nesto i izbaci ga napolje kada nema vise para, skine mu -1463 (primer, ali tako je bilo prvi put), a meni (vozacu) ispisuje poruku da je igrac napustio taxi i platio 500$.

Isto tako, poruku ispise i putniku, da je dao 500$ a skinulu mi mnogo vise.
Kasnije, taj putnik sedne u taxi kao vozac, ono zabaguje i pise mu da nema dovoljno novca da nastavi voznju, da je platio voznju 8000$, da je putnik napustio vozilo i platio voznju 8000$ i sa -1700 mu skine na -17000$... Sve to se desi tom putniku sto je seo u drugi taxi na mesto vozaca...