Započeo Bespomocni Skripter
•3. Sep. 2018.• ZaključanoKako pravilno ubaciti Pawn.CMD?
4,538
pregleda
15
postova
Wheel Man
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
38
Postovi:
7
Teme:
Pridružio se:Avg. 2018
3. Sep. 2018.
- Kako pravilno ubaciti Pawn.CMD u skriptu? -
Koliko je Pawn.CMD brz, da li je najbrzi?
Potrebne stvari:
Pawn.CMD .inc + .dll/.so file [KLIK]
.inc file ubaciti u ..\GM\pawno\include
* .dll/.so ubaciti u ..\GM\plugins
* Dodati Pawn.CMD(.dll/.so) gde su vam pluginsi u server.cfg
- Dodati #include bilo gde (bitno je samo da nije ispod native-a, aliasa, cmdova)
Sada ste na ~70%, kako koristiti Pawn.CMD:
Ovo dodati gde zelite (samo da je ispod #include ):
public OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags) // Pricamo o flagovima kasnije
{
return 1;
}
public OnPlayerCommandReceived(playerid, cmd[], params[], flags) // Pricamo o flagovima kasnije
{
return 1;
}
Sada kreiramo komandu!:
CMD:helloworld(playerid, params[]) // Sta se desava kada igrac upise komandu /helloworld, ovo Vam je osnovno telo svake komande, znaci, svaka komanda ima CMD:imecmd(playerid, params[]), brackete ( { } ) i return 1; pre zadnjeg bracketa
{
return 1;
}Server ce prepoznati da ova komanda postoji i nece izbacivati poruku da komanda ne postoji, ali ova komanda ne radi nista jer je sve unutar bracketa (osim return 1😉 prazno!
Let's make it do something! 🙂
CMD:helloworld(playerid, params[])
{
print("Hello World"); //Ispisuje u konzolu "Hello world"
return 1;
}Ova komanda gore Vam je samo za testiranje/pokazivanje...
Sada cemo uraditi ako komanda ne postoji da posalje client message igracu da komanda ne postoji:
public OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags)
{
if(result == -1)
{
SendClientMessage(playerid, -1, "SERVER: Ova komanda ne postoji!");
return 0;
}
return 1;
}
Flagovi:
Mozete kreirati flagove, to su vam permisije, a sto su to permisije?
Permisije proveravaju da li igrac ima dozvolu da koristi komandu, ukoliko nema, komanda vraca nesto ili return 1; i prestaje sa daljim izvrsavanjem.
NE MORATE KORISTITI FLAGOVE UKOLIKO NE ZELITE, SVAKAKO MOZETE STAROMODNU PROVERU if(...) KOJU I JA SAM KORISTIM (OLDSQL.JBG)
(Ukoliko editujete neki mod, morate proci kroz svaku komandu koja zahteva neku permisiju i dodati sledece iznad nje):
flags:testcmd(PERMISIJA);Kako da kreiramo permisiju & kako istu da dodelimo igracu?
Kreirajmo negde variablu gde cuvamo permisije igraca i dodeljujemo npr CMD_ADMIN ako je admin:
enum
{
CMD_HELPER,
CMD_ADMIN
}new PermisijeIgraca; //Npr kad igrac ode duty dodelite mu PermisijeIgraca = CMD_ADMIN;public OnPlayerCommandReceived(playerid, cmd[], params[], flags)
{
if(flags)
{
if(flags > CMD_ADMIN)
{
SendClientMessage(playerid, -1, "NOPERM");
return 0;
}
}
return 1;
}* - .dll stavljate ako je windows a .so ako je linux hosting
Preporuka:
Ukoliko imate cmd tipa /enter (lupam), i sada hocete da ENTER radi isto sto i /enter samo dodate kada igrac pritisne KEY sledeci kod:
PC_EmulateCommand(playerid, "/enter");To gore ce Vam uraditi potpuno isto sto i enter, ukoliko koristite flagove takodje mozete neke admin cmd pa ako igrac ima taj flag za tu cmd ona se pokrene, a ako je flag npr CMD_IGRAC nista se nece desiti 🙂
native PC_RegAlias(const cmd[], const alias[], ...);
native PC_SetFlags(const cmd[], flags);
native PC_GetFlags(const cmd[]);
native PC_EmulateCommand(playerid, const cmdtext[]);
native PC_RenameCommand(const cmd[], const newname[]);
native PC_CommandExists(const cmd[]);
native PC_DeleteCommand(const cmd[]);
native CmdArray:PC_GetCommandArray();
native CmdArray:PC_GetAliasArray(const cmd[]);
native PC_GetArraySize(CmdArray:arr);
native PC_FreeArray(&CmdArray:arr);
native PC_GetCommandName(CmdArray:arr, index, dest[], size = sizeof dest);
forward PC_OnInit();
forward OnPlayerCommandReceived(playerid, cmd[], params[], flags);
forward OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags);
Wheel Man
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
38
Postovi:
7
Teme:
Pridružio se:Avg. 2018
Kingpin
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,394
Postovi:
77
Teme:
Pridružio se:Okt. 2012
3. Sep. 2018.
Trebao si joÅ¡ dodati kako da igraÄi stave viÅ¡e permisija jednome igraÄu, npr ako je igraÄ VIP i Admin, da može koristiti iste neke komande, vjerujem da ovdje dosta ne barata dobro bit maskama, ali da biste dodali viÅ¡e permisija koristite | pipe
recimo
I da dodamo 2 ili više stavki:
pPermissions je sada jednak 0b101, Å¡to znaÄi da imamo VIP i ADMIN permisije ali ne i MODERATOR!
recimo
enum (<<= 1) // <<= 1 vam znaÄi da svaku sljedeću stavku shiftamo za jedan bit
{
CMD_ADMIN = 1, // 0b001
CMD_MODERATOR, // 0b010
CMD_VIP // 0b100
// ...
};
I da dodamo 2 ili više stavki:
pPermissions = CMD_ADMIN | CMD_VIP;
pPermissions je sada jednak 0b101, Å¡to znaÄi da imamo VIP i ADMIN permisije ali ne i MODERATOR!
Godfather
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosAktivan Član
9 / 250 XP
Početnik(1)
2,044
Postovi:
55
Teme:
Pridružio se:Sep. 2013
3. Sep. 2018.
Ino42O wrote on September 3, 2018, 3:25 pm:
Trebao si joÅ¡ dodati kako da igraÄi stave viÅ¡e permisija jednome igraÄu, npr ako je igraÄ VIP i Admin, da može koristiti iste neke komande, vjerujem da ovdje dosta ne barata dobro bit maskama, ali da biste dodali viÅ¡e permisija koristite | pipe
recimo
I da dodamo 2 ili više stavki:
pPermissions je sada jednak 0b101, Å¡to znaÄi da imamo VIP i ADMIN permisije ali ne i MODERATOR!
recimo
enum (<<= 1) // <<= 1 vam znaÄi da svaku sljedeću stavku shiftamo za jedan bit
{
CMD_ADMIN = 1, // 0b001
CMD_MODERATOR, // 0b010
CMD_VIP // 0b100
// ...
};
I da dodamo 2 ili više stavki:
pPermissions = CMD_ADMIN | CMD_VIP;
pPermissions je sada jednak 0b101, Å¡to znaÄi da imamo VIP i ADMIN permisije ali ne i MODERATOR!
Onda moraju i provjere raditi sa Bitwise & operatorom ("moraju")
Wheel Man
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
38
Postovi:
7
Teme:
Pridružio se:Avg. 2018
4. Sep. 2018.
Hvala svima ne predlozima 🙂
Obavezno pazite svi kad stavljate ime plugina da slucajno ne maknete tacku sa ekstenzije ili slicno 😄
Obavezno pazite svi kad stavljate ime plugina da slucajno ne maknete tacku sa ekstenzije ili slicno 😄
Shot Caller
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
173
Postovi:
50
Teme:
Pridružio se:Jul 2018
Wheel Man
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
40 / 100 XP
Početnik(0)
38
Postovi:
12
Teme:
Pridružio se:Apr. 2018
19. Mar. 2019.
moze pomoc izbaci mi waringe kad ubacim ovo da je komanda ne postojeca kako da resim to
Street Runner
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
15
Postovi:
2
Teme:
Pridružio se:Maj 2019
Morate biti prijavljeni da biste odgovorili na ovu temu.
Prijava
