Skripta koju koristim:BE
Detaljan opis problema:Interesuje me kako odraditi kad kuca /ticked id razlog cena da ne placa preko /accept ticket nego da ide u pd i kuca /payticket i da plati kaznu
Dio skripte:if(strcmp(cmd, "/ticket", true) == 0 || strcmp(cmd, "/kazna", true) == 0)
{
if(IsPlayerConnected(playerid))
{
//if(gTeam[playerid] != 2)
if(PlayerInfo[playerid][pLeader]==20)
{
SendClientMessage(playerid, COLOR_GREY, " Niste Saobracajac!");
return 1;
}
if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 20)
{
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] [Cena] [razlog]");
return 1;
}
giveplayerid = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Koriscenje: /ticket [ID Igraca/Dio Imena] [Cena] [razlog]");
return 1;
}
moneys = strval(tmp);
if(moneys < 1 || moneys > 2001) { SendClientMessage(playerid, COLOR_GREY, " Cena 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] [Cena] [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), "* Saobracajac %s vam je napisao kaznu od $%d, razlog: %s", sendername, moneys, (result));
SendClientMessage(giveplayerid, COLOR_WHITE, string);
SendClientMessage(giveplayerid, COLOR_WHITE, "* Kucajte /accept 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;
}
return 1;//SendClientMessage(playerid, COLOR_LIGHTRED, "{C77D87}[GRESKA]: {C0C0C0}Komanda koju ste upisali ne postoji kucajte {C77D87}/help {C0C0C0}da vidite listu komandi!");
}
Neke slike/video za lakse dobivanje pomoci(neobavezno):
Samo uradis variable i sccanf . Znaci kreiras variablu postavljas mu na 0 na connectu i onda povecavas variablu kada uradi prekrsaj odnonsno u komandi mu stavis toj tiket vrijednost neku . U /payticket provjeravas variablu i to je to.
Brt sve si mi reko, daj komandu kako ide
Citat: Markoni990 poslato Septembar 11, 2014, 14:35:47 POSLE PODNE
Brt sve si mi reko, daj komandu kako ide
Znaci evo ti primjer
new Saobracajnakazna[MAX_PLAYERS];
pod register igraca
Saobracajnakazna[playerid] = 0;
u komandi kazna
CMD:kazna(playerid,params[])
{
if(!IsPlayerConnected(playerid)) return SCM(playerid, -1,"Nisi se konektovao.");
new razlog[24],novac,ID;
if(sscanf(params,"uis[24]",ID,novac,razlog)) return SCM(playerid, -1,"Koristi /kazna ID/dio imena | Novac Kazna | Razlog");
new string[128];
new pare = novac * 1000;
format(string,sizeof(string),"Dobio si kaznu od %s , te trebas platiti %d. | Razlog: %s",GetName(playerid),pare,razlog);
SCM(ID,-1,string);
Saobacajnakazna[ID] = novac;
return 1;
}
CMD:payticket(playerid,params[])
{
if(Saobracajnakazna[playerid] == 0) return SCM(playerid,-1,"Ti ne trebas platiti kaznu.");
new pare = Saobracajnakazna[playerid] * 1000;
if(GetPlayerMoney(playerid) < pare) return SCM(playerid ,-1,"Nemas dovoljno.");
GivePlayerMoney(playerid, -pare);
return 1;
}
Na brzinu sam iskuco tako da....
Citat: Amar Tinjak poslato Septembar 11, 2014, 18:02:38 POSLE PODNE
Citat: Markoni990 poslato Septembar 11, 2014, 14:35:47 POSLE PODNE
Brt sve si mi reko, daj komandu kako ide
Znaci evo ti primjer
new Saobracajnakazna[MAX_PLAYERS];
pod register igraca
Saobracajnakazna[playerid] = 0;
u komandi kazna
CMD:kazna(playerid,params[])
{
if(!IsPlayerConnected(playerid)) return SCM(playerid, -1,"Nisi se konektovao.");
new razlog[24],novac,ID;
if(sscanf(params,"uis[24]",ID,novac,razlog)) return SCM(playerid, -1,"Koristi /kazna ID/dio imena | Novac Kazna | Razlog");
new string[128];
new pare = novac * 1000;
format(string,sizeof(string),"Dobio si kaznu od %s , te trebas platiti %d. | Razlog: %s",GetName(playerid),pare,razlog);
SCM(ID,-1,string);
Saobacajnakazna[ID] = novac;
return 1;
}
CMD:payticket(playerid,params[])
{
if(Saobracajnakazna[playerid] == 0) return SCM(playerid,-1,"Ti ne trebas platiti kaznu.");
new pare = Saobracajnakazna[playerid] * 1000;
if(GetPlayerMoney(playerid) < pare) return SCM(playerid ,-1,"Nemas dovoljno.");
GivePlayerMoney(playerid, -pare);
return 1;
}
Na brzinu sam iskuco tako da....
Po tom tvom ako igrac dobije tickete samo ode relog i vrate mu se na 0.
Citat: Amar Tinjak poslato Septembar 11, 2014, 18:02:38 POSLE PODNE
Citat: Markoni990 poslato Septembar 11, 2014, 14:35:47 POSLE PODNE
Brt sve si mi reko, daj komandu kako ide
Znaci evo ti primjer
new Saobracajnakazna[MAX_PLAYERS];
pod register igraca
Saobracajnakazna[playerid] = 0;
u komandi kazna
CMD:kazna(playerid,params[])
{
if(!IsPlayerConnected(playerid)) return SCM(playerid, -1,"Nisi se konektovao.");
new razlog[24],novac,ID;
if(sscanf(params,"uis[24]",ID,novac,razlog)) return SCM(playerid, -1,"Koristi /kazna ID/dio imena | Novac Kazna | Razlog");
new string[128];
new pare = novac * 1000;
format(string,sizeof(string),"Dobio si kaznu od %s , te trebas platiti %d. | Razlog: %s",GetName(playerid),pare,razlog);
SCM(ID,-1,string);
Saobacajnakazna[ID] = novac;
return 1;
}
CMD:payticket(playerid,params[])
{
if(Saobracajnakazna[playerid] == 0) return SCM(playerid,-1,"Ti ne trebas platiti kaznu.");
new pare = Saobracajnakazna[playerid] * 1000;
if(GetPlayerMoney(playerid) < pare) return SCM(playerid ,-1,"Nemas dovoljno.");
GivePlayerMoney(playerid, -pare);
return 1;
}
Na brzinu sam iskuco tako da....
Ovo sam mu uradio u igri sve medjutim moze i preko pvar da se uradi ako oce da mu sacuva no nije to naveo.
Nije Amarova duznost da mu kreira sistem za spremanje.
Inace izbacio sam ti neke delove koji nisu potrebni u Amarovoj komandi
CMD:kazna(playerid,params[])
{
new razlog[24],novac,ID;
if(sscanf(params,"uis[24]",ID,novac,razlog)) return SCM(playerid, -1,"Koristi /kazna ID/dio imena | Novac Kazna | Razlog");
new string[128];
new pare = novac * 1000;
format(string,sizeof(string),"Dobio si kaznu od %s , te trebas platiti %d. | Razlog: %s",GetName(playerid),pare,razlog);
SCM(ID,-1,string);
Saobacajnakazna[ID] = novac;
return 1;
}
CMD:payticket(playerid,params[])
{
if(IsPlayerInRangeOfPoint(playerid,7.0, x, y, z)) // Postavi koordinate policije tj. one koje zelis
{
if(Saobracajnakazna[playerid] == 0) return SCM(playerid,-1,"Ti ne trebas platiti kaznu.");
new pare = Saobracajnakazna[playerid] * 1000;
if(GetPlayerMoney(playerid) < pare) return SCM(playerid ,-1,"Nemas dovoljno.");
GivePlayerMoney(playerid, -pare);
}
else return SCM(playerid,-1,"Niste u policiji, ne mozete platiti kaznu");
return 1;
}
Ovo je sad ono sto si ti trazio..
Hvala namestio sam