Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: purgerrr poslato Decembar 14, 2014, 23:27:31 POSLE PODNE

Naslov: [Pomoc]Baca error /askq /report
Poruka od: purgerrr poslato Decembar 14, 2014, 23:27:31 POSLE PODNE
Skripta koju koristim:Svoja
Detaljan opis problema: Znaci pogledajte sliku to se desi kada upisem komandu i ja sam admin na srvu nije mi nista doslo o.O
Dio skripte:

CMD:askq(playerid, params[])
{
new string[128];
format(string, 128, "/askq [Pitanje]");
AdminSupporterMessage(-1, string);
}
CMD:report(playerid, params[])
{
new string[128];
format(string, 128, "/report [Prijava]");
AdminSupporterMessage(-1, string);
}


forward AdminSupporterMessage(color, string[]);
public AdminSupporterMessage(color, string[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
        if(PlayerInfo[i][pSupp] >= 1 || PlayerInfo[i][pAdmin] >= 1)
    {
        SendClientMessage(i, color, string);
    }
}
}
}

Neke slike/video za lakse dobivanje pomoci(neobavezno):

SLIKA 1 : http://imageshack.com/a/img912/3415/mO7rID.png (http://imageshack.com/a/img912/3415/mO7rID.png)
Naslov: Odg: [Pomoc]Baca error /askq /report
Poruka od: •Vodka Play• poslato Decembar 15, 2014, 06:13:39 PRE PODNE
SERVER: Unknown command. ti izlazi jer nisi stavio return 1; na kraju komande.

Edit: Kako ti ništa nije došlo? Poslao si string u kome piše /report [Prijava] i to ti je stiglo...
Ako hoćeš da ta komanda prima unos od korisnika onda si trebao drugačije da je odradiš...

CMD:report(playerid, params[])
{
if(!strlen(params)) return SendClientMessage(playerid, -1, "/report [Prijava]");
AdminSupporterMessage(-1, params);
}

Naravno, params mozes da formatiraš kako želiš, to je unos korisnika, nakon razmaka od naziva komande. Možeš dodati ime, id itd..
TakoÄ'e možeÅ¡ koristiti sscanf za detaljniju proveru unosa, sve po volji..
Naslov: Odg: [Pomoc]Baca error /askq /report
Poruka od: purgerrr poslato Decembar 15, 2014, 21:43:45 POSLE PODNE
Zbunjuje me malo ovo o.O Znas li kako dodati Ime da mu pise i prefix da dolazi adminima Report od igraca % [Report razlog]
Tako nekako id igraca ili tako nesto jer sam novi u skriptanju malo pojasnjenja a ne samo komanda i to bih molio hvala :)
Naslov: Odg: [Pomoc]Baca error /askq /report
Poruka od: ▂ ▃ ▅ Rudimental ▅ ▃ ▂ poslato Decembar 16, 2014, 01:08:21 PRE PODNE
Posto si novi naravno da neke stvari ne razumes. I ovako ovde nije na izvolite da ti neko sve uradi ja cu ti uraditi ovo caskom jer nije nesto komplikovano ali naravno ove komande su minimalne kolike mogu biti. Nemaju nista sem onog sto ti za sada zelis da imaju :D Pa da pocnemo.

Na vrh stavi ovu definiciju u koliko je nemas
#define SCM SendClientMessage

Zatim tamo gde su ti komande sve na jednom mestu stavi ove komande
CMD:askq(playerid, params[])
{
new
    string[128],
    text[128];
    if (sscanf(params, "s[128]", text)) return SCM (playerid, -1, "/askq [Pitanje]"); // Odredjujes parametre koji da se popune kako bi komanda radila
    format(string, sizeof(string), "Pitanje: %s", text);
AdminSupporterMessage(-1, string); // Salje poruku
return 1;
}

CMD:report(playerid, params[])
{
    new
    string[128],
    id,
    text[128];
    if (sscanf(params, "us[128]", id, text)) return SCM (playerid, -1, "/report [ID Igraca/Deo Imena] [Prijava]"); // Odredjujes parametre koji da se popune kako bi komanda radila
    format(string, sizeof(string), "Report na igraca %s: %s", GetName(id), text);
AdminSupporterMessage(-1, string); // Salje poruku
return 1;
}


Zatim ti treba GetName koji cita ime igraca u koliko to nemas stavi ovo
stock GetName(playerid)
{
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
    return pName;
}


I na kraju definicija koja salje Adminima poruku
stock AdminSupporterMessage(color, string[])
{
foreach (new i : Player)
{
if(PlayerInfo[i][pSupp] >= 1 || PlayerInfo[i][pAdmin] >= 1)
{
SCM (i, color, string);
}
}
return 1;
}


Moj savet je da u nekim stvarima koristis stock jer nema potrebe uvek za publicom... Ja public koristim samo za tajmere. Takodje ih stavljaj na jedno mesto obicno to radim na kraj scripte da ih ne mesam svugde. Takodje koristio sam ti ovde foreach jer je bolji nego ono sto si ti imao :D u koliko nemas foreach mozes ga skinuti sa linka http://forum.sa-mp.com/showthread.php?t=92679

Takodje posto si nov i verujem da ne poznajes dobro parametre za komande a ima tu nesto i van komandi sto ceti trebati njih mozes ovde prouciti malo http://wiki.sa-mp.com/wiki/Sscanf_code taj pocetak te zanima ovo ispod je vec sscanf kod pa da te ne zbuni :D U koliko jos nesto bude trebalo tu sam.
Naslov: Odg: [Pomoc]Baca error /askq /report
Poruka od: TiXoR_ poslato Decembar 16, 2014, 01:33:29 PRE PODNE
pročitaj ovaj tutorial http://balkan-samp.com/forum/index.php?topic=28770.0
pa ćeš možda nešto i skužit, mnpr ja sam najbolje naučio koristit sscanf šta se tiče komanda tak oda sam gledao druge komande i istraživa
Naslov: Odg: [Pomoc]Baca error /askq /report
Poruka od: purgerrr poslato Decembar 16, 2014, 20:16:33 POSLE PODNE
Nisam skuzio to o sscanfu ali mozete lockat temu jer idem malo pretrazit forum (balkan samp) i google :D o tome :)
TEMA MOZE NA LOCK HVALA SVIMA NA POMOCI ;)