Jump to content

Search the Community

Showing results for tags 'návod'.

  • Search By Tags

    Oddělujte čárkami
  • Search By Author

Content Type


Fórum

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

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Web


Facebook


Jabber


Skype


Steam


Twitter


Github


Pastebin

  1. Mivčo

    návod Ako vytvorit TDM Mod

    Zdravim Chcem ukazat navod novačikom ako si možu založit TDM mod Je to velmi lahke Zakladom Modu musí byt toto: #include <a_samp> Musí tam byt Team a farby #define Policia 1 #define Terrorista 2 #define PoliceCOLOR 0x00FF00AA #define TerrorCOLOR 0xFF00FFAA #define Farba_Cervena 0xFF0011FF Nemožte zabudnut na premenu na Body a Peniaze enum pInfo //pInfo Premena { pBody, pPeniaze, } Newy: new PlayerData[MAX_PLAYERS][pInfo]; new Team[MAX_PLAYERS]; new prachy[MAX_PLAYERS]; V publicu OnGameModeInit musite mat nazov Modu a obleky SetGameModeText("TDM"); // Nazov Modu AddPlayerClass(265,2431.3733,-1679.4271,13.7673,0,24,100,0,0,0,0); // Oblek Policajta AddPlayerClass(28,2167.8926,-1670.0753,15.0805,0,24,100,0,0,0,0); // Oblek Terroristu Do OnPlayerRequestClass(playerid, classid) dáte toto aby ste si mohli vyberat teamy switch(classid) { case 0: // Policajt { Team[playerid] = Policia; // Vybrat si Team za Policajta { SetPlayerColor(playerid,PoliceCOLOR); //Farba Policajta } } case 1: // Terrorista { Team[playerid] = Terrorista; // Vybrat si Team za Terroristu { SetPlayerColor(playerid, TerrorCOLOR); //Farba Terroristu } } } } Do public OnPlayerDeath(playerid, killerid, reason) dáte toto aby ste dostavaly Body a Penaze a tak if(Team[killerid] == Team[playerid]) { SendClientMessage(killerid,Farba_Cervena, "Zabil si spoluhrača odratame ti $1000 a 4 Body."); //Sprava o Zabití PlayerData[killerid][pPeniaze] -= 1000; SetPlayerMoney(killerid, PlayerData[killerid][pPeniaze]); SetPlayerScore(killerid, PlayerData[killerid][pBody] - 4); } else if(Team[killerid] != Team[playerid]) { PlayerData[playerid][pPeniaze] -=100; PlayerData[killerid][pPeniaze] +=100; SetPlayerMoney(playerid, PlayerData[playerid][pPeniaze]); SetPlayerMoney(killerid, PlayerData[killerid][pPeniaze]); SetPlayerScore(playerid, PlayerData[playerid][pBody]-1); SetPlayerScore(killerid, PlayerData[killerid][pBody]+1); } SendDeathMessage(killerid, playerid, reason); return 1; } Potom pridate do GM alebo do FS Stock lebo inak vam bude ukazovat errory: Stock Dakujem za Moj navod snad niekomu pomože JE to moj Prvý Tutorial aj budu problemy píšte Dakujem
  2. Ahoj,zdravím toto je můj druhý Tutoriál , včera sem založil první a myslím že se vám líbilo tk sem se rozhodl udělat podobně... --Obsah-- 1. Kde takovou funkci vytváříme ? 2. Vytváříme příkaz 3. SendClientMessage 4. Hexadecimální čísla __________________________________________________________________________________________________________________________________________________________________________________________________________________________ 1. Kde takovou funkci vytváříme? Většinou pod: public OnPlayerCommandText(playerid, cmdtext[]) 2. Vytváříme příkaz Po spuštění pawna a vytvoření nové šablony je po tímto publicem nápověda : if (strcmp("/mycommand", cmdtext, true, 10) == 0) { // Do something here return 1; } Vývojáři nám ulehčily práci a připravili základ pro příkaz. Takže vytvoříme si příkaz například /ahoj, náš public OnPlayerCommandText by měl vypadat takto : Příkaz máme vytvořený, teď si uděláme tělo příkazu, napíšeme /ahoj a poté se nám do chatu odešle zpráva Taky tě zdravím. Takže po této úpravě by měl public vypadat takto : Vysvětlím vám funkci SendClientMessage 3.SendClientMessage SendClientMessage(playerid,0xFFFFFFFF,"Taky tě zdravím!"); SendClientMessage - Funkce odesílající do chatu zprávu pro jednoho hráče ( - Začátek závorky značící začátek funkce SendClientMessage playerid - Hráč, kterému zprávu odešleme, ostatní ji neuvidí. Playerid je hráč zadávající příkaz. 0xFFFFFFFF - Hexadecimální kod pro barvu viz. níže "Taky te zdravím!" - Naše zpráva, každá zpráva musí mít na začátku i na konce uvozovky " " ) - Konec závorky značící konec funkce SendClientMessage ; - Středník, velmi důležitý na ukončení požadavku, píše se snad všude až na několik vyjímek Teď už stačí jen náš script zkompilovat a vložit do modu a zkusit 4. Hexadecimální čísla Hexadecimální čísla jsou v 16-tkové soustavě a decimální v 10-tkové Ukážeme si jak převést naši barvu do pawno kodu - tedy hexadecimálního čísla. Nejdříve si vybereme barvu, otevřeme si malování - součást každého windowsu a klikneme na upravit barvy nebo vlastní barva. Navolíme si barvu a koukneme se na čísla RGB - tedy red green blue (červená, zelená, modrá) Jak vidíte červená je 205, zelená 116 a modrá 50. Tyto tři čísla potřebujeme převést do hexadecimální hodnoty (tedy 16tkové soustavy) Spustíme si kalkulačku (Start-Spustit...-calc) a nastavíme si programátorskou kalkulačku (Zobrazit - Programátorská) Ujistíme se, že máme zaškrtnutou decimální hodnotu na kalkulačce (Dec). Nyní napíšeme první číslo - tedy 205 a poté označíme hexadecimální hodnotu (Hex) a výsledné číslo si někam zapíšeme. Opět změníme na decimální (Dec) a zapíšeme druhé číslo - 116 a opět překlikneme na hexadecimální (Hex) a zapíšeme číslo. To samé i se třetím a nakonec by jsme měli dostat těchto 6 čísel : CD 74 32 Teď je jen převedeme do pawna, takže před ně zapíšeme 0x a nakonec FF, takže výsledek bude : 0xCD7432FF Místo hodnoty FF se dají psát i jiné, ale to je složitější, toto je základ. No a nyní ve funkci SendClientMessage zapíšeme místo mého 0xFFFFFFFF (tj bílá) tu vaši, takže funkce by měla vypadat takto : SendClientMessage(playerid, 0xCD7432FF,"Taky tě zdravím!"); VHODNÉ PRO NOVÁČKY !! - Hodnodte prosím ...
  3. Tak jelikoz jsem tu byl jenom na helpy tak ted bych zase helpnul nekomu ja. Toto: VIDEO je navod jak nainstalovat hry a programky do ios bez JAILBREAKU! Tak jesli to nekomu helpne at napise ze mu to pomohlo budu rad.
  4. Albus Brambůrek

    návod [TuT] Map Icony

    Hoj, vítám vás u mého druhého tutoriálu v tomto tutoriálu se dozvíte jak vytvářet MapIcony a ukážeme si typy které existují Jako první věc si ukážeme funkci a popíšeme její argumenty SetPlayerMapIcon(playerid, iconid, Float:x, Float:y, Float:z, markertype, color, style) iconid = ID Icony něco jako u dialogů(U každé ikonu musí být jiné) Float:x,Float:y,Float:z = Souřadnice ikony markertype = Typ ikony ( viz. níže) color = Barva ikonu (Jde jen použít v ikony typu 0) style = styl ikony (viz. níže) Typy ikon (markertype): Všechny jsou zde : http://wiki.sa-mp.com/wiki/MapIcons Styly ikony (style):
  5. Zde jsou uvítací zprávy které se ukážou všem (jak rze 7.4 napr: Hrac xxx prisel na server.) Abychom mohli udělat Určitého hráče musíme si zjistit jeho jméno a pak do zprávy dáme jako %s = hráč public OnPlayerConnect(playerid) { new pname[MAX_PLAYER_NAME], string[22 + MAX_PLAYER_NAME]; //potřeba při zjištění hráčova jména GetPlayerName(playerid, pname, sizeof(pname)); //potřeba při zjištění hráčova jména format(string, sizeof(string), "Hrac %s se pripojil na server!", pname); //Zmen podle sveho //zpráva pro hráče SendClientMessageToAll(0x009669AA, string); //barva je zelena //Barva textu + zpráva se odešle všem return 1; } Poté si uděláme zprávu když se hráč odpojí , spadne mu hra nebo dostane kick/ban. Opět si musíme zjistit méno hráče viz kód nahoře. Musíme přidat case 0,1,2 public OnPlayerDisconnect(playerid, reason) { new pname[MAX_PLAYER_NAME], string[39 + MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname)); switch(reason) { case 0: format(string, sizeof(string), "Hraci %s spadla hra.", pname); //Zmen podle sveho //Hráči spadla hra case 1: format(string, sizeof(string), "Hrac %s se odpojil ze serveru!", pname); //Zmen podle sveho //Hráč se odpojil case 2: format(string, sizeof(string), "Hrac %s byl nucen odejit KICK/BAN.", pname); //Zmen podle sveho //Hráč byl vyhozen nebo dostal ban } SendClientMessageToAll(0x009669AA, string); //barva je nastavená na tmavě zelenou Celý pawno kód je zde: public OnPlayerConnect(playerid) { new pname[MAX_PLAYER_NAME], string[22 + MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname)); format(string, sizeof(string), "Hrac %s se pripojil na server!", pname); //Zmen podle sveho SendClientMessageToAll(0x009669AA, string); //barva je zelena return 1; } public OnPlayerDisconnect(playerid, reason) { new pname[MAX_PLAYER_NAME], string[39 + MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname)); switch(reason) { case 0: format(string, sizeof(string), "Hraci %s spadla hra.", pname); //Zmen podle sveho---Pád hry case 1: format(string, sizeof(string), "Hrac %s se odpojil ze serveru!", pname); //Zmen podle sveho---Odpojení (sám) case 2: format(string, sizeof(string), "Hrac %s byl nucen odejit KICK/BAN.", pname); //Zmen podle sveho---Kick nebo BAN } SendClientMessageToAll(0x009669AA, string); //barva je nastavená na tmavě zelenou return 1; }
  6. toto je můj první návod jak si jednoduše udělat Event takže (dcmd) :
  7. Dobrý deň prinášam sem tento tutoriál pretože veľa začiatočníkov nevie ako sa ten AFK Systém robí takže používame hlavne TogglePlayerControlable Ideme na to : //definicia DCMD new AFK[MAX_PLAYERS]; OnPlayerConnect : AFK[playerid] = 0; OnPlayerCommandText : dcmd(afk,3,cmdtext); Niekde do módu : dcmd_afk(playerid,params[]) { #pragma unused params if(AFK[playerid] == 0) { new string[128];//.... new name[MAX_PLAYER_NAME];// new pre meno GetPlayerName(playerid, name, sizeof(name));//Funkcia ktorá zistí hráčove meno format(string,128,"Hráč %s je odteraz AFK !",name);//Naformatujeme meno hráča SendClientMessageToAll(0x0000,string);//Odošleme spravu TogglePlayerControllable(playerid,0);//Zmrazíme AFK[playerid] = 1;// D8me že je AFK } else if(AFK[playerid] == 1) { new string[128];//.... new name[MAX_PLAYER_NAME];// new pre meno GetPlayerName(playerid, name, sizeof(name));//Funkcia ktorá zistí hráčove meno format(string,128,"Hráč %s už nieje AFK !",name);//Naformatujeme meno hráča SendClientMessageToAll(0x0000,string);//Odošleme spravu TogglePlayerControllable(playerid,1);//Odmrazíme AFK[playerid] = 0;// Dáme že není AFK } return 1; } Nieje to nič moc ale dúfam že si to aspoň niekto pozrie a ocení to Díky.
  8. Jelikož se vám tento TuT nelíbí tak ho zkusím ještě jednou a uvidíme Tentokrát budu používat základní tvary ! ukážeme si 2 příkazy jeden je /heal a druhý /kill tyto příkazy zvládne každý ale jde mi o ukázku podmínky ke které se dostanu v pozdější fázi! Jako první věc si nadefinujeme barvy pro oznámení hráči až budeme dělat samotnou funkci příkazu to bude uplně nahoře někde tam kde máte includy: #define COLOR_GREEN 0x00FF00FF #define COLOR_RED 0xFF0011FF #define COLOR_YELLOW 0xFFEE00FF #define COLOR_BLUE 0x1100FFFF #define COLOR_BLACK 0x000000FF Jako další věc přistoupíme k příkazu normálně si uděláme příkaz : public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/zivoty", cmdtext, true, 10) == 0) { SetPlayerHealth(playerid,100); SendClientMessage(playerid,COLOR_RED,"Jsi uzdraven!"); return 1; } if (strcmp("/kill", cmdtext, true, 10) == 0) { SetPlayerHealth(playerid,0); SendClientMessage(playerid,COLOR_RED,"Spáchal jsi sebevraždu!"); return 1; } } A jako poslední věc jak jsem říkal na začátku bude podmínka if(IsPlayerAdmin(playerid) To znamená že to zkontroluje jestli je hráč přihlášen na RCON tuto podmínku si ukážeme na příkazu kill který jsme si udělali dříve if (strcmp("/kill", cmdtext, true, 10) == 0) { if(!IsPlayerAdmin(playerid)) { SetPlayerHealth(playerid,0); SendClientMessage(playerid,COLOR_RED,"Spáchal jsi sebevraždu!"); } else { SendClientMessage(playerid,COLOR_RED,"Nejsi admin!"); } return 1; } A tímto končí tento TuT další věci o podmínce IsPlayerAdmin naleznete zde : http://wiki.sa-mp.co...i/IsPlayerAdmin Doufám že to bylo lepší než minule
  9. Ahojte.Po dlhšom čase vám chcem ukázať a vysvetliť ako sa bez s0beitu dá teleportovať po mape. Pracuje to na takom princípe ako s0beit.Proste otvoríte si mapku,kliknete pravým a ste tam. Ďalej potom vám ukážem názov zóny,ako povoliť alebo zakázať aby sme nedostávali defekty Takže prejdime k veci: Ak chceme aby sa teleportovali iba Administrátori (Rcon) tak najprv do OnGameModeInit musíme dať toto: AllowAdminTeleport(1); Čo to je? Je to funkcia ktorá povolí administrátorom teleportovať sa. A čo znamená tá jednotka? Tá jednotka znamená to že to proste povolí (niečo ako true a false.) Teraz ďalej.Lenže len toto by vám nadefinované nestačilo. Musíte si do OnGameModeInit ešte pridať: new Float:fX, Float:fY, Float:fZ; OnPlayerClickMap(1,Float:fX, Float:fY, Float:fZ); A niekam mimo publicu: public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ) { SetPlayerPosFindZ(playerid, fX, fY, fZ); return 1; } Tak a teraz vysvetlenie: OnPlayerClickMap(1,Float:fX, Float:fY, Float:fz) Tá 1 znamená zasa ako keby true a false.Proste že vám to povolí fX, fY, fZ vám snáď vysvetľovat nemusím.Myslím si že každy vie čo to znamená. Tak a teraz náš nový public.Tento public bol pridaný až do verzie 0.3 presne na tieto účely. A čo znamená to SetPlayerPosFindZ(playerid, fX, fY, fZ); ? Týmto sa hráčovi nastaví pozícia (ak sa teleportuje) a potom sa upravuje pozícia tak aby ho to dalo na najbližšiu pevnú zem (samozrejme neplatí pre vodu.Je to myslené tak že keď sa niekde teleportujete a teleportuje vás to pod zem tak do pár sekúnd budete na rovných nohách tam kde ste chceli byť). A ako to povoliť aj obyčajným hráčom? Do OnGameModeInit iba pridáme AllowPlayerTeleport(playerid, 1); Dúfam že toto už popisovať nemusím.Je to pomaly rovnaké ako AllowAdminTeleport len s tým rozdieľom že touto funkciou to povolíte aj hráčom. Takže ak chcete vypnúť tieto funkciu tak miesto 1 prepíšte na 0. ---------------------------------------------------------------------------------- Ďalej pamätáte si ako sme kedysi ako otroci si definovali každú zónu po jednom? Od verzii 0.3 už nemusíme.Vývojari totižto pridali funkciu EnableZoneNames. Na akom princípe vlastne táto funkcia pracuje? Pracuje na takom princípe ževám umožní zapnúť zóny alebo lepšie povedané oblasti.Napríklad ako Vinewood alebo Doherty alebo pod.Keď vstupíte do nejakej oblasti tak v pravom rohu dole sa vám objaví jej názov. Ako každú podobnú funkciu tak aj túto musíme nastaviť v OnGameModeInit. Takže do OnGameModeInit si dáme toto: EnableZoneNames(1); Tak a teraz to ideme rozobrať.. EnableZoneNames je samotná funkcia. Ale čo je tá jednička? Táto jednička je v našom preklade vlastne true alebo enable.Proste znamená to že nám túto funkciu povoľuje.Ak by sme ju chceli zakázať tak túto jedničku prepíšem na 0. Aj vás serie keď si užívate cestu autom a z ničoho nič začnú po vás strieľať a vy dostanete defekt.Máte toho už dosť? Tak prečo to nezakázať? Do OnGameModeInit si nadefinujte: EnableTirePopping(0); Teraz si to rozoberieme: EnableTirePopping je samotná funkcia. A tá 0? Tá nám túto funkciu zakazuje je to niečo ako false alebo disabled.No keď chceme túto funkciu povoliť tak 0 prepíšeme na 1. To je odo mňa zatiaľ všetko. Reputácia by pomohla . Ďakujem,s pozdravom DonMafia P.S => Pardón za zlý názov topicu.Ak chcete môžete zmeniť.
  10. Zdravím dávám sem TUT na TextDraw já osobně sem měl problém z pozicema a TextDrawem... Tak sem udělal TUT pro nováčky jako sem já // Někam na vrch new Text:TD; // Do OnGameModeInit TD = TextDrawCreate(281 ,191 , "Lerry"); //281 pohybujete textem na vrch a důle // 191 znamená do prava nebo do leva TextDrawFont(TD , 0); TextDrawLetterSize(TD , 1, 7); //(TD , 1, 7); toto znamená velikost textu TextDrawColor(TD , 0x35e612FF); TextDrawSetOutline(TD , true); TextDrawSetProportional(TD , true); TextDrawSetShadow(TD , 1); Já používam texdraw editor ODKAZ http://bsndesign.webs.com/tde.htm Dofám že sem někomu pomohl kdyby nějaké chyby tak opravte (a nenadávejte že je to na nic)
  11. Ukážeme si pár skratiek čo sa týka príkazov...Môžeme si celý príkaz skrátit napríklad na 1písemno alebo číslo... #define DatMoney GivePlayerMoney použitie: GivePlayerMony(playerid, 10000); Alebo: DatMoney(playerid, 10000); ________________________________________________________________________________________ #define Sprava SendClientMessage použitie: Sprava(playerid, Farba, "Welcome to my server!"); Ovela viac skratiek : #define DatMoney GivePlayerMoney #define ZistitMoney GetPlayerMoney #define Sprava SendClientMessage #define ResetMoney ResetPlayerMoney #define GameText GameTextForPlayer čítajte prosím citace !
  12. Na základě včerejšího tématu kde autor měl problém s II a && , očividně neměl tušení co který znak dělá či jak funguje jsem se rozhodl napsat takový menší návod na toto téma. Snad mě tedy neukamenujete... || - "nebo" - Tímto znaménkem lze "spojit" dvě podmínky do jedné v případě , že chceme aby podmínka( dále jen podm.) nabyla platnosti buď první zadáním nebo druhým nebo x-tým zadáním. Myslím si že přehledněji to lze znázornit pomocí spínačů. Příklad : if(A == 1 || B == 1|| C == 1) Na obrázku s označením a) vidíte že ani jeden spínač (blok podmínky) není sepnut (podmínka není splněna) tudíž signál neprochází. Podm tedy není splněna. Na obrázcích a c) je znázorněno splnění bloků pokud je splněn blok A == 1 signál projde a podmínka je splněna. Tzn že při splnění libovolného bloku se splní podmínka. && - "a" - Tímto znaménkem lze opět spojit více bloků podmínek za předpokladu že podmínku lze splnit splněním všech bloků. Příklad : if(A == 1 && B == 1&& C == 1) Obrázek označený a) znázorňuje nesplnění žádného bloku podmínky. Znázorňuje splnění prvního bloku avšak podmínka není splněna. Totéž nastává při splnění prvního a druhé bloku c) Až při splnění všech bloku (v našem případě tří) obrázek d) je vidět že podmínka je splněna. Tzn že u podmínek ve kterých "slučujeme" pomocí && musí být splněny všechny bloky jinak podmínka nenabyde platnosti. Dále můžeme v podmínkách pracovat se znaky & a |, kde & je logický součin a | podíl ( nejsem si jist tím podílem ). Použití logického součinu je časté při práci s klávesami. if(newkeys & KEY_WALK) if(newkeys == KEY_WALK) U první verze (s log. součinem) při zjištění stisknuté klávesy je jedno zdali máte stisknuto víc kláves důležité pro něj je jestli je stisknuta zadaná. U druhé verze už to jedno není .. Když stisknete L.ALT a současně držíte třeba ENTER tak se podmínka nevykoná. Více do těchto logických operací zabíhat nebudu protože až tolik o tom zase nevím . Tím by to bylo ode mě vše a doufám že alespoň někomu jsem tímto pomohl. Regards.
  13. Všetko základné o pawn. Upozornenie ! Odkazy v tomto príspevku vedú na iné weby než na pawno.cz ___________________________________________________________________________________________________________________ Skiny a ich ID (po kategoriach) Vozidlá a ich ID Zbrane a ich ID Objekty a ich ID (po kategoriach) Pickupy a ich ID Interiéry a ich ID Explozie Game texty a ich ID Texdrawy , fonty a ich ID Farby Tlačítka Zvuky a ich ID Počasie a ich ID ___________________________________________________________________________________________________________________ Texdraw : Zamaroth Editor , BSN Creator [EN] ___________________________________________________________________________________________________________________ Farby : Ako na farby [CZ] ___________________________________________________________________________________________________________________ Vozidlá : Car Spawner , Car Spawner 2 [EN] ___________________________________________________________________________________________________________________ Pickupy : Jak vytvorit pickup [CZ] ___________________________________________________________________________________________________________________ Top české pawn tutoríály : Dialogy a všetko o nich 8500 Zobrazení 73 Odpovedí Jak vytvorit NPC 19927 Zobrazení 329 Odpovedí Budem to po čase upravovat , pridávat nové vecy.Ospravedlnujem sa za gramatiku.
  14. Zdravím. Pred hodinou vyšiel najnovší jailbreak pre iOS 6. Je funkčný pre všetky zariadenia bežiace pod týmto iOS. Postup sa prakticky nemení od jailbreaku na iOS 5.1.1. Funkčnosť potvrdzujem pre iPad 2 WiFi a iPhone 4S Predtým ako začnete sa uistite, že: • Máte vypnutý iTunes • Vaše zariadenie má iOS 6.0/iOS 6.0.1/iOS 6.0.2/iOS 6.1 • Nemáte zariadenie zabezpečené heslom - ak áno vypnite dočasne heslo Poznámky: - Jailbreak je len na vlastné riziko a za škody neručí tím evad3rs, ja ani toto fórum! - Keď niečo zamrzne počas jailbrekovania, skúste reštartovať zariadenie a postup opakovať - Je silno odporúčané zálohovať si zariadenie pred jailbreakom FAQ: - Zamrznutie zariadenia pri 'Patching kernel...' • Stlačte a držte tlačítko Domov+Power až kým sa nevypne a znovu zapnite - Program 'Jailbreak' v mojom zariadení padol • To nevadí, má to tak byť - Cydia pri aktualizovaní súborov hádže chyby • Je to zapríčinené preťažením serverov Keby máte nejaké problémy tak mi napíšte SZ, skúsime to spolu vyriešiť
  15. Zdravím, nedávno jsem zkoumal nové funkce textdrawu, pomocí kterých je možné promítnout 3D objekty do 2D textdrawu. A mám tu pro Vás rešení několika problémů. které mohou nastat. Začneme tím že si vytvoříme textdraw libovolné velikosti, ale se zaplým boxem. K tomu je dobrá TextDrawEditor, který tu na pawno.cz zveřejnil FireWall. TextDrawFont(Text:text,TEXT_DRAW_FONT_MODEL_PREVIEW);//je potreba nastavit font aby jsme mohli zobrazit modely TextDrawSetPreviewModel(Text:text, modelindex);//touto funkci nastavite textdrawu model ktery ma rozbrazit (lze zobrazit vse skiny, vozidla, objekty), staci jen zadat ID modelu TextDrawSetPreviewRot(Text:text, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fZoom = 1.0);//touto funkci nastavite offsety od objektu a vzdalenost. Jiste jste si vsimli ze tu neni zadny parametr natoceni objektu - neni treba. Objekt se natoci tak, aby jste se koukali z bodu ktery nastavite pomoci offsetu.HTTP U vzdalenosti, pokud bude cislo mensi nez 1 promitnuty objekt se zvetsi, pokud bude vetsi nez 1 objekt se zmensi. TextDrawSetPreviewVehCol(Text:text, color1, color2);//Zde lze nastavit barvu promitnuteho vozidla A nyni si povíme, jaké mohou nastat problémy, a jak je vyřešit: 1) Vytvořil jsem si textdraw s boxem, ale jakmile tam promitnu objekt box se natáhne nebo smrští. Za tento jev je odpovědná funkce TextDrawTextSize(Text:text,x,y); Pokud máme textdraw: new Text:text = CreatePlayerTextDraw(playerid,25,157,"_"); TextDrawTextSize(text,74,224); ... Stačí prostě od sebe odečíst Yové souřadnice a rozdíl zapsat do Size. Tedy Y = 224-157=67 Upravime: TextDrawTextSize(text,74,67); Pokud vytvoříme textdraw takto upravený bez načtení objektu. Tak se nám "deformuje", ovšem jakmile objekt načtete tak se srovná tak jak chcete. 2) Mám dvě tlačítka pod sebou, a když najedu na to spodní označí se mi i to horní. Za tento problém může opět tato funkce TextDrawTextSize(Text:text,x,y); Zde ovšem nic neodečítáme, protože spodní hrana boxu neni dána touto funkci ale natahuje jí funkce TextDrawLetterSize Proto musíme zkoušet nastavení Xové souřadnice tak, aby nastavená spodní hrana ladila s nastavením boxu. 3) Nastavil jsem si barvu boxu, ale jakmile načtu objekt pozadí mi zčerná načtením objektu není používáná barva boxu, ale barva pozadí písma, takže stací nastavit PlayerTextDrawBackgroundColor 4) Načetl jsem objekt, který není uprostřed textdrawu Toto se může stát jen u některých specifických objektů, které nemají "uchopovy bod" uprostřed sebe. Například dveře. zde je potřeba nastavit offset tak, aby uprostřed byl.
  16. Předně bych chtěl říct, že tento tutoriál není z mě hlavy, ale převzatý ze stránek sa-mp.com a to od autora Godhimself. Já jsem opravil chyby a přidal novou barvu neonu. Dopručuju, abyste tento tutoriál využili k výrobě FilterScriptu, když jsem si ho přidal do GM, tak mě ostatní příkazy nefungovaly, ale po vytvoření FS vše jelo tak jak má Zde je samotný tutoriál: 1. přidáme nový includ: #include <zcmd> 2 .nadefinujeme si barvy: #define COLOUR_WHITE 0xFFFFFFAA #define COLOUR_RED 0xFF0000FF #define WHITE_HEX {FFFFFF} // u této barvy si nejsem jistý, jestli tu někde je, ale v originálu tam je ,takže ji tam radši nechte a dialogy: #define NEON_DIALOG 0 #define BLUE_NEONS_PRICE 10000//Tuto částku si můžete změnit dle libosti #define RED_NEONS_PRICE 10000//Tuto částku si můžete změnit dle libosti #define GREEN_NEONS_PRICE 10000//Tuto částku si můžete změnit dle libosti #define YELLOW_NEONS_PRICE 10000//Tuto částku si můžete změnit dle libosti #define PINK_NEONS_PRICE 10000//Tuto částku si můžete změnit dle libosti #define WHITE_NEONS_PRICE 10000//Tuto částku si můžete změnit dle libosti 3. Do public OnVehicleDeath(vehicleid, killerid) public OnVehicleDeath(vehicleid, killerid) { new i; for(i = 0; i < MAX_PLAYERS; i ++) { if(IsPlayerConnected(i) && GetPlayerVehicleID(i) == vehicleid) { if(GetPVarInt(i, "HasBlueNeons") == 1) { DeletePVar(i, "HasBlueNeons"); DestroyObject(GetPVarInt(i, "BlueNeons1")); DestroyObject(GetPVarInt(i, "BlueNeons2")); } else if(GetPVarInt(i, "HasRedNeons") == 1) { DeletePVar(i, "HasRedNeons"); DestroyObject(GetPVarInt(i, "RedNeons1")); DestroyObject(GetPVarInt(i, "RedNeons2")); } else if(GetPVarInt(i, "HasGreenNeons") == 1) { DeletePVar(i, "HasGreenNeons"); DestroyObject(GetPVarInt(i, "GreenNeons1")); DestroyObject(GetPVarInt(i, "GreenNeons2")); } else if(GetPVarInt(i, "HasYellowNeons") == 1) { DeletePVar(i, "HasYellowNeons"); DestroyObject(GetPVarInt(i, "YellowNeons1")); DestroyObject(GetPVarInt(i, "YellowNeons2")); } else if(GetPVarInt(i, "HasPinkNeons") == 1) { DeletePVar(i, "HasPinkNeons"); DestroyObject(GetPVarInt(i, "PinkNeons1")); DestroyObject(GetPVarInt(i, "PinkNeons2")); } else if(GetPVarInt(i, "HasWhiteNeons") == 1) { DeletePVar(i, "HasWhiteNeons"); DestroyObject(GetPVarInt(i, "WhiteNeons1")); DestroyObject(GetPVarInt(i, "WhiteNeons2")); } } } return 1; } 4. do public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case NEON_DIALOG: { if(response) { switch(listitem) { case 0: { if(GetPlayerMoney(playerid) >= BLUE_NEONS_PRICE) { SetPVarInt(playerid, "HasBlueNeons", 1); SetPVarInt(playerid, "BlueNeons1", CreateObject(18648,0,0,0,0,0,0)); SetPVarInt(playerid, "BlueNeons2", CreateObject(18648,0,0,0,0,0,0)); AttachObjectToVehicle(GetPVarInt(playerid, "BlueNeons1"), GetPlayerVehicleID(playerid), -0.8, 0.0, -0.70, 0.0, 0.0, 0.0); AttachObjectToVehicle(GetPVarInt(playerid, "BlueNeons2"), GetPlayerVehicleID(playerid), 0.8, 0.0, -0.70, 0.0, 0.0, 0.0); GivePlayerMoney(playerid, - BLUE_NEONS_PRICE); PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0); new string[80]; format(string, sizeof(string), "Úspěšně jsi vytvořil modré neony za: $%d", BLUE_NEONS_PRICE); SendClientMessage(playerid, COLOUR_WHITE, string); } else { SendClientMessage(playerid, COLOUR_RED,"Nemáš dostatek peněz."); } } case 1: { if(GetPlayerMoney(playerid) >= RED_NEONS_PRICE) { SetPVarInt(playerid, "HasRedNeons", 1); SetPVarInt(playerid, "RedNeons1", CreateObject(18647,0,0,0,0,0,0)); SetPVarInt(playerid, "RedNeons2", CreateObject(18647,0,0,0,0,0,0)); AttachObjectToVehicle(GetPVarInt(playerid, "RedNeons1"), GetPlayerVehicleID(playerid), -0.8, 0.0, -0.70, 0.0, 0.0, 0.0); AttachObjectToVehicle(GetPVarInt(playerid, "RedNeons2"), GetPlayerVehicleID(playerid), 0.8, 0.0, -0.70, 0.0, 0.0, 0.0); GivePlayerMoney(playerid, - RED_NEONS_PRICE); PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0); new string[80]; format(string, sizeof(string), "Úspěšně jsi vytvořil červené neony za: $%d", RED_NEONS_PRICE); SendClientMessage(playerid, COLOUR_WHITE, string); } else { SendClientMessage(playerid, COLOUR_RED,"Nemáš dostatek peněz."); } } case 2: { if(GetPlayerMoney(playerid) >= GREEN_NEONS_PRICE) { SetPVarInt(playerid, "HasGreenNeons", 1); SetPVarInt(playerid, "GreenNeons1", CreateObject(18649,0,0,0,0,0,0)); SetPVarInt(playerid, "GreenNeons2", CreateObject(18649,0,0,0,0,0,0)); AttachObjectToVehicle(GetPVarInt(playerid, "GreenNeons1"), GetPlayerVehicleID(playerid), -0.8, 0.0, -0.70, 0.0, 0.0, 0.0); AttachObjectToVehicle(GetPVarInt(playerid, "GreenNeons2"), GetPlayerVehicleID(playerid), 0.8, 0.0, -0.70, 0.0, 0.0, 0.0); GivePlayerMoney(playerid, - GREEN_NEONS_PRICE); PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0); new string[80]; format(string, sizeof(string), "Úspěšně jsi vytvořil zelené neony za: $%d", GREEN_NEONS_PRICE); SendClientMessage(playerid, COLOUR_WHITE, string); } else { SendClientMessage(playerid, COLOUR_RED,"Nemáš dostatek peněz."); } } case 3: { if(GetPlayerMoney(playerid) >= YELLOW_NEONS_PRICE) { SetPVarInt(playerid, "HasYellowNeons", 1); SetPVarInt(playerid, "YellowNeons1", CreateObject(18650,0,0,0,0,0,0)); SetPVarInt(playerid, "YellowNeons2", CreateObject(18650,0,0,0,0,0,0)); AttachObjectToVehicle(GetPVarInt(playerid, "YellowNeons1"), GetPlayerVehicleID(playerid), -0.8, 0.0, -0.70, 0.0, 0.0, 0.0); AttachObjectToVehicle(GetPVarInt(playerid, "YellowNeons2"), GetPlayerVehicleID(playerid), 0.8, 0.0, -0.70, 0.0, 0.0, 0.0); GivePlayerMoney(playerid, - YELLOW_NEONS_PRICE); PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0); new string[80]; format(string, sizeof(string), "Úspěšně jsi vytvořil žluté neony za: $%d", YELLOW_NEONS_PRICE); SendClientMessage(playerid, COLOUR_WHITE, string); } else { SendClientMessage(playerid, COLOUR_RED,"Nemáš dostatek peněz."); } } case 4: { if(GetPlayerMoney(playerid) >= PINK_NEONS_PRICE) { SetPVarInt(playerid, "HasPinkNeons", 1); SetPVarInt(playerid, "PinkNeons1", CreateObject(18651,0,0,0,0,0,0)); SetPVarInt(playerid, "PinkNeons2", CreateObject(18651,0,0,0,0,0,0)); AttachObjectToVehicle(GetPVarInt(playerid, "PinkNeons1"), GetPlayerVehicleID(playerid), -0.8, 0.0, -0.70, 0.0, 0.0, 0.0); AttachObjectToVehicle(GetPVarInt(playerid, "PinkNeons2"), GetPlayerVehicleID(playerid), 0.8, 0.0, -0.70, 0.0, 0.0, 0.0); GivePlayerMoney(playerid, - PINK_NEONS_PRICE); PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0); new string[80]; format(string, sizeof(string), "Úspěšně jsi vytvořil růžové neony za: $%d", PINK_NEONS_PRICE); SendClientMessage(playerid, COLOUR_WHITE, string); } else { SendClientMessage(playerid, COLOUR_RED,"Nemáš dostatek peněz."); } } case 5: { if(GetPlayerMoney(playerid) >= WHITE_NEONS_PRICE) { SetPVarInt(playerid, "HasWhiteNeons", 1); SetPVarInt(playerid, "WhiteNeons1", CreateObject(18652,0,0,0,0,0,0)); SetPVarInt(playerid, "WhiteNeons2", CreateObject(18652,0,0,0,0,0,0)); AttachObjectToVehicle(GetPVarInt(playerid, "WhiteNeons1"), GetPlayerVehicleID(playerid), -0.8, 0.0, -0.70, 0.0, 0.0, 0.0); AttachObjectToVehicle(GetPVarInt(playerid, "WhiteNeons2"), GetPlayerVehicleID(playerid), 0.8, 0.0, -0.70, 0.0, 0.0, 0.0); GivePlayerMoney(playerid, - WHITE_NEONS_PRICE); PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0); new string[80]; format(string, sizeof(string), "Úspěšně jsi vytvořil bílé neony za: $%d", WHITE_NEONS_PRICE); SendClientMessage(playerid, COLOUR_WHITE, string); } else { SendClientMessage(playerid, COLOUR_RED,"Nemáš dostatek peněz."); } } case 6: { if(GetPVarInt(playerid, "HasBlueNeons") == 1) { DeletePVar(playerid, "HasBlueNeons"); DestroyObject(GetPVarInt(playerid, "BlueNeons1")); DestroyObject(GetPVarInt(playerid, "BlueNeons2")); SendClientMessage(playerid, COLOUR_WHITE, "Úspěšně jsi odstranil neon."); } else if(GetPVarInt(playerid, "HasRedNeons") == 1) { DeletePVar(playerid, "HasRedNeons"); DestroyObject(GetPVarInt(playerid, "RedNeons1")); DestroyObject(GetPVarInt(playerid, "RedNeons2")); SendClientMessage(playerid, COLOUR_WHITE, "Úspěšně jsi odstranil neon."); } else if(GetPVarInt(playerid, "HasGreenNeons") == 1) { DeletePVar(playerid, "HasGreenNeons"); DestroyObject(GetPVarInt(playerid, "GreenNeons1")); DestroyObject(GetPVarInt(playerid, "GreenNeons2")); SendClientMessage(playerid, COLOUR_WHITE, "Úspěšně jsi odstranil neon."); } else if(GetPVarInt(playerid, "HasYellowNeons") == 1) { DeletePVar(playerid, "HasYellowNeons"); DestroyObject(GetPVarInt(playerid, "YellowNeons1")); DestroyObject(GetPVarInt(playerid, "YellowNeons2")); SendClientMessage(playerid, COLOUR_WHITE, "Úspěšně jsi odstranil neon."); } else if(GetPVarInt(playerid, "HasPinkNeons") == 1) { DeletePVar(playerid, "HasPinkNeons"); DestroyObject(GetPVarInt(playerid, "PinkNeons1")); DestroyObject(GetPVarInt(playerid, "PinkNeons2")); SendClientMessage(playerid, COLOUR_WHITE, "Úspěšně jsi odstranil neon."); } else if(GetPVarInt(playerid, "HasWhiteNeons") == 1) { DeletePVar(playerid, "HasWhiteNeons"); DestroyObject(GetPVarInt(playerid, "WhiteNeons1")); DestroyObject(GetPVarInt(playerid, "WhiteNeons2")); SendClientMessage(playerid, COLOUR_WHITE, "Úspěšně jsi odstranil neon."); } else { SendClientMessage(playerid, COLOUR_WHITE, "Nemáš žádné neony na odstranění."); } } } } } } return 1; } 5. Zde je samotný příkaz CMD:neon(playerid, params[]) { new string[200]; switch(GetVehicleModel(GetPlayerVehicleID(playerid)))// toto je seznam ID vozidel, na která lze přidat neony { case 562,565,559,561,560,575,534,567,536,535,576,411,579,602,496,518,527,589,597,419, 533,526,474,545,517,410,600,436,580,439,549,491,445,604,507,585,587,466,492,546,551,516, 426,547,405,409,550,566,406,540,421,529,431,438,437,420,525,552,416,433,427,490,528, 407,544,470,598,596,599,601,428,499,609,524,578,486,573,455,588,403,514,423, 414,443,515,456,422,482,530,418,572,413,440,543,583,478,554,402,542,603,475,568,504,457, 483,508,429,541,415,480,434,506,451,555,477,400,404,489,479,442,458,467,558: { format(string, sizeof(string), "Modré Neony: $%d\nČerverné Neony: $%d\nZelené Neony: $%d\nŽluté Neony: $%d\nRůžové Neony: $%d\nBílé Neony: $%d\nOdebrat neony: Zadarmo", BLUE_NEONS_PRICE, RED_NEONS_PRICE, GREEN_NEONS_PRICE, YELLOW_NEONS_PRICE, PINK_NEONS_PRICE, WHITE_NEONS_PRICE); // Toto je pokračování předešlého řádku ShowPlayerDialog(playerid, NEON_DIALOG, DIALOG_STYLE_LIST, "Neon Shop", string, "Vybrat", "Cancel"); } default: return SendClientMessage(playerid,COLOUR_RED,"Toto vozidlo nelze vytunit, nebo nejsi ve vozidle."); } return true; }
  17. Čaute, používám jednoduchý systém antireklam a rád bych vám ho zveřejnil 1. Nadefinujeme si webovou adresu našeho serveru #define WEBPAGE "www.pawno.cz" //Změňte si na váš web 2. Vytvoříme si stock, ve kterém zapíšeme domény stock AntiReklama(message[]) { if(strfind(message,"www.",false) != -1 || strfind(message,"http://",false) != -1 //Nadefinujeme zakázané domény... || strfind(message,".sk",false) != -1 || strfind(message,".cz",false) != -1 || strfind(message,".eu",false) != -1 || strfind(message,".net",false) != -1 || strfind(message,".com",false) != -1 || strfind(message,".tk",false) != -1 || strfind(message,".tk",false) != -1 || strfind(message,".ru",false) != -1) { if(strfind(message,WEBPAGE,false) == -1) //Pokud zadá náš web return 1; } new len=strlen(message),numbers; for(new i;i<len;i++) { if(IsCharNumeric(message[i])) numbers++; } return 0; } 3. Vložíme podmínku do OnPlayerText if(AntiReklama(text)) //Pokud zadá zakázaný text { SCM(playerid,RED,"[ Server ]{FFFFFF} Je zakázané dělat reklamu!"); //Odešle hráči varovnou zprávu //BanEx(playerid, Server - Reklama"); //Zabanuje hráče return 0; //Zpráva se neodešle }
  18. Ghosts.Crack

    návod Warpy V Pawnu

    Ahoj dělám si vlástní mód a chtěl bych se na něco zeptat.Když se třeba odwarpuji na /letistelv tak bych si přál aby se napsalo Hráč NĚKDO se odwarpoval na Letiště do LV ale nevím jak udělat aby to šlo.. Děkuji za odpovědi )
  19. Huzy

    návod Výzva Pro Vás

    Ahoj. Mám tu pro vás takovou výzvu Nechtěl by někdo natačet na YT pawno? Hodně lidí by to chtělo a určite by to nebylo k zahození...
  20. Ahoj lidi pokud jste hráli GTA SAN ANDREAS SINGLEPLAYER tak jste tam měli as který věžel 20:01 20:02 po sekundě ... Tak já vám ukážu jak na to Uplně nahoru si dáme #include <a_samp> #pragma tabsize 0 #define COLOR_RED 0xAA3333AA Pak do new new hodina = 0, minuta = 0, timer; new Text:Timer1; Pak si tam dáme forward jinak by nám to házelo Warning možná i Error forward hodiny(); A ted Public .. OnGameModeInit public OnGameModeInit() { SetTimer("OnPlayerUpdateOnSecond",10000,true); // znamená že to půjde každou 1 sekundu timer = SetTimer("hodiny",1000,1); // zde taky Timer1 = TextDrawCreate(551.2, 24.0,"12:00"); Začnete to ve 12:00 a umístění TextDrawLetterSize(Timer1,0.50, 2.0); // Velikost TextDrawBackgroundColor(Timer1,0x000000FF); //Barva TextDrawFont(Timer1,3); // Písmo TextDrawSetShadow(Timer1,0); // nevím TextDrawSetOutline(Timer1,2); // nevím TextDrawColor(Timer1,0xFF2525FF); // barva hodin return 1; } OnGameModeExit public OnGameModeExit() { KillTimer(timer); // vypne čas TextDrawDestroy(Timer1);//odstraní ho return 1; } OnPlayerSpawn public OnPlayerSpawn(playerid) { TextDrawShowForPlayer(playerid, Timer1);// Zobrazí se return 1; } OnPlayerDeath public OnPlayerDeath(playerid, killerid, reason) { TextDrawHideForPlayer(playerid, Timer1);//hodiny return 1; } A ted public hodiny public hodiny() { if(minuta < 59) { minuta++; } else { if(hodina < 23) { hodina++; minuta = 0; } else { hodina = 0; } } SetWorldTime(hodina); new str[8]; if(minuta <= 9 && hodina <= 9) format(str, sizeof(str), "0%d:0%d", hodina, minuta); else if(minuta <= 9 && hodina > 9) format(str, sizeof(str), "%d:0%d", hodina, minuta); else if(minuta > 9 && hodina <= 9) format(str, sizeof(str), "0%d:%d", hodina, minuta); else format(str, sizeof(str), "%d:%d", hodina, minuta); TextDrawSetString(Timer1, str); return 1; } // Aby vedělo že to mají jít po 1 sek Doufám že vám to pomohlo a že si vytovříte mod a použijete tento čas Je to můj první TuT takže Děkuji že mi dáte Reputaci ! Nejlepé se to davá do modu nebo jako FS kde nejsou HOdiny jinak se bude křižovat .. Ronny
  21. Ahoj, za pomoci uživatele Strike jsem dokončil svoji registraci přes DOF2 tak, aby byla plně funkční. Rozhodl jsem se, že když nikde není pořádně funkční TUT na Registraci s tímto systémem (ani na officialním fóru), tak že se s vámi o něm podělím Obsah: Registrace Ukládání základních statistik (peníze, adminlvl, zabití, úmrtí, IP) Ukládání pozice i s načítáním Autologin pomocí IP Na začátek si něco řekneme o tomto systému: DoF2(Double-o-Files) je vytvořen uživatelem oficiálního fóra Double-o-Seven (Němec) Jedná se o rychlejší a stabilnější verzi původního DoF 1) Potřebné funkce/podmínky DOF2_File(user[]) = Funkce, která definuje název souboru uživatele DOF2_CreateFile(file[],password[]="") = Fce, která vytvoří soubor (file), a uloží do tohoto souboru heslo (password) DOF2_CheckLogin(file[],password[]) = Podmínka, která zkontroluje heslo (password), v souboru (file) DOF2_FileExists(file[]) = Podmínka která zjistí zda soubor (file) existuje DOF2_SetFloat(file[],key[],Float:value) = Funkce která uloží do souboru (file) pod určitý klíč (key) určité desetiné číslo (float) DOF2_SetInt(file[],key[],value) = Funkce která uloží do souboru (file), pod určitý klíč (key), určitou celočíselnou hodnotu (value) DOF2_GetFloat(file[],key[]) = funkce která vyčte ze souboru (file) určitý klíč (key) ve tvaru desetiného čísla DOF2_GetInt(file[],key[]) = funkce která vyčte ze souboru (file) klíč (key) určitou celočíselnou hodnotu DOF2_SaveFile() = uloží soubor (musí být za celou sekcí nebo za samostatným nastavením (jakýkoliv Set...) 2) Předpříprava před psaním kódu a)Includujeme databáze příkazů: a_samp a dof2 b)Definujeme si určité barvy, které budeme chtít používat (V našem případě COLOR_CERVENA a COLOR_ZLUTA) c)Definujeme si hodnoty DIALOG_REGISTER a DIALOG_LOGIN d)Oddefinujeme si hodnotu MAX_PLAYER a definujeme novou, podle počtu slotů na serveru( #undef MAX_PLAYERS - #define MAX_PLAYERS 100) e)Definujeme si pozici pro ukládání souborů( #define USER_FILE_PATH "Users/%s.ini" - každopádně zanechejte %s, neboť to bude ve finále jméno hráče. Složku si upravte podle libosti ) 2) Samotný kód NEW-s: enum pInfo { pKills, pDeaths, pMoney, pAdmin, Float:x, Float:y, Float:z, } new PlayerInfo[MAX_PLAYERS][pInfo]; new pIP[MAX_PLAYERS][16]; OnFilterScriptInit SetTimer("ukladani", 60000, 0); V OnGameModeExit musí být: DOF2_Exit(); jinak by vám vyskakoval při compilaci error OnPlayerConnect: public OnPlayerConnect(playerid) { new name[20]; format(name, sizeof(name), "Hráč %s se úspěšně připojil na server!", GetPlayerName(playerid, name, sizeof(name))); //na serveru se vypíše zpráva o připojení hráče na server SendClientMessageToAll(COLOR_ZLUTA, name); printf("[sERVER]Hráč %s se připojil na server!" , GetPlayerName(playerid, name, sizeof(name)));//do konzole se vypíše zpráva o připojení hráče na serveru new file[64]; GetPlayerName(playerid,file,sizeof(file)); format(file,sizeof(file),DOF2_File(file)); if(DOF2_FileExists(file)) //podmínka, zda existuje soubor s hráčovým jménem { GetPlayerIp(playerid,pIP[playerid],16); //když existuje, zjistíme hráčovu IP if(strcmp(DOF2_GetString(file, "IP"),pIP[playerid],true) == 0)//Když se IP rovná IP v hráčově souboru { SendClientMessage(playerid, COLOR_CERVENA, "[AUTOLOGIN]Byl jsi úspěšně přihlášen.");//přihlásí to hráče a vypíše zprávu LoadData(playerid);//Načte hráčovy data } else//když se IP neshoduje { SendClientMessage(playerid, COLOR_CERVENA, "[AUTOLOGIN]Přihlášení se nezdařilo, přihlašte se pomocí hesla.");//přihlášení pomocí IP bude neúspěšné ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Prosím přihlašte se se!","{FFFFFF}Zde napište své {00FF22}heslo {FFFFFF}pro přihlášení ","Přihlásit","");//vyvolání dialogu pro manuální přihlášení } } else//když není soubor s hráčovým jménem { ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Vítejte, prosím registrujte se!","{FFFFFF}Zde napište své {00FF22}heslo {FFFFFF}pro registraci","Registrovat","");//vyvolá se dialog pro registraci hráče } return 1; } OnPlayerDisconnect: public OnPlayerDisconnect(playerid, reason) { new name[20]; format(name, sizeof(name), "Hráč %s se úspěšně připojil na server!", GetPlayerName(playerid, name, sizeof(name))); //na serveru se vypíše zpráva o odpojení hráče na server SendClientMessageToAll(COLOR_ZLUTA, name); printf("[sERVER]Hráč %s se odpojil ze serveru!" , GetPlayerName(playerid, name, sizeof(name))); //do konzole se vypíše zpráva o odpojení hráče na serveru SaveData(playerid);//Uložíme data hráče return 1; } OnPlayerSpawn: public OnPlayerSpawn(playerid) { if(PlayerInfo[playerid][x] == 0.0 && PlayerInfo[playerid][y] == 0.0)//když jsou v souboru uložené pozice X a Y rovny 0 (tutíž když není uložena pozice) { SetPlayerPos(playerid, -299.8857, 1015.5681, 19.5938);//hrač se spawne na této pozici } else//když jsou souřadnice jinné { SetPlayerPos(playerid, PlayerInfo[playerid][x], PlayerInfo[playerid][y], PlayerInfo[playerid][z]);//nastaví se pozice ze souboru } return 1; } OnPlayerDeath public OnPlayerDeath(playerid, killerid, reason) { PlayerInfo[killerid][pKills]++;//počet zabitých s každým dalším stoupne o 1 PlayerInfo[playerid][pDeaths]++;//počet úmrtí s každým dalším stoupne o 1 return 1; } OnDialogResponse public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case DIALOG_REGISTER: { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Vítejte, prosím registrujte se!","{FFFFFF}Zde napište své {00FF22}heslo {FFFFFF}pro registraci","Registrovat","");//když hráč nezadá heslo, oběví se dialog pro zadání nového hesla if(response)//když hráč klikne na tlačítko { new file[64]; GetPlayerName(playerid,file,sizeof(file)); format(file,sizeof(file),DOF2_File(file)); DOF2_CreateFile(file, inputtext);//vytvoří se soubor s hráčovým jménem, a uloží se heslo z dialogu GetPlayerIp(playerid,pIP[playerid],16);//zjistíme hráčovu IP DOF2_SetString(file, "IP", pIP[playerid]);//uložíme hráčovu IP pod klíčem IP PlayerInfo[playerid][pKills] = DOF2_SetInt(file, "Kills", 0);//nastavíme počet zabitých (začátek = 0) PlayerInfo[playerid][pDeaths] = DOF2_SetInt(file, "Deaths", 0);//nastavíme počet úmrtí (začátek = 0) PlayerInfo[playerid][pMoney] = DOF2_SetInt(file, "Money", 1000);//nastavíme počáteční částku (v tomto případě 1000) DOF2_SetFloat(file, "LastX", 0);//nastavíme souřadnici na 0 (hráč ještě není spawnut) DOF2_SetFloat(file, "LastY", 0);//nastavíme souřadnici na 0 (hráč ještě není spawnut) DOF2_SetFloat(file, "LastZ", 0);//nastavíme souřadnici na 0 (hráč ještě není spawnut) DOF2_SaveFile();//uložíme soubor GivePlayerMoney(playerid, DOF2_GetInt(file, "Money"));//nastavíme hráči peníze dne registrace) } } case DIALOG_LOGIN: { if(response)//když hráč klikne na tlačítko { new file[64]; GetPlayerName(playerid,file,sizeof(file)); format(file,sizeof(file),DOF2_File(file)); if(DOF2_FileExists(file)) //zjistíme zda soubor s hráčovým jménem existuje { if(DOF2_CheckLogin(file,inputtext))//skontrolujeme zda heslo souhlasí { LoadData(playerid);//načteme data podle publicu LoadData SendClientMessage(playerid, COLOR_CERVENA, "[sERVER]Byl jsi přihlášen");//vypíšeme zprávu o přihlášení return 1; } else//když heslo nesouhlasí { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Špatné heslo!","{F81414}Napsal jsi špatné heslo\n{FFFFFF}Napište své heslo zde pro přihlášení","Přihlásit","");//zobrazíme znovu přihlašovací dialog return 1; } } } } } return 1; } Vytvoříme si public LoadData: forward LoadData(playerid);//vytvoříme daný public public LoadData(playerid) { new file[64]; GetPlayerName(playerid,file,sizeof(file)); format(file,sizeof(file),DOF2_File(file)); PlayerInfo[playerid][pKills] = DOF2_GetInt(file,"Kills");//načteme počet zabitých PlayerInfo[playerid][pDeaths] = DOF2_GetInt(file,"Deaths");//načteme počet úmrtí PlayerInfo[playerid][pMoney] = DOF2_GetInt(file,"Money");//načteme vlastněnou částku PlayerInfo[playerid][pAdmin] = DOF2_GetInt(file,"AdminLevel");//načteme adminlevel GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);//nastavíme hráči vlastněnou částku return 1; } Vytvoříme si public SaveData: forward SaveData(playerid);//vytvoříme daný public public SaveData(playerid) { new file[64]; GetPlayerName(playerid,file,sizeof(file)); format(file,sizeof(file),DOF2_File(file)); GetPlayerMoney(playerid);//získáme vlastněnou hodnotu peněz DOF2_SetInt(file, "Kills",PlayerInfo[playerid][pKills]);//uložíme počet zabitých DOF2_SetInt(file, "Deaths",PlayerInfo[playerid][pDeaths]);//uložíme počet úmrtí DOF2_SetInt(file, "Money",GetPlayerMoney(playerid));//uložíme vlastněnou částku DOF2_SetInt(file, "AdminLevel",PlayerInfo[playerid][pAdmin]);//uložíme administrační level GetPlayerPos(playerid,PlayerInfo[playerid][x],PlayerInfo[playerid][y],PlayerInfo[playerid][z]);//získáme hráčovu momentální pozici DOF2_SetFloat(file, "LastX", PlayerInfo[playerid][x]);//uložíme pozici X DOF2_SetFloat(file, "LastY", PlayerInfo[playerid][y]);//uložíme pozici Y DOF2_SetFloat(file, "LastZ", PlayerInfo[playerid][z]);//uložíme pozici Z DOF2_SaveFile();//uložíme soubor return 1; } Vytvoříme si public pro automatické ukládáni dat, kvůli možnosti spadnutí serveru: forward ukladani();//vytvoříme daný public public ukladani() { for(new i; i<MAX_PLAYERS; i++)//vytvoříme cyklus pro projetí všech hráčů na serveru { if(IsPlayerConnected(i))//zjistíme, zda je dané ID připojeno (pokud ano, tak ho nemá cenu ukládat, že ano? ) { SaveData(i);//Uložíme data print("[AUTOSAVE]Účty byly úspěšně uloženy!");//vypíšeme zprávu o uložení } } } Snad vám tento tutoriál pomůže, a neposlouží jen k COPY & PASTE Děkuji za pročtení a uživateli Strike za rady a nápovědy když jsem měl problémy při tvorbě. Jakékoliv připomínky pište zde, ale prosím, aby jste k tomuto tutoriálu nepřipisovali vaše errory apod, v prípadě nouze kontaktujte třeba i mě v SZ a já se vám budu snažit pomoci tam.
  22. Ahojte , mam tu prevas prakticky navod, sice kratky,ale moc dolezity.. Stala sa mi mala prihoda v mojom mode, mam tam prasacky kod, a ked som to skusal, zacalo my dimiet s pc , takze si treba davat pozor... 1) If, else if hlavna zasada je taka, ze ak mame viac ifov(ako napriklad vo Commandoch), tak nemusime furt davat if.. ale prve bude if a potom furt len else if atd... Zrychluje kompilaciu 2) MAX_PLAYERS_EX Ak pouzivate MAX_PLAYERS, je to celkovo nedobre, lebo naco bude cyklus chodit do 500, pritom ked na vasom servere budu hrat max. 30.. Preto je dobre si nadefinovat MAX_PLAYERS_EX z vlastnou hodnotou max hracov... Zrychluje aj kompilaciu 3) For je nebezpecne NIKDY nedavajte vo Fore dalsi For, a ak sa to inak neda, tak maximalne neaky ,ktory moc neublizi... Ja mam tiez takto, a stalo sa mi to iste ako vyssie... Davajte si bacha co robite, lebo aj Pawn dokaze znicit vas pocitac
  23. Ahoj. Málo kdo ví o tom, že lze přidat do webové stránky obsah i pomocí CSS. Toho se dá využít třeba při tvorbě redakčních systémů, nebo webových šablon. Uživatel si pak může změnit text přímo v souboru se vzhledem a nemusí se vůbec vyznat v kódu. Příklad: <html> <head> <style> #testdiv{background-color:red;} /*Nastylování DIVu testdiv (není nutné)*/ #testdiv:after{content: "copyright 2006";} /*Vypsáni textu do DIVu testdiv*/ </style> </head> <body> <div id="testdiv"></div> <!-- DIV do kterého budeme vypisovat text --> </body> </html> Není to nic složitého, ale třeba se to někomu bude hodit,a nebo alespoň už víte že něco takového existuje
  24. Čaute lidičky, chtěl bych vám ukázat moje první Online Rádio. Udělal jsem to přes příkaz, z důvodu že přes dialog se to hádá s jinými FS. Tento Tutoriál je hlavně pro nováčky... S tímto se rychle dokážou naučit pawnit Musí to být vložený do vašeho GM... Nahoru do pawna: OnPlayerConnect OnPlayerCommand A úplně dolů #endif Doufám že se nováčkům v pawně bude docela hodit... Můžete si tam dát rádií kolik chce PS: Já jsem jeden znich Toto je můj první TuT EDIT: přidávám stopku + naplácal jsem tam jeden nesmysl teď nyní funguje 100%(Kdyžtak hukněte pokud problémy)
  25. Vytvořil jsem si jednoduchý skript do módu Reality, nicméně rád bych se podělil o tuto funkci. Je to v celku jednoduché. Je jedno jestli chcete udělat cenzuru sprostých slov, nebo chcete prostě jen nahradit nějaký text ve větě, tato funkce vyřeší váš problém. Příklad : Moje máma je pěkná mrcha. S touto funkcí odstraníme slovo "máma" a místo ní dáme "zubařka". Moje zubařka je pěkná mrcha. Samotná funkce vypadá takto stock StringReplace(full_string[], string_find[], string_replace[], bool:ignorecase = false) { new start = strfind(full_string, string_find, ignorecase); if(start == -1)return 0; new string_pred[256],string_za[256]; format(string_pred, sizeof(string_pred), "%s", full_string); format(string_za, sizeof(string_za), "%s", full_string); strdel(string_pred, start, strlen(full_string)); strdel(string_za, 0, start+strlen(string_find)); format(full_string, 256, "%s%s%s", string_pred, string_replace, string_za); return 1; } Použití je jednoduché StringReplace("Zelenina je hnusná!!!", "hnusná", "zdravá"); "Zelenina je hnusná!!!" - Původní věta "hnusná" - slovo které chceme nahradit "zdravá" - slovo které použijeme místo modrého slova (v našem případě "hnusná") pokud máte zájem můžete použít další parametr který může brát SLoVo stejně jako Slovo, pokud parametr nepoužijete (nebo bude nastaven na flase) bude SLoVo jiné než Slovo. true - SLoVo je stejné jako Slovo false - SLovo je jiné jako Slovo
×
×
  • Create New...