Jump to content

vEnd

Hlavní moderátor
  • Příspěvků

    772
  • Registrován

  • Aktivní

  • Vítězných dnů

    60

Everything posted by vEnd

  1. vEnd

    pomoc Prosím o pomoc

    Tenhle (klikl) plugin si nahraj na server, do logu ti přesně napíše, co ti tam chybí. Jak říkal Lukasz, pravděpodobně ti chybí nějaký plugin, tohle ti přiblíží, o co konkrétně jde.
  2. Víš, co je sranda? Projížděl jsem si tvé příspěvky, co jsi psal do témat o pomoc, a zjistil, že jsi zatím nikomu nepomohl. Jediné, co sem píšeš, jsou řeči o tom, ať to pochopí, že skládá scripty apod. Já neříkám, že to není pravda, ale připadne mi, že je to z tvé strany akorát spam, že ani nevíš, jak jim pomoct. Ti, co tohle píšou ostatním, alespoň vědí, o co go, u tebe si tím nejsem jistý. Tak si to laskavě odpusť. K autorovi: PlayerInfo[playerid][pMoney] = DOF2_SetInt(file, "Peniaze", 20000); PlayerInfo[playerid][pAdmin] = DOF2_SetInt(file, "AdminLevel", 0); PlayerInfo[playerid][pKills] = DOF2_SetInt(file, "Zabitia", 0); PlayerInfo[playerid][pDeaths] = DOF2_SetInt(file, "Umrtia", 0); PlayerInfo[playerid][pWandlvl] = DOF2_SetInt(file, "WantedLevel", 0); PlayerInfo[playerid][pSkin] = DOF2_SetInt(file, "Skin", 0); PlayerInfo[playerid][pKredit] = DOF2_SetInt(file, "Kredit", 0); PlayerInfo[playerid][pBank] = DOF2_SetInt(file, "Banka", 0); PlayerInfo[playerid][pVIP] = DOF2_SetInt(file, "Premium", 1); PlayerInfo[playerid][pLevel] = DOF2_SetInt(file, "Level", 0); PlayerInfo[playerid][pBan] = DOF2_SetInt(file, "Ban", 0); PlayerInfo[playerid][pBanEx] = DOF2_SetInt(file, "BanEx", 0); PlayerInfo[playerid][pKick] = DOF2_SetInt(file, "Kick", 0); Když je tam Set, tak to znamená, že to něco nastavuje, nemůžeš to tedy ukládat do proměnných. Nevím, zda tohle bude ten problém, který ti způsobuje pád, ale určitě ti to takhle nebude fungovat správně. Zde (klik) přikládám návod k práci s DOF2.
  3. V obou případech nahraď tohle: new penize, fee, vysledek; Tímhle: new penize, Float:fee, Float:vysledek; Do fee a vysledek totiž ukládáš číslo s desetinnou čárkou. A u toho pBankMoney budeš muset přidat zaokrouhlení: Info[playerid][pBankMoney] += floatround(vysledek);
  4. Nevím přesně, co chceš, napsal jsi to dost zmatečně, ale jestli chápu správně, tak chceš, aby ses mohl na svůj nick přihlásit jen pod svou IP adresou? Pokud ano, tak v OnPlayerConnect zjistíš IP adresu hráče, který se připojil (k tomu slouží funkce GetPlayerIp), a pomocí funkce strcmp ji porovnáš s vlastní IP adresou. Když budou IP adresy identické, jsi to ty, když ne, je to někdo jiný.
  5. vEnd

    pomoc S Y_INI na DINI

    Většina Y_lessových includů je propojena navzájem, dokud budeš používat jakoukoli z nich, nemyslím si, že ta velikost výrazně klesne.
  6. 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ý.
  7. 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.
  8. Jistě, je možné používat i 1 jako true a 0 jako false, ALE pak bys neměl u té deklarace dávat ten bool:, jinak by ti to házelo varování. (Ono v jiných jazycích se používají bool proměnné, protože takové proměnné zabírají v paměti jenom jeden bajt, jenže v Pawn je to prakticky jedno, tam má každá proměnná, nehledě na typ, 4 bajty.) A díky.
  9. 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ý.
  10. Chtěl jsi malý tutoriál, ten ti tu poskytl Lukasz, Quiter ti dokonce poskytl podrobný. Běž se podívat na sekci návody, nastuduj cykly, volání funkcí, pole a zkus si pak přečíst Quiterův příspěvek ještě jednou. Pochopíš ho.
  11. vEnd

    Nefunkční pickup

    Ne. Nedramatizuj to. Grand Larceny je výchozí mód, který máš v SA:MP balíčku ve složce gamemodes, v konfigu si ho nastav, přesný název je grandlarc.
  12. vEnd

    Nefunkční pickup

    Zkus to na Grand Larceny, myslím si, že to bude módem. Vycházím z toho, že jsi říkal, že to není ostatními FS.
  13. Ať shoří v pekle. Tak o tomhle by se vážně daly vést debaty. Když tu rep+ funguje tak, že se dává za ocenění něčí práce a také za souhlas s daným příspěvkem, proč by to tak nemělo být i u rep-? Samozřejmě, když ti vymínusoval všechny příspěvky z pomsty, tak to je keketina jak mraky. EDIT: Až, resp. kdyby se změnil systém reputací a rozlišovalo se, kdy člověk oceňuje něčí práci/návod a kdy sympatizuje s daným příspěvkem, pak by mělo smysl zavést tu negativní reputaci. Do té doby ta reputace stejně nic hodnotného neukazuje. Jak tu říkal někdo výš, když budu v každém příspěvku kritické sarkastické hovado, budu do měsíce na stovce.
  14. Stěžoval si ten, co se dostal k číslu -6 v jednom tématu?
  15. vEnd

    info Fórum

    To mi přijde strašně komplikované a nakonec se na to bude dohlížet asi jako na správnou formu témat s pomocí. Ale zkusit se to může, já jsem taky pro + i -. Btw, výsledky ankety to ukázaly jasně, ne? Kde jsou?
  16. Namísto tohoto: vehicleid = GetPlayerVehicleID(playerid); Použij funkci GetVehicleModel: vehicleid = GetVehicleModel(GetPlayerVehicleID(playerid)); Funkce GetPlayerVehicleID zjišťuje ID vozidla, GetVehicleModel ti zjistí ID modelu. To je to, co potřebuješ.
  17. Nevím, co tu řešíte, Bloodman to napsal jasně, kdo by si to chtěl zkusit. Nikdo nikoho nenutí to používat. Možnost je to imho zajímavá pro ty, kdo se orientují v OOP a vývoj v pawn jim přijde časově náročnější. Já bych do toho šel. Btw, líbí se mi, jak je u možnosti "Ja neumim ani pawn a ne jeste D" stále stav nula.
  18. Co se týče formy návodu, tak je to sepsané dobře (což zejména moderátoři dokáží ocenit ), ale obsah návodu za moc nestojí. Když to píšeš pro nováčky (1 hvězda z pěti), musíš to vysvětlovat krok po kroku a každou novou myšlenku, ale stejně jako u jiných, tak i u tebe mám pocit, že bys sám těch návodů pár potřeboval. Prvně, zcmd není plugin, nýbrž include. To je soubor s kódem, který pomocí direktivy include připojuješ k jiným souborům. PlayerName je funkce, která vrací hráčův nick, a to tak, že jej zjistí pomocí funkce GetPlayerName, uloží do řetězce name a vrátí pomocí slova return (mimochodem, velikost řetězce name by měla být správně 25, maximální počet znaků v nicku je totiž 24). A takhle bys ve vysvětlování pokračoval dál a dál, až bys došel ke konci. Chápeš, co tím chci říct? Pak by ti to lidé kladně ohodnotili a možná by ti to i moderátoři označili jako "ověřeno a schváleno". Teď to ale vypadá spíš tak, že to zapadne mezi ostatní návody, které jsou na tom podobně.
  19. vEnd

    návod 3DTextLabel

    Další ukázka toho, jak se to nemá dělat. Podívej, návod by měl uživateli říct, pro koho je určen (začátečník, středně pokročilý, pokročilý), o čem bude a jak s danou věci pracovat. Tys splnil jen to druhé - o čem to bude. Nic jsi pořádně nevysvětlil, parametry funkce jsi ani nepřeložil, vlastně je jen zkopíroval. Promiň, ale měl by sis do začátku přečíst pravidla psaní návodů a dost na tom zapracovat.
  20. Tohle je ten konkrétní úsek. To znamená, že jestli chceš tři slova, pak by to mohlo vypadat následovně: "sss "
  21. Tak do začátku, pánové, už tahle podmínka je blbě: if(strcmp(cmd, "chat", true)) strcmp při shodě řetězců vrací nulu, správná podmínka je tedy: if(strcmp(cmd, "chat", true) == 0) popř. if(!strcmp(cmd, "chat", true)) Co se týče rozdělování, přečti si tohle.
  22. Podchytit pravidly je jedna věc, dohlížet na jejich dodržování druhá. Nevěřím, že moderátorský tým na to bude dohlížet. Dopadne to podobně jako s pravidly pro zakládání help témat (klik) - ukaž mi jedneho, který to dodržuje, resp. ukaž mi jedneho moderátora, který dohlíží na dodržování. Navíc pochybuju o tom, že moderátoři mohou ovlivňovat reputaci. Myšlenka o zavedení odebrání reputace dobrá, ale pokud se to dobře nepřipraví a nepromyslí, skončí to do měsíce.
  23. Však on to tam násobí tou 180 za účelem získání (téměř) reálných hodnot.
×
×
  • Create New...