Jump to content

Search the Community

Showing results for tags 'samp'.

  • 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. Zombies Era RPG 2.0 O módu Někteří z Vás už někdy slyšely popřípadě nějakou dobu hrály na mém starém serveru Zombies Era. Přišla mi škoda nepokusit se vzkřísit tuhle “legendu“ a tak sem se rozhodl, že posbírám všechny své zkušenosti z předešlých projektů, okořením je špetkou originality a co z toho vzniklo můžete posoudit sami(zatim teda spíš představit, spuštění je v plánu 1. září). Nejedná se o klasické RP, kde si za klávesnicí nemůžete snad ani uprdnout aby to nepoznal admin a nesprdnul Vás, že jste nenapsali /do farting. Je to spíše RPG kde nikdo neřesí nějaký metagaming nebo powergaming. Proč? Protože pustina je krutá. Když potkáte hráče mimo chráněnou oblast, je pouze na Vás jestli se ho pokusíte zabít nebo ne. Ale pouze díky kooperaci s jinými hráči, budete skutečný válečník pustiny. Budete moci bojovat s ostatními frakcemi o důležité zdroje jako benzín, materiál na výrobu zbraní a munice a dokonce o samotné továrny na výrobu věcí potřebných k přežití. A bohužel do toho všeho Vás budou štvát zombíci. Zatím nikdo neví kde přesně se vzali, ale s největší pravděpodobností to má hodně společného s vládním programem LifeGuard (o tom více v samosttné části). Nejsou zase tak nebezpeční pokud máte čím se bránit. Co je to LifeGuard? (dále LG) Je to vládní projekt, který má zajistit přežití lidské rasy. Když zemře jedinec, který je součásí programu LG odešle stejnojmenné zařízení, které vlastní každý připojený subjekt, všechny charakteristiky a vlastnosti subjektu do hlavní centrály ve vesničce The Mud, kde potom klonovač vytvoří novou tělesnou schránku a nahraje do ní vědomí subjektu. Tímto je zaručeno přežití všech připojených. Nic ale není zadarmo. Každé klonování Vás bude něco stát. Síť LG má na starost skupina lidí, která si říká Officers (zároveň je to admin team). Hlídky Officerů pátrají po lidech bez klonovacího vysílače a rozdávají jim je (registrace nových hráčů) . Pohyb po světě Zombies Ery. ZE není open world RPG. To znamená, že se nepohybujete neustále v otevřeném 3D světě. Herní prostředí tvoří mapa světa po která se hráči pohybují pomocí TextDraw šipek. Když se přiblíží k některé lokaci, může pomocí kliknití myši na ENTER vstoupit do lokace. V případě náhodného setkání je buď tázan zda chce vstoupit, nebo je tam rovnu portnut bez varování. Všechny lokace v 3D světě jsou kruhového tvaru a jejich konec je znázorněn červenými lasery a napisy EXIT. Vystoupit z lokace je moné pouze pokud hráč není v režimu FIGHT. Tento režim znamená, že hráč utočí nebo někdo útočí na něj. V praxi to znamená, že pokud někdo někoho zasáhne, oba hráči se dostanou do režimu FIGHT po dobu 10ti sekund. Aby z tohoto režimu vystoupili, musí uplynout 10 sekud bez toho, aby je někdo zasáhl, nebo oni někoho. S každým dalším úspěšným útokem se režim FIGHT opět dostává na 10 sekund. Další lokace jsou hráčské základny (stan,domek), které jsou z mapy světa přístupné pouze jejich majiteli a tomu koho si tam přivede(když jako návštěvník takovou lokaci opustíte, její polohu si nezapamatujete). A podobné jsou základny frakcí (čerpací stanice, stará továrna, stará policejní stanice). Vozidla Vozidel je málo. Ale je dost možností, jak si nějaké obstarat. První možnost je si nějaké vyrobit. Takto je možné získat 3 typy vozidel. Banditto – jednomístná buggy Sanchez – dvoumístná crosska Freeway – dvoumístná motorka Ostatní vozidla musíte buď koupit, najít a opravit, zabít původního majitele a nebo ukrást. Dále je pár speciálních vozidel, které jsou pouze součástí questu a nebo jsou to unikátní vozidla, které lze pouze najít ve speciálních náhodných setkáních. Náhodná setkání Když se pohybujete po mapě světa, můžete narazit na spousty nepřátel. V náhodných setkáních narazíte na malé i velké skupinky zombie a také nájezdníků. Dost záleží na tom, zda cestujete sami, nebo s více hráči. Více hráčů, více zábavy. Dále jsou tu speciální náhodná setkání. Tato setkání může jedna postava nalézt pouze jednou. Obsahují unikátní vozidla, poklady, či sběratelské předměty. Obsahuje Dynamický systém lokací - generování,ukládání Dynamický systém NPC - NPC jsou v poolu a jsou použita, až když jsou třeba Systém replikací/klonování - když zemřete ve hře, jste znovustvořeni Hráčské frakce - možnost koupit základnu s názvem frakce Nehráčské frakce - možnost přidat se k frakci, kterou nezaložili hráči (dobrá věc pro hráče bez přátel ve hře) Boj o lokace - Gastown, Weapon factory PVP lokace - místa kde se objevuje loot (nikdy nevíte kdo Vás tam přepadne) Chráněné lokace - místa kde je hráč za střelbu trestán smrtí (The Mud, Downtown) Inspirováno hrami: Fallout 1 & 2 Fallen Earth Další informace budou postupně doplňovány, jakmile bude čas. Na závěr pár screenů... https://imgur.com/a/uqqWH Website: http://zombiesera.com
  2. Obtížnost: Osnova: 1. Úvod, co je řetězec 2. Nulový znak 3. Ukládání hodnot do řetězce 4. Závěr 1. Úvod Zdravím Vás, dostali jsme se už ke třetímu návodu pro začínající pawnery. Ještě než se do toho pustíme, doporučuji, abyste si přečetli předchozí dva návody (návod na pole – návod na proměnnou), zejména návod na pole, bez něj budete mít problémy pochopit problematiku řetězců. O řetězci (angl. string) byla řeč již dříve. Zopakujeme si to hlavní – je to pole znaků, do kterého ukládáme texty, zprávy, hesla atd. Každá buňka obsahuje jeden znak. Do poslední buňky nic neukládáme. Proč vlastně do poslední buňky nic neukládáme? Kvůli nulovému znaku. 2. Nulový znak Je načase, abychom si konečně vysvětlili, proč u řetězců potřebujeme buňku navíc, proč tuhle poslední buňku nikdy nezaplňujeme. Je to kvůli tzv. nulovému znaku (také EOS – End of String). Tenhle konkrétní znak (mimochodem vypadá takhle – '\0') v Pawn totiž určuje konec řetězce. Jazyk po nás požaduje, abychom mu sdělili, když řetězec skončí. Proto je nezbytné k délce řetězce vždy přičíst jeden znak navíc, ten je vyhrazen pro tento nulový znak. . new pozdrav[4+1]; //deklarace řetězce, která je nám důvěrně známa z předchozího návodu na pole pozdrav = "ahoj"; //uložení pozdravu do řetězce . Slovo "ahoj" má 4 znaky, celkem tedy potřebujeme řetězec o délce pěti znaků (4 + nulový znak). Abychom měli představu, jak to v tom řetězci vypadá, rozpitváme si ho: . pozdrav[0] = 'a' pozdrav[1] = 'h' pozdrav[2] = 'o' pozdrav[3] = 'j' pozdrav[4] = '\0' //onen nulový znak v páté buňce s indexem 4 . Ať už potřebujeme řetězec k čemukoli, vždy musíme myslet na tento nulový znak. Pro příklad, pokud funkce SendClientMessage může odeslat zprávu o maximální délce 144 znaků, řetězec s touto zprávou musí mít délku 145. 3. Ukládání hodnot do řetězce Existuje více způsobů, jak můžeme do řetězce něco uložit. Vlastně jich je spousta, my si ukážeme ty základní. a) Přímé ukládání pomocí operátoru přiřazení Tím mám na mysli rovnítko (=). Takhle jsme to dělali doposud, uvedeme identifikátor řetězce (bez hranatých závorek), rovnítko a poté text ohraničený uvozovkami ("). . pozdrav = "ahoj"; . Tento způsob ukládání lze použít, když přesně víme, co tam chceme uložit. Také je nutno podotknout, že ukládaný text nesmí být delší, než je délka řetězce. Upřímně si myslím, že s tímto se v praxi moc nepotkáte (akorát při inicializaci). Často je potřeba text upravit, dosadit do něj hodnoty proměnné apod. K těmto účelům nám slouží formátování. b ) Formátování Když formátujeme text, označujeme tím proces, při kterém do něj vkládáme hodnoty jiných proměnných a řetězců. Slouží nám k tomu funkce format. . format(output[], len, const format[], {Float,_}:...) . Za "output[]" dosadíme řetězec, kam chceme výsledný text uložit. Parametr "len" po nás chce délku výsledného textu. "const format[]" je onen text, který chceme formátovat. To poslední – "{Float,_}:..." – jsou proměnné/řetězce, které chceme dosadit. Ukažme si to na příkladu: . new hrac[4+1] = "Pepa"; //takto vypadá inicializace řetězce new penize = 500, score = 1000; //proměnné, které budeme dosazovat new vysledek[100]; //výsledný řetězec, kde bude nás formátovaný text format(vysledek, sizeof vysledek, "Hráč %s má %d dolarů a %d skóre.", hrac, penize, score); . V řetězci vysledek teď budeme mít: Hráč Pepa má 500 dolarů a 1000 skóre. . Ve fomátované zprávě jsme použili jisté znaky – %s a %d. Těmto znakům se říká specifikátory. Aby ta funkce format věděla, kam má to hrac, penize a score dosadit, musíme mu to dát nějak vědět. To je účel specifikátorů. Uvádíme je vždy v tom pořadí, v jakém po sobě jdou proměnné/řetězce, které dosazujeme. Máme následující specifikátory: %d nebo %i – celá čísla %s – řetězec %f – čísla s desetinnou čárkou %c – znak Nejsou všechny, ale jako základ nám tohle postačí. 4. Závěr A to by k řetězcům bylo všechno. Konečně již víme, co je nulový znak a k čemu slouží. Už víme, jak do řetězců ukládat běžný, ale také formátovaný text. Jediné, na co jsem ještě zapomněl – pomocí sizeof jsme zjistili velikost řetězce vysledek (počet buněk toho řetězce). 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ý.
  3. Obtížnost: Osnova: 1. Úvod, co je to pole 2. Deklarace pole 3. Práce s indexy (přiřazování hodnot) 4. Pole a řetězec 5. Vícerozměrné pole 6. Závěr 1. Úvod Zdravím, tohle je druhý ze série návodů pro začínající pawnery. Návod navazuje na ten předchozí o proměnných (klik). Znalost proměnných je nutná k pochopení tohoto návodu, proto Vám doporučuji, abyste si nejprve přečetli ten první návod (odkaz je k dispozici). Co je to pole? Pole (angl. array) je, zjednodušeně řečeno, proměnná, do které můžeme ukládat více hodnot. Funguje to tak, že se nám v paměti vymezí prostor a tento prostor se nám rozdělí na tolik buněk, kolik určíme. Jako kdybychom vzali dort a rozkrojili ho na námi určený počet kousků. K těmto jednotlivým buňkám (kouskům dortu) pak přistupujeme pomocí tzv. indexů. 2. Deklarace pole Jako první začneme s deklarací pole. Ta funguje stejně jako u proměnné, akorát s malým rozdílem. . new hraci[3]; . Opět jsme použili slůvko new, opět jsme zvolili název a opět jsme to všechno zakončili středníkem. Co se tedy změnilo? Hned za název jsme přidali hranaté závorky [ ] a do nich jsme vepsali velikost pole. Je tam 3, což znamená, že pole s názvem hraci má celkem 3 buňky. Samozřejmě můžeme deklarovat více polí naráz a přidat k nim různé tagy (pro různé datové typy), stejně jako u proměnných. . new hraci[3], Float:souradnice[4], bool:admin[10]; . 3. Práce s indexy (přiřazování hodnot) Nyní máme vytvořené pole. Jak teď do jednotlivých buněk uložíme hodnoty? Budeme k nim přistupovat přes, již zmíněné, indexy. Každá buňka má svůj unikátní index. Indexy vždy začínají od nuly. Poslední index bude vždy o jedno menší, než je velikost pole. Takže naše pole hraci bude mít indexy 0 až 2, pole souradnice bude mít indexy 0 až 3 a pole admin bude mít indexy 0 až 9. Teď pojďme poli hraci přiřadit nějaké hodnoty. . hraci[0] = 1; hraci[1] = 0; hraci[2] = -3; . Takhle jsme všem třem buňkám určili hodnotu. Indexy zapisujeme tam, kde jsme při deklaraci zapisovali velikost. Pro procvičení to samé uděláme i s druhým polem. . souradnice[0] = 4.7; //ukládáme čísla s desetinnou čárkou souradnice[1] = 8.52; souradnice[2] = -1.02; souradnice[3] = -0.5; . Pro zajímavost (rozklikněte spoiler): 4. Pole a řetězec Už u proměnných jsme narazili na tento způsob deklarace – jednalo se o řetězce. Je načase si říci, že řetězec není nic jiného než pole znaků. Každá buňka obsahuje jeden znak z řetězce. Podívejme se na následující příklad: . new pozdrav[4+1]; //deklarace pole znaků (řetězce), nezapomeňme přičíst jedničku (znak) navíc pozdrav = "ahoj"; . Teď máme v poli/řetězci pozdrav slovo "ahoj". Když si ho rozpitváme, zjistíme, že každý index v sobě má jedno písmeno. . pozdrav[0] = 'a' pozdrav[1] = 'h' pozdrav[2] = 'o' pozdrav[3] = 'j' . Index 4 jsem záměrně nezmínil. Proč? Podrobněji se tomu budu věnovat v návodu o řetězcích, prozatím si vystačíme s informací, že jedná-li se o řetězec (u ostatních polí to neplatí), musí poslední buňka zůstat nezměněná. Necháme ji prostě tak, jak je. Pro zajímavost (rozklikněte spoiler): 5. Vícerozměrné pole (pro středně pokročilé – rozklikněte spoiler) 6. Závěr A jsme na konci. Nyní už víme, jak funguje pole, jak jej vytvořit a jak s ním pracovat. Taky jsme si řekli něco málo o principu vícerozměrných polí a o tom, jaký vztah má řetězec k poli. 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ý.
  4. Zdravím, asi jste si všimli, že přibyla nová sekce "Základy pawn". Po domluvě s Ewwem jsem se rozhodl, že většinu svých návodů z ewa (jiného fóra) přesunu i sem. Vyžádal jsem si na to svou sekci, za chvíli vysvětlím proč. Vlastně vysvětlím všechno. Proč to vzniklo? Jednoduše řečeno, je zde horda lidí, co žádají o pomoc se svým kódem nebo problémem, ale když jim někdo poskytne návod, jak toho dosáhnout, skončí to na tom, že dotyčný nezná základy. Odkázat jej na google či na samp wiki bez toho, aniž by to helper nějak přiblížil, má asi stejnou vypovídací hodnotu jako ten příspěvek od toho, co žádá pomoc. Řešením je odkázat jej na místní sekci "Návody", ale... ...ale to by v té sekci nesměl být takový bordel. Za ty roky se tam nahromadily stovky návodů, sice byl pokus o to je roztřídit (nice try, Petře, Hipe), ale že by to zrovna dvakrát pomohlo, to ne. Proto vznikla tato sekce, která bude sdružovat návody pro úplné začátečníky. Jakých návodů se to týká a co musí splňovat? Jsou to návody, které se věnují jednotlivým strukturám jazyka Pawn, jeho syntaxi apod. Já prozatím plánuji návody na proměnnou, pole, funkce, podmínky, cykly a řetězce. Co bude dál, to se uvidí. Přispět svým návodem může každý, ale návod v této sekci by měl splňovat tato pravidla, jinak by sekce postrádala smysl: 1. Návod musí být sepsán "jako pro blbce"; to znamená, že musí být vše pododrobna a srozumitelně vysvětleno, žádné odborné výrazy a úseky, popř. tyto úseky musí být od návodu nějak odděleny s upozorněním, že jde o něco navíc (já využívám spoilerů); 2. Tématem by neměla být žádná konkrétní funkce SA:MP (timery, 3dlabely apod.) ani žádný větší celek (jak udělat TDM, jak na anketu apod.), sekce je pouze pro věci týkající se Pawn; 3. Návod musí být v souladu s šablonou pro psaní návodů. Každý návod v této sekci musí projít schválením, když nebude splňovat bod 1 nebo 2, bude přesunut do sekce "Ostatní návody". V případě, že by nesplňoval bod 3, by jej uživatel musel nejprve upravit tak, aby byl v souladu s šablonou (není nutné to moderátorům znesnadňovat tím, že se to nebude dodržovat). Jak přesně to má pomoct? Zkušení pawneři mohou žadatelům o pomoc poslat odkaz na tuto sekci, pokud daný člověk nebude mít elementární znalosti Pawn. Závěrem Doufám, že se to osvědčí, udělat pořádek v celé sekci "Návody" si myslím je utopická myšlenka, takže tohle je (by mohla být?) ta zlatá střední cesta.
  5. 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ý.
  6. Web: Prozatím je jen zdarma doména, jak bude větší část módu hotová, tak zaplatím doménu .cz [http://pr-rp.8u.cz/index.php IP serveru: zatím není, probíhá testování na hamachi serveru. Kontakt: [email protected] Fórum SZ Hledám: Mappery Hotové věci: - Login - Register systém - Pár kontrolních otázek pro přihlášení - Imigrace postavy ( vyplnění věku, kontinentu odkud pochází, pohlaví ) - Tutorial - Základní RP příkazy ( /me a /do ) - Seznam online administrátorů - Nastavení věku a pohlaví Nedodělané věci: - Dynamický house systém - Dynamický systém frakcí - Dynamický systém benzínek - Vehicle systém - Drogy - Práce - Weapon systém - Banka, bankomaty - Občanka, řidičáky - Bude toho ještě více, jen to musím vše domyslet.
  7. Zdravím, tématem tohoto návodu bude hashování hesel; řeč bude zejména o nové funkci, která do SA:MP přibyla od verze 0.3.7 R1 – SHA256_PassHash. Opravdu jsem nevěděl, jakou zvolit obtížnost, ale vzhledem k úrovni vědomostí většiny místních uživatelů jsem se rozhodl pro 3/5 (pro středně pokročilé). Obtížnost: Co je hashování a k čemu slouží Pojem hashování znamená převod dat (v našem případě to budou hesla hráčů) na otisk neboli hash. K tomuto převodu nám slouží tzv. hashovací funkce. Hash, který nám vznikne, má několik klíčových vlastností: – nezáleží na tom, jak velká data jsou, výsledný hash bude mít velikost vždy pevně danou; – i při sebemenší změně dat (např. změna hesla z "ahoj123" na "ahej123") se bude výsledný hash podstatně lišit; – z hashe se k původním datům prakticky nelze dostat (proto jsou hashovací funkce označovány jako jednosměrné). Z těchto bodů by Vám už mělo být jasné, k čemu je hashování dobré – k ochraně citlivých údajů a procesů, kterými hesla nepochybně jsou. SHA-256 SHA-256 je hashovací funkce pocházející z rodiny hashovacích funkcí SHA-2. Používají ji kupříkladu protokoly TSL a SSL, ale své uplatnění najde i v Linuxu. V pawn tato funkce vypadá následovně: _ SHA256_PassHash(password[],salt[],ret_hash[],ret_hash_len) _ password[] – heslo, ze kterého chceme získat hash; salt[] – kryptovací "sůl", o které si za chvíli povíme; ret_hash[] – výsledný hash; ret_hash_len – délka výsledného hashe, která bude vždy 64. Solíme a solíme V úvodu o hashování jsem zmínil, že kryptografické hashovací funkce jsou jednosměrné, tedy že původní data z výsledného hashe už sotva získáme zpět. K těmto funkcím lze ještě přidat takzvanou sůl, což jsou náhodná data, která se připojují navíc k původním datům. Toto uplatníme právě při hashování hesel. Zvolí-li si uživatelé náhodou stejné heslo, díky unikátnímu "osolení" nám tak vznikne více variant, čímž zabráníme možným slovníkovým a podobným útokům. Co byste měli mít na paměti při generování soli: – sůl musí být vždy náhodně vygenerována, pokud budeme solit stále stejnou solí, bude to postrádat efekt; – tvoříme dlouhou sůl; pokud by si útočník chtěl udělat tabulku možných solí, sůl o délce dvou znaků by nám moc nepomohla. A jdeme skriptovat Teď, když už víme vše potřebné, je načase si ukázat, jak to bude vypadat v kódu. Vytvořím jednoduchý registrační systém, kam budu ukládat jen heslo a sůl. Jako první si nadeklarujeme potřebné proměnné. new pPassw[MAX_PLAYERS][65]; //hash bude mít vždy délku 64 znaků + EOS new pSalt[MAX_PLAYERS][11]; //délku soli jsem zvolil 10 znaků + EOS _ Následně si nadefinujeme pomocné funkce. GenerateSalt() //vygeneruje nám náhodnou sůl o délce 10 znaků { new salt[11]; for(new i;i<10;i++) salt[i] = random(126-33) + 33; //od ASCII 33 ('!') až po 126 ('~') salt[10] = EOS; return salt; } GetPath(playerid) //vrátí nám cestu k uživatelově souboru { new path[6+MAX_PLAYER_NAME+4+1]; GetPlayerName(playerid,path,sizeof path); format(path,sizeof path,"users/%s.txt",path); return path; } _ Nyní si ukážeme, jak to bude vypadat při registraci. public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[]) { if(dialogid == DIALOG_REGISTER) { new File:f,salt[11],str[100]; salt = GenerateSalt(); //vygenerujeme náhodnou sůl SHA256_PassHash(inputtext,salt,pPassw[playerid],sizeof pPassw[]); //k zadanému heslu (inputtext) se přidá sůl (salt) a výsledný hash se uloží do pPassw[playerid] f = fopen(GetPath(playerid),io_write); //otevření souboru v režimu zápisování format("%s\r\n%s\r\n",pPassw[playerid],salt); //zapisované údaje (heslo a sůl) fwrite(f,str); //zápis do souboru fclose(f); //uzavření souboru return 1; } } _ Registraci se zápisem hashe bychom měli. Nyní se podíváme na to, jak budeme postupovat při přihlášení. Navazujeme na kód výše dialogem pro přihlášení. else if(dialogid == DIALOG_LOGIN) { new File:f,hash[65]; f = fopen(GetPath(playerid),io_read); //otevření souboru v režimu čtení fread(f,pPassw[playerid]); //přečtení hesla ze souboru fseek(f,2,seek_current); //přeskočení bílých znaků fread(f,pSalt[playerid]); //přečtení soli ze souboru fclose(f); //uzavření souboru SHA256_PassHash(inputtext,pSalt[playerid],hash,sizeof hash); //k zadanému heslu (inputtext) se přidá sůl (pSalt[playerid]) a výsledný hash se uloží do proměnné hash if(!strcmp(hash,pPassw[playerid])) //pokud je přihlašovací hash shodný s hashem ze souboru, jsou hesla identická { //správné heslo = úspěšné přihlášení } else { //nesprávné heslo = neúspěšné přihlášení } return 1; } _ Tím, že jsme k přihlašovacímu heslu přidali stejnou sůl jako při registraci hráče a celé ho poté zahashovali, nám musí vzniknout identický hash s hashem v souboru. Je-li tomu tak, uživatel zadal správné heslo, došlo k úspěšnému přihlášení. Pokud se hashe shodovat nebudou, bylo zadáno špatné heslo. Právě z tohoto důvodu je nutné zapisovat sůl do souboru společně s otiskem hesla. Závěr A to by bylo vše. Probrali jsme základní principy hashování, možnost SHA-256 hashování v pawn, ukázali si, jak vytvořit registrační soubor. Mimoto také můžeme vidět, že se dá obejít bez různých includů pro práci se soubory. Předem varuji, že kódy slouží pouze a jen jako ukázka. Cílem nebylo vytvořit registrační systém, jen poukázat na možnosti hashování. Pozdější komentáře typu: "Zkopíroval jsem to a nejde mi to!" budou pravděpodobně ignorovány nebo tězce zkritizovány ostatními. Samozřejmě, pokud jste našli jakoukoli chybu v tom, co jsem napsal, neváhejte mi zde zanechat vzkaz! Totéž platí i v případě, chcete-li se na něco zeptat nebo mi jen vyjádřit svůj názor. 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ý
  8. Zdravím rád bych se zeptal na otázku která podle mě zajímá více uživatelů této stránky. Jak jsem viděl už na více serverech to že pokud má hráč ve své složce ve které má GTA určitej soubor tak ho to kickne. Dejme tomu že budem pracovat ze souborem mod_sa Shrnutí: Pokud má hráč ve své složce s GTA Soubor mod_sa Hráče bude kicknut Jak se to dá nějakou jednoduchou cestou udělat ? Děkuji za vaše odpovědi.
  9. Rozhodl jsem se spustit a dokončit můj mód Re-Volt, dnes jsem odbugoval na co jsem měl čas, do módu přibyde postupně mnoho funkcí, které jsem tam kdysi plánoval :-) o co jde snad nemusím popisovat, hru ReVolt zná asi každý, jediné v čem se to od této hry zatím liší je, že toto je na způsob crashday a ne race. Příkazy: /setspawn = tímto příkazem si můžete určit spawn např u určitého vozidla /rules = pravidla /rtv = jako v csku, hlasování o jinou mapu /respawn = respawn vím, že popis není nic moc ale spěchám na bus no nic ip serveru je: samp.ixel.cz:3537 komentujte, kritizujte, pište co se má přidat do módu přátelé, díky zatím ahoj :-)
  10. Zdravím chtěl bych vám představit nový herní mod na kterém jsem začal pracovat před 2-3 dny Mod se nazývá 4Life Herní mod by měl být klasický druh boje o přežití s ostatními hráči a zombie. Je pouze na vás pokud se spojíte s nějakým hráčem a rozjede nějakou skupinku kde můžete sbírat itemy a poté je dávat ostatním hráčum za herní měnu.Pokud vás to ovšem omrzí bejt "podnikatel" v boji o přežití můžete se pustit do lovu zombie. Za zabití hráče dostáváte nějaké zkušenostní body a zaty poté získáváte určité levely a stěma příchazí i nějaké výhody. Vlastně jak to probíhá sbíráte ze země předměty které využijete mezi předměty najdete i zbraně které se vám budou určitě hodit. V tomto herním modu také najdete spousty postav které vám můžou nějak pomoct ve tvorbě vašeho vlastního příběhu ve hře. Informátor přeživších Toto je prostě zakladní postava která by měla hráče informovat o ději modu. Jak to probíhá a co by měli udělat jako první věc. Prostě taková tutorial postava. Dealer předmětu Toto je postava která hráčum bude prodávat předměty jako je např jídlo,pití nebo items potřebné k práci. Např:Udice nebo GPS Výkupce předmětu Tato postava bude zas pro změnu předměty od hráču vykupovat o hodně menší cena než Dealer je bude prodávat. Je pouze na hráčích pokud si prodají své předměty za cenu která bude v nabídce. Za prodej předmětu hráči dostanou měnu bitcoin. Tato měna nefunguje jak v realitě je to čistě pro pojmenovaní. Prodejce zbraňí Tato postava bude prodávat zbraňě za nehorázně vysoké ceny hráčum proto je lepší když hráči si zbraně najdou nebo givnou mezi sebou.Záleží ovšem jak sem už říkal pouze na hráčich jestli jdou sami za sebe nebo si najdou spojence. Správce skladu Tato postava bude mejt na starosti skladiště které bude spravovat. Hráči si u něj budou moc kupovat sloty do kterých budou ukládat zbraňě. První slot na zbran bude mejt hráč zdarma poté si bude moc dokoupit asi 10 slotu. Do kterých bude moc vkládat zbraňě čímž si je bude ukládat a bude mejt jistotu že mu je nikdo nevezme. V modu bude také několik zadavatelů úkolu kteří vám vlastně pomůžou získat XP a Level. Úkolů bude asi 30-50 u několika postav bude záležet na vás jak se rozhodnete je plnit. Systém potřeb je založen na čtyřech zakladních bodech. Hlad Žízeň Spánek WC Tyto potřeby budete muset udržovat aby jste zůstali nějakej ten čas při životě. Každá potřeba má jinej druh ubíraní vaše status baru. Pomalejší nebo rychlejší. Injures systém to bude vlastně věc která bude určovat vaše zranění. Udejme si pár příkazu pro pochopení. Pokud hráč střelí hráče pomocí brokovnice ze 3 metrů hráč umře. Pokud ho střelí třeba s 20 metru kulka poškodí minimalní zranění. Pokud to bude něco mezi hráč bude krvácet. Krvacení bude lze zastavit pomocí obvazu čímž si můžete zachránit život. Každá zbraň bude mejt svoji možnost poškození takže každé napadení od zbraňě bude jiné. Samozřejmě že se pokusím udělat realistické. Ještě jedna věc a to je HeadShot na 1 ránu. Popravdě o tomto dost uvažuji sám ještě nevím zda tam dám že hlava = smrt. Uvidíme nechme se překvapit. Předměty můžete normalně sbírat a používat. Např udice rybaření. Pokud budete mejt pilu můžete kácet stromy. A podobně Zombie budou vytvořené na principu že pokud vás uvidí nebo uslyší vystřel jdou po vás. Zombie by měli mejt asi 200 hp pokud to teda zvládnu udělat. Protože tvorby zombie se opravdu bojím. Ale udělám proto všechno. Budete moc pokládat nazem předměty jako je plnej pytel nebo možnost zakladaní ohně a pár věcech. Každá věc bude mejt určitou vyhodu po použití. Ovšem protože toto by bylo suché tak uvažuji otom že by si hráči mohli zpracovávat material a zato by dostali stavební material Ze kterým by si mohli stavět a postavit třeba ukryt. Jenže když vidím pár hraču na serverech bojím se že budou dělat bordel pokud jim dám volnou možnost stavění. Budu doufat.
  11. Zdravím, zase po dlouhé době jsem se rozhodl zde publikovat jeden ze svých návodů. Předem říkám, že se nejedná o nic, čemu by se měli věnovat začátečníci, takže pozdější dotazy typu "Co je to if? Co je to funkce? Co je to pawn?" budou pravděpodobně ignorovány. Řeč bude o variabilních parametrech funkce a práce s těmito parametry. Obtížnost: Obsah 1. Úvod - základní principy a pojmy 2. Konstantní vs. variabilní parametry; kombinované parametry 3. Datové typy / tagy variabilních parametrů 4. numargs, getarg, setarg 5. Pořadí parametrů Úvod Než se do toho pustíme, uveďme a vysvětleme si pojmy, se kterými budeme pracovat. Je-li řeč o parametru (nebo také argumentu), je tím myšlen parametr/argument funkce. Variabilním (proměnným) počtem parametrů myslíme takové parametry, jejichž počet při definici funkce není pevně daný. To znamená, že při volání funkce můžeme dosadit vždy různý počet parametrů. Konec řečí, jdeme si ukázat, jak na to. Konstantní vs. variabilní parametry Ve většině případů pracujete s funkcemi, které mají konstantní (neměnný) počet parametrů. Může jít například o následující, notoricky známou funkci: SendClientMessage(playerid,color,const message[]); _ Při jejím volání se očekává, že pokaždé dosadíme 3 parametry (ID hráče, barvu zprávy a text zprávy), takže volání může vypadat například následovně: SendClientMessage(0,-1,"You're noob."). Pak tu jsou ale funkce, které mají variabilní (proměnný) počet parametrů. Příkladem nám může být mnou definovaná funkce pro sčítání libovolného počtu celých čísel: MultiSum(...) { new num = numargs(),sum; for(new i;i<num;i++) sum += getarg(i); return sum; } _ Když budeme volat tuto funkci, můžeme dosadit kolik parametrů jen chceme. MultiSum(3,8), MultiSum(9,3,-1,5,3) i MultiSum(1,1,1,-5,1,4,2,3,5,8) bude fungovat a bude fungovat správně. Jistě vám už došlo, že variabilitu počtu nám zajišťují tři tečky. Oba výše uvedené postupy lze zkombinovat, tedy určit několik pevně daných parametrů a zbytek nechat jako variabilní. Ale pozor, v tomto případě musí být konstatní parametry na začátku a tři tečky vždy na konci! Funkce pro formátování textu nám budiž příkladem: format(output[], len, const format[], {Float,_}:...); _ První tři parametry uvádíme vždy, další se odvíjí od počtu použitých specifikátorů. (více o funkci format) Datové typy / tagy variabilních parametrů Uvedeme-li při definici funkce pouhé tři tečky, funkce bude očekávat jen celočíselné parametry a řetězce. Chceme-li dosazovat i argumenty jiných datových typů / tagů (Float, File, Text apod.), zápis bude vypadat následovně: Float:... //pouze pro desetinná čísla {Float,_}:... //pro celá čísla, řetězce, čísla s desetinnou čárkou a logické hodnoty {Float,bool}:... //pro desetinná čísla a logické hodnoty {Text,Text3D,Menu}:... //pro ID textdrawů, 3D labelů a menu _ A takto bychom mohli pokračovat dál. Princip spočívá v tom, že před tečky uvedeme příslušný tag, pokud je jich více, uzavřeme je do složených závorek { } a oddělujeme čárkou. Znak _ (podtržítko) nám zastupuje celá čísla, logické hodnoty a řetězce. numargs, getarg, setarg Varování: Tento způsob tvoření parametrů (zejména v případě polí a řetězců) je dosti pomalý. Jsou i rychlejší alternativy, pokud umíte pracovat s direktivou emit. Nyní se dostáváme k funkcím, které pracují s parametry, jejichž počet neznáme. Již jsme je použili nahoře u funkce MultiSum. numargs() Tato funkce vrací celkový počet argumentů funkce, tedy i pevně dané argumenty, ne jen ty variabilní, na to pozor. MultiSumWithException(exception,...) { new num = numargs(),sum; for(new i=1;i<num;i++) { if(getarg(i) == exception) continue; sum += getarg(i); } return sum; } MultiSumWithException(4,1,5,3,4); //numargs vrátí číslo 5 (4 variabilní a 1 konstantní parametr) _ getarg(arg,index=0) Funkce vracející hodnotu argumentu podle zvoleného ID (arg). Začíná se od nuly, takže první argument bude mít ID 0, druhý ID 1 atd. Parametr index nám poslouží v případě, že v naší funkci použijeme řetězec nebo pole. Pole/řetězec se totiž jeví jako jeden argument (arg) a abychom se dostali k jeho buňkám / k jednotlivým znakům řetězce, musíme využít indexu (index). I tyto indexy začínají nulou. PrintThirdNumberFromArrays(...) //při volání dosadím pole a řetězec { new num = numargs(); for(new i;i<num;i++) { printf("%i",getarg(i,2)); //výpis hodnoty třetí buňky pole / třetího znaku řetězce } } PrintThirdNumberFromArrays({7,4,5,3},"ahoj"); //numargs vrátí číslo 2 (2 parametry - 1 pole a 1 řetězec), funkce vytiskne 5 a 111 (111 je hodnota znaku 'o' v ASCII tabulce, pro výpis znaku použijte specifikátor %c namísto %i) _ setarg(arg,index=0,value) Setarg nastavuje parametru hodnotu. Funguje podobně jako getarg, za arg dosadíme pořadí argumentu, index využijeme v případě polí a řetězců (jinak doplňte nulu) a za value novou hodnotu daného argumentu. Příklady: setarg(0,.value=1); //nastaví 1. argumentu hodnotu 1 setarg(3,.value=Text3D:5); //nastaví 4. argumentu hodnotu ID 3D labelu 5 (pozor, argumenty musí tento tag podporvat, viz výš) _ Pořadí parametrů Tohle až tak s tématem nesouvisí, ale když už jsme se dostali tak daleko, uvedeme si i toto. V kódu výše jsme použili .value. Tato syntaxe nám slouží k tomu, abychom nemuseli dosazovat za index nulu, ta je totiž výchozí hodnotou tohoto parametru. Zkrátka jsem tím přeskočil defaultně určený argument. Toto přeskakování parametrů můžete vidět například zde. Když se nám zachce (ale podotýkám, že je to zbytečné), můžeme tím měnit i pořadí normálních argumentů: SendClientMessage(0,0xFF0000FF,"Ahoj!"); //parametry doplněné v typickém pořadí playerid, barva, zpráva SendClientMessage(.color=0xFF0000FF,.message="Ahoj!",.playerid=0); //tatáž funkce, akorát jsem změnil pořadí argumentů _ Hodí se ještě uvést, že u variabilních parametrů toto nelze dělat. A proč? No protože nemají u definice funkce svůj název/identifikátor (jsou tam jen ty tři tečky, popř. tagy, to nestačí). No a to máme vše. Doufám, že jste se něčemu přiučili, profesionálové mi to mohou zkontrolovat, grammarové hledat gramatické a pravopisné chyby, hnidopichové podotknout, že tenhle návod je i jinde (áno, překvapivě jsem ho taky psal já ) a ostatní mi vyjádřit svůj názor, budu rád. Ok, I'm out. Ověřený návod Tento návod prošel validací, a lze ho proto považovat za ověřený.
  12. Ahoj! Plno z Vás pamatuje na hosting xEl.cz, já jsem jeho zakladatel, taky plno z Vás ví, že hosting byl prodán novému majitelovi, ten ho přejmenoval tak xEl neexistoval. Tímto Vám chci sdělit jeho částečné obnovení, bohužel na jiné doméně (ixEl.cz). Co Vám dokážeme poskytnout: - ZDARMA - SA:MP server - 50 slotů (možno více) - 10 NPC - Vyhrazený výkon procesoru - Neomezenou RAM Při velkém zatížení hostitelského serveru máme právo výkon Vašeho serveru omezit. Na Administračním prostředí stále pracuji tzn. opravuji "bugy", přidávám nové věci, hraju si s designem apod. Web zatím nemáme, ale pokuď se mezi Vámí někdo najde a byl by ochotný něco navrhnout nebraním se tomu a jsem ochotný něco zaplatit. Omezil jsem maximální počet hostovaných serverů na 50, to nám dokáže zajistit všechny servery bez lagů. Registrovat se můžete na: http://samp.ixel.cz/apanel!
  13. THE STREET CODEX IP adresa: 93.91.250.147:27389 Facebook: /TheStreetCodex Rád bych vám představil multiplayer server pro hru GTA San Andreas. Celý mód je posazen do pouštní oblasti okolo A51. Následující informace jsou seřazeny chronologicky podle toho, jak na ně ve hře můžete narazit. Věřím, že nebude nouze o příjemnou atmosféru a dokážeme spolu vytvořit zajímavou komunitu plnou skvělých lidí zapálených do této hry. Pojďte se bavit! Brigády ✓ Lepení plakátů ✓ Odnos barelů ✓ Krmení hadů ✓ Rozvoz novin ✓ Doplňování muničního skladu ✓ Úklid města ✓ Sekání trávy ✓ Rybaření Potřeby ✓ Toaleta ✓ Hlad ✓ Energie ✓ Tekutiny ✓ Hygiena Autoškoly ✓ Řidičský průkaz A ✓ Řidičský průkaz B ✓ Řidičský průkaz C ✓ Řidičský průkaz D Práce ✓ Policista El Quebrados ✓ Policista Fort Carson ✓ Lékař El Quebrados ✓ Lékař Fort Carson ✓ Hasič ✓ Mechanik ✓ Popelář ✓ ChickenBoy ✓ Pošťák Podniky ✓ Obchod ✓ Elektroobchod ✓ Čerpací stanice ✓ Autoservis ✓ Veřejné WC ✓ Zbrojnice Další... ✓ Občanský průkaz ✓ Zbrojní průkaz ✓ Inventář ✓ Banky + bankomaty ✓ Vehicle system ✓ HP system ✓ Online radio Připravujeme ✓ Střelnice ✓ House system ✓ VIP system ✓ Event system ✓ Web Nejnovější informace jsou zveřejňovány na naší FB stránce! Na závěr bych velice rád zmínil všechny, kteří se jakýmkoliv způsobem podíleli či stále podílí na vývoji TSC. Všem vám patří obrovské DÍKY. HighPrint, nehehe, [FoX]Majci[enR_, Michellee, Vítek, Lukasz, KarToon, Mauno, Winz Pagganiny
  14. Ahoj hledam sponzora pro start noveho gaming portalu. Tento portal bude obsahovat spise counter strike servery typu DD2 , Furien , Jail , Deathrun Co hledam ? - Sponzora ktery dokaze zajistit Counter-strike servery pro chod portalu. - Webhosting - zajisten - Domena - zajistena - Admin Team - zajisten - Web - hotov - Servery - pripraven DD2 , Deathrun (ceka se na hosting ) - TeamSpeak3 server - zajisten Jelikoz sam tvorim Counter-Strike servery na zakazky tak jsem schopen udelat velmi kvalitni servery , na kterych hraci zazijou plno zabavy. Moje webovky s tvorbou na Wextra.eu Co nabizim ? - VIP reklamu v hlavicce webu , na kazdem serveru reklamu v chatu kazdych 10 minut , po zavedeni VIP systemu na serverech nabizim 25% provizi z kazde objednavky , + zaslu i vyuctovani. Jen pro vazne zajemce PM
  15. Ahoj chci vás pozvat na nový hosting extreme-craft zabývá se hrou Gta samp mame zatím jedno vps Parametry: 2x CPU 2GB Ram 40GB disk link http://extreme-craft.eu/apanel/ fb https://www.facebook.com/extremesampfree?fref=ts používáme admin panel od lacess
  16. Ahoj nevím si rady chci když hráč není rcon admin aby mu to napsalo že není no tady to máte public OnPlayerCommandText(playerid, cmdtext[]) { if(IsPlayerAdmin(playerid)) if(!strcmp(cmdtext, "/adm", true)) { ShowPlayerDialog(playerid, 5, DIALOG_STYLE_MSGBOX, "{92e9ff}Admin Příkazy","{FF0000}Admin příkazy pouze pro rcon: {008000}/godmode", "Zavrit", ""); return 1; } else { ShowPlayerDialog(playerid, 5, DIALOG_STYLE_MSGBOX, "{92e9ff}Admin Příkazy","{FF0000}Nejsi Rcon Admin", "Zavrit", ""); return 1; }
  17. Čágo lidičky, chtěl jsem si udělat na serveru že když napíše ňáký příkaz na serveru tak mu to napíše Neznámý příkaz! ale mě to pořád ukazuje SERVER: Unknown command! nevíte v čem je chyba ? díky za pomoc... Kod: public OnPlayerCommandText(playerid, cmdtext[]) { if(!strcmp(cmdtext, "/Boost", true)) { if(EnableBoast[playerid]) { EnableBoast[playerid] = 0; SendClientMessage(playerid, 0x924161FF, "[ ! ] Boost Deaktivován."); } else { EnableBoast[playerid] = 1; SendClientMessage(playerid, 0x924161FF, "[ ! ] Boost Aktivován."); } return 1; } //-------------------------------------------------------------------------- return SendClientMessage(playerid, -1, "{FF0000}Neznámý příkaz!"); }
  18. ERRORY : Zdravím ! Mám tu drobné errory no už sedím pri nich okolo 3 hod. a na nič som neprišiel. errory. Riadky : Warningy ani nepotrebujem aby ste opravili,hlavne ERRORY,Ďakujem,PS : Som začiatočník.
  19. MajkX

    pomoc [Hledam] Samp Bot

    Ahojte pawneri potrebujem od vas mensiu pomoc. Hladam nejakeho SAMP BOTa , konkretnejsie progam , ktory by mi ingame obcas alebo aj vkuse hybal hracov , v urcitych intervaloch. Jedna sa svojim sposobom o nejake AntiAFK. Nasiel som uz vela scriptov , ktore vsak propagovali najme rusaci , a nebol som si nimy isty , preto pisem vam tu, aby ste mi poslali nieco co mate overene Je to na verziu 0.3z DAKUJEM
  20. Původně jsem to v plánu neměl, ale rozhodl jsem se, že tu trochu objasním, jak funguje ternární operátor ? : Obtížnost: Jak to funguje Nejprve trochu nezbytné teorie, tento operátor se nazývá ternární, protože, jako jediný v pawn, pracuje se třemi operandy. první operand ? druhý operand : třetí operand _ Operandem nazýváme výraz, se kterým operátor pracuje. Tohle by myslím stačilo, teď se podívejme na to, jak funguje. logický výraz ? pravda : nepravda _ Operátor nejprve vyhodnotí logický výraz, pokud je tento výraz pravdivý (true), vrátí to, co je za otazníkem. Pokud je výraz nepravdivý (false), tak vrátí to, co je za dvojtečkou. Uvedu příklad: #define CERVENA 0xFF0000FF #define MODRA 0x0000FF00 new color; color = GetPlayerTeam(playerid) == 1 ? CERVENA : MODRA; Nejprve dojde k vyhodnocení logického výrazu, kterým je GetPlayerTeam(playerid) == 1. Pokud hráčův tým je skutečně tým s ID 1, tak se do proměnné color uloží hodnota za otazníkem, tedy CERVENA. Pokud ovšem má hráčův tým jiné ID, uloží se do proměnné hodnota za dvojtečkou, tedy MODRA. Využití v praxi Ne všechno se dá pochopit z teorie, proto je lepší to ukázat na několika příkladech z praxe. Hráčův tým Vezměme si ještě jednou příklad seshora a trochu jej upravme. Budeme chtít, aby se proměnné color nastavila CERVENA, pokud bude hráčův tým mít ID v rozmezí od 1 do 10. Pokud ne, nastaví se proměnné hodnota MODRA. Jak to lze řešit přes podmínky: if(GetPlayerTeam(playerid) >= 1 && GetPlayerTeam(playerid) <= 10) color = CERVENA; else color = MODRA; _ Jak my to vyřešíme šikovně přes ternární operátor: color = GetPlayerTeam(playerid) >= 1 && GetPlayerTeam(playerid) <= 10 ? CERVENA : MODRA; GetPlayerTeam(playerid) >= 1 && GetPlayerTeam(playerid) - logický výraz CERVENA - hodnota, která se uloží, když je logický výraz pravdivý/true MODRA - hodnota, která se uloží, když je logický výraz nepravdivý/false Pokud se v tom pomalu ztrácíte a přijde vám to nepřehledné, můžete si to ozávorkovat: color = (GetPlayerTeam(playerid) >= 1 && GetPlayerTeam(playerid) <= 10) ? (CERVENA) : (MODRA); _ Else if? Někteří z vás si možná řeknou "A co když potřebuji další podmínku, tedy else if?!" I tohle je samozřejmě pomocí ternárního operátoru možné, ale předem vás varuji, že se v tom možná začnete ztrácet. Zadání je následující: pokud má hráčův tým ID 1, nastaví se CERVENA, pokud má ID 2, nastaví se MODRA, pokud má jiné ID, nastaví se ZELENA. color = (GetPlayerTeam(playerid) == 1) ? (CERVENA) : ((GetPlayerTeam(playerid) == 2) ? (MODRA) : (ZELENA)); Za dvojtečku jsme přidali další ternární operátor. Pokud se ID rovná jedné, není problém, nastaví se CERVENA. Pokud se jedné nerovná, přeskočí za dvojtečku, zde narazí na další ternární operátor. Vyhodnotí další logický výraz. Pokud se ID rovná dvěma, nastaví se hodnota MODRA. Pokud to nebude ani jedna a ani dva, tak je to logicky jiné ID => nastaví se ZELENA. Šlo by to takhle větvit i dál, vždy by se za dvojtečku přidal další ternární operátor, ale při větším počtu bude lepší využít klasických podmínek, popř. switche. Příklad na závěr A dáme si ještě příklad na závěr. Skloňování v češtině programátorům leckdy dost komplikuje práci, výsledek výpisu hlášek se nám mnohdy nelíbí, například tady: new pocetHracu = 3,str[145]; format(str,sizeof str,"%i hráčů na serveru.",pocetHracu); SendClientMessageToAll(-1,str); _ Server nám vypíše tohle: 3 hráčů na serveru. _ Ale my chceme, aby vypisoval: 1 hráč na serveru. 2/3/4 hráči na serveru. 5/6/atd. hráčů na serveru. _ Zkrátka aby to vypsalo správný tvar slova hráč podle počtu. Lze to řešit přes podmínky nebo switch: switch(pocetHracu) { case 1: format(str,sizeof str,"%i hráč na serveru.",pocetHracu); case 2,3,4: format(str,sizeof str,"%i hráči na serveru.",pocetHracu); default: format(str,sizeof str,"%i hráčů na serveru.",pocetHracu); } _ Ale my si to zkrátíme na jeden řádek pomocí ternárního operátoru. format(str, sizeof str,"%i %s na serveru.",pocetHracu,(pocetHracu == 1) ? ("hráč") : ((pocetHracu < 5) ? ("hráči") : ("hráčů"))); Za specifikátor %s se dosadí jeden z tvarů slova hráč. Je to také krásná ukázka toho, že ternární operátor lze použít i v parametru funkce. Ještě jedno upozornění na závěr, když má tento operátor vracet řetězec, tak jej uzavřete do závorek vždy! Nevím, zda problém stále trvá, ale dříve byly problémy s tím, že když to nebylo v závorkách, pawno mohlo spadnout. Edit: Potvrzeno, problém stále trvá, pokud řetězec do závorek neuzavřete, kompilátor přestane pracovat. Tímto ukončuji návod, doufám, že si z něj někteří něco odnesou a že vám tento operátor třeba v něčem ulehčí nebo pomůže. Pokud jste narazili na nějakou chybu nebo se chcete na něco zeptat nebo se jen vyjádřit, pište. Ověřený návod Tento návod prošel validací, a lze ho proto považovat za ověřený.
  21. Čau prosím pomožte mi nefunguje mi include YSI zkompiluju a hlásí mi to chyby zde je kód: http://pastebin.com/aAaiCfMq a zde je výpis z kompilace: C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(1530) : error 025: function heading differs from prototype C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(1575) : warning 235: public function lacks forward declaration (symbol "OnEnterExitModShop") C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(1620) : error 025: function heading differs from prototype C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(1665) : error 025: function heading differs from prototype C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(1711) : warning 235: public function lacks forward declaration (symbol "OnVehicleDamageStatusUpdate") C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(1755) : warning 235: public function lacks forward declaration (symbol "OnUnoccupiedVehicleUpdate") C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(1983) : warning 235: public function lacks forward declaration (symbol "OnRconLoginAttempt") C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(2028) : warning 235: public function lacks forward declaration (symbol "OnPlayerUpdate") C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(2071) : warning 235: public function lacks forward declaration (symbol "OnPlayerStreamIn") C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(2115) : warning 235: public function lacks forward declaration (symbol "OnPlayerStreamOut") C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(2159) : warning 235: public function lacks forward declaration (symbol "OnVehicleStreamIn") C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(2203) : warning 235: public function lacks forward declaration (symbol "OnVehicleStreamOut") C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(2247) : warning 235: public function lacks forward declaration (symbol "OnDialogResponse") C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(2294) : warning 235: public function lacks forward declaration (symbol "OnPlayerClickPlayer") C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(2339) : warning 235: public function lacks forward declaration (symbol "OnPlayerTakeDamage") C:\Users\Dominik Rozporka\Desktop\Programy\Pawno\Pawno\include\YSI\y_hooks/impl.inc(2386) : warning 235: public function lacks forward declaration (symbol "OnPlayerGiveDamage") C:\Users\Dominik Rozporka\Desktop\EMenu+adminlevel.pwn(63) : error 001: expected token: ";", but found "public" C:\Users\Dominik Rozporka\Desktop\EMenu+adminlevel.pwn(65) : error 017: undefined symbol "UserPath" C:\Users\Dominik Rozporka\Desktop\EMenu+adminlevel.pwn(67) : error 017: undefined symbol "UserPath" C:\Users\Dominik Rozporka\Desktop\EMenu+adminlevel.pwn(77) : error 076: syntax error in the expression, or invalid function call C:\Users\Dominik Rozporka\Desktop\EMenu+adminlevel.pwn(79) : error 017: undefined symbol "ShowPlayerDialog" C:\Users\Dominik Rozporka\Desktop\EMenu+adminlevel.pwn(97) : error 017: undefined symbol "PlayerInfo" C:\Users\Dominik Rozporka\Desktop\EMenu+adminlevel.pwn(97) : warning 215: expression has no effect C:\Users\Dominik Rozporka\Desktop\EMenu+adminlevel.pwn(97) : error 001: expected token: ";", but found "]" C:\Users\Dominik Rozporka\Desktop\EMenu+adminlevel.pwn(97) : error 029: invalid expression, assumed zero C:\Users\Dominik Rozporka\Desktop\EMenu+adminlevel.pwn(97) : fatal error 107: too many error messages on one line Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 12 Errors. pomožte mi prosím
  22. Zdravím sliboval jsem RolePlay ale nějak jsem se necejtil... K věci: San Fierro Life 1.0 Zdravím představuji vám San Fierro Life. Oco jde ? Jde o herní mod který se už z názvu odehrává jen v San Fierru. Server by měl napodobit Realitu ale zaměřen jako mody TIPU: Street Life Realná Země Co můžete čekat v modu ? Pro všechny: -Register System - Registrace a Přihlašení -House System - Možnost Koupení a Prodání domu -Vehicle System - Možnost Koupení a Prodaní Domu + Ovládání -Povolaní - Možnost zaměstnat se a vydělávat peníze -Akce - Určitě zajímavé akce pořádané administrátory -Firmy - Každý hráč si Může koupit,Prodat a vydělávat -Obchody - V obchodě lze nakupovat různé věci -Banka - Banka vkládaní a vybíraní penez + Dražba přes banku Pro hráče: -Inventář - Možnost inventáře papání atd... -AutoŠkola - Možnosti dokončení autoškoly -Zbrojní Průkaz - Zakoupení Zbrojního průkazu -Dražba - Dražení zbraní (Pomocí banky) -Nákup Skinů - Nakupovaní Skinu -Nákup Zbraní - Nakupovaní Zbrani -Nákup Alkoholu - Nakupovaní Alkoholu -VIP - Možnost VIP pro Hráče -Vykrádaní - Vykrádaní baru a ostatního Zaujalo tě to aspoň trošku ? Přijd knám : IP: 109.73.208.219:8467 Děkuji a Přiji pěkné vánoce doufám že vás to zaujalo více než ponožky pod stromečkem..
  23. Ahoj, .. přejdu rovnou k věci, je to tak dva týdny, co jsem si změnil angličtinu na češtinu (u Windows 7) Vše je v pořádku, vše funguje jak má, až na jednu věc, kterou je Pawno a SAMP, v techhto dvouch programech mi nejdou háčky a čárky, nevíte někdo prosím čim by to mohl být? Přikládám screen z Pawna. Jo ještě, ty háčky.. když třeba v pawnu dám háčky, tak se mi zobrazujou tak jako na obrázku, ale ostatním se pak na serveru zobrují jako háčky Na obrázku je napsáno "příliš žluťoučký koníček" - všem děkuji předem za pomoc.
  24. Reálný Život 5.5 • Po více jak 2 letech přichází zcela nová verze jednoho z nejstarších SAMP serverů na CZ/SK scéně! • Spuštění: Dnes, 14.12. 2014, ve 14 hodin! • Autoři: mxco a XBlade (Freewall se do vývoje nového módu nezapojil) • Obsah nejdůležitějších novinek a screenů naleznete ZDE • Čeká na vás zcela nový systém nemovitostí (ať už domů nebo výdělečných komodit), nový systém domů, reforma povolání a mnoho dalšího! • Přijďte se podívat! Launch trailer První vydaný trailer na 5.5
  25. NovisS

    pomoc Help audio stream

    čaute potrebujem pomoc hladam plugin na Audio Stream cez link na pesnicku na stranke nasiel som jedno na Web Radiu cez text ale islo by to ak by si bol len v aute .Hladam taky plugin ktory by siel pre cely server a cez link zo stranky ... DIk za POMOC
×
×
  • Create New...