-FK-hofmiktom 1 Odesláno: 1. Květen, 2014 Share Odesláno: 1. Květen, 2014 Úvod Takže zdravím všechny lidi kteří zabloudily na tento topic, tenhle tut je hlavně pro začátečníky takže se prosím zdržte komentářu jako ":D To je úplná blbost to by dokázal každý." tohle může napsat každý ale nějakým začátečníkům se to snad hodit může takže jdeme na věc. Samotné příkazy a vysvětlivky Jako první si můsíme v FS/GM najít public OnPlayerCommandText(playerid, cmdtext[]) tento "kód" je takzvaný public do něj se píšou všechny funkce samotného pracování FS/GM (samozřejmně jen příkazy a dcmd definy). A pro začátek je podle mě nejlepší si vysvětlit příkaz /kill a pak si ho vysvětlíme i v dcmd formě. Takže ten public viz. nahoře defaultně vypadá takto: public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/mycommand", cmdtext, true, 10) == 0) { // Do something here return 1; } return 0; } Místo /mycommand si dáme příkaz který chceme aby hráč napsal a vykonala se příslušná funkc. My si místo // Do something here dáme samotnou funkci na odebrání nebo přidání hráčovi zdraví. Místo // Do something here si dáme toto: SetPlayerHealth(playerid, 0); SetPlayerHealth = Tato funkce hráčovi přídá/odebere zdraví playerid = to znamená že ten hráč který zadal příkaz tak tomu se funkce vykoná !! nikomu jinému !! 0 = tohle je "počet" zdraví 100 maximum 0 minimum pokud nastavíme na 0 umře na 100 plně se mu doplní zdraví A pardon sem zapoměl můžeme si nastavit i aby se mu napsalo že úspěšně spáchal sebevraždu i barevně. Pokud to chcete tak si pod SetPlayerHealth dejte toto: SendClientMessage(playerid, 0xFFFF00AA,"Úspěšně si spáchal sebevraždu!"); SendClientMessage = Funkce která hráči vypíše zprávu playerid = to znamená že ten hráč který zadal příkaz tak tomu se funkce vykoná !! nikomu jinému !! 0xFFFF00AA = toto je kód barvy ( v HEX kódu který si někde najděte třeba zde: http://pawno.cz/topic/24346-barvy-bez-prace/ ) "Úspěšně si spáchal sebevraždu!" = Toto je co chcete aby se hráči vypsalo za zprávu !! vždy musí zpráva obsahovat uvozovky !! Tak to by byl příkaz na /kill a ve výsledku celý public bude vypadat asi takto: public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/kill", cmdtext, true, 10) == 0) { SetPlayerHealth(playerid, 0); SendClientMessage(playerid, 0xFFFF00AA,"Úspěšně si spáchal sebevraždu!"); return 1; } return 0; } A jak vytvořit příkaz je hodně způsobu třeba tento přes ten public nebo přes dcmd a to si teď ukážeme. Takže kamkoliv do FS/GM !! né do publicu !! napíšeme: dcmd_kill(playerid, params[]) { return 1; } to je samotný příkaz ale aby nám to nepsalo errory tak si úplně nahoru do FS/GM pod #include <a_samp> dáme toto: #define dcmd(%1,%2,%3) if((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 to je definice pro funkci dcmd aby nám fungovala a teď ještě jednu věc aby vám dcmd příkaz fungoval si musíme do publicu jak jsme dělaly první příkaz napsat jednu věc takže váš public by měl celkově vypdat asi takto: public OnPlayerCommandText(playerid, cmdtext[]) { dcmd(kill,4,cmdtext); if (strcmp("/kill", cmdtext, true, 10) == 0) { SetPlayerHealth(playerid, 0); SendClientMessage(playerid, 0xFFFF00AA,"Úspěšně si spáchal sebevraždu!"); return 1; } return 0; } a jak jsme si už předem vytvořily toto: dcmd_kill(playerid, params[]) { return 1; } tak nad return 1; napíšeme toto: SetPlayerHealth(playerid, 0); SendClientMessage(playerid, 0xFFFF00AA,"Úspěšně si spáchal sebevraždu!"); Tak a vysvětlím vám poslední věc tohle: dcmd(kill,4,cmdtext); To je to jak jsme si vložily k starému příkazu takže dcmd = typ příkazu kill = jméno příkazu !! bez / !! 4 = počet písmen v slově kill cmdtext = že se píše do chatu Tak a to je všechno tak čau a doufám že jsem někomu pomohl 1 Link to comment Share on other sites More sharing options...
Deleted User 295 Odesláno: 1. Květen, 2014 Share Odesláno: 1. Květen, 2014 tento "kód" je takzvaný public do něj se píšou všechny funkce samotného pracování FS/GM (samozřejmně jen příkazy a dcmd definy). Ten kod neni tzv. public ale je to callbackova funkce ktora je volana pri konkretnych eventoch, tato konkretne ked niekdo napise nejaky prikaz. Pokial viem tak pawn nepodporuje neasted tj. vnorene fce tak ze ne, nepisu sa do nej ine fce. Takže ten public viz. nahoře defaultně vypadá takto: Neni to public, public je iba opravnenie fce, defaultne je private pokial viem. playerid = to znamená že ten hráč který zadal příkaz tak tomu se funkce vykoná !! nikomu jinému !! Tomu sa hovory parameter fce. Takže kamkoliv do FS/GM !! né do publicu !! napíšeme: Asi si myslel mimo tela fce ze? Link to comment Share on other sites More sharing options...
rhsCZ 19 Odesláno: 1. Květen, 2014 Share Odesláno: 1. Květen, 2014 pokud chceš psát návody tak více rozepisujtřeba né každý ví proč je na konci callbacku OnPlayTextCommand return 0;ale v pžíkazu return 1; samozřejmě by to šlo logicky odvodit ale né každého by to napadlodále bych napsal co je strcmp jeho parametry a využití když to tam bude tak to neuškodíže strcmp porovnává 2 stringy zda jsou stejné nebo ne na základě velikosti písmen početu znaků jestly jsou napsané znaky ve stringách stejné1. parametr "/mycommand" provnávaný text uvozovky značí že je to string2.cmdtext s čim porovnáváme 1 parametr3.true // true znamená ,že nezáleží na velikosti písmen false naopak4.10 //délka porovnávaného textu(lze vynechat)return strcmp //co vrací funkce za hodnotyteda by nás zajmalo jen return 0 využívá se že pokud je strcmp == 0(rovno) tak jsou stejné ale když strcmp != 0 (nejsou stejné)0xFFFF00AA není hex kód barvy ale tzv pawn hexsamotný hex by tady vypadalFFFF00u pawn hex bych napsal z čeho se skládá0x je daný začátek pawn hex(myslim nevim jistě)FF(1.) je intenzita červené barvyFF(2.) je intenzita zelené barvy00 je intenzita modré barvyAA je samotná intezita barvy pokud bude 00 nebude vidět(je průhledná) FF je maximální neprůhlednostkaždý dvojčíslý z pawn hex kromě začátku tj 0xnabývá hodnot 00 až FFkadý znak z dvojčíslý jsou hodnoty0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fnejdříve se zvětšuje znak napravo z dvojčíslýkdyž dojde na F zvětší se o jednu ten levý znak z dvojčíslý Link to comment Share on other sites More sharing options...
Deleted User 295 Odesláno: 1. Květen, 2014 Share Odesláno: 1. Květen, 2014 0xFFFF00AA není hex kód barvy ale tzv pawn hex LOL, preco by to nebol HEX kod farby? Akruad je to RGBA na miesto RGB. Si tu zas nevymyslajte nazvy niecoho co uz davno nazov ma každý dvojčíslý z pawn hex kromě začátku tj 0x nabývá hodnot 00 až FF kadý znak z dvojčíslý jsou hodnoty 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F nejdříve se zvětšuje znak napravo z dvojčíslý když dojde na F zvětší se o jednu ten levý znak z dvojčíslý Tomu sa vravy 16-kova sustava Link to comment Share on other sites More sharing options...
Mattsy 29 Odesláno: 1. Květen, 2014 Share Odesláno: 1. Květen, 2014 Preco robis navody ak to sam nevies?? Mas tam napisane blbosri niekde, zle vysvetlene, nevues rozdiel medzi parametrom a funkciou, nechapes definovanie farieb v pawne, douc sa veci a tak nehovorim ze to nevies, hovorim ze to vies ale zle Link to comment Share on other sites More sharing options...
rhsCZ 19 Odesláno: 1. Květen, 2014 Share Odesláno: 1. Květen, 2014 LOL, preco by to nebol HEX kod farby? Akruad je to RGBA na miesto RGB. Si tu zas nevymyslajte nazvy niecoho co uz davno nazov ma Tomu sa vravy 16-kova sustava tak je to upravený HEX pro účely pawn já jsem nenapsal že to není HEX že to je tzv. "pawn HEX" samozřejmě v textu lez použít i obyč HEX s tou 16 soustavou to jsem sice nevěděl jak se nazývá ale jak to funguje vím ale né každý to ví jak to funguje já jsem se pokusil vysvětlit systém barev prostě jsem se snažil doplňit nedostatky daného tzv. "návodu" Link to comment Share on other sites More sharing options...
rhsCZ 19 Odesláno: 1. Květen, 2014 Share Odesláno: 1. Květen, 2014 WTF o.O čo je na tom upravený HEX pre účel pawn? O.o "0x" je iba symbol, ktorý umožňuje použitie hexadecimálnej sústavy (tak ako pri binárnej sa označuje "0b" pr. new 0b110) tak sorry že nejsem Einstein, že nevim vše prostě jsem nestudoval všechno no Link to comment Share on other sites More sharing options...
Deleted User 295 Odesláno: 1. Květen, 2014 Share Odesláno: 1. Květen, 2014 tak je to upravený HEX pro účely pawn já jsem nenapsal že to není HEX že to je tzv. "pawn HEX" samozřejmě v textu lez použít i obyč HEX s tou 16 soustavou to jsem sice nevěděl jak se nazývá ale jak to funguje vím ale né každý to ví jak to funguje já jsem se pokusil vysvětlit systém barev prostě jsem se snažil doplňit nedostatky daného tzv. "návodu" Ale on to neni ziadny "pawn hex" alebo obycajne RGBA hex cislo. viz. http://cs.wikipedia.org/wiki/RGBA Obycajny HEX? co je obycajny HEX? Myslis ako farbu vo formate RGB? A k tym farbam len tolko ze kazdy kanal RGBA ma 1 bajt, tj. hodnotu nadobudutelnu od 0 do 255 (0x0 - 0xFF) Link to comment Share on other sites More sharing options...
rhsCZ 19 Odesláno: 1. Květen, 2014 Share Odesláno: 1. Květen, 2014 tak jsem se pomýlil no i to se stane někomu né přiliš vzdělanému v daném oboru v tomto případě ty barvyjá se o barvy nezajímal takže nestudoval ohledně jeho využití, definice apod. u počítačů, u programovacích nebo skriptovacích jazyků atd. Link to comment Share on other sites More sharing options...
riso_SVK3k 0 Odesláno: 16. Květen, 2014 Share Odesláno: 16. Květen, 2014 Prepáč, že sa pýtam takúto vec, ale neviem ako toto vložiť na môj server ako to dať do .amx alebo .pwn aby som to mohol dať na môj server. Link to comment Share on other sites More sharing options...
KuboSK 0 Odesláno: 16. Květen, 2014 Share Odesláno: 16. Květen, 2014 Otvor si Pawno (Ak ho nemáš stiahni si zo SA:MP stránky server a tam je zložka Pawno. Otvor Pawno.exe daj tam hore new, uprav tam ten "kód" a daj F5. Potom ten .amx prekopíruj do gamemodes alebo filterscripts (ak robíš mód, alebo len FS) a nezabudni to pripísať do server.cfg Link to comment Share on other sites More sharing options...
Robin 67 Odesláno: 16. Květen, 2014 Share Odesláno: 16. Květen, 2014 toto by ziadny zaciatocnik normalne nepochopil Link to comment Share on other sites More sharing options...
eXot 18 Odesláno: 16. Květen, 2014 Share Odesláno: 16. Květen, 2014 Ešte doplním tu na kolegov,maximálne HP nieje 100,môžeš si kľudne nastaviť aj viac .. Link to comment Share on other sites More sharing options...
DaNeX 5 Odesláno: 26. Srpen, 2014 Share Odesláno: 26. Srpen, 2014 Nahoře pod samp mám #define dcmd(%1,%2,%3) if((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 V OnPlayerCommand.. mám toto public OnPlayerCommandText(playerid, cmdtext[]){ if (strcmp("/kill", cmdtext, true, 10) == 0) { SetPlayerHealth(playerid, 0);SendClientMessage(playerid, 0xFFFF00AA,"Úspěšně si spáchal sebevraždu!"); return 1; } return 0;} A někde mimo mám dcmd_kill(playerid, params[]) { SetPlayerHealth(playerid, 0);SendClientMessage(playerid, 0xFFFF00AA,"Úspěšně si spáchal sebevraždu!"); return 1;} Žádné errory všechno v pořádku ale při napsání /kill to napíše Unkown Command. Kde jsem udělal chybu soudruzi? Děkuji předem za odpověď pro uplného amatéra Link to comment Share on other sites More sharing options...
danda951 0 Odesláno: 26. Srpen, 2014 Share Odesláno: 26. Srpen, 2014 Stačí když budeš mít jenom Tohle public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/kill", cmdtext, true, 10) == 0) { SetPlayerHealth(playerid, 0); SendClientMessage(playerid, 0xFFFF00AA,"Úspěšně si spáchal sebevraždu!"); return 1; } return 0; } To s tou definici s DCMD je to samé jako tohle Když to budeš chtít přes DCMD tak dáš tu Definici Někam tohle dcmd_kill(playerid, params[]) { SetPlayerHealth(playerid, 0); SendClientMessage(playerid, 0xFFFF00AA,"Úspěšně si spáchal sebevraždu!"); return 1; } A pod OnPlayerCommandText { dcmd(kill, 4, cmdtext); Link to comment Share on other sites More sharing options...
DaNeX 5 Odesláno: 26. Srpen, 2014 Share Odesláno: 26. Srpen, 2014 public OnPlayerCommandText(playerid,cmdtext[]) { if (strcmp("/kill", cmdtext, true, 10) == 0) { SetPlayerHealth(playerid, 0); SendClientMessage(playerid, 0xFFFF00AA,"Úspěšně si spáchal sebevraždu!"); return 1; } return 0; } Tohle mám v PWNU a stejně když jdu na ten pos_aný server po napsání /kill to napíše Unkown Command. 18hodin jsem nespal kvůli tomu protože chci na to přijít .. kde dělám chybu? A ten druhý mám také dobře podívej se je to přesně. A také při napsaní /kill to napíše Unkown command. Pro mě je to ztracená odesea která je nemožná prostě tomu ani nevěřím že příkaz /kill jde vytvořit. Podle mě se dá vytvořit pouze ve FilterScriptu prostě to nikdo nedokáže jinak :-) Link to comment Share on other sites More sharing options...
Mort 29 Odesláno: 28. Srpen, 2014 Share Odesláno: 28. Srpen, 2014 Smaž { na 105. řádků. Link to comment Share on other sites More sharing options...
DaNeX 5 Odesláno: 29. Srpen, 2014 Share Odesláno: 29. Srpen, 2014 Nejde mě to neustále hahaha už mě s toho šibe. Dělám příkaz /kill 7dní Už mě s toho praskne žalud asi. Kašlu na to zůstanu u FileScriptu Link to comment Share on other sites More sharing options...
INSANE_25_ICON 0 Odesláno: 29. Srpen, 2014 Share Odesláno: 29. Srpen, 2014 public OnPlayerCommandText(playerid,cmdtext[]) { dcmd(kill,4,cmdtext); return 1; } return 0; } dcmd_kill(playerid,params[]) { #pragma unused params SetPlayerHealth(playerid,-100); SCM(playerid,0xff000fff,"[ ! ] {ffffff} spachal si samovraždu"); returrn 1; } Link to comment Share on other sites More sharing options...
elRobertino 0 Odesláno: 29. Srpen, 2014 Share Odesláno: 29. Srpen, 2014 public OnPlayerCommandText(playerid,cmdtext[]) { dcmd(kill,4,cmdtext); return 1; } return 0; } dcmd_kill(playerid,params[]) { #pragma unused params SetPlayerHealth(playerid,-100); SCM(playerid,0xff000fff,"[ ! ] {ffffff} spachal si samovraždu"); returrn 1; } Nadefinované SCM maš kde? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now