Jump to content

Search the Community

Showing results for tags 'návod'.

  • Search By Tags

    Oddělujte čárkami
  • Search By Author

Content Type


Fórum

  • Obecné
    • Všeobecné
    • Všechno možné
  • Programování
    • Poradna
    • Návody
    • Tvorba
    • Hledám programátora
  • Herní oblast
    • Poradna
    • Jak na to?
    • Herní kontext
    • Herní zážitky
    • Komunita
  • Grafika
    • Poradna
    • Návody
    • Tvorba
  • Ostatní
    • Hardware a software
    • Hledám/nabízím
    • Archiv
    • 3D Tisk

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Web


Facebook


Jabber


Skype


Steam


Twitter


Github


Pastebin

  1. Tu som to dal bo nějaký karko nevěděl ako taku kravinu urobit Nikdy to nebylo testováno ale mělo by to fungovat v pořádku po případě to opravím... Je to starší udělám vám s toho návod v CODE popis najdete za // new engine,lights,alarm,doors,bonnet,boot,objective; // tohle dáte jednoduše někam nahoru do módu public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if(newkeys == KEY_YES) // Nastartuje motor slačením 'Y' { if(GetPlayerState(playerid) == 2) // Zjistí jestli je řidič. { SendClientMessage(playerid, -1,"Startuji motor..."); // Taková ta zpráva. SetTimerEx("EStart",3000,0,"i",playerid); // Toto vám za 3 sec nastartuje motor je to schválně kvuli zprávě 'Startuji motor...' } } if(newkeys == KEY_NO) // Vypne motor slačením 'N' { if(GetPlayerState(playerid) == 2) // Zjistí jestli je řidič. { GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid),0,lights,alarm,doors,bonnet,boot,objective); SendClientMessage(playerid, -1,"Motor byl vypnut!"); // Taková ta zpráva. } } return 1; } forward EStart(playerid); public EStart(playerid) { GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid),1,lights,alarm,doors,bonnet,boot,objective); SendClientMessage(playerid, -1,"Motor byl nastartován!"); // Taková ta zpráva. // Můžete si třeba tu udělat pár randomu že mu to chcíplo ale to kazí hru hráči tak jsem to udělal takto jednoduše. return 1; } No omlouvám se že vám to tu nerozepíšu ale myslím si že vám bohatě stačí co je za // funguje to na jednoduchém principu motory všech vozidel sou vypnuté, sednete jako řidič dáte 'Y' nahodíte motor do 3s po té 'N' ho vypnete. Můžete si i dodělat podmínku neco[MAX_PLAYERS]; kde nastavíte v Motor byl nastartován! neco[playerid] = 1; a při opuštění vozidla třeba if(neco[playerid] == 1) { //sem funkci co mu vypne motor a neco[playerid] = 0;} a je to Snad vám to k nečemu bude Ještě musíte mít na serveru auta co budou mít engine na 0 Návod označen jako platný Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný
  2. Práca so súbormi Obtiažnosť - * * * * * Vitajte pri mojom prvom návode pre pawn. Dnes Vám ukážem niečo o práci so súbormi použitím includu "file". Tento include obsahuje funkcie, ktoré nám budú umožňovať pracovať so súbormi. Môžeme do nich zapisovať údaje, čítať údaje a omnoho viac. Mnohí z Vás pre toto používate tzv. "INI" includy, ktoré plnia tú istú úlohu, ale k tomuto sa dostaneme ešte neskôr. Čítajte prosím s porozumením! Otvorenie a zatvorenie súboru: Súbor otvoríme pomocou funkcie fopen, ktorá vráti tzv. "file handle" súboru, s ktorým budeme pracovať. Ak nastane nejaká chyba, táto funkcia vráti hodnotu 0. Súbor je vždy potrebné na konci zavrieť funkciou fclose! Argumenty (fopen): name[] - Umiestnenie súboru s jeho príponou na konci, ktorý sa nachádza v priečinku "scriptfiles". mode - Mód, ktorý určuje, ako budeme pracovať so samotným súborom. Viď všetky typy módov nižšie. Typy módov: io_read - Pre čítanie zo súboru. io_write - Pre zápis do súboru, vytvorí súbor, vymaže celý jeho obsah! io_readwrite - Pre čítanie aj zápis do súboru, ak súbor neexistuje vytvorí ho. io_append - Pre zápis na koniec súboru. Argumenty (fclose): File:handle - Ako ste sa mohli dočítať vyššie, je to premenná v ktorej je uložený "handle" súboru. Ukážka: new File:subor = fopen("subor.txt", io_readwrite); if (subor) { //Tu budeme pracovať so súborom. fclose(subor); } Otvorili sme súbor "subor.txt" v priečinku scriptfiles, pomocou módu io_readwrite. Potom sme pridali podmienku ak nenastala chyba pri otváraní súboru (ak by nastala chyba premenná by mala hodnotu 0). Ďalej už len budeme pracovať so samotným súborom. Na konci sme súbor zavreli, čím sa zapísaný obsah uložil. Zápis do súboru: Na zápis do súboru použijeme funkciu fwrite, ktorá zapíše do nášho súboru celý riadok ako string. Pokiaľ chcete vpísať do súboru znaky s diakritiou je tu druhá varianta, použitie funkcie fputchar. Je však o niečo pomalšia v rýchlosti ako prvá varianta. Argumenty (fwrite): File:handle - "Handle" súboru, do ktorého chceme vykonať zápis. string[] - String, ktorý chceme do súboru zapísať. Argumenty (fputchar): File:handle - "Handle" súboru, do ktorého chceme vpísať znak. value - Znak ktorý chcete vpísať, môže to byť ASCII, alebo UTF-8 hodnota. bool:utf8 = true - Má byť znak vpísaný ako UTF-8? (použite false, pokiaľ chcete vpísať znak s diakritikou) *Volitelný argument Ukážka: new File:subor = fopen("subor.txt", io_write); if (subor) { fwrite(subor, "Toto je string, ktory zapisujem do mojho suboru!"); fclose(subor); } Otvorili sme súbor a zapisáli do neho text, nakoniec sme ho zatvorili. Ukážka č.2: new File:subor = fopen("subor.txt", io_write); if (subor) { new string[7] = "Sanios"; for (new i; i < sizeof (string); i++) { fputchar(subor, string[i]); } fclose(subor); } Otvorili sme súbor a vpísali do neho text, znak po znaku, nakoniec sme ho zatvorili. Čítanie zo súboru: Pre čítanie údajov zo súboru môžme taktiež použiť dve varianty. Tá prvá je použitím funkcie fread, ktorá prečíta celý riadok zo súboru a uloží ho do stringu. Tá druhá varianta je čítanie znak po znaku, za pomoci funkcie fgetchar?. Táto varianta má svoju výhodu, ale aj nevýhodu. Tá výhoda je, že obsahuje argument "utf8", ktorý nám umožňuje prečítať taktiež znaky s diakritikou. Funkcia vráti ASCII, alebo UTF-8 hodnotu. Nevýhoda je, že je to o niečo pomalšie, ako funkcia fread, ktorá prečíta celý riadok. Argumenty (fread): File:handle - "Handle" súboru, z ktorého chceme čítať string[] - String, do ktorého chceme prečítaný text z riadka uložiť. size = sizeof string - Počet polí stringu, do ktorého ukladáme text. *Volitelný argument bool:pack = false - Má byť použitý "pack" stringu? *Volitelný argument Upozornenie! - Pozri si tiež na konci odsek "Možné chyby a ich oprava"! Argumenty (fgetchar): File:handle - "Handle" súboru, z ktorého chceme čítať bool:utf8 - Má byť znak prečítaný ako UTF-8? (použite false, pokiaľ chcete prečítať znak s diakritikou) Ukážka: new File:subor = fopen("subor.txt", io_read); if (subor) { new string[128]; fread(subor, string); printf("String: %s\nPrvý znak stringu je %c", string, fgetchar(subor, false)); fclose(subor); } Otvorili sme súbor s módom pre čítanie, prečítali sme z neho riadok a prečítaný string sme vypísali v konzole servera spoločne so začiatočným znakom riadku, nakoniec sme súbor zatvorili. Porovnanie s "INI" includmi: Určite mnohí z Vás používate na prácu so súbormi nejaké "INI" includy, ako je "y_ini", "DOF2", alebo "dini". Určite si kladiete otázku, prečo používať základné funkcie, keď mám rýchlejší includ. Toto nie je pravda. "INI" súbor má svoju výhodu v tom, že zapisuje riadky v tvare "name=value", resp. "key=value". To znamená, že výhodou je určite prehľadnosť vo Vašom súbore a vždy budete vedieť, ktorá hodnota k čomu patrí. Samozrejme výhodou includu "file" je predovšetkým rýchlosť! Pripravil som si pár testov rýchlosti o zápise a čítaní zo súboru. Testy Možné chyby a ich oprava: V tejto sekcii Vám napíšem niečo o možných chybách, ktoré môžu nastať. Nájdete tu pochopiteľne aj samotnú opravu chyby. 1. Funkcia strcmp nevráti hodnotu 0, pretože stringy sa nezhodujú: Toto je dosť častá chyba. Nastane vtedy keď ste prečítali obsah riadka pomocou funkcie fread. Prečo sa teda stringy nezhodujú, keď sú v súbore zapísané správne? Pretože na konci súboru ostali dva znaky "\r\n". Tieto znaky vyjadrujú, že sa jedná o nový riadok. Nachádzajú sa na konci každého riadku, okrem posledného. Pre inšpiráciu ako to v skutočnosti vyzerá: Oprava: new File:subor = fopen("subor.txt", io_read); if (subor) { new string[128]; fread(subor, string); //Prečítali sme riadok a na konci máme dva znaky "\r\n". strdel(string, strlen(string)-2, strlen(string)); //Vymažeme posledné dva znaky. } fclose(subor); Scripty na ukážku: Pridám Vám na ukážku aj nejaký scripty, k čomu môžete napríklad includ "file" využiť. 1. Záznam o vraždách: Tento jednoduchý skript bude v súbore zaznamenávať údaje o vraždách. Do súboru sa zapíše meno obete, meno vraha a dôvod, akým bola obeť usmrtená. Návod označen jako platný Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný
  3. Je celkom otravné stále zapínať a vypínať SAMP, tak som prišiel na spôsob, ako si "debugging" zrýchliť. Vytvorte si náhodny filterscript, a do OnFilterScriptExit stačí dať toto: SendRconCommand("gmx"); Tento príkaz sa používa na reštart gamemódu. Tu nejde o reštartovanie módu, ale to aby hráča odpojilo a dalo mu príkaz na reconnect. Toto urýchli reconnect pri reštarte servera(Ak sa nepoužije GMX, trvá celkom dlho dokým sa znova pripojí). takže vďaka tomuto nemusíme stále reštartovávať SAMPko, a tým dlho nečakať. Ale pre ešte lepšie používanie, osobne odporúčam si nastaviť velkosť obrazovky (v hre) 640x300 a keď sa hra načíta, stlačiť Alt + Enter. Tým sa to hodí do Okna, takže prehadzovanie medzi Windowsom je rýchlejšie a lepšie + je vidno konzolu . Jednoduché ale užitočné
  4. Ú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
  5. Mrzela ma tá malá veľkosť toho streamu, niekedy mi vadilo že som ani nevidel napríklad puk & loptu. Netrvalo to ani minútu a našiel som riešenie. Nieje to nič zložité. Potrebujete len schopné ruky. Pôvodný náhľad. (btw. tá brada) Namierime myšou vedľa streamu, klikneme na pravé tlačítko a stlačíme preskúmať prvok. Nájdeme si "div id stream", znovu klikneme na pravé tlačítko myši a stlačíme na "edit as html". Vyhľadáme úsek textu "width="480" height="270". Zmeníme parametre, teda čísla napríklad na "width="700" height="380". A hotovo! Odskúšané na livestreamoch KHLky Toto zväčšanie po reloadnutí stránky zmizne.
  6. Stack/heap size warning Niektorým z vás sa už stalo, že pri kompilácii ste uvideli správu podobnú tejto: Header size: 88 bytes Code size: 60 bytes Data size: 0 bytes Stack/heap size: 16384 bytes; estimated max. usage=4064 cells (16256 bytes) Total requirements: 16532 bytes Je to chyba vášho kódu, ale kompiler ju nedokáže sám nájsť. Tým, čo nevedia o čo sa jedná, vysvetlím čo je to za chybu, ako ju nájsť a opraviť. Text uvedený vyššie bol vygenerovaný pri kompilácii nasledujúceho kódu: main() { new pole[4059]; } Štruktúra AMX súboru Keď sa skompilovaný .amx súbor nahrá do pamäte (pri spustení servera), má nasledovnú štruktúru: +--------+ | prefix | <- metadáta o amx súbore, napr. adresy sekcií code a data, verzia kompilera, .. | ------ | | code | <- v tejto časti sa nachádza kód skriptu | ------ | | data | <- nemenné dáta, hlavne stringy | ------ | | stack | <- časť pamäte, do ktorej sa ukladajú lokálne premenné | ~~~~~~ | | heap | <- časť pamäte, do ktorej sa ukladajú globálne a static premenné +--------+ Prefix má najnižšiu adresu v RAM a heap je na konci programu - najvyššia adresa v RAM. Zásobník - stack V stacku sú uložené všetky lokálne premenné. Pri spustení servera preto stack začína prázdny. Medzi heap a stack je v tom momente rezervovaný priestor. Podľa výstupu kompilera (uvedený vyššie) je defaultná veľkosť celej dynamickej oblasti 16KB. Keďže veľkosť dát alokovaných na zásobníku sa nedá pri kompilácii predpovedať (lokálne premené vzniknú až počas behu programu), kompiler iba odhadne, že hrozí pretečenie zásobníka. Nedokáže povedať kedy ani kde. Avšak, ak už raz si myslí, že k nemu dôjde, tak mu treba veriť. V prípade, že nastane povestný stack overflow, tak dáta zo sekcie stack začnú prepisovať dáta zo sekcie heap (lokálne premenné zmenia chybne hodnoty globálnych premenných). V Pawn každá premenná zaberá 4 bajty. Testovací kód vyššie, kde pole má 4059 prvkov, zaberie 16276 bajtov. Na stack sa tiež ukladajú ďalšie hodnoty, o ktorých programátor nemá prehľad, adresa návratu z funkcie, atď. Tieto dokopy budú mať tých 16 KB. Navyše, je to len odhad kompilera, že sa niečo stane. new test0; /* zabera 4 bajty */ new test1[3]; /* zabera 12 bajtov */ Viac informácií nájdete na nete. Ako to opraviť Najrozumnejšie bude zoptimalizovať kód - odstrániť 256 bajtové polia, nepotrebné premenné a všetko bude fungovať. Sú gamemody rátajúc 100 000 riadkov, ktoré tento limit neprekračujú, prečo by mal váš skript prekračovať? Pragma dynamic V prípade, že už nemôžete optimalizovať viac, môžete manuálne zväčšiť dynamickú pamäť pre .amx súbor. Direktíva preprocesoru pragma dynamic určuje koľko dynamickej (stack/heap) pamäte bude skript používať. Nastavíte to jednoducho pomocou #pragma dynamic 17000 /* velkost dynamickej pamate v bajtoch */
  7. 1234

    návod Navod na Warpy

    Ahojte toto je navod jak udelat warp #include <a_samp> #define BARVA_MODRA 0x00BDFFFF new sendername[MAX_PLAYER_NAME]; new string[256]; public OnPlayerCommandText(playerid,cmdtext[]) { if(strcmp(cmdtext, "/přikaz na odwarpovani", true) == 0) //prikaz { GetPlayerName(playerid, sendername, sizeof(sendername)); //zisti meno pre hlasku o odwarpovani if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) //ak je hrac v aute a je vodic { SetVehiclePos(GetPlayerVehicleID(playerid),Souřadnice); // zisti v akom aute sedi a premiestni to auto na urcenu poziciu }else{ SetPlayerPos(playerid,Souřadnice); //ak nesedi v aute premiestni hraca } format(string, sizeof(string), "Hráč %s se odwarpoval do.....", sendername); SendClientMessageToAll(BARVA_MODRA, string); return 1; }
  8. Obtížnost: Zdravím, už je to několik let co se věnuji pawnu, ale pořád vídám, že level "pawnení" se na tomto fóru nějak zasekl a vesměs všíchni pouzívají ten stejný systém jak něco napawnit. Chtěl bych ukázat jak pracovat s proměnýmy typu pole. Většina lidí proměnou typu pole používá jen pro text nebo pro "playerid" a nemá ani páru ja kto vlastne funguje. Proměná pole je shluk za sebou jdoučích proměných. new pole[5]; = pole[0], pole[1], pole[2], pole[3], pole[4] new pole[10]; = pole[0], pole[1] .. pole[8], pole[9] Důležitým poznatkem je, že pokud je pole o rozměru 10 tak nejvyšší proměná je 9. Proč? protože začínáme nulou ! Takže to "playerid" (Často to nazýváte proměnou pro hráče) je vlastně pole se kterým pracujete právě podle id daného hráče. A jak že funguje ten string? tak jsou preči písmena a ne čísla. Omyl! string(nejčastější pojmenování proměnné pole pro text) obsahuje čísla, a podle těchto čísel se zobrazují znaky z tabulky znaků. Protože má každý znak své pořadové číslo. Proměnná pole může mít i více než jeden rozměr (rozměrem rozumíme [] a v tom to číslo je celikost pole). Nejvíce lze udělat 3 rozměrné pole. Lze udělat i čtyřrozměrné, ale o tom pozdeji.. new pole[5][10]; = celkem 50 proměných, jakto? protože: pole[0][0], pole[0][1] .. pole[4][8], pole[4][9] new pole[5][10][15]; = celkem 750 proměných No konec té nudné teorie a teď si ukážeme jak nám to dokáže usnadnit život. Proměné pole (stejně jako te klasíské), lze nastavit nějakou hosnotu, kterou na začástku bude mít. A protože je to pole, tak jich lze nastavit více najednou, ale jak nato? lehce: new pole[5] = { 1, 5, 10, 6, 3, }; Tímto jsme dosahli tohoto: pole[0] = 1; pole[1] = 5; pole[2] = 10; pole[3] = 6; pole[4] = 3; No neni to pomohlnější ? Někteří řeknou že to vyjde nastejno, a vyní Vám ukážu, co nastejno určite nevýjde new pole[2][2] = { {0,1}, {2,3} }; A cože jsme to vlastne napsali? pole[0][0] = 0; pole[0][1] = 1; pole[1][0] = 2; pole[1][1] = 3; A pro trojrozměrné pole: new pole[][][] = { { {0,1}, {2,3} }, { {4,5}, {6,7} } }; tj. pole[0][0][0] = 0; pole[0][0][1] = 1; pole[0][1][0] = 2; pole[0][1][1] = 3; pole[1][0][0] = 4; pole[1][0][1] = 5; pole[1][1][0] = 6; pole[1][1][1] = 7; Tady už to stojí zato ne ? Určite jste si všimly, že tam najednou nejsou vyplměna velikosti polí. Ne nezapoměl jsem nato Ale komu by se chtělo u komplikovanějších a zdlouhavých proměných to počítat ? A hlavně, jakmile tam napíšete špatné číslo, tak si bude pawno stěžovatz, že bud je proměná malá nebo zase moc velká a nejsou nastaveny všechny údaje Takže to nemusíme řešit, protože pri kompilaci si tam pawno samo ty čísla dosadí. Ale určite si říkáte, že potřebujete vědět jak jsou pole velká kvůli použití ve sciptu. Nato nám slouží fizeof takže pokud chceme velikost prvního rozměru použijeme sizeof(pole), pokud chcete druhý rozměr tak sizeof(pole[]) a pokud třetí tak sizeof(pole[][]) A kde to v praxi použít? Jistě znáte takové ty systémy, kde máte AddNeco(123.4,236.1,1263.1,0,-1,"Text"); Pak máte nějaká callback, kte se to nahrává do proměných a nějakou proměnou (nejčastějí count) si pocítáte kolik jich je naháno, a když máte malou proměnou tak zase musíte v gamemodu listovat a zvětšovat ji Lze to řešit jednoduše, a pokud potřebujete do proměné pole nastavit více druhu proměných (integer, float atp..) poslouží vám k tomu enum enum ADD_INFO { Float:add_x, Float:add_y, Float:add_z, add_int, add_m, add_text[64], add_vec } new AddPromena[][ADDINFO] = { {123.4,236.1,1263.1,0,-1,"Text"},//pokud máte v enumu více údaju, něž nastavujete, ničemu to nevadí, když jim nenastavíte hodnotu, proste budou mit 0 {1263.11,23.4,236.1,1,-1,"Text2"} }; Tím jsme docílili tohoto: AddPromena[0][add_x] = 123.4; AddPromena[0][add_y] = 236.1; AddPromena[0][add_z] = 1263.1; AddPromena[0][add_int] = 0; AddPromena[0][add_m] = -1; AddPromena[0][add_text] = "Text"; AddPromena[0][add_vec] = 0; AddPromena[1][add_x] = 1263.11; AddPromena[1][add_y] = 23.4; AddPromena[1][add_z] = 236.1; AddPromena[1][add_int] = 1; AddPromena[1][add_m] = -1; AddPromena[1][add_text] = "Text2"; AddPromena[1][add_vec] = 0; Výhoda tohoto je ta, že nemusíte mít žádný callback pro nahrávání do proměných aní žádný count a nemusíte si hlídat velikost proměné. Prostě píšete a o nic se nestaráte, když potřebujete v kodu vědět kolik těch add je použijete sizeof(AddPromena) a jeto. Ovšem jedno důležité pravidlo pro správnou funkčnost, ty údaje v ennum musí jít přesně za seboutak, jak je zadáváte do té proměné. Pokud jste si všimli, tak i do enumu lze použít pole, ovšem jen jeden rozměr, takže pokud máme trojrozměrnou proměnou s enum kde je jeden rozměr, získáváme 4 rozměry. enum POLE_INFO { p_neco[12] } new pole[5][5][POLE_INFO]; pole[0][0][p_neco][0] = hodnota; Vidíte 4 rozměry jsou na světe údaje v enumu jsou chápana jako čísla a pokud v enumu potřebuje udělat mezeru, lze to enum POLE_INFO { p0,//0 p1,//1 p5 = 5,//5 p6,//6 p7,//7 } tímto jsme vytvořili enum o velikosti 8, tj 0,1,2,3,4,5,6,7 a tím že jsme 2,3,4 nedefinovali v enumu obdobně to lze i s násobevím, a lze i enumu nastavit, aby ty údaje v ní napsané mněli hodnoty ob, což jsem nikdy nevyužil, koho by to zajímalo jeto na wikině Ověřený návod Tento návod prošel validací, a lze ho proto považovat za ověřený.
  9. play

    návod AntiUnlock

    Tohle je návod aby vám cheater nemohl odemknout auta na servru. 1)Nakopírujte do svého módu: Do OnGameModeInit: Do OnPlayerEnterVehicle: Do OnPlayerConnect: 2) úprava modu: -Musíte upravit SetVehicleParamsEx na SetCarLock(vehicleid,doors); SetVehicleParamsForPlayer na SetCarLockPlayer(vehicleid,playerid,doors); CarAntiUnlock=AddStaticVehicleEx(518,892.4550171,-1678.6679688,13.3420000,0.0000000,-1,-1,1500); Upravte si souřadnice na jaké chcete.Tohle auto nepůjde používat. Funkce: GetCarLockPlayer(vehicleid,playerid) SetCarLockPlayer(vehicleid,playerid,doors) SetCarLock(vehicleid,doors) GetCarLock(vehicleid)
  10. Ahoj pomuže mi nekdo jak dat v pawnu amx do pwn upravovaní ???
  11. Ahoj, ja som _Sweet_ a dnes si ukážeme základne funkcie teleportu v hre. Ako prvé poznáme funkciu SetPlayerPos ktorú si ukážeme v príkaze. Ak hráč zadá príkaz. Príkaz v hre. Nastaví hráčovi pozíciu. Komu sa nastaví pozícia. Pozícia X, Y, Z. public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/lv", cmdtext, true, 10) == 0) { SetPlayerPos(playerid, 2099.1458, 1683.2396, 13.0060); return 1; } return 0; } Tento príkaz nás v hre ak napíšeme /lv teleportne do lv. Ak chcete aby vás to v hre teleportlo aj s autom tak tam budeme musieť niečo pripísať. Ak hráč zadá príkaz. Príkaz v hre. Nastaví hráčovi pozíciu. Komu sa nastaví pozícia. Pozícia X, Y, Z. Zistí ID vozidla. Ak je hráč vo vozidle. To isté ako SetPlayerPos akorát to nastaví pozíciu autu. public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/lv", cmdtext, true, 10) == 0) { new auto = GetPlayerVehicleID(playerid); if(!IsPlayerInAnyVehicle(playerid)) { SetPlayerPos(playerid, 2099.1458, 1683.2396, 13.0060); }else{ SetVehiclePos(auto, 2099.1458, 1683.2396, 13.0060); return 1; } return 0; } Ták a teraz už máme super príkaz na teleport do lv aj s autom. Ešte si môžme nastaviť aby sa napísalo všetkým hráčom že sa hráč odportoval. Ak hráč zadá príkaz. Príkaz v hre. Nastaví hráčovi pozíciu. Komu sa nastaví pozícia. Pozícia X, Y, Z. Zistí ID vozidla. Ak je hráč vo vozidle. To isté ako SetPlayerPos akorát to nastaví pozíciu autu. Pošle všetkým na serveri správu. Akú farbu bude mať správa. Zistí meno hráča ktorí zadal príkaz. Správa čo sa napíše. Použije sa zistené meno hráča v správe. public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/lv", cmdtext, true, 10) == 0) { new string[140]; new nick[MAX_PLAYER_NAME]; GetPlayerName(playerid,nick,MAX_PLAYER_NAME); format(string,140,"Hráč %s použil teleport /lv.",nick,playerid); SendClientMessageToAll(0xFF0000FF,string); new auto = GetPlayerVehicleID(playerid); if(!IsPlayerInAnyVehicle(playerid)) { SetPlayerPos(playerid, 2099.1458, 1683.2396, 13.0060); }else{ SetVehiclePos(auto, 2099.1458, 1683.2396, 13.0060); return 1; } return 0; } Teraz máme jednoduchý príkaz na teleport do lv. Takže ak si to zhrnieme tak ak napíšeme do chatu /lv tak nás to teleportne (ak máme auto tak aj s autom) a napíše to všetkým na serveri kto sa kam teleportol. Ďakujem za prečítanie jednoduchšieho tutoriálu _Sweet_ :-)
  12. Zdravím, předem bych chtěl upozornit, že toto není můj script a proto se ptám jestli by byl někdo ochotný mi to trošku popsat popiskem typu //tady patři to a to. Děkuji xjobs_2.0.txt
  13. ČLÁNEK V ORIGINÁLNÍ PODOBĚ ZDE: http://www.letajicimoucha.cz/eset-7-blokuje-nepravem-stranky-jak-to-vyresit/ Poslední dobou po přechodu na nejnovější ESET Smart Security 7 se mi stává, že jednoduše některé stránky nezobrazím. Vyhodí mi to jakou-si hlášku, že „Tato webová stránka není dostupná“ s kodem chyby: ERR_INVALID_CHUNKED_ENCODING. Samozřejmě stránky jsou v úplném pořádku bez jakéhokoliv viru či špatného scriptu. Za vším totiž stojí antivirus ESET, který je z neznámého důvodu blokuje. Tuto chybu bohužel potkal i můj blog, či má doména playz.cz na které byl instalovaný čistýWordPress. Dá se tedy říci, že hodně tuto hlášku lze potkat na stránkách s WordPress. Jenže se mi to stalo i u mé domény a stránek sam-clan.eu a tam běží systém Webspell. Dokonce se mi to děje i na jiných komerčních stránkách apod. Trošku jsem začal přemýšlet, čím to může být. Prvně mě napadlo, že za to může O2 internet, protože jsem na tuto věc natrefil zrovna u přítelkyně kde má O2 internet. Jenže když jsem to zkusil na jejím notebooku, vše fungovalo jak má. V tu ránu jsem začal mít podezření na můj antivirus ESET, neboť má přítelkyně má jiný. Zkusil jsem tedy vypnout antivirus a Déjà vu! Všechny stránky najednou fungovali! Zkusil jsem to tedy napsat na Facebook českého ESETu. Tam jsem zjistil, že vlastně vůbec o ničem neví a vše je v pořádku. Jenže jsem i koukal po internetu, a tento problém má daleko více lidí… Odkázali mně na jejich technickou podporu, abych to řešil s jejich techniky a to nejlépe telefonicky. Bohužel, já opravdu nemám náladu a ani čas řešit nějaký problém. Já jim podnět dal, nyní je to jejich práce. Ne moje… Každopádně pokud se mi do komentářů ozve více lidí, že máte podobný problém tak se jim ozvu. Jak problém vyřešit? Pokud tedy vlastníte antivirus ESET Smart Security 7, máte dvě řešení. To první řešení je stáhnout si starší verzi tohoto antivirusu, který tímto problémem netrpěl a nebo jako druhé řešení vložit problémové domény do vyjímek. A to vyřešíme následujícím postupem: Otevřeme si program ESET –> Vlevo v menu si vybereme NASTAVENÍ –> Dole klikneme na„Otevřít rozšířené nastavení programu…“ –> Zde si rozklikneme pluskem „Web a mail“–> Opět si rozklikneme pomocí plus „Ochrana přístupu na web“ –> A zde si vybereme„Správa URL adres“. Nyní klikneme na tlačítko „Přidat…“ a zde již vložíme adresu(doménu) stránky, která nám nefunguje. Aby se nám to projevilo na celou stránku (doménu),musíme ji vložit do hvězdiček. Takže jako příklad který můžete vidět na obrázku je můj blog, který vložíme tedy takto: *letajicimoucha.cz*OK a adresa se nám přidá do seznamu. Nyní ještě jednou potvrdíme pomocí OK a je hotovo. Doména je přidaná do vyjímek a nyní můžete na stránky bez problému chodit. Mám v plánu tento článek vydat i samostatně na Facebooku, protože pokud někdo má skutečně tento problém i na mém blogu, těžko si přečte můj článek jak to vyřešit. Doufám, že jsem vám pomohl a doufám, že brzo ESET udělá nápravu. Takovéhle fungování se mi totiž nelíbí, když antivirus který by měl chránit tak blokuje naprosto bezproblémové stránky. Budu rád za každý váš lajk či sdílení.
  14. Textdraw Čo by ste mali vedieť. - Maximálna dlžka textdrawu je 800 znakov (characters). - Prekročenie tejto hranice môže viesť ku spadnutiu hry (crash). - Text textdrawu nesmie byť prázdny. - Táto chyba môže viesť ku spadnutiu hry (crash) - Vyriešnie problému "_" (používajte _ (medzerník), ukáže sa to ako medzera) - V texte sa nezobrazí diakritika. Súradnice. - Súradnice sa určujú pomocou formátu x,y - Ak je súčasť textu mimo obrazovku (mimo súradníc x,y) tak sa váš text nezobrazí. Ukážka.Číslice 240.0,580.0 sú v tomto prípade súradnice. TextDrawCreate(240.0,580.0,"Defaultny textdraw"); Vytvárame prvý textdraw. Nahor nad Main() new Text:prvytextdraw; OnGameModeInit(), 240.0,580.0 sú súradnice public OnGameModeInit() { prvytextdraw = TextDrawCreate(240.0,580.0,"Defaultny textdraw"); return 1; } Rozšírené funckie. public OnGameModeInit() { prvytextdraw = TextDrawCreate(240.0,580.0 , "Defaultny textdraw"); TextDrawFont(prvytextdraw , 3); TextDrawColor(prvytextdraw , 0xff0000FF); TextDrawSetOutline(prvytextdraw , 1); TextDrawSetProportional(prvytextdraw , true); return 1; } - Font (TextDrawFont.Viac) - Farba - Určíme hex farbu/y (colors.Viac) - Outline (Pridá čierny obrys textu.Viac) - TextDrawSetOutline(prvytextdraw , 1); - Proportional (Užitočné pri použití TextDrawLetterSize.Viac) Vyditelnosť. Zobrazenie textdrawu.Viac public OnPlayerConnect(playerid) { TextDrawShowForPlayer(playerid,prvytextdraw); } Skryťtie textdrawu.Viac public OnPlayerConnect(playerid) { TextDrawHideForPlayer(playerid,prvytextdraw); } Užitočné. - Online textdraw creator/editor - BSN - InGame textdraw creator/editor - Zamaroth - IPLEOMAX - Texdraw všeobecne - SA-MP wiki Nechcelo sa mi vypisovať všetky funkcie, iba tie základné.V prípade nutnosti viac funkcií kliknite na tento odkaz.
  15. Vítám vás u mého prvního tutoriálu. Připravil jsem si pro vás základní informace o AMT. AMT = Arezu's Mapping Toolbo AMT je addon do MTA:SA, pomocí kterýho mužeme tvořit loopingy, kopírovat objekty a mnoho další. Instalace: Instalace AMT je jednoduchá, budeme k tomu potřebovat pouze MTA:SA a AMT. Download: AMT: http://pawno.cz/files/file/187-mtasa-addon-amt/ MTA:SA: http://pawno.cz/files/file/162-mta-map-editor-nove-objekty-samp/ Stažený soubor amt dáme do C:\Program Files\Rockstar Games\GTA San Andreas\MAP_Editor\server\mods\deathmatch\resources Když soubor uspěšně vložíme do uvedené cesty, tak můžeme zapnout MTA:SA, tam dáme MAP EDITOR a poté se objěvíme v prázdné mapě (možná už máte nějakou postavenou). ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1. Pomocí tlačítka T se zobrazí lišta pro psaní. Do ní napíšeme /start amt a poté se nám zobrazí v pravém rohu tabulka. Obrázek tu 2. Po zadaní textu se nám objěví tato tabulka: http://2i.cz/e746a78d5e 3. Tato tabulka obsahuje Generator a Duplicator, mezi tabulkama přechazíme pomocí šipek co je v tabulce. Generator: http://2i.cz/e746a78d5e Duplicator: http://2i.cz/09a84963b0 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4. Tak, teď už se vrhneme na tvoření loopingů. Přidal sem popis tabulky, kterou teď budeme potřebovat: http://2i.cz/18b95872a1 5. Vytvoříme si nějaký objekt ze kterého půjde utvořit loop (dveře,plot, vrata a jakýkoliv předmět který je rovný). http://2i.cz/c56485af7c Na obrázku vidíme, že z objektů "trčí" šipky. Šipky určují směr loopingů. Červená šípka určuje na jakou stranu se bude looping výšit, zelená šipka poukazuje na směr. Šipky můžeme měnit pomocí levého tlačítka a kliknutím na "kolečko". 6. Takže teď si popíšeme funkci "Offset" kterou docela poměrně používám. Funkce Offset má za úkol měnit vzdálenost mezi začátkem a koncem. Čím větší offset tím větší vzdálenost bude. Př: http://2i.cz/2i/i/528a6d0d/e16e12ec3fe72f3d1295d835e3b37554/9fce2f05d6.f.png - u prvního obrázku je nastaven offset na 50, u druhého je pouze 20. 7. AMT má také funkci, že looping vždy nemusí být celej. Stačí zadat do políčka Loop: 0.50. Loop teď bude pouze poloviční. http://2i.cz/2i/i/528a699e/166e3fb0c4c92daef99b8f2ae5e29c6a/a302e3c91a.f.jpg Na obrázku můžete vidět že 1. loop je celý. Teda (1) Na druhém obrázku je čtvrtina loopu tedy (0.25) = čísla v závorce znamenají jaké číslo je v řádku loop. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 8. Teď přejdeme z Generátoru na Duplicator. Takže si o něm něco řekneme. Tato funkce nám hodně usnadní práci při dělaní silnic nebo něco podobního. Funguje to tak, že si dáme dva objekty vedle sebe POZOR MUSÍTE JE MÍT SPOJENÉ PŘESNĚ, JESTLI BUDETE DĚLAT VELKÉ VZDÁLENOSTI BUDOU VÁM VIDĚT CHYBY! a ty objekty to zkopíruje. Takže budeme muset vybrat dva elementy(objekty) co se zkopírují. Pod tím máme Copies což znamená kolikrát se to zkopíruje. Když máme dva objekty, které chceme zkopírovat 5x, tak budeme mít 7objektů. (2+5) Př:http://www.2i.cz/9031d0fa29 se změní na: http://www.2i.cz/8120c1eb38 Tak, tohle je konec tutoriálu, myslím že jsem to popsal dostatečně a že z toho každý pochopí. Kdybyste našli chybu, tak mi jí prosím napište. Ale nejspíš tam budu mít gramatické chyby. Když mi nejde pawno, tak aspoň že umím vytvořit mapu.
  16. [TUT] Jak udělat vícejazyčný příkaz Je to velmi jednoduchý Tutorial 1) Nadefinujeme si pár věcí #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 //definie DCMD new Jazyk[MAX_PLAYERS] = 0; //Nastaví defaultní jazyk na češtinu #define ZELENA 0x31A021FF //Nadefinovaná zelená barva 2) public OnPlayerConnect(playerid) SendClientMessage(playerid, ZELENA, "Původní jazyk je Čeština"); SendClientMessage(playerid, ZELENA, "Pokud budete chtít změnit jazyk použíte příkaz podle jazyku [ /english /slovak /czech ] "); //Zde je příkaz při připojení , že si můžete změnit jazyk pomocí příkazu 3) public OnPlayerCommandText(playerid, cmdtext[]) dcmd(czech,5,cmdtext); dcmd(english,7,cmdtext); dcmd(slovak,6,cmdtext); dcmd(help,4,cmdtext); 4) Vložíme někde na konec MODU dcmd_czech(playerid , params[]){ #pragma unused params Jazyk[playerid] = 0; //Nastaví jazyk na Češtinu [0] SendClientMessage(playerid,0xC0C0C0FF,"Vybrál sis český jazyk"); return 1; } //---------------------------------------------------------------------------------------------------------------- dcmd_english(playerid , params[]) { #pragma unused params Jazyk[playerid] = 1; //Nastaví jazyk na Angličtina [1] SendClientMessage(playerid,0xC0C0C0FF,"You selectet english language"); return 1; } //---------------------------------------------------------------------------------------------------------------- dcmd_slovak(playerid , params[]) { #pragma unused params Jazyk[playerid] = 2; //Nastaví jazyk na Slovenština [2] SendClientMessage(playerid,0xC0C0C0FF,"Vybrál si si slovensky jazyk"); return 1; } //---------------------------------------------------------------------------------------------------------------- dcmd_help(playerid , params[]) { #pragma unused params switch (Jazyk[playerid]) { case 0: //Napíše zprávu pokud má jazyk vybraný CZ { SendClientMessage(playerid,0xFFD400AA,"Zde bude váš řádek č.1"); SendClientMessage(playerid,0xFFD400AA,"Zde bude váš řádek č.2"); } case 1: //Napíše zprávu pokud má jazyk vybraný EN { SendClientMessage(playerid,0xFFD400AA,"This is line 1"); SendClientMessage(playerid,0xFFD400AA,"This is line 2"); } case 2: //Napíše zprávu pokud má jazyk vybraný SK { SendClientMessage(playerid,0xFFD400AA,"Tu bude váš riadok č.1"); SendClientMessage(playerid,0xFFD400AA,"Tu bude váš riadok č.2"); } } return 1; } Jak to vypadá celé ? ODZKOUŠENO ! SÁM JSEM TO TESTOVAL
  17. • Píšte mi SZ, že čo mám doplniť... Po 7 dňoch už nebudem môcť upraviť príspevok! Úvod: • Si profesionál, ktorý je presvedčený, že tento návod byť dobrý nemôže. Pozri si len to čo potrebuješ, nič lepšie spraviť neviem ajtak. • Si začiatočník, ktorý sa chce naučiť pawn čo najrýchlejšie. Toto je najmenej zábavná časť pawna, ale vedieť ju musíš. Čítaj všetko zaradom. Čo je to pawno: Prvý pohľad: Čo je čo - syntax:tvorba textu Prvé programovanie: Matematické a logické operátory:Do rite nejde mi sem dať normálnu velkosť! Otázky a odpovede:
  18. Čus , tak ukážu vám jak udělat jednoduchou GPS navigaci s CP (ChechPointy) Nadefinujeme si DCMD #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 Nyní vložíme DCMD příkaz někde do modu , nejlépe úplně na konec dcmd_gps(playerid,params[]) { #pragma unused params // Pokud vám to bude psát warning 203: symbol is never used: "params" ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"GPS","1.pozice\n2.pozice\nZrušit GPS","Rozumím","Konec"); //Toto vám vyskočí po zadání příkazu /gps } Do OnDialogResponse vložíme toto if(response) { switch(dialogid) { case 100: // ID Dialogu { switch(listitem) { case 0: // 1 tlačítko v dialogu { SendClientMessage(playerid,0xFFFFFFC8,"Pozice 1"); SetPlayerCheckpoint(playerid, X , Y , Z, 3.0); // zde si nastavíte svoje souřadnice } case 1: // 2 tlačítko v dialogu { SendClientMessage(playerid,0xFFFFFFC8,"Pozice 2"); SetPlayerCheckpoint(playerid, 1.93, 19.3, 6, 3.0); } case 2: // 3 tlačítko v dialogu { SendClientMessage(playerid,0xFFFFFFC8,"Vypnul jsi svojí GPS."); DisablePlayerCheckpoint(playerid); } } } } } Nyní si můžete nastavit svoje místa .
  19. Zdravím, dostal jsem nápad jak by se dalo zpřehlednit vytváření návodů. Níže v tomto příspěvku by se měly zobrazovat témata s obory, které by potřebovaly nějaký návod. Tyto obory nejsou vymyšlené a je potřeba aby jste je vymysleli vy. Návody může psát kdokoliv, samozřejmě já se k nim přidám. Příklad: Něčemu nerozumíte zajdete si sem (na forum) a návod tu na to není. Můžete to vylepšit tím, že napíšete sem do topicu obor a téma pro který by jste potřebovaly návod. Já ho přidám to tabulky v prvním tomto příspěvku. Příklad 2: Jste zkušený v nějakém oboru a nudíte se občas nebo chcete někomu pomoci. Zajdete si na tento topic, najdete si obor který umíte a na uvedené téma napíšete návod. Dále napíšete sem, že je návod napsaný, abych mohl změnit status návodu za napsaný. Přidání má podmínku že uvedený návod, který by jste chtěli, neexistuje nebo je zastaralý, případně málo pochopitelný ) Veškeré připomínky nebo cokoliv jiného pište přímo sem. Nezapomeňte aspoň někdo pro začátek něco napsat aby to nebylo prázdné
  20. Tanga

    návod Príkazy

    Úvod: Na začiatok:ak ešte nemáš includ zcmd • Čo je to includ: Tvar bežného príkazu: Príklady použitia ZCMD: 1. Doplnenie života hráčovi: 2. Odkaz adminovi: Návod označen jako platný Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný
  21. Úvod: • Je veľmi ťažké urobiť návod na povolania kvôli ich všestrannosti a rozmanitosti, ale posnažím sa spraviť to. Postup pri vytváraní zamestnania: • Je takmer nemožné použiť na každé zamestnanie rovnaký návod, ale približne sa môžete riadiť týmto mojim: Postup napísaný v kóde: Príklady zamestnania a konkrétny postup: 1. Kompletné zamestnanie sa ako policajt: Informační návod - Návod označen jako platný Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný
  22. Zdravím chtěl bych se zeptat , jak udělat aby když si koupí nějaké vozidlo tak to přidá majitele toho kdo si to koupil . Prosil bych prosím o radu
  23. Zdravím , chtěl bych se zeptat proč mi toto nefunguje . Normálně to zkompiluju a dám na server . Ale na serveru se nic neděje :/ Byl bych rád kdyby jste mi pomohli Tady je kod public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { if(GetVehicleModel(playerid) == 456 && job[playerid] != 2) { SendClientMessage(playerid, 0xFF4700AC, "[ ZNV ] Zaměstnání : Nemůžeš řídit toto vozidlo , protože nepracuješ jako Delivery"); TogglePlayerControllable(playerid, 1); } return 1; }
  24. Tanga

    návod Pickupy

    Čo je to pickup: • Pickup je niečo, čo sa dá zodvihnúť. Kde sa používa pickup: • Napríklad zbrane čo vypadnú z mŕtvoly, alebo keď zabijete niekoho, často z neho vypadnú peniaze vo forme pickupu, ktorý môžete zobrať. Alebo srdce na vyliečenie. Postup pri vytvorení pickupu: Tvar funkcie pickupu: Pridelenie vlastností pickupu: Príklady použitia pickupu: 1. Pridanie života: 2. Zrušenie pôvodného obchodu ammunation LS: Informační návod - Návod označen jako platný Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný
×
×
  • Create New...