Skripta koju koristim: BE
Detaljan opis problema: Imao sam bug sa /ticket kad si napisao /ticket izbaci ti "Nisi policajac" i sad sam promjenio komandu sad imam puno errora.
Dio skripte:
Errori
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36862) : error 017: undefined symbol "tmp"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36862) : error 017: undefined symbol "cmdtext"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36863) : error 017: undefined symbol "tmp"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36868) : error 017: undefined symbol "tmp"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36869) : error 017: undefined symbol "tmp"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36869) : error 017: undefined symbol "cmdtext"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36870) : error 017: undefined symbol "tmp"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36875) : error 017: undefined symbol "tmp"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36883) : error 017: undefined symbol "giveplayer"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36883) : error 017: undefined symbol "giveplayer"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36883) : error 029: invalid expression, assumed zero
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36883) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
12 Errors.
Commanda
COMMAND:ticket(playerid, params[])
{
if(IsPlayerConnected(playerid))
{
if(gTeam[playerid] != 2)
{
SendClientMessage(playerid, COLOR_GREY, " Niste policajac!");
return 1;
}
if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 1)
{
SendClientMessage(playerid, COLOR_GREY, " Niste na Duznosti!");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Koriscenje: /kazna [ID Igraca/Dio Imena] [cijena] [razlog]");
return 1;
}
giveplayerid = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Koriscenje: /ticket [ID Igraca/Dio Imena] [cijena] [razlog]");
return 1;
}
moneys = strval(tmp);
if(moneys < 1 || moneys > 2001) { SendClientMessage(playerid, COLOR_GREY, " Cijena kazne ne moze biti ispod 1 ni preko 2000 !"); return 1; }
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if (ProxDetectorS(8.0, playerid, giveplayerid))
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "Koriscenje: /ticket [ID Igraca/Dio Imena] [cijena] [razlog]");
return 1;
}
if (GetPlayerMoney(giveplayerid) < moneys)
{
SendClientMessage(playerid, COLOR_WHITE, "* Taj igrac nema dovoljno novca da plati kaznu.");
return 1;
}
format(string, sizeof(string), "* Napisali ste %s-u kaznu od $%d, razlog: %s", giveplayer, moneys, (result));
SendClientMessage(playerid, COLOR_WHITE, string);
format(string, sizeof(string), "* Policajac %s vam je napisao kaznu od $%d, razlog: %s", sendername, moneys, (result));
SendClientMessage(giveplayerid, COLOR_WHITE, string);
SendClientMessage(giveplayerid, COLOR_WHITE, "* Kucajte /prihvati ticket, da je prihvatite.");
SendClientMessage(giveplayerid, COLOR_WHITE, "* Ako ne prihvatite kaznu, ici cete u zatvor!");
TicketOffer[giveplayerid] = playerid;
TicketMoney[giveplayerid] = moneys;
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Taj igrac nije blizu vas !");
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Igrac je offline !");
return 1;
}
}
return 1;
}
Neke slike/video za lakse dobivanje pomoci(neobavezno): -
Ne možeš koristiti strcmp dijelove i zcmd komandi,gluposti :)
Ovak:
Daj komandu di prihvacas jer tamo moras koristit varijablu KaznaPoslana ..
Vrh:
new KaznaPoslana[MAX_PLAYERS];
OnPlayerConnect:
KaznaPoslana[playerid] = -1;
Komanda:
CMD:tiket(playerid, params[])
{
if(PlayerInfo[playerid][pClan] != 1) return SCM(playerid, 0xFFFFFFAA, "Niste PD"); // ( Prilagodi varijablu pClan )
new id, Cijena, razlog[32], hIme[3][MAX_PLAYER_NAME], Float:Poz[3]; // Definiras varijable koje koristis u cmd
if(sscanf(params, "uis[32]", id, Cijena, razlog)) return SCM(playerid, 0xFFFFFFAA, " /kazna [playerid] [cijena] [Razlog]");
if(!IsPlayerConnected(id)) return SCM(playerid, 0xFFFFFFAA, "Taj igrac je offline!"); // Provjerava id igraca
if(id == playerid) return SCM(playerid, 0xFFFFFFAA, "Ne mozete sami sebi naplatiti kaznu!"); // Da ne mozes sam sebi naplatiuti
if(Cijena < 1 || Cijena > 2000) return SCM(playerid, 0xFFFFFFAA, "Cijena moze biti najmanje $1, a najvise $2000!"); // Vrijednost cijene
GetPlayerPos(id, Poz[0], Poz[1], Poz[2]); // Uzimas poziciju od igrac kome naplacujes
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Poz[0], Poz[1], Poz[2])) return SCM(playerid, 0xFFFFFFAA, "Predaleko ste!"); // ako igrac nije blizu tebe
RPIme(playerid, hIme[1]); // Uzimas svoje ime
RPIme(id, hIme[2]); // UZimas ime od igraca kome naplacujes
KaznaPoslana[id] = playerid; // Naplacujes mu kaznu
CijenaKazne[id] = Cijena; // Uzimas cijenu koju si upisao
SCMF(id, 0xFFFFFFAA, "Policajac %s vam je napisao kaznu u iznosu od $%d. kazna: {FFFFFF}%s.", hIme[1], Cijena, razlog); // salje igracu poruku
SCM(id, 0xFFFFFFAA, " Da prihvatite upisite /prihvatu kazna."); // salje igracu poruku
SCMF(playerid, 0xFFFFFFAA, "Napisali ste kaznu igracu %s u iznosu od $%d. kazna: {FFFFFF}%s.", hIme[2], Cijena, razlog); // salje tebi poruku
return 1;
}
Dva stocka:
stock RPIme(playerid, Ime[MAX_PLAYER_NAME])
{
GetPlayerName(playerid, Ime, sizeof(Ime));
for(new x = 0; x < sizeof(Ime); x++) { if(Ime[x] == '_') Ime[x] = ' '; }
return 1;
}
stock SCMF(playerid,color,fstring[],{Float, _}:...)
{
new n=(numargs()-3)*4;
if(n)
{
new message[128],arg_start,arg_end;
#emit CONST.alt fstring
#emit LCTRL 5
#emit ADD
#emit STOR.S.pri arg_start
#emit LOAD.S.alt n
#emit ADD
#emit STOR.S.pri arg_end
do
{
#emit LOAD.I
#emit PUSH.pri
arg_end-=4;
#emit LOAD.S.pri arg_end
}
while(arg_end>arg_start);
#emit PUSH.S fstring
#emit PUSH.C 255
#emit PUSH.ADR message
n+=4*3;
#emit PUSH.S n
#emit SYSREQ.C format
n+=4;
#emit LCTRL 4
#emit LOAD.S.alt n
#emit ADD
#emit SCTRL 4
return SCM(playerid,color,message);
}
else return SCM(playerid,color,fstring);
}
Evo tu je za prihvatit ima vise djelova jer komanda /prihvati sastoji se od vise elemenata pa ima ono else if... else if... :D
else if(strcmp(x_job,"ticket",true) == 0)
{
if(TicketOffer[playerid] < 999)
{
if(IsPlayerConnected(TicketOffer[playerid]))
{
if (ProxDetectorS(5.0, playerid, TicketOffer[playerid]))
{
GetPlayerName(TicketOffer[playerid], giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Platio si kaznu u iznosu $%d! Sluzbenik: %s.", TicketMoney[playerid], giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* %s je platio tvoju kaznu u iznosu od $%d.", sendername, TicketMoney[playerid]);
SendClientMessage(TicketOffer[playerid], COLOR_LIGHTBLUE, string);
GivePlayerCash(playerid, - TicketMoney[playerid]);
GivePlayerCash(TicketOffer[playerid], TicketMoney[playerid]);
TicketOffer[playerid] = 999;
TicketMoney[playerid] = 0;
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Sluzbenik nije u tvojoj blizini !");
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Niko ti nije naplatio kaznu !");
return 1;
}
}
Ovak:
Na vrh skripte:
new CenaKazne[BROJ_SLOTOVA];
OnPlayerConnect:
CenaKazne[playerid] = 0;
Dio za prihvatiti:
else if(strcmp(x_job,"ticket",true) == 0)
{
new Float:Poz[3];
GetPlayerPos(KaznaPoslana[playerid], Poz[0], Poz[1], Poz[2]);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Poz[0], Poz[1], Poz[2])) return SCM(playerid, 0xFFFFFFAA, "Predaleko ste od drugog igraca");
if(KaznaPoslana[playerid] == -1) return SCM(playerid, 0xFFFFFFAA, "Nemate aktivnu kaznu");
if(PlayerInfo[playerid][pNovac] <= 0 ) return SCM(playerid, 0xFFFFFFAA, "Nemate dovoljno novca da platite kaznu");
else if(PlayerInfo[playerid][pNovac] < CenaKazne[playerid] && PlayerInfo[playerid][pBanka] >= CenaKazne[playerid])
{
new name[MAX_PLAYER_NAME];
RPIme(playerid, name);
SCMF(playerid, 0xFFFFFFAA, "Platili ste kaznu u iznosu od $%d.", CenaKazne[playerid]);
SCMF(KaznaPoslana[playerid], 0xFFFFFFAA, " %s je platio kaznu u iznosu od $%d.", name, CenaKazne[playerid]);
CenaKazne[playerid] = 0;
KaznaPoslana[playerid] = -1;
}
else if(PlayerInfo[playerid][pNovac] >= CenaKazne[playerid])
{
new name[MAX_PLAYER_NAME];
RPIme(playerid, name);
SCMF(playerid, 0xFFFFFFAA, "Platili ste kaznu u iznosu od $%d.", CenaKazne[playerid]);
SCMF(KaznaPoslana[playerid], 0xFFFFFFAA, " %s je platio kaznu u iznosu od $%d.", name, CenaKazne[playerid]);
CenaKazne[playerid] = 0;
KaznaPoslana[playerid] = -1;
}
else return SCM(playerid, 0xFFFFFFAA, "Nemate dovoljno novca da platite kaznu");
}
Ljepo ti to radis al mislim da je ovaj gm [CENZURA] xd
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(331) : error 017: undefined symbol "BROJ_SLOTOVA"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(331) : error 009: invalid array size (negative, zero or out of bounds)
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(34156) : error 017: undefined symbol "pNovac"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(34157) : error 017: undefined symbol "pNovac"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(34160) : error 017: undefined symbol "RPIme"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(34161) : error 017: undefined symbol "SCMF"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(34162) : error 017: undefined symbol "SCMF"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(34166) : error 017: undefined symbol "pNovac"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(34169) : error 017: undefined symbol "RPIme"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(34170) : error 017: undefined symbol "SCMF"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(34171) : error 017: undefined symbol "SCMF"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36848) : error 017: undefined symbol "pClan"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36849) : warning 219: local variable "Cijena" shadows a variable at a preceding level
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36853) : warning 213: tag mismatch
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36853) : warning 213: tag mismatch
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36853) : warning 205: redundant code: constant expression is zero
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36856) : error 017: undefined symbol "RPIme"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36857) : error 017: undefined symbol "RPIme"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36859) : error 017: undefined symbol "CijenaKazne"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36859) : warning 215: expression has no effect
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36859) : error 001: expected token: ";", but found "]"
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36859) : error 029: invalid expression, assumed zero
C:\Users\Korisnik\Desktop\CroMafia Test Folder\Cro Mafia [GM]\gamemodes\BN.pwn(36859) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
E sad ak ja trebam nesto mjenjati reci mi tocnije redove :D
SCMF,RpIme stock sve sam ti stavio i napisao da zamijeniš varijable samo ti trebaš sada znat kako.
Okee onda se odoh igrat s tim D:
I da hvala na pomoci ;))