Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Markoni990 poslato Septembar 11, 2014, 12:17:35 POSLE PODNE

Naslov: [Pomoc] Oko ticketa
Poruka od: Markoni990 poslato Septembar 11, 2014, 12:17:35 POSLE PODNE
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):
Naslov: Odg: [Pomoc] Oko ticketa
Poruka od: @Mirzerian_06 poslato Septembar 11, 2014, 14:08:32 POSLE PODNE
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.
Naslov: Odg: [Pomoc] Oko ticketa
Poruka od: Markoni990 poslato Septembar 11, 2014, 14:35:47 POSLE PODNE
Brt sve si mi reko, daj komandu kako ide
Naslov: Odg: [Pomoc] Oko ticketa
Poruka od: @Mirzerian_06 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....

Naslov: Odg: [Pomoc] Oko ticketa
Poruka od: Seiz poslato Septembar 11, 2014, 18:09:46 POSLE PODNE
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.
Naslov: Odg: [Pomoc] Oko ticketa
Poruka od: @Mirzerian_06 poslato Septembar 11, 2014, 18:54:30 POSLE PODNE
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.
Naslov: Odg: [Pomoc] Oko ticketa
Poruka od: Denis_Lapi poslato Septembar 11, 2014, 23:01:51 POSLE PODNE
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..
Naslov: Odg: [Pomoc] Oko ticketa
Poruka od: Markoni990 poslato Septembar 11, 2014, 23:41:21 POSLE PODNE
Hvala namestio sam