Jump to content

Search the Community

Showing results for tags 'pawn'.

  • 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. Zdravím, požádal bych o radu, jedná se o podmínku: než hráč vejde do zadaného vozidla, aby mu to napsalo daný text. Problém je, ale že na všechny auta mi to píše ten daný text "nemuzes nastoupit" Zkoušel jsem: Děkuji za rady public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { if(vehicleid == AutoTest1) { Nemuzes nastoupit TogglePlayerControllable(playerid, 1); return 1; } return 1; }
  2. Dobrý den. Začínám s pawnem a moc mi to nejde. Dělám to teprve týden :D Jediné co umím je nastavit command na port např. /ls ( Teleport do Los Santos ) nebo /hp /kill Snažím se vytvořit server ale pokaždé je někde nějaká ta chybka jako error nebo war. Chtěl bych se zeptat zda je tu nějaký ochotný Pawner který by pomohl když budu mít s něčím nějaký problém. Pokud ano napište mi na Discord: AEQUITAS#4819 Budu moc rád za každou pomoc. Přeji hezký den.
  3. Nemovitosti + Pronájem (Inkaso) Zdar! Nejsem si jistý zdá-li jestli v dnešní době ocení vytvořené Filerscripty... Jelikož je poměrně už SA-MP mrtvé co se týče Československa (výjimka velké servery). Nevím jak tohle napsat nebo co sem dodat, a co ne. Jelikož dá se říci že tohle píší poprvé, nikdy jsem veřejně nějak nepsal o scriptů nebo cosi takového. Ale zkusím se vyjádřit tak, aby to bylo vše pochopitelné. Nemovitostní systém obsahuje Prozatím pronájem Po zakoupení nemovitosti je nastavený limit že to hráči dá 72 hodin (3 dny), poté má možnost prodloužit na 10 dnů (240 hodin). Každých 15 minut, probíhá "Výplata" nemovitosti zatím je tam pouze $10,000 (Možnost dodělat např: random odměny). Každá hodina = -1 hodina pronájmu (Inkasa), tímto nemusí být hráč připojený, ale bere to automatický pokud je server zapnutý. Pronájem stojí +1 hodina = $5,000 (Možnost změnit) Systém je postavený na statické pickupy takže stačí do "OnFilterScriptInit" nebo "OnGameModeInit" funkcí a máte vytvořený pickup a lze možnost zakoupit. Na pickupů musíte zmačknout L.ALT aby se Vám zobrazili informace. PS: To je prozatím vše, možná mám v plánu tento FS nadále updatovat a udělat ho čím dál víc lepším. Budu rád za každou rádu co udělat dobře, co mám špatně apod. Vyplacení po 15ti minutách od připojení hráče Video Kdo by měl zájem o tento FS stačí napsat do SZ zde na webů či napsat na můj discord: shiftnity#7545
  4. Zdravím lidi, rozhodl jsem se utratit peníze a napadlo mě, že bychom se dal na další cestu se samp a založit projekt na kterým budeme pracovat jako tým. O jaký mod se jedná, nebudu zatím zveřejnovat. - Název projektu: Zatím žádný - Zařazení: Programátor samp, vývojář projektu - Vhodné pro: lidi kteří si chtějí aspon trochu přivydělat a jdou za společným cílem - Minimální věk: 17 - Zkušenosti: Umět pawn jazyk na vynikajicí úrovni Co nabízím: - peníze domluvou - Spolupráci v menším týmu vývojářů Poznámka: Opravdu hledám někoho kdo by bral svoji práci profesionálně. Jsem připraven investovat nemálo peněz, tak bych si přál aby byla práce provedena na jedničku. Pokud máte někdo zájem a hlavně i čas na vytváření projektu, tak bych byl velice rád za vaši ochotu. Taky vás varuji, že pokud vám jde jen o peníze tak mi vůbec nepište. Pokud máte zájem tak se mi můžete ozvat na můj osobní facebook Patrik Tondl a nebo na skype: patrik.tondlas Snad nebudu čekat věčně a s někým rozumným se domluvím. Přejí krásný zbytek dne.
  5. Zdravím, rád bych se podělil o můj nález alternativy na dnes již bohužel nefunkční wiki.sa-mp.com. Myslím si, že je to dost podobné :-) https://sampwiki.blast.hk/wiki/Main_Page nebo taky https://open.mp/docs Mějte se krásně! Josef
  6. Zdravím všetkých užívateľov pawna. Pawnujem svoj vlastný server. Potreboval by som pomôcť s kodom gamemodu celkovo ho odľahčiť a pridať dve easy veci(register, login, admin + triedy hráčov). Na cene sa dohodneme aj spôsobe platby. Komunikáciu uprednostňujem cez SZ tu na pawne.
  7. Zdravím, Jelikož delší dobu san andreas multiplayer nehraji, tak sem se rozhodnul že prodám všechnu svou práci od roku 2013 až do 2017. Důvod proč to chci prodat je takový, jelikož nemám dostatek času se věnovat pawnění. Filterscripty,mapy,módy,pluginy součástí celé složky práce. Příjde mi škoda mazat celou složku práce, která trvala něco málo přes 4 roky. Součástí složky jsou také moje začátky pawna, takže je možné že se někomu budou hodit. Nachází se tam spousty herních módů od ZombieParadise, LAGW až po CW/TG mód clanu HoE. Dle mého názoru složka obsahuje slušnou sbírku za těch 4 roků. Cena celé složky práce je 300,- CZK. Obsah scriptů: 503 Obsah pluginů: 12 Obsah módů: 6 Obsah map: 57 - zahrnuje mapy také v různých scriptech. Pokud by měl někdo zájem, tak stačí když mi pošlete SZ zde na fóru, přeji příjemný zbytek dne.
  8. Obtížnost: Osnova: 1. Úvod, co je to proměnná 2. Deklarace (vytvoření) proměnné 3. Přiřazování hodnot 4. Datové typy (tagy) 5. Lokální a globální proměnná 6. Závěr 1. Úvod Zdravím Vás, tohle je první ze série návodů věnujících se základům jazyka Pawn. Cílem těchto návodů je seznámit Vás se strukturami tohoto jazyka, s jeho syntaxí a s jeho využitím v praxi. Tento návod se bude věnovat proměnné. Co je to proměnná? Pod pojmem proměnná si můžeme představit nějaké místo v paměti, které má svůj název a do kterého si pro naše potřeby ukládáme hodnoty. Všichni proměnné už známe, a to z matematiky – zde proměnné jako x a y používáme nepřetržitě. A funguje to i podobně – v matematice za ně můžeme dosazovat různé hodnoty, v programování do nich také ukládáme různé hodnoty. 2. Deklarace (vytvoření) proměnné Prvním naším krokem bude deklarace proměnné. Když mluvíme o deklaraci proměnné, máme na mysli, víceméně, její vytvoření. To provedeme následovně: . new id; . Pomocí slova new deklarujeme nové proměnné. Jinak to nejde, jazyk to od nás vyžaduje. id je název (identifikátor) naší nové proměnné. V názvu můžeme používat standardní písmena (A až Z, a až z), číslice (0 až 9) a podtržítko (_). Název bychom měli volit tak, aby odpovídal tomu, k čemu budeme proměnnou potřebovat (např. penize – pro ukládání peněz apod.) Středníkem (;) deklaraci ukončíme. Jazyku tak sdělíme fakt, že jsme s tímto příkazem (s deklarací proměnné) skončili. Takhle to funguje i u jiných příkazů, ne jenom u deklarací. Pokud potřebujeme deklarovat více proměnných najednou, je to možné provést tak, že jednotlivé názvy oddělíme čárkou, takhle: . new id, penize, score; . Takto jsme vytvořili 3 proměnné naráz. 3. Přiřazování hodnot Teď už víme, jak proměnnou vytvořit. Jak do ní ale uložím hodnotu? To udělám pomocí operátoru rovnítko / rovná se (=). . id = 5; . Na levé straně (tzv. lvalue) máme proměnnou, do které chceme ukládat, poté následuje rovnítko, které nám určí, že do proměnné ukládáme hodnotu, a nakonec přichází samotná hodnota (tzv. rvalue). Hodnotou může být číslo, ale také jiná proměnná nebo výraz. Stejně jako deklaraci, tak i tento příkaz zakončíme středníkem. Ono středníkem budeme ukončovat téměř všechno, ale to brzy samo vyjde najevo. Pokud bychom chtěli přiřadit hodnotu už při deklaraci, tak i to nám Pawn dovoluje: . new id = 7; new id = 1, penize = 5000, score = -100; //znak mínus (-) před hodnotou nám značí zápornou hodnotu . Pro zajímavost (rozklikněte spoiler): 4. Datové typy (tagy) Už umíme proměnnou vytvořit a přiřadit jí hodnotu. Teď si musíme říct něco o datových typech. Datový typ nám určuje, jaké hodnoty můžeme do proměnné uložit. Může se jednat o běžná celá čísla (ty jsme používali do teď), ale pak také můžeme ukládat čísla s desetinnou čárkou, různé texty, znaky apod. Čím se nám to bude lišit, když budeme chtít do proměnné uložit např. číslo s desetinnou čárkou? Bude se to lišit způsobem deklarace. Vyjmenujme si všechny běžné datové typy a způsob, kterým je budeme deklarovat. a) Celá čísla (7, 666, -5, -114 apod.) new cela_cisla; //deklarujeme tak, jak jsme se před chvílí naučili cela_cisla = 7; . b ) Reálná čísla – čísla s desetinnou čárkou (3.14159, 10.254, -177.8, -23.23 apod.) new Float:realna_cisla; //před název proměnné jsme přidali tzv. tag, a to tag "Float:" realna_cisla = 3.14159; //tečka (.) nám v programování představuje desetinnou čárku . c) Logické hodnoty (true a false) Logické hodnoty máme jen dvě, a to pravda (true) a nepravda (false). . new bool:logicke_hodnoty; //doplníme tag "bool:" logicke_hodnoty = true; . d) Znaky Znakem může být cokoliv, co najdete na klávesnici – písmeno, číslice, vykřičník, pomlčka atd. Deklarace se neliší od celých čísel, ale ukládání ano! . new znak; //stejné jako u celých čísel znak = 'a'; //ukládaný znak musíme vložit mezi apostrofy (') . e) Řetězec/string ("abcd1234?!", "jak se máš?", "jsem programátor" apod.) Řetězec není nic jiného než posloupnost několika znaků. Jsou to slova, věty, hesla, vše, co nás napadne. Liší se deklarací i ukládáním! . new retezec[10+1]; //v hranatých závorkách [] udáváme délku řetězce, to je ta 10, a navíc přičteme ještě jedničku kvůli potřebám jazyka Pawn retezec = "abcd1234?!"; //ukládaný řetězec znaků musíme vložit mezi uvozovky (") . Pro zajímavost (rozklikněte spoiler): Těch tagů je omnoho více, ale když teď známe jejich princip, nebude těžké se vypořádat ani s těmi ostatními. 5. Lokální a globální proměnná Proměnná se dělí na dva typy podle toho, kde ji deklarujete. Globální proměnná se nejčastěji deklaruje nahoře ve scriptu, těsně pod #include a #define. S touto proměnnou můžete pracovat všude ve scriptu. Oproti tomu lokální proměnná se deklaruje v určitém bloku (bloky nám určují složené závorky { }) a má platnost pouze v něm a v podřazených blocích. Názorná ukázka: . public OnPlayerConnect(playerid) { if(playerid == 0) { new id; id = 5; //bude fungovat, tohle je stejný blok, kde je deklarace if(IsPlayerInAnyVehicle(playerid)) { id = 0; //bude fungovat, tohle je podřazený blok } } id = 7; //nebude fungovat, zahlásí nám to chybu, protože tohle už je nadřazený blok } . 6. Závěr A takhle jsme došli ke konci návodu o proměnné. Dnes jsme se dozvěděli, co je to proměnná, k čemu slouží, jak do ní ukládat hodnoty a výrazy, jaké hodnoty do ní lze ukládat a jak ji rozdělujeme dle platnosti. Navíc jsme si také ukázali, jak psát do kódu komentáře, to jsou ty poznámky, které jsme uvedli za znaky // (dvě lomítka). Za ně si lze psát své vlastní poznatky, připomínky atd. Ještě jednou říkám, že tento návod slouží pro úplné začátečníky, pokročilejší věci byly buďto úplně vynechány, nebo jsou uvedeny ve spoilerech. Přesto, zdá-li se Vám, že jsem něco opomněl, někde jsem se spletl nebo se jen chcete vyjádřit, pište do tohoto tématu. Ověřený návod Tento návod prošel validací, a lze ho proto považovat za ověřený.
  9. Zdravím, hľadám človeka, ktorý by mi bol schopný nakódiť skript, ktorý by prešiel všetky súbory a z každého súboru vybral jednu podmienku (prešiel by všetky podmienky) a vypísal ich najvyššie hodnoty. Tieto hodnoty by potom zobrazoval v príkaze /tophraci Názorný príklad: V móde používam Y_INI na ukladanie dát do súborov. S SQL pracovať neviem. Za vypracovanie takéhoto kódu a rýchlu ukážku ako v kódovaní pokračovať (pridávať nové štatistiky) vám ponúkam 15€ (390kč). Deadline: 28.7.2018 Ďakujem.
  10. FLC

    hledám Pawner

    Dobrý den, Hledám pawnera pro tvorbu gamemode do hry GTA:SAMP. Jedná se o RP mód - o něco reálnější - hunger, apod. Přesné informace sdělím zájemci pomocí skype/ e-mailem. Výdělek: 1 000+ Kontakty Skype: group122 Děkuji za pozornost.
  11. Zdravím, nedávno jsme s kamarády začali dělat na jedné mapě a k tomu jsme začali dělat gamemode, je mimo San Andreas někde na moři a na tom moři nejdou vytvořit pickupy... SAMP Wiki (CreatePickup): Known Bug(s): Pickups that have a X or Y lower than -4096.0 or bigger than 4096.0 won't show up and won't trigger OnPlayerPickUpPickup either. (v mém překladu: Pozice pickupů, které mají pozici X nebo Y nižší než -4096.0 nebo vyšší než -4096.0 se nebudou ukazovat a nebude možné používat public OnPlayerPickUpPickup) Proto by jsem se chtěl zeptat jestli zde měl někdo stejný problém a jak ho vyřešil, či nějakou radu. Napadlo mě ještě použít CreateObject(ID Pickupu, xyz atd atd..); a nastavit timer, který bude kontrolovat jestli je u toho objektu pickupu. Jenže to by bylo celkem divný když tím objektem pickupu nebude možné procházet tak jak jsme již všichni zvyklí. //Edit: jednoduše řečeno, chtěl bych se zeptat jestli neznáte nějakou dobrou náhradu za pickupy Předem děkuji za všelijaké rady.
  12. MagnetD1

    pawn Pawno

    Kdyby někdo potřeboval pomoc s pawnem, neboj se mně kontaktovat na skype : [email protected]
  13. Zdravím, Mám problém s príkazom /admins dcmd_admins(playerid, params[]) { #pragma unused params if(info[playerid][ALevel] == 0) return ShowPlayerDialog(playerid,d_admins1,DIALOG_STYLE_MSGBOX,"Online A-Team","Momentálne nie je prítomný žiaden člen A-Teamu","Potvrdiť",""); new string[255]; for(new i=0;i<=MAX_PLAYERS_EX;i++) { if(IsPlayerConnected(i)) { if(info[playerid][ALevel] == 1) { format(string, 60, "%s | Organizátor Akcii",meno(i)); ShowPlayerDialog(playerid,d_admins,DIALOG_STYLE_MSGBOX,"Online A-Team",string,"Potvrdiť",""); } else if(info[playerid][ALevel] == 2) { format(string, 60, "%s | Moderátor", meno(i)); ShowPlayerDialog(playerid,d_admins,DIALOG_STYLE_MSGBOX,"Online A-Team",string,"Potvrdiť",""); } else if(info[playerid][ALevel] == 3) { format(string, 60, "%s | Administrátor",meno(i)); ShowPlayerDialog(playerid,d_admins,DIALOG_STYLE_MSGBOX,"Online A-Team",string,"Potvrdiť",""); } } } return true; } Ked sa pripojím na server a dám si ALevel 3, a pripojí sa na server dalsí hráč s alevel 0, v /admins ukazuje jeho s "levelom 2" ako moderátor a mňa vôbec ... Za každú radu budem rád.
  14. Zdravím, Už nejakú dobu premýšľam o tvorbe herného portálu. Keďže ma neuveriteľne baví hra GTA:SA, tak som som chcel spraviť nejaký ten módik ak by sa podarilo. Som tak mierne pokročilý pawner ... Hľadám niekoho, kto by robil filterscripty, ktoré budem potrebovať a potom ich nainštaloval do módu. Mód si budem robiť sám, ide mi o tie doplnky (FS) alebo keď si nebudem dať rady, tak sa nejako dohodneme ... Čo sa tíka módu, chcel by som niečo na spôsob roleplay. Za jeden FS ponúkam 5 - 20 € Samozrejme podľa zložitosti a stráveného času pri pawnení. Som ochotný zaplatiť kľudne aj viac ako tích 20 €, nejak sa určite dohodneme ... Za nainštalovanie do módu priplatím 2 € Ak máte záujem píšte sem, alebo na email -> [email protected] Pozor, títo ľudia sú podvodníci a chceli ma "Scamnút" 1. -> [email protected] | Skype: live:evoolvee | Pôsobí dosť dôverne, takže si dajte pozor ...
  15. Ahoj všichni, chtěl bych mít svůj vlastní server s modem real life , něco ultra realnýho a proto hledám pawnera. Takže jestli se někdo najde tak at mi napíše a určitě se dohodnem . Finanční odměna je samozřejmostí. Předem děkuji.
  16. Takže pekný večer prajem ! Hľadám pawnera ktorý by mi pomohol uskutočniť môj veľký sen a to to že budem mať vlastný server. Takže od Vás žiadam aby ste mi pomohli napawnovať mód do SAMP :). Chcel aby tam bolo: Reg/log systém , Gang systém , namiesto $ = score ( blizšie info na skype "erik.dunca" ) Odmena: Admin na servery + hodnosť pawner serveru
  17. Zdárek nazdárek... Popri C++,C# a otravnej škole, hladám niekoho, kto by mal záujem spraviť slušný mod. Ja preferujem real módy, ale ak nechcete, do ničoho nikoho netlačím. Ide o to, že by sme sa držali niakeho rozpisu, na ktorom by sme sa dohodli a spravili by sme niaky módik. Píšte PM
  18. Čaute,hladám niekoho kto by mi mohol pomôcť porozumieť pawnu a hlavne kódom,niečomu rozumiemale je to velmi málo a neviem sa pohnúť ďalej od kedy som skúšal textdrawy a mysql register s phpmyadmin.Hladám hlavne niekoho kto by mi možno aj zdielal obrazovku a vysvetloval veci,nie niekoho kto mi niečo napawnuje za peniaze.Chcel by som sa to naučiť a hlavne to pochopiť.Samozrejme zaplatím cez paypal(na cene sa dohodneme) ale nech to je niekto komu sa dá veriť a rozumie tomu.
  19. Hledám pawnera Co je potřeba udělat Co potřebuji : Vytvoření příkazů pro HRÁČE A ADMINISTRÁTORY. vytvoření frakcí ( vše ohledně frakcí ) . Vytvoření nemovitostí a house systému . Vytvoření NPC postav. Vytvoření hraní v kasínech. Vytvoření jobů, škol a hotelů . Co dostaneš ? : - Finanční ohodnocení Cenu rozhodnu já podle propracovanosti cca 3500,- - Udělení hodnosti v Staff teamu jako PAWNER, možnost dát Hl. Administrátor - Další doporučení při zakázkách - Spolupráci na serveru Kontaktní údaje na mě : ICQ - 673 875 069 | Nebo mě kontaktuj do SZ Co od tebe očekávám Ochotu Znalost RP Mít chladnou hlavu Jestli tě nabídka zaujala, tak se mi ozvi, budu se těšit na spolupráci ​Téma je uzavřené
  20. Guyy

    pomoc Atom - UTF-8

    Čaute.. Stiahol som si Atom, pre Pawn.. Ale je tu problem, v Atome ukazuje všetko jak má, ale na servery už nie.. (Aj po zatvorení, a otvorení Pawn súboru.) Ďakujem za pomoc
  21. https://www.youtube.com/watch?v=Z2x4vY0FrCc
  22. Obtížnost: Osnova: 1. Úvod, co je to switch 2. Kdy a jak použít switch 3. Další možnosti case 4. Ukázky použití 5. Závěr 1. Úvod Zdravím Vás u sedmého návodu pro začínající pawnery. Tímto navážeme na minulý návod (přečtěte si ho) a rozebereme si, k čemu slouží switch a kdy jej použít namísto normálních podmínek. Napřed ale co je to ten switch. Switch (česky přepínač) je struktura, která v konkrétním případě nahrazuje soustavu if – else if – else. Jeho účelem je vykonat ten blok, který odpovídá jeho hodnotě. Proto také přepínač, obecně se dá říct, že přepne na blok dané hodnoty. 2. Kdy a jak použít switch Už jsem řekl, že se používá v konkrétním případě. Tím případem je tato soustava podmínek: . new cislo = 2; if(cislo == 1) { //hodnota je 1 } else if(cislo == 2) { //hodnota je 2 } else if(cislo == 3) { //hodnota je 3 } else { //hodnota je jiná } . Pokud v podmínkách porovnáváme takto hodnoty, lze k tomu použít kratší a přehlednější switch. Syntaxe switche je následovná: . switch(cislo) { case 1: { //hodnota je 1 } case 2: { //hodnota je 2 } case 3: { //hodnota je 3 } default: { //hodnota je jiná } } . Do závorek switche jsme dosadili proměnnou, ze které zjišťuje hodnotu. case je klíčové slovo, které nám zde tvoří větev pro konkrétní hodnotu. Jak je vidět, nahrazuje nám else if a podmínku. Na jedno si musíme dát pozor – je potřeba za case a hodnotu uvést dvojtečku. default je bez hodnoty a plní funkci else – provede se vždy, když hodnota neodpovídá žádnému case. Narozdíl od case ale není nutné jej použít. 3. Další možnosti case Switch dokáže pracovat jak s celými čísly, tak se znaky a desetinnými čísly. . case 1: //zápis pro celé číslo case 'a': //zápis pro znak case 3.14: //zápis pro desetinné číslo . Jazyk nám též umožňuje zapsat v jednom case několik hodnot, když je to třeba, stačí je oddělit čárkou. . case 1, 3, 5: //několika celých čísel case 'a', 'b', 'c': //několik znaků case 3.14, 1.4, 8.2: //několik desetinných čísel (tečka je desetinná čárka) . Pro zajímavost (rozklikněte spoiler): . 4. Ukázky použití Před koncem si ještě ukážeme pár příkladů, jak switch používat. Dialogy . Kombinovaný zápis . 5. Závěr Switchem jsme definitivně ukončili téma podmínek. Kromě if, else if a else teď znáte už i switch a víte, kdy a jak ho použít. Poslední varování na závěr: v jiných jazycích (C/C++, C#, Java, Javascript, PHP atd.) se blok case a default ukončuje klíčovým slovem break a neuvádějí se složené závorky. Pro Pawn to prostě neplatí, takže tuto syntaxi si nechte pro ostatní jazyky. Tento návod, stejně jako ty předchozí, je určen pro nováčky, pokročilejší věci byly buďto úplně vynechány, nebo jsou uvedeny ve spoilerech. Přesto, zdá-li se Vám, že jsem něco opomněl, někde jsem se spletl nebo se jen chcete vyjádřit, pište do tohoto tématu. Ověřený návod Tento návod prošel validací, a lze ho proto považovat za ověřený.
  23. Tanga

    návod Enum [**]

    Obsah Úvod #define enum Ďalšie použitie 1. Úvod Napadlo mi, že rýchlejšie než vysvetliť niekomu čo je to enum, by bolo dať mu odkaz na nejaký návod. Žiadny som však nenašiel. Boli útržky toho čo je to enum tu a tam, ale nič čo by sa dalo ľahko nájsť. Enum slúži na náhradu direktív preprocesora (#define NIECO). Je prehľadnejší a umožňuje lepšiu kontrolu errorov pri kompilácii. Enum je skratka od enumeration, tj. výčet, vyčíslenie. V tomto návode teda ukážem riešenie konkrétnej úlohy dvomi spôsobmi. Pomocou #define a enum. Majme systém, ktorý kontroluje kde sa nachádzajú isté autá a či sú obsadené. Použijeme teda jednu globálnu premennú. 2. #define #define POSX 0 #define POSY POSX + 1 #define POSZ POSX + 2 #define OCCUPIED POSX + 3 #define VELKOST_POLA (OCCUPIED - POSX + 1) // 3-0+1=4 #define POCET_AUT 20 new Vozidla[POCET_AUT][VELKOST_POLA]; ... stock PouzitiePola() { printf("Velkost posledneho pola = %d", VELKOST_POLA); for (new i; i < sizeof (Vozidla); i++) if (Vozidla[i][OCCUPIED] == true) { printf("%f", Vozidla[i][POSX]); // len nejaky priklad } } 3. Enum Rovnakú funkcionalitu s použitím enumu by sme dosiahli nasledovným kódom. Nie je nutné písať názvy jednotlivých prvkov v enume veľkým písmom. Záleží na vašich preferenciách, mne celkom dáva zmysel, že keďže to nahrádza konštanty, tiež by to malo byť veľkým písmom. #define POCET_AUT 20 enum CarEnum { Float:POSX, // enum umoznuje jednoduchu a prehladnu kontrolu typov Float:POSY, Float:POSZ, bool:OCCUPIED }; new Vozidla[POCET_AUT][CarEnum]; ... stock PouzitiePola() { printf("Velkost posledneho pola = %d", _:CarEnum); for (new i; i < sizeof (Vozidla); i++) if (Vozidla[i][OCCUPIED]) { printf("%f", Vozidla[i][POSX]); // len nejaky priklad } } Možno ste si všimli v PouzitiePola() s enumom: printf("Velkost posledneho pola = %d", _:CarEnum); Tá časť _:CarEnum musí mať predponu _: inak by kompiler hodil warning. Fungovalo by to ajtak. Je to len bug kompilera. V praxi som vypísanie veľkosti enumu ešte nevidel, nebojte sa že by to hnusilo kód. Pre pokročilých: 4. Ďalšie použitie Enum nemusí číslovať od nuly, dá sa spraviť aj toto: #include <a_samp> enum TestEnum { PREMENNA = 5, PREMENNA2, PREMENNA3, // pauza PREMENNA4 = 25, PREMENNA5 }; main() { printf("%d, %d", _:PREMENNA3, _:PREMENNA5); } Server log: SA-MP Dedicated Server ---------------------- v0.3.7-R2, (C)2005-2015 SA-MP Team ... [01:05:25] 7, 26 Som presvedčený, že s enumami sa dajú robiť rôzne pekelné kúsky z ktorých ja žiadne nepoznám, určite ak nejaké máte, pridajte.
  24. Obtížnost: Osnova: 1. Úvod 2. Relační operátory 3. Logické operátory 4. Přiřazovací operátory 5. Bitové operátory 6. Priorita operátorů 7. Závěr 1. Úvod Vítám Vás u pátého návodu pro začínající pawnery. Téma se týká dalších druhů operátorů a navazuje na předchozí návod o operátorech. Abyste tento návod pochopili, přečtěte si nejprve ten předchozí. 2. Relační operátory Úkolem relačních operátorů je porovnávat operandy (vrací pravdu, nebo nepravdu). S nimi se zpravidla setkáme v podmínkách. Jedná se o operátory rovnosti, nerovnosti, větší/menší a větší/menší nebo rovno. . new cislo = 5, cislo2 = 10; cislo == cislo2 //dvě rovnítka porovnají, zda jsou čísla stejná (výsledek je false, 5 a 10 nejsou stejná) cislo != cislo2 //vykřičník a rovnítko zjistí, zda se čísla různí (výsledek je true, 5 a 10 jsou různá) cislo > cislo2 //znak pro "větší" zjistí, zda je číslo vlevo větší než to vpravo (výsledek je false, 5 není větší než 10) cislo < cislo2 //znak pro "menší" zjistí, zda je číslo vlevo menší než to vpravo (výsledek je true, 5 je menší než 10) cislo >= cislo2 //znak pro "větší nebo rovno" zjistí, zda je číslo vlevo větší nebo rovno tomu vpravo (výsledek je false, 5 není větší ani rovno 10) cislo <= cislo2 //znak pro "menší nebo rovno" zjistí, zda je číslo vlevo menší nebo rovno tomu vpravo (výsledek je true, 5 není rovno 10, ale je menší) . Všechno to jsou binární operátory. Doufám, že není třeba si je blíže vysvětlovat, princip je stejný jako v matematice, stačí nám znalosti základní školy. Zajímavost: 3. Logické operátory Pomocí logických operátorů tvoříme složitější podmínky. Stejně jako relační, tak i tyto operátory vrací buď pravdu, nebo nepravdu. Logickými operacemi jsou logický součin, logický součet a logická negace. a) Logický součin Logický součin je binární operace a značí se dvěma ampersandy (&&). Výsledek této operace je pravdivý, právě když jsou oba výrazy pravdivé. . new cislo = 5, cislo2 = 10, cislo3 = 15; cislo < cislo2 && cislo2 > cislo3 //výsledek je false . Prvním výrazem je "cislo ". Ten je pravdivý, 5 je menší než 10. Druhým výrazem je "cislo2 > cislo3". To pravda není, 10 není větší než 15. Jeden z výrazů je nepravdivý, proto je celá podmínka nepravdivá. b ) Logický součet Logický součet je binární operace a značí se dvěma svislicemi (||). Výsledek této operace je pravdivý, když alespoň jeden výraz je pravdivý. . cislo < cislo2 || cislo2 > cislo3 //výsledek je true . Vraťme se k předchozímu příkladu. Už víme, že první výraz je pravdivý a druhý nepravdivý. Poněvadž se teď jedná o logický součet, tak celá podmínka bude pravdivá – stačí jen jeden pravdivý výraz. Při složitějších podmínkách si nemusíme být jisti tím, jak ji jazyk vyhodnotí. Proto nám Pawn umožňuje i v tomto případě použít kulaté závorky k určení priority vyhodnocení. . (cislo < cislo2 && cislo2 > cislo3) || (cislo3 > cislo && cislo3 >= cislo2) . Teď jsme si jistí, že se napřed vykoná logický součin a až poté logický součet. c) Logická negace Logická negace je unární operace a značí se vykřičníkem (!). Účelem této operace je převrátit pravdu v nepravdu a naopak. . new bool:logicka = true; !logicka //hodnota bude false . Počáteční hodnota proměnné logicka je true. Po znegování bude hodnota převrácená – false. 4. Přiřazovací operátory Operátor přiřazení již známe – rovnítko. Probrali jsme jej v předchozích návodech, takže teď si ho jen rychle zopakujeme. Na levé straně je proměnná/pole, do které(ho) přiřazujeme, a na pravé straně hodnota nebo výraz, který přiřazujeme. . new cislo = 5; //přiřazení celého čísla new desetinne = 3.14; //přiřazení desetinného čísla new znak = 'o'; //přiřazení znaku new retezec[] = "ahoj"; //přiřazení řetězce new pole[] = {1, 3, 6}; //přiřazení hodnot poli . Pro zajímavost (rozklikněte spoiler): . 5. Bitové operátory Bitové operátory manipulují s bity. Tato problematika zdaleka přesahuje znalosti potřebné pro nováčky, proto ji zde uvádět nebudu. Nicméně, pokud se přeci jen chcete o manipulaci s bity něco dozvědět, přečtěte si tento návod, kde se tomu Mort podrobně věnuje. 6. Priorita operátorů Už jsme si zmínili, že prioritu operátorů můžeme ovlivnit kulatými závorkami jako v matematice, ale jaká je vlastně výchozí priorita operátorů? Na to se lze podívat do spoileru. Je to jen pro zajímavost, nic, bez čeho bychom se neobešli. . 7. Závěr A tímto končí druhý návod věnující se operátorům. Nyní už víte to potřebné o operátorech. Samozřejmě jich existuje mnoho, neuvedl jsem všechny (čárka, dvojtečka i všechny druhy závorek jsou také operátory), ale to už jsou drobnosti, které v praxi sami pochytíte. Tento návod, stejně jako ten předchozí, je určen pro nováčky, pokročilejší věci byly buďto úplně vynechány, nebo jsou uvedeny ve spoilerech. Přesto, zdá-li se Vám, že jsem něco opomněl, někde jsem se spletl nebo se jen chcete vyjádřit, pište do tohoto tématu. Ověřený návod Tento návod prošel validací, a lze ho proto považovat za ověřený.
×
×
  • Create New...