Jump to content

Search the Community

Showing results for tags 'script'.

  • 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. zdravim dnes bude jen kratky navod na /setloc /teleport pomoci typu prikazu ZCMD. nikde jsem nenasel navod na setloc teleport, tak to sem davam. jestli nekde je navod, tak moje chyba. takze nejdriv vytvorime toto: CMD:setloc(playerid){ return 1; } po te dovnitr napiseme toto: GetPlayerFacingAngle(playerid, Angle); GetPlayerPos(playerid,pX,pY,pZ); new meno[MAX_PLAYER_NAME+1]; new text[128]; GetPlayerName(playerid, meno, sizeof(meno)); format(text, sizeof(text), "{00FF00}Hráč %s uložil veřejnou pozici {FFFFFF}->>> /teleport", meno); SendClientMessageToAll(COLOR_CYAN, text); zpravu muzete zmenit... cele by to melo vypadat takto: CMD:setloc(playerid){ GetPlayerFacingAngle(playerid, Angle); GetPlayerPos(playerid,pX,pY,pZ); new meno[MAX_PLAYER_NAME+1]; new text[128]; GetPlayerName(playerid, meno, sizeof(meno)); format(text, sizeof(text), "{00FF00}Hráč %s uložil veřejnou pozici {FFFFFF}->>> /teleport", meno); SendClientMessageToAll(COLOR_CYAN, text); return 1; } dale si vytvorime toto... CMD:teleport(playerid){ return 1; } po te tam napiseme tohle.. new car = GetPlayerVehicleID(playerid); if(IsPlayerInAnyVehicle(playerid)){ SetVehiclePos(car,pX,pY,pZ); SetVehicleZAngle(car, Angle); }else{ SetPlayerPos(playerid,pX,pY,pZ); SetPlayerFacingAngle(playerid,Angle); } new meno[MAX_PLAYER_NAME+1]; new text[128]; GetPlayerName(playerid, meno, sizeof(meno)); format(text, sizeof(text), "{00FF00}Hráč %s se teleportnul na veřejnou pozici {FFFFFF}->>> /teleport", meno); SendClientMessageToAll(COLOR_CYAN, text); zpravu si opet muzete zmenit a jeste si napiste nekde nahoru tohle, a mate hotovo: new Float:pX,Float:pY,Float:pZ,Float:Angle; doufam ze tento tutorial pomohl do nejakeho modu, nebo do cehokoliv myslim ze urcite ano... a jestli ne, tak mě je to jedno, pokračuji dale a dale... INCLUDE ZCMD: https://uloz.to/!u66tZaF7/zcmd-inc
  2. HighPrint

    script NPC inGame Maker

    NPC inGame Maker v.10000000 Zdravím, Chtěl bych vám představit svůj jeden FS a to na vytváření ingame NPC. Primárně byl vytvořen pro movie makery za účelem natáčet videa bez pomocí herců, případně s jejich nedostatkem. Rozhodl jsem se, že se s vámi podělím. Je to poměrně jednoduchý script, všechno co potřebujete je plugin sscanf, 2 soubory – NPCFoot.amx, NPCVeh.amx do npcmodes aka primární soubory, které budou komunikovat s FS, a samotný soubor FS. Optimalizovaný je dost, chyby v něm snad žádné nejsou, ale kdyby měl někdo námitky, jak něco provést lépe, budu akorát rád. V čem se liší můj script od ostatních? Rozhodně je unikátní v tom, že nepoužívá žádný fileManager pluginy a relativní cestou si dokáže najít svoji nahrávku, kterou si nahrajete. Tzn. není potřeba žádná znalost pawna, pokud hodláte script jen využívat. Všechno co potřebujete vědět jsou tři základní příkazy – /ncreate /nstop /nload. Avšak jako všechny FS/pluginy je můj script omezený maximálním počtem NPC na serveru. Jak vlastně script funguje? Bot, který se připojí na serveru pošle serveru příkaz (Pozn.: žádná kolize s příkazy nedojde), script na ten příkaz zareaguje a pošle se zpátky relativní cesta nahrávky do NPC souboru. Koho to zajímá, může si to zkusit vyčíst z kódu. Updaty Tato verze je opravdu ta nejjednodušší, která obsahuje pouze základní příkazy pro tvorbu. Jelikož nedávno jsem dostal chuť si pohrát znovu s pawnem a Jizzy ho potřeboval optimalizovat pro 0.3.7, tak jsem souhlasil a budu ještě přidávat další features. Např. bude propojené s databází na vyvolání více NPC najednou, tzn. využití se rozšíří nejen pro movie makery. Videa Jak jsem říkal, můj script byl ze začátku vytvořený pro movie makery, proto obsahoval spoustu příkazů na natáčení jako třeba zavolání animace pro NPC a jejich časování apod. Script měl ovšem pouze Evro a Jizzy. Zde jsou ukázky filmů, ve kterém byly moje NPCs. https://www.youtube.com/watch?v=vuCq5WFXPBg – First Date by Jizzy https://www.youtube.com/watch?v=5rJcShsfOpw – Afterlife 2 by Jizzy https://www.youtube.com/watch?v=VKMYVQTuyew – This is War 2 by [boSA]Evro[EeP] Příkazy Po třetí, tato verze je nejjednodušší obsahujíc jen pouze pár základních příkazů: /ncreate name – začne nahrávka s názvem name, dle toho jestli jste ve vozidle se rozpozná o jakou nahrávku se bude jednat /nstop – zastaví nahrávku a uloží se do ScriptFiles /nload name <skin = userskin> <vehicleid = 0> – Velmi důležitý příkaz. Nahraje bota s názvem name a nepovinnými parametry jsou skin a vehicleid. V případě, že je nahrávka NPC ve vozidle, je potřeba určit vehicleid (nikoliv modelid), v opačném případě, se NPC crashne a vyhodí se. Pokud neurčíte skin, bot se nahraje se skinem, které máte na sobě. /ndl – zobrazí informace o NPC nad jejich hlavou, něco jako klient příkaz /dl. /nrep id true/false – Příkaz na opakování pro NPC. Pokud je false, nahrávka se zopakuje jen pouze jednou. /nkick id – vyhodí NPC. /ndel name – vymaže nahrávku name Ukázka mé práce v praxi Video je starší, obsahujíc nejstarší verzi (za video díky Jizzymu), proto můžete vidět anglický text (původně jsem měl na mysli, že ho posdílím s forum.sa-mp.com, rozhodl jsem se smazat svůj topic, když mi dennodenně psali 20 lidí, jak ten script zprovoznit) a také staré barvičky. Pozn.: Název videa je trochu zavádějící, UNLIMITED opravdu není. Download http://pawno.cz/files/file/23-npc-ingame-maker/ Obsahuje: filterscripts/npc_creator.pwn npcmodes/NPCfoot.pwn npcmodes/NPCveh.pwn plugins/sscanf.dll plugins/sscanf.so include/zcmd.inc include/sscanf2.inc Závěr Námitky, poznámky, chyby – budu rád, když je najdete. Pokud máte nějaké nápady jak vylepšit kód, neváhejte mi napsat. Jinak drobnost, kterou asi už nevím kam vecpat. Jedná se o funkci IsValidVehicle, z nějakého důvodu se autor SA:MP rozhodl tuto funkci nezahrnout do hlavní knihovny, avšak normálně existuje. Proto si do a_samp.inc přidejte native IsValidVehicle(vehicleid); A taky chci poděkovat Jizzymu za video, zčekněte jeho fb: http://facebook.com/JizzyVideos -------------------------------------------------- UPDATE v1.0000002 MINOR – Ošetřené proti natáčení v autě a vystupování. – small bugfixes – v /nrep jsem zapomněl vyvolání nahrávky v případě ukončení / optimalizace – zbytečné vyvolávání getNpcId. MAJOR – Nyní můžete vyvolat více nahrávek najednou, fungujou na bázi databáze. Přemýšlel jsem, že je předělám do dialogu ať je to víc "user-friendly", ale rozhodl jsem se pro příkazy. Zde je seznam: /ndatadd název DB:id skin vehicleid repeat – přidá nahrávku do databáze. - název – klasika, kterou známe. Jedná se o název nahrávky bez koncovky .rec - DB:id – ID databáze, není třeba předem nijak deklarovat ani definovat. - vehicleid – vehicleid, nikoliv modelid. Pokud bude někdo mít zájem, můžu předělat na modelid, stačí napsat. - repeat – true/false 0/1, jedná se o opakování. /ndatdel DB:id název – smaže nahrávku z databáze - DB:id – ID databáze, není třeba předem nijak deklarovat ani definovat. - název – název nahrávky. /ndatlist DB:id <limit> – vypíše databázi s limitem v range (limit-(limit+50)) - DB:id – ID databáze - <limit> – nepovinný parametr. Jedná se o limit kvůli přehlednosti v chatu. /ndatall DB:id – vyvolá všechny nahrávky z databáze - DB:id – ID databáze /ndatdelall DB:id – smaže celou databázi - DB:id – ID databáze
  3. Ewwe

    ostatní Banlist parser

    Zdarec, Hodně hostingů nabízí banlist, který si můžete umístit na web. Jenže co si budeme říkat... Ten banlist je hnusnej... A tak jsem včera udělal takovej scriptík díky kterému si můžete ze serveru banlist stahovat a nastylovat si ho jak se vám zlíbí. Script pro PHP 5 : ZDE Script pro PHP 7 : ZDE Nastavení a sprovoznění: require( "[CESTA_K_SOUBORU_S_TŘÍDOU]/Banlist.parser.class.php" ); $ban = new Banlist( "ftp_host" , "ftp_user" , "ftp_heslo" ); $ban->getBanlistFile(); Tím tedy připojíte FTP a stáhnete soubor s banlistem a smažete starou verzi ( pouze v případě že se nový banlist stahne ) Nyní pro vypsání můžete použít několik funkcí Pokud se stím nechcete "srát" a chcete mít banlist v tabulce tak stačí použít funkci stylizeRow a případně stylizeRowEcho Použití stylizeRow <?php $banlist = $ban->stylizeRow("<td>" , "</td>" , "<tr>" , "</tr>" ); foreach( $banlist as $banned ) { echo $banned; } ?> Použití stylizeRowEcho <?php $ban->stylizeRowEcho("<td>" , "</td>" , "<tr>" , "</tr>" ); ?> V případě že si chcete sami nastylovat a nadesignovat banlist je tu funkce parseBanlistFile $bany = $ban->parseBanlistFile(); foreach( $bany as $banned ) { Jednotlivé informace jsou pak uloženy v $banned["IP"] $banned["DATE"] $banned["PLAYER"] $banned["REASON"] To je tedy vše. Pokud PHP umíte tak nejspíše si napíšete vlastní, ale v opačném případě jsem Vám snad pomohl.
  4. rEf

    script Lov (hitman)

    /* Hunt "netestované" (nudil jsem se tak mě napadl systém lovu který označuje loveného hráče na mapě (ikona) a po jeho zabití získá lovec odměnu) - využívá ZCMD (google: zcmd.inc) a sscanf (google: samp wiki sscanf code) */ enum HuntInfo { hunt_id, hunt_timer, hunt_reward, hunt_state }; new Hunt[HuntInfo]; forward Hunting(playerid); public Hunting(playerid){ new Float:x, Float:y, Float:z; if(Hunt[hunt_state] == 1) RemovePlayerMapIcon(playerid, 0); // když je lov aktivní smaže ikonu aby se mohla vytvořit opět GetPlayerPos(playerid, x, y, z); // zjistíme pozici hráče SetPlayerMapIcon(playerid, 0, x, y, z, 2, 0, MAPICON_GLOBAL); // nastavíme na pozici map ikonu (za 1s se smaže a nastaví nová na novou pozici) if(Hunt[hunt_state] != 1){ // když není aktivní lov tak ... Hunt[hunt_id] = playerid; // ... nastavíme na hunt_id id loveného Hunt[hunt_timer] = SetTimerEx("Hunting", 1000, true, "i", Hunt[hunt_id]); // spustíme opakovaný sekundový timer (kvůli aktualizaci ikony) Hunt[hunt_state] = 1; // nastavíme lov jako aktivní } return true; } CMD:hunt(playerid, params[]){ new id = strval(params), reward, s[128]; if(sscanf(params, "ud", id, reward)) return SendClientMessage(playerid, -1, "/hunt [id hráče] [odměna v $]"); else if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "Toto ID neexistuje."); else if(IsPlayerNPC(id)) return SendClientMessage(playerid, -1, "Toto je NPC."); else if(reward =< 0) return SendClientMessage(playerid, -1, "Chybně zadaná odměna."); format(s, sizeof(s), "Hráč %s spustil lov hráče %s. (Odměna: $%d)", PlayerName(playerid), PlayerName(id), reward); SendClientMessageToAll(-1, s); Hunt[hunt_reward] = reward; // nastaví odměnu Hunting(id); // spustí hlavní public (lov) return true; } CMD:endhunt(playerid, params[]){ if(Hunt[hunt_state] != 1) return SendClientMessage(playerid, -1, "Aktuálně se žádný lov nekoná."); Hunt_End(); return true; } public OnPlayerDeath(playerid, killerid, reason){ if(killerid != INVALID_PLAYER_ID){ // kontrola zda ho zabil hráč a neumřel sám if(Hunt[hunt_state] == 1){ // kontrola zda je lov aktivní if(playerid == Hunt[hunt_id]){ // kontrola zda id zabitého je id zapsané na hunt_id new s[128]; format(s, sizeof(s), "Hráč %s ulovil loveného %s a získal $%d.", PlayerName(killerid), PlayerName(Hunt[hunt_id]), Hunt[hunt_reward]); SendClientMessageToAll(-1, s); GivePlayerMoney(killerid, Hunt[hunt_reward]); // dá peníze lovci Hunt_End(); } } } return true; } stock Hunt_End(){ // zruší map ikonu, timer a resetuje informace SendClientMessageToAll(-1, "Lov byl ukončen."); RemovePlayerMapIcon(Hunt[hunt_id], 0); KillTimer(Hunt[hunt_timer]); Hunt[hunt_id] = -1; Hunt[hunt_reward] = 0; Hunt[hunt_state] = 0; return true; }
  5. Scydo

    script [INC][SbA] Porty

    SHORT BUT ADVANCED PORTY Jde o takovou sérii includů, které mají nějaký jednoduchý základ nebo jsou velice často publikované, ale budou jednoduše zpracované(nemenší možný počet řádků, dobrá optimalizace, výborná přehlednost aj.) s nějakým zajímavým doplňkem, bez použití jiného includu než a_samp. Stardartní porty jsou velice často zpracované ve formě scriptu, tak, že se nachází v callbacku OnPlayerCommandText a s příkazy /setport /port a /delport. Já se to rozhodl zpracovat ve formě includu, takže s tím může uživatel jednoduše pracovat a aby to nebylo málo, lze povolit(založit/spustit) více portů najednou. Zde je seznam fcí, které obsahuje tento includ: SetGlobalLocation() - Hlavní fce. Uloží pozice daného port(id) a zpřístupní ho všem. RemoveGlobalLocation() - Zruší možnost warpnut se na daný port(id). SetPlayerPortID() - Warpne hráče/hráče včetně vozidla na daný port(id). IsPortEnabled() - Zjistí, zda je daný port(id) zpřístupněn. ArePortsEnabled() - Zjistí, zda jsou všechny port(id) zpřístupněny. GetFreePortID() - Zjistí nejbližší port(id), které je zpřístupněné. SetGlobalLocation Parametry: (iPortID, bool:bVehicles, Float:fXpos, Float:fYpos, Float:fZpos) iPortID - ID daného portu. bVehicles - Povolit(true) či zakázat(false) hráčům se portou i s vozidlem. fXpos - X-ová pozice portu. fYpos - Y-nová pozice portu. fZpos - Z-tová pozice portu. Return: Tato funkce nevrací nic zvláštního. RemoveGlobalLocation Parametry: (iPortID) iPortID - ID daného portu. Return: Tato funkce nevrací nic zvláštního. SetPlayerPortID Parametry: (playerid, iPortID) playerid - ID hráče, kterého má warpnout. iPortID - ID daného portu. Return: Dle fcí(SetPlayerPos či SetVehiclePos). IsPortEnabled Parametry: (iPortID) iPortID - ID daného portu.. Return: Proměnná s hodnotou true či false. ArePortsEnabled Parametry: Neobsahuje žádné parametry. Return: true - v případě, že je jen jediný z portů(id) zpřístupněn. false - v případě, že žádný z portů(id) není zpřístupněn. GetFreePortID Parametry: Neobsahuje žádné parametry. Return: PortID - v případě, že nalezne neblížší zpřístupněné port(id). -1 - vrátí, jestli-že nenajde. Jelikož jsou zpracovaný jen jako ve formě hodnot a ne jako již "před připraveného scriptu", lze s nimi vytvořit několik způsobů port systémů. Například si můžete zvolit jen jediný port(id) a s nim pracovat jako u normálních častých scriptů: A nebo tedy si udělat systém, kde bude možno se portout na více portů: DOWNLOAD Pawno.cz Pastebin
  6. SKEAKYEVIL.PWN - EVENT, RADIO SCRIPT Zdravím. Po nedávné... takové zajímavé rozpravě z jedním z uživatelů na tomto fóře, se rozhodl(ten uživatel) nám dát do rukou "jeho" "script", který podle jeho vlastních informací, on sám vytvořil. Ale já, a velká většina lidí určitě bude souhlasit, že toto nemůže být na 100% jeho práce. Nechci se již zdržovat s hledáním podobných kódů, či stejných kódů. Na to tu jsou jiní odborníci (Xogos). Potvrdil to hlavně "jeho" zveřejněným gamemodem, který nebyl nic více než jen zkopírovaný návod na y_ini a nebo neustálím zakládáním help topiců. Bohužel. Patřičný uživatel již na to zveřejnil topic akorát ho zamkl a doufá, že mu to nikdo nemůže zkritizovat (ale ani pochválit), tož je taky jeden z důvodů proč zakládám tento topic. Aby jste i vy mohli říct kritiku/pochvalu tomuto "scriptu".... Máme právo svobodného projevu podle článku 10 viz. úmluva o ochraně lidských práv a základních svobod: Abych se vyhnul vaším příspěvkům například typu: "ty ho tímhle jenom shazuješ", nebo "jsi akorát hejter", tak jsem si dovolil přidám sem ocitovanou zprávu od jiného uživatele, který již dělal něco podobného. Přidal takové upozornění, se kterým sympatizuji, a doufám, že vy budete také: Tak, nebudu to už zbytečně zdržovat, a pustíme se rovnou do toho. Jako první, čeho si můžeme všimnou je práce s deklarováním proměnných a s preprocesorem: Velice zajímavé, že ano? Přidává direktivní podmínku, že v případě, že je definován "FILTERSCRIPT", tak se začne volat callback OnFilterScriptInit, a v případě, že ne, tak se teprve deklarují proměnné(a ještě main samozřejmě). Dle poznámky uncomment the line below if you want to write a filterscript, což by se dalo přeložit jako: že v případě, že děláme FS tak máme odstranit komentář že řádku pod ním... bychom tak učinili, měli bychom hromadu chyb(OBRÁZEK). Jestli to byl záměr "autora" či ne... To nikdo neví. Už máte zvolené nějaké jméno gamemodu a určitě nechcete aby vám ho nějaký script přepsal? To bohužel s použitím tohoto "scriptu" máte smůlu. Hned ze začátku nám "autor" přidat fci, která přepíše jmeno GM: public OnGameModeInit() { SetGameModeText("Realna Zeme Rework v2.1"); V dalším kódě uživatel zřejmě neumí pracovat s polem, a proto má za každou deklarovanou proměnnou číslo, které nejspíše udává pořadí(Radio1, Radio2, Radio3...): Další čeho si můžeme všimnout, že zbytečně volá callbacky, které nevyužívá: Za další máme zřejmě jakou si "ochranu" před secret příkazy pro rze. Proč "autor" přidává podmínku na každý příkaz a nepřidá na to jednoduše proměnnou s polem? Jedinou podmínkou bude moct zkontrolovat, jestli nezadal jeden z těch příkazu, ale to opět, nic takového zřejmě nezná: Právě teď jsem úplně ztracený... hned ze začátku nám "autor" do fce přidal, že gamemod, na který se tento "script" přidá, tak bude "rework"(aka něco na způsobu "předělané"), ale on nám zakazuje všechny základní příkazy v rze. Proč? Opět: To nikdo neví?... Hned pod ním, je další "příkaz". Ale obsah je... zvláštní. Nejdříve po zadání příkazu, deklaruje proměnnou s různou hodnotou a pak jí přepne.. přidá 2 podmínky a tím skončí. Důvod existence? To nikdo neví: if (strcmp("/test", cmdtext, true, 10) == 0) { new rand = random(7); switch(rand) { case 0: { } case 1: { } case 2: { } } return 1; } A nakonec v callbacku máme poslední příkaz, a to /pp. Akorát, je celý zapoznámkovaný. Což inu dobře, ale proč "autor" nepoužil /* */ ? To ani to nezná?... //if (strcmp("/pp", cmdtext, true, 10) == 0) //{ //if(Port == 0) //{ //Port = 1; //} //return 1; //} //if (strcmp("/pop", cmdtext, true, 10) == 0) //{ //if(Port == 0) //{ //SendClientMessage(playerid,0xFFFFFFFF,"PORT JE ZATVOREN"); //} //if(Port == 1) //{ //SendClientMessage(playerid,0xFFFFFFFF,"PORT JE OTVOREN"); //} //return 1; //} No, v callbacku raději skončíme a pokračujme na callback OnPlayerEnterVehicle. První co mě zarazí je neskutečný "spam" fcí TextDrawHideForPlayer: TextDrawHideForPlayer(playerid, Radio1); TextDrawHideForPlayer(playerid, Radio2); TextDrawHideForPlayer(playerid, Radio3); TextDrawHideForPlayer(playerid, Radio4); TextDrawHideForPlayer(playerid, Radio5); TextDrawHideForPlayer(playerid, Radio6); TextDrawHideForPlayer(playerid, Radio7); TextDrawHideForPlayer(playerid, Radio8); TextDrawHideForPlayer(playerid, Radio9); TextDrawShowForPlayer(playerid, Radio1); Chcete vědět, kolik jich přesně je v celém "scriptu"? Nepočítejte, udělám to za vás, a to přesně 251. Hrůza! Fuj!... Tady mohl krásně na to využít "autor" pole a cyklem a zkrátilo by se to alespoň na pouhých pár desítek, ale to bohužel nezná... Snad vám je tady nebudu muset všechny vypisovat. To raději skočíme až na callbacky "autora": Takže, pokud jsem to správně pochopil z fci, kde tyto fce volá, tak každý tento callback nám spustí event o dané výhře 1mega, 5mega, 10mega a tak dále... Ne jenom, že uživatel nemá možnost si tedy vepsat vlastní výhru, ale proč to "autor" řeší tak zbytečně blbě? Stačí deklarovat jedinou promměná a jediný callback... a on jako řešení volá hned 8 callbacků. Peuu... To samé udělal i se startem těch eventů: No rozebírát všechny chyby by bylo na hodiny... A na konec tu máme callback, který se zřejmě volá po příchodu na server. Opět "autor" zřejmě neumí pracovat s cyklem: Hodnotím 1/10 za shanu+za snahu skrýt okopírovaný zdrojový kód... Grafické zpracování inspirováno(červená velká písmena) uživatelem Lukasz. INFO Slova, která jsou v uvozovkách značí pochyby... například "autor" značí, že člověk, který dělal na tomto scriptu, zcela zřejmé nezpracoval celý script sám na 100%, či "script", zase značí pochyby o správném zpracování scriptu. "Autorem" tohoto "scriptu" je R0cky. Script naleznete zde: http://pawno.cz/topic/53154-event-system-a-radio-pwn/
  7. Tu máte můj Event System a Radio ktoré hraje iba v aute. Lockuju hned lebo nekterý si omne mysli že kopiruju nevim čo si stále myslite... (Daniels, Lukasz, SkiBig18 atd..) No tak tu mate link: http://uloz.to/xrJuaTs9/sneakyevil-pwn Když tak poupravte. Event spustite napsanim: /esna - spustit event Vyberete Kopec Smrti nebo Let Smrti pak o kolik se hraje když skonči event napišete /esna date vybrat výherce a tam napíšte ID IDHRACE A když mate RZE mate tam pár príkazu ktere blokuje pujcku a když tak neco zmazte.
  8. Apache

    script Minomet

    Zdravím, tak mě napadlo, udělat minomet, ve stylu tepelného zaměřování, attachuntý na Yosemite. Do hlavy mi skočila myšlenka, tak sem se jí teda snažil udělat co nejreálněji.. Script obsahuje celkem 3 příkazy, /yosemite pro spawnutí vozidla s minometem, /desyosemite a /sestrelit id. A ted samotné vystřelení, pro sestřelí zadaného ID nesmí být od vás víc jak 200 metrů. Při výsřelu letí projektil svísle nad vás a přibližně po 500 metrech začne padat na zadané ID řízený projektil. Při testování sem žádný bug nenašel. Sem nováček, tak berte ohled na to, že né vše bude napsané zrovna nejlíp Downoad > http://ulozto.cz/xMFE8pVb/minomet-sa-mp-rar < #include <a_samp> #define SCM SendClientMessage new Yosemite; new Javelin; new Projektil; new Nabiti[MAX_PLAYERS]; new VY[MAX_PLAYERS]; new Sestreleny; public OnFilterScriptInit() { print("\n--------------------------------------"); print(" Minomet by Misan"); print("--------------------------------------\n"); SetTimer("YosemiteInfo", 600000, true); return 1; } forward YosemiteInfo(playerid); public YosemiteInfo(playerid) { if(!IsPlayerAdmin(playerid)) return SCM(playerid, 0x00FF00, "Na serveru se nachází pojízdný minomet, můžeš požádat RCON administrátora, aby ti ho spawnul!"); else if(IsPlayerAdmin(playerid)) return SCM(playerid, 0x00FF00, "Na serveru se nachází pojízdný minomet, pro použití zadej /yosemite nebo /sestrelit id"); return 1; } forward NabitiJavelinu(playerid); public NabitiJavelinu(playerid) { Nabiti[playerid] = 0; return 1; } forward ZamireniCile(playerid); public ZamireniCile(playerid) { new Float: X, Float: Y, Float: Z; new Float: OX, Float: OY, Float: OZ; GetPlayerPos(Sestreleny, X, Y, Z); GetObjectPos(Projektil, OX, OY, OZ); MoveObject(Projektil, X, Y, Z, 35); SetTimerEx("TepelneZamerovani", 10, 1, "i", playerid); if(OZ == Z) { DestroyObject(Projektil); } return 1; } forward TepelneZamerovani(playerid); public TepelneZamerovani(playerid) { new Float: X, Float: Y, Float: Z; new Float: OX, Float: OY, Float: OZ; GetPlayerPos(Sestreleny, X, Y, Z); GetObjectPos(Projektil, OX, OY, OZ); MoveObject(Projektil, X, Y, Z, 70); if(OZ + random(1) == Z) { DestroyObject(Projektil); CreateExplosion(OX, OY , OZ, 6, 10); } return 1; } public OnVehicleDeath(vehicleid, killerid) { DestroyVehicle(Yosemite); DestroyObject(Javelin); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/yosemite", cmdtext, true, 10) == 0) { if(!IsPlayerAdmin(playerid)) return SCM(playerid, 0x00FF00, "[!] Tento příkaz je určen pro RCON administrátory [!]"); else if(IsPlayerAdmin(playerid)) { new Float:X, Float:Y, Float:Z, Float:A, Jmeno[15], Text[65]; GetPlayerPos(playerid, X, Y, Z); GetPlayerFacingAngle(playerid, A); Yosemite = CreateVehicle(554, X, Y, Z, A, 0, 1, 3000); Javelin = CreateObject(360, X, Y, Z, 0.00000, -90.00000, 90.00000); AttachObjectToVehicle(Javelin, Yosemite, -0.02941, -0.68162, 0.40010, 0.00000, -90.00000, 90.00000); GetPlayerName(playerid, Jmeno, sizeof (Jmeno)); format(Text, sizeof(Text),"[!] RCON Administrátor %s spawnul pojízdný minomet [!]",Jmeno); SendClientMessageToAll(0x00FF00, Text); } return 1; } if (strcmp("/desyosemite", cmdtext, true, 10) == 0) { new Jmeno[15], Text[65]; DestroyVehicle(Yosemite); GetPlayerName(playerid, Jmeno, sizeof (Jmeno)); format(Text, sizeof(Text),"[!] RCON Admistrátor %s nechal pojízdný minomet zničit [!]",Jmeno); SendClientMessageToAll(0x00FF00, Text); DestroyObject(Javelin); return 1; } if (strcmp("/sestrelit", cmdtext, true, 10) == 0) { new Float:X, Float:Y, Float: Z, SJmeno[15], Jmeno[15], Text[60]; Sestreleny = strval(cmdtext); GetPlayerPos(playerid, X, Y, Z); GetPlayerName(Sestreleny, SJmeno, sizeof(SJmeno)); if(!strlen(cmdtext)) return SCM(playerid, 0x00FF00, "[!] Použití /sestrelit id [!]"); else if(!IsPlayerConnected(Sestreleny)) return SendClientMessage(playerid, 0x00FF00, "[!] Žádné takové ID není připojené [!]"); else if(playerid == Sestreleny) return SCM(playerid, 0x00FF00, "[!] Šílenče! Chceš se snad nechat zabít? [!]"); if(IsPlayerInRangeOfPoint(Sestreleny, 200, X, Y, Z)) { if(Nabiti[playerid] == 0) { if(VY[playerid] == 1) { GetPlayerName(playerid, Jmeno, sizeof(Jmeno)); format(Text, sizeof(Text),"[!] Hráč %s vystřelil z minometu na hráče %s [!]", Jmeno, SJmeno); SendClientMessageToAll(0x00FF00, Text); Projektil = CreateObject(345, X -0.07671, Y -0.84980, Z + 1.10453, 90.00000, 0.00000, 0.00000); MoveObject(Projektil, X, Y, Z + 3000, 32); Nabiti[playerid] = 1; SetTimerEx("NabitiJavelinu", 10000, false, "i", playerid); SetTimerEx("ZamireniCile", 4000, false, "i", playerid); } else SCM(playerid, 0x00FF00, "[!] Nejsi ve speciálním yosemitu [!]"); } else GameTextForPlayer(playerid, "Nabijim", 1000, 1); } else if(!IsPlayerInRangeOfPoint(Sestreleny, 200, X, Y, Z)) return SCM(playerid, 0x00FF00, "[!] Hráč na kterého se chystáš vystřelit musí být od tebe míň jak 200 metrů [!]"); return 1; } return 0; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { if(vehicleid == Yosemite) { VY[playerid] = 1; SCM(playerid, 0x00FF00, "Nasednul si do vojenského Yosemitu, pro vystřelení z minometu zadej /sestrelit id"); } return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { if(vehicleid == Yosemite) { VY[playerid] = 0; } return 1; } Minomet SA-MP.rar
  9. LukYs

    script Umeni v dialogu

    Umeni Jsem novacek, takze necekejte nic velkeho... Bojova Umeni: Normalni Box Kung-fu Knee Head Grab Kick Elbow Downloand: http://ulozto.cz/xffUw6AC/umeni-pwn
  10. Zdravím. Prostě a jelikož u příspěvku BTomase bylo DMCD, rozhodl jsem se to dát do CMD. Obsahuje to úplně to samé, takže funkce je stejná. http://pawno.cz/files/download/32-radiosystem/ Není to moje práce, takže mě nemusíte hodnotit
  11. Tomas99

    script Respawn aut

    Zdravím vás lidi. Tak jsem se maličko nudil a někdo po mě chtěl udělat script na respawn prázdních aut. Pak už jsi o něj neřekl tak ho dám tady vám. Vozidla se respawnují bud po určité době, kterou lze změnit na řádku 6 a7 Nebo je můžete respawnout pomocí příkazu /rc
  12. Lukasz

    script [0/10] BUSINESS SYSTEM

    Dobrý den, na požádání autora toho scriptu, který naleznete zde na fóru (http://pawno.cz/files/file/29-dynamické-nemovitosti/), jsem se rozhodl sepsat menší kritiku kódu. Uvědomte si prosím, že kritika sama o sobě není nic záporného a je velice významná. Bez ní bychom se nikam neposunuli. Omlouvám se předem všem, koho se tento topic nějak nepříjemně dotkne. Ihned po otevření pwn scriptu nám autor zanechal velice znepokojující zprávu DIE IN HELL...N00008 Ignoroval jsem jeho výhrůžky a odvážně pokračoval ve čtení jeho kódu. Asi hned jako první prohřešek jsem narazil na tento krásný kód. stock PlayerName(playerid) { new name[255]; GetPlayerName(playerid, name, 255); return name; }Autor má asi jména delší, než povoluje SAMP (zajímalo by mě, proč zrovna 255) Dále tu máme funkci stock FormatTime(sekund, bool:exact = false) předpokládám, že jí nepsal sám autor.. nicméně if(sekund < 60) format(str, sizeof(str), "%i sekund", sekund%60);Protože zbytek po dělení (sekund / 60) nejsou už v proměnné sekund.. (ironie). V OnFilterScriptInit narážím na další podivnost for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)OnPlayerConnect(i);Autor zde využil "vychytávku" GetPlayerPoolSize, nicméně volá OnPlayerConnect.. V čem je problém? public OnPlayerConnect(playerid) // ***** tu má OnPlayerConnect z jiného FS asi { VEZENI[playerid] = TextDrawCreate(272.000000, 380.000000, "_"); TextDrawBackgroundColor(VEZENI[playerid], 255); TextDrawFont(VEZENI[playerid], 1); TextDrawLetterSize(VEZENI[playerid], 0.500000, 1.000000); TextDrawColor(VEZENI[playerid], -1); TextDrawSetOutline(VEZENI[playerid], 0); TextDrawSetProportional(VEZENI[playerid], 1); TextDrawSetShadow(VEZENI[playerid], 1); TextDrawSetSelectable(VEZENI[playerid], 0); return 1; }Problém je asi v tom, že tento textdraw pouze vytváří (a ničí) a nikde nezobrazuje, takže zbytečné pole, zbytečný TD, zbytečný cyklus a zbytečný callback. Tímto se dostáváme do OnFilterScriptExit, kde tento zbytečný TD ničí. Další problém nastává hned v dalším callbacku public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) if(newkeys & KEY_WALK) { for(new BussID = 0;BussID < sizeof(BusinessInfo);BussID++) { if(IsPlayerInRangeOfPoint(playerid, 4.0, BusinessInfo[BussID][bEntranceX], BusinessInfo[BussID][bEntranceY], BusinessInfo[BussID][bEntranceZ])) { new str[256],topstr[64]; if(smazano[BussID]==1) return SCM(playerid,WAR,"Tato nemovitost bude po restartu smazána"); { if(BusinessInfo[BussID][bOwned] == 0) { format(str,sizeof(str),"Koupit Nemovitost\t\t%i\n Vykrást",BusinessInfo[BussID][bPrice]); format(topstr,sizeof(topstr),"Nemovitost %s",BusinessInfo[BussID][bName]); ShowPlayerDialog(playerid,DialogBus1,DIALOG_STYLE_LIST,topstr,str,"Vybrat","Zavřít"); } if(BusinessInfo[BussID][bOwned] == 1) // else nezná? { format(str,sizeof(str),"Prodat Nemovitost\nVybrat výdělky\t\t\t{00ff00}%i{ffffff} $\nPronajmout ochranku\t\tzbyva{00ff00} %s{ffffff}\nVykrást\nInvestovat\nZměnit název Podniku\nProdat nemovitost hráči\nOdkoupit nemovitost",BusinessInfo[BussID][bMoney],FormatTime(BusinessInfo[BussID][bOchranka]-gettime(),true)); format(topstr,sizeof(topstr),"Nemovitost %s",BusinessInfo[BussID][bName]); ShowPlayerDialog(playerid,DialogBus2,DIALOG_STYLE_LIST,topstr,str,"Vybrat","Zavřít"); } } } } } return 1;Co tedy autor provádí špatně. Nejprve zjišťuje, u jaké nemovitosti hráč stojí. Mohl použít svojí funkci, kterou používá na stejné případy v jiných částech kódu, stock IsPlayerNearBizEnt(playerid), která vrací id nemovitosti, u které stojí. Dalším problémem je, že IsPlayerInRangeOfPoint není zrovna moc časově nenáročná funkce a autor zde po nalezení id nemovitosti cyklus neukončuje (neznalost break, return ?). Také zde má zbytečnou podmínku, kdy může krásně použít else a nic nekontrolovat dvakrát. Přesouváme se do OnDialogResponse, kde jsem narazil na toto if(dialogid==DialogBus1 && response)Někomu to může přijít jako vhodné, ale pokud bude response false, neprovede se blok podmínky a provádí se další podmínky. Dostane se to do takové fáze, že se nakonec vrátí 0. Vrácením 0 v OnDialogResponse zapříčiníme to, že se zavolá další OnDialogResponse v jiném scriptu. Zase zcela zbytečné. Zde by bylo vhodné něco ve stylu if(dialogid == DialogBus1) { if(!reponse) return 1; zbytek kódu }A hned v prvním (i v dalších) dialogu máme tento kód new string[MAX_PLAYER_NAME]; // LOOL format(string, sizeof(string),PlayerName(playerid)); strmid(BusinessInfo[BussID][bOwner], string, 0, strlen(string), MAX_PLAYER_NAME);stačilo by, aby PlayerName vracelo pole o velikosti MAX_PLAYER_NAME a mohli bychom udělat něco takového BusinessInfo[BussID][bOwner] = PlayerName(playerid);zcela zbytečné pole, zbytečný format (to jako wtf) a zbytečný strmid. U dalšího dialogu má autor. if(dialogid==DialogBus3) { if(!response) return 0; if(response)Zase se vrací 0 a volá se další OnDialogResponse Další obdobný problém jako s PlayerName. new string[24]; if (strlen(inputtext) < 5 || strlen(inputtext) > 24) return SCM(playerid, WAR, "Název musí obsahovat 5-24 znaků"); format(string, sizeof(string), inputtext); strmid(BusinessInfo[BussID][bName], string, 0, strlen(string), 24);V příkazu "gotobus" se nachází tento kód new BusinessList[2048];Přičemž do toho pole, ukládá max 300 znaků (?) Dalším prohřeškem je tento příkaz CMD:getfreebuss(playerid, params[],help) { new pocet[30]; for(new i = 0; i < sizeof(BusinessInfo); i++) { if(BusinessInfo[i][bOwned]==0) { if (IsValidDynamicPickup(BusinessInfo[i][bOutsideIcon])) { format(pocet,sizeof(pocet),"Volných nemovitostí %i",i); // TIMHLE FAKT NEZÍSKÁ POČET } } } SendClientMessage(playerid,EROR,pocet); return 1; } viz komentář v kódu Hned v dalším příkazu for(new i = 0; i < MAX_PLAYERS; i++) // PlayerPoolSize { if (strcmp(BusinessInfo[BussID][bOwner], PlayerName(i), false) == 0) { if(IsPlayerConnected(i)) { new msg[128]; format(msg,sizeof(msg),"Tvoje nemovitost %s byla smazána!",BusinessInfo[BussID][bName]); SendClientMessage(i,WAR,msg); } } // zase break }Zde již nevyužívá GetPlayerPoolSize, protože mu asi přišel moc novátorský a znovu "nevyskakuje" z cyklu, když může. A taková perlička, nejprve kontroluje jméno jestli se shoduje a až pak jestli je hráč připojený. Následně pak nastavuje timer na public, který v kódu neuvádí, tudíš usuzuji, že to někde okopíroval. Hodnotím 0/10 za snahu. Jsou tam ještě zbytečné proměnné, ale to by tento topic byl o dost delší. Autorem scriptu je náš Vladasavel.
  13. Lexter

    script Rádio Systém By Lexter

    Zdravím, tu je moje první fs.. rádio systém pro začátek.. Rádia: ​ Frekvence 1 Evropa 2 House Time Krokodýl Downloand: ( pwn ) http://uloz.to/xeCC8wJA/radiopawno-pwn EDIT: omlouvám se, nedal jsem tam příkaz na vypnutí rádia tu nový link: http://uloz.to/xt1umvAC/radiopawno-pwn
  14. TomasKuzel

    script RealTime

    Zdravím komunitu Pawno.cz Po dlouhé době jsem se nudil tak jsem přepsal autora u FilterScriptu, který nese název RealTime Tento FilterScript vám na server přidá: Realný čas: Hodiny, Minuty, Sekundy. Datum: Den, Měsíc, Rok Credits: FS by:ZaBraNjeNi Include a_samp by: Samp Team Download: http://http://pawno.cz/files/file/26-realtime/
  15. Dobry den mam takovy problem a nevim jak ho vyresit kdyz kicknu hrace napisu mu tam duvod id atd.. tak ono ho to kickne ale duvod mu to nenapise ale vsem ostatnim kdo je na serveru ano dekuji predem za pomoc
  16. SCYDO COREJOBS 0.1 Zdravím. Chtěl bych vám prezentovat script, který mě napadl vytvořit na základně celkem takové "drsnější" kritiky jednoho z uživatelů, který tady publikoval podobný include. Asi všichni víme, o koho a o co se jedná, ale i tak snad nebude vadit, když sem přidám pár výňatků: Určitě si teď někteří budou myslet, že jsem udělal další podobný include a zmiňuji toho dotyčného tady s úmyslem ho nějak poškodit, zesměšnit a já nevím co ještě... I když je to těžko uvěřitelné, opravdu o to nemám zájem. Spíše mi dopomohl k nápadu pro další mojí práci a navíc, když jsem si pročítal ty jisté komentáře, tak mě napadly další věci, které se brzo dozvíte. O SCJ Nejspíše znáte takové ty klišé JobSystémy. Všechno máte v jedné funkci, takže přidáte jen do patřičného callbacku, po případě přidáte ještě další callbacky do patřičných callbacků a tím to končí. Pak už jen přidáváte funkci, po funkci, která je někdy delší než řeka. Ale u SCJ ne jen, že na každou funkci nemusíte scrollovat do stran, ale navíc máte přehled, kam ke komu co přidáváte, a také s ním můžete pokračovat. Celý include obsahuje jen ty nejzákladnější či nejspíše nejpotřebnější funkce pro tvorbo prací na server, ale pokračování si může uživatel zrealizovat sám podle sebe. Velká většina funkcí nevyžaduje id těch prací, ale jejich jména v kódě, která si také může uživatel přidávat sám. Celá taková myšlenka, místo id práce vepisovat jména a přidávat další funkce, vznikla zrovna na základně komentáře: UKÁZKA SCJTady bych vám rád předvedl takovou ukázku, jak můžete pracovat s SCJ. Řekneme si, že si chceme vytvořit práci například Gang Vagos: #include <SCoreJobs01.inc> public OnFilterScriptInit() { SJob_Insert("vagos", "{FFFF00}Gang Vagos", 2220.9712,1251.9951,10.8203); SJob_SetSkins("vagos", 108, 109, 110); SJob_SetVyplata("vagos", 40000); return true; } (Nejspíše už většina z vás tuší, co jaká funkce, udělá. Jestliže ne, nevadí, vysvětlíme si to později) Nevypadá to tak složitě a nepřehledně, že ne? Samozřejmě se nenechte oklamat! Jediné, co v tomhle případě přesně udělá je, že se vytvoří pickup s jménem té patřičné práce a nastaví jí 3 skiny(a jeden z nich dostane hráč po přidání do té práce), a výplatu jen té práci. Nebude se nikomu dávat. Začátečník (po případě je možné, že i pokročilejší), se zeptá "Tak pak k čemu nám to je?". Odpověď je prostá: Tady si můžeme jaksi "přednastavit" co budeme potřebovat, a pak s volnou rukou, si už budeme moct pokračovat, jak chceme, a přidávat co chceme. Ještě více to zjednoduším: Protože, to právě budou ty klišé JS, kde přidáte jednu funkci a konec. Nemůžete s tím hráčem pak v těch pracích nějak manipulovat. Nemůžete pak nastavovat, jakou dostane výplatu, kromě té ve funkci. Nemůžete mu zjistit, v jaké je práci(jediné co, tak jestli je vůbec v nějaké). Nemůžete pak kdekoliv znova přenastavit výplatu, a tak dále... Prostě, všechno se udělá za vás a máte omezenější možnosti. SEZNAM FUNKCÍ VE SCJ Zde je kompletní seznam funkcí, který obsahuje include. Tady zobecním, co k čemu slouží jaká funkce, a pak si ukážeme příklad využití každé z nich. SJob_Insert() >> Přidává základ pro tvorbu prací (+vytvoří pickup s jménem práce). SJob_SetSkins() >> Nastaví globálně dané práci skiny, které se pak nastaví hráči po připojení do dané práce. SJob_SetVyplata() >> Nastaví globálně dané práci, jaká bude jeho výplata. SJob_Vyplata() >> Vrací hodnotu, jakou má nastavenou výplatu daná práce. SJob_Skin() >> Vrací jeden ze 3 skinu, které má nastavená daná práce. SJob_PrintJobInfo() >> Vypíše všechny potřebné informace o dané práci do konzole. SHasPlayerJob() >> Vrací hodnotu true/false, podle toho, jestliže je v nějaké z prácí. SGetPlayerJob() >> Vrací hodnotu true/false, jestliže, je v dané práci. SGetPlayerJobName() >> Vrací jméno práce v kódě v které se nachází hráč. SGetJobObjName() >> Vrací jméno práce ve hře. SJob_InsertPlayer() >> Vloží hráče do dané práce. SJob_RemovePlayer() >> Vyhodí(smaže) hráče z dané práce. IsPlayerOnJobsPickup() >> Vrací true/false, podle toho, jestliže je na nějakém z pickupů prací. IsPlayerOnJobsPickup() >> Vrací true/false, podle toho, jestliže je na daném pickupu u dané práce. SJob_Insert() (sJobName[], sJobObjName[], Float: fJobPosX, Float: fJobPosY, Float: fJobPos) sJobName[] - Jméno práce ve zdrojovém kódu. sJobObjName[] - Jméno práce ve hře(lze přidat i hexkód barvy). fJobPosX - X pozice nové práce (pickupu). fJobPosY - Y pozice nové práce (pickupu). fJobPosZ - Z pozice nové práce (pickupu). Ukázka využití: SJob_Insert("policie", "{0000FF}Policie", 2200.7500,1233.7435,10.8203); SJob_SetSkins() (sJobName[], iJobSkin1, iJobSkin2 = -1, iJobSkin3 = -1) sJobName[] - Jméno práce ve zdrojovém kódu. iJobSkin1 - Nastavit první skin pro práci. iJobSkin2 - Nastavit druhý skin pro práci. iJobSkin3 - Nastavit třetí skin pro práci. Ukázka využití: SJob_SetSkins("policie", 280, 285, 286); SJob_SetVyplata() (sJobName[], iJobVyplata = 25000) sJobName[] - Jméno práce ve zdrojovém kódu. iJobVyplata - Nastavit výplatu pro danou práci. Ukázka využití: SJob_SetVyplata("policie", 40000); SJob_Vyplata() (sJobName[]) sJobName[] - Jméno práce ve zdrojovém kódu. Ukázka využití: if (SHasPlayerJob(playerid)) GivePlayerMoney(playerid, SJob_Vyplata(SGetPlayerJobName(playerid))); SJob_Skin() (sJobName[], iJobSkinListID) sJobName[] - Jméno práce ve zdrojovém kódu. iJobSkinListID - Jeden ze tří nastavených skinů (pole s 0, 1 a 2). Ukázka využití: new iSkinList1 = SJob_Skin("policista", 0), iSkinList2 = SJob_Skin("policista", 1), iSkinList3 = SJob_Skin("policista", 2); SetPlayerSkin(playerid, iSkinList1); /* Nebo */ SetPlayerSkin(playerid, iSkinList2); /* Nebo */ SetPlayerSkin(playerid, iSkinList3); /* Nebo, je také možnost, která je i lepší: */ new iSkinSet = SJob_Skin("policista", random(3)); SetPlayerSkin(playerid, iSkinSet); SJob_PrintJobInfo() (sJobName[]) sJobName[] - Jméno práce ve zdrojovém kódu. Ukázka využití: SJob_PrintJobInfo("policie"); SHasPlayerJob() (playerid) playerid - ID daného hráče. Ukázka využití: if (SHasPlayerJob(playerid)) return SendClientMessage(playerid, "Jste zaměstnán!"); SGetPlayerJob() (playerid, sJobName[]) playerid - ID daného hráče. sJobName[] - Jméno práce ve zdrojovém kódu. Ukázka využití: if (SGetPlayerJob(playerid, "policie")) return SendClientMessage(playerid, "Jste zaměstnán jako policie!"); SGetPlayerJobName() (playerid) playerid - ID daného hráče. SGetJobObjName() (iJob_ID) playerid - ID dané práce. Ukázka využití: format(sString, sizeof(sString), "Jméno práce %s", SGetJobObjName( SGetJobIDFromName("policie") ); SJob_InsertPlayer() (playerid, sJobName[]) playerid - ID daného hráče. sJobName[] - Jméno práce ve zdrojovém kódu. Ukázka využití: if (!SHasPlayerJob(playerid)) { SJob_InsertPlayer(playerid, "policie"); SendClientMessage(playerid, "Jste zaměstnán jako policie!"); SJob_RemovePlayer() (playerid) playerid - ID daného hráče. Ukázka využití: if (SHasPlayerJob(playerid)) { SJob_RemovePlayer(playerid); SendClientMessage(playerid, "Opustil jste zaměstnání policie"); IsPlayerOnJobPickup() (playerid, sJobName[]) playerid - ID daného hráče. sJobName[] - Jméno práce ve zdrojovém kódu. Ukázka využití: public OnPlayerKeyStateChange(...) { if (IsPlayerOnJobPickup(playerid, "policista")) { if (PRESSED(...)) { SendClientMessage(playerid, -1, "Jsi na pickupu policista!"); IsPlayerOnJobsPickup() (playerid) playerid - ID daného hráče. Ukázka využití: public OnPlayerPickUpPickup(...) if (IsPlayerOnJobsPickup(playerid)) { if (SHasPlayerJob(playerid)) return SendClientMessage(playerid, -1, "Již jste zaměstnán jinde !"); PÁR ZAJÍMAVOSTÍ O SCJ Celé SCJ neukládá, kromě počtu zaměstnání u každé vytvořené práce, a souboru s jménem hráče rovnou ve scriptfiles. Tudíž, není třeba nikde nic vytvářet za složku. Funkce SJob_PrintJobInfo se vám může hodit jako ukázka, jestliže jste se někde při vytváření nesekli. Žádná z funkcí nezobrazuje zprávy hráči do hry, pouze do konzole. Nelze vytvořit již existující práci (jestliže se budou jména prací ve zdrojovém kód schodovat. Údaje ohledně zamestnání u každého hráče se nahrají a uloží jen v případě, že se zaměstnán. S tímto includem lze samozřejmě pracovat i v gamemodu. Stačí přídat dJOB_GAMEMODE V include jsem se snažil co nejvíce šetřit (počet proměnných, pole, délky...), Lze si nastavit vlastní maximum prací pomocí dMAX_JOBS jinak default je 100, a nastavit si ID skinu po opuštění zaměstnání pomocí dDEFAULT_SKIN, jinak defaultně je 0. Pro nastavení výplaty u dané práce s funkcí SJob_SetVyplata() nemusíte zadávat druhý parametr. V případě, že nedosadíte, výplata se automaticky nastaví na 35000$. Na funkci, pro zjištění jestliže stojí na pickupu prací, nebo jedné z prací se použila funkce na zjistění, zda se hráč nachází v dané oblasti(pro práci s těmito funkcemi doporučuji využívat callback OnPlayerKeyStateChange). NĚKOLIK UKÁZEK S SCJ RYCHLÉ EASY ZAMĚSTNÁNÍ POLICIE OTEVŘENÍ MENU DANÉ PRÁCE OTEVŘENÍ MENU VŠECH PRACÍ NAJEDNOU NASTAVENÍ SPAWNU ZAMĚSTNANCŮ ZJISTĚNÍ PRÁCE VŠECH NA SERVERU SCREENY Stačil jsem si, kromě těch 2 ukázek výše, připravit ještě další 2 screeny, ale podle mě není toho moc co ukazovat na include, kde si toho můžete udělat tolik podle sebe. CO BUDE V UPDATE V případě, že bude nějaký větší zájem či časté kladnější ohodnocení, mám v úmyslu v tom pokračovat. 0.2 Změnit celý enum pJobInfo na obyčejné 2 proměnné. Přidat funkci SJob_InsertRankJob(), půjde o práce, na kterou se dostane povýšením v prácí, ke které já RankJob přiřazena. Přidat funkci SJob_InsertPlayerRank(), povyší hráče z určené předešlé práce do této. Přidat funkci SJob_AddJobCommand(), určí, které příkazy budou JEN pro hráče, kteří jsou zaměstnáni v určitých pracích v této funkci. Vylepšit funkci SJob_PrintJobInfo, bude vám moct nahlásit i patřičné chyby. Přidat funkci SJob_SetWeapons(), asi všichni víme k čemu. Přidat funkci SJob_SetRandomVyplaty(), lze nastavit u určitě true, a tak budou hráči dostávat výplatu od určité hodnoty, ale ještě s nějakým náhodným doplňkem. Optimalizace kód, opravit chyby, opravit bugy, překlepy, zpřehledit kód a tak dále... DOWNLOAD(pawno.cz/files/file/21-corejob/) V souboru, který stačí rozbalit, bude vše potřebné pro práci. Stačí jen všechno, co obsaje složka include hodit do složky pawno\include, přidat nahrání daného include SCoreJobs01.inc a už můžete tvořit! ZÁVĚR Na závěr bych chtěl poděkovat samozřejmě Y_Lessovi za jeho YSI4, a také vEndovi a Lukaszovi za pomoc při opravování chyb. Otestoval jsem, co jsem mohl a vše fungovalo. V případě, že i přesto vám něco nepůjde, dejte vědět. V případě, že budete mít zájem nějakým způsobem ohodnotit či budet mít nějaký nápad, co přidat nebo vylepšit, tak vás prosím, zdržte se zbytečných a pitomých příspěvků, jen, aby jste se předvedli. Děkuji za pochopení.
  17. Amenadiel

    script Auta.

    Taky vás už určite nekdy štvalo že v sampu nekdo vleze do auta jako spolu řidič a vy ho nemate skoro žádnou šanci ani zabít ? Tak od 0.3z se to už změní na tento public : public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) Hned jak jsem ho videl tak mě napadla tato vec Link na video : Myslím že to je hodne dobrá vec a bude spousta new modu. Práce na 5m Nenutím vás hodnotit 0/10 beztak vím že bude 0/10 ;D Link na dowload : http://pawno.cz/files/file/216-znicit-auto-bez-ridice/
  18. LemoNSK

    script Scripty

    Ahoy, chtěli by ste někdo nějaky script na GTA SA na jeho vlastní server? Klidně udělám celkem se nudím.. Kdyžtak pak napište i skype
  19. ĐaVe

    script [inc] DaVe Job System

    Přátelé, plánoval jsem se vrátit k pawnu, ale prdím na to chtěl jsem udělat mód RP, začal jsem tímhle scriptem, jelikož jsem se na mód vykašlal a dělat jej nebudu, tak vám odevzdávám svůj include... takže... Job system include = include pro tvorbu zamestnani v sampu Pro vyuziti je treba pridat do publicu: public OnGameModeInit() { DJS_OnGameModeInit(); } public OnPlayerPickupPickup(playerid,pickupid) { DJS_OnPlayerPickupPickup(playerid,pickupid); } public OnPlayerSelectedMenuRow(playerid, row) { DJS_OnPlayerSelectedMenuRow(playerid, row); } public OnPlayerConnect(playerid) { DJS_OnPlayerConnect(playerid) } Funkce pro pridani penez hraci: GivePlayerJobCashForGet(playerid,cash) Funkce,která odebere hráči job: DeletePlayerJob(playerid); Nezapomeňte, až v módu budete dělat ukládání zahrnout i uložení: JobNahranoMinut[playerid][MAX_JOBS] //je třeba uložit a načíst všechny MAX_JOBS po odpojení hráče a po připojení JobID[playerid] Vyplata[playerid][MAX_JOBS] //je třeba uložit a načíst všechny MAX_JOBS po odpojení hráče a po připojení Nezapomente definovat MAX_JOBS na svůj využitý počet: #define MAX_JOBS 50 //přímo v includu Pro kontrolu hráčového jobu využijte: if(PlayerJob(playerid,==,14) ) A samozřejmě nezapomeňte nahoru do módu: #include <DJS> Vzhledem k tomu, ze planovany projekt nebyl zhotoven, tak vam tento include davam, s pozdravem DaVe //EDIT: include otestován, opravené chyby scriptu, znovu nahráno a upravené linky pastebin a download DOWNLOAD PASTEBIN
  20. Dnes jsem udělal jednoduchý script pro vytváření galerií s automatickým scanem složky a možností přidávat pouze některé soubory. https://github.com/Isigar/PHP-Gallery Použití: <?php include("./gallery.php"); $gallery = new gallery("./img/"); $gallery->addItem("test","test.png",array("alt"=>"ALT","title"=>"TITLE")); $gallery->render(); Při inicializaci třídy zadáváme základní složku obrázků. Při přidávání obrázků můžeme nastavit parametry ALT, TITLE první parametr v našem případě "test" by měl býti unikátní. Doplňující funkce: /*Doplňující funkce*/ $gallery->addExtension("gif"); $gallery->removeExtension("png"); $gallery->automaticScan(); //NEBO $gallery->automaticScan(array("alt"=>"ALT","title"=>"TITLE")); /*načtení všech obrázků v složce s jednotným parametrem ALT a TITLE*/ Více se teď nebudu o tomto vypisovat později možná přidám i více. Popř. nějaký návod pokud budete chtít. Zapomněl jsem na to, že výstup vypadá asi nějak takto: <div class="gallery"> <div class="gallery-item"><img src=....></div> </div>
  21. Zdravíčko... Dnes bych chtěl přispět do seznamu tutoriálů ohledně PHP a přesněji bych se chtěl věnovat SAMPQuery aneb Jak si vypsat data ze serveru. Dnes si zpracujeme status serveru. Úvod -> Máme tu pár bodů co musíme splnit považuji je za hotové či již připravené a to:. - Webový server (funkční) - Editor - Základní dovednosti v PHP Pokud nemáte základní dovednosti je tu mnoho tutoriálů, které Vám to můžou vysvětlit z toho důvodu já jsem již tyto tutoriály nepsal. Požadované soubory -> Jelikož SAMPQuery není přímo v PHP includováno tak nám jeden hodný programátor udělal zjednodušenou formu zápisu díky obalení všech funkcí do přijatelnějšího tvaru. Tomu se říká API. Stáhneme si tedy tento balík. PHP-SA-MP-API-1.1.zip Pokud zde download nefunguje odkazuji na téma na fóru forum.sa-mp.com : http://forum.sa-mp.com/member.php?u=115444 Po extrahování tohoto balíku se nám zobrazí složka: Vidíme, že tu máme dva soubory s příponou .class a také přidané s příponou Example. Soubory s části názvu Example jsou v podstatě ukázky použití v praxi, proto si jeden takový otevřeme. A to SampQueryExample.php. Soubor vypadá asi nějak takto. Vidíme tam includování souboru SampQuery.class.php, můžeme vidět později initializaci třídy SampQuery s parametry IP a portu. Vlastní třída pro vytváření statusu -> Vytvoříme si vlastní třídy. Pokud někdo zase neví odkazuji na další návody tu na fóru nebo někde jinde popřípadě dopíši později. Proč vlastní třídu? Kvůli přehlednosti a funkčnosti a nejspíše i bezpečnosti. To už záleží, jak se nám povede Jak to vypadá ještě neupraveně: A co to dělá? Zapnutý server: Vypíše základní data. Vypnutý server: Takže základ by nám již fungoval. Popis funkcí: -> Vytvoření třídy a vytvoření pomocných proměnných aby byli dostupné po celé třídě. -> private $query z toho důvodu, protože nechceme aby se k naší instanci dostal i někdo jiný krom nás. (Jednoduše řečeno) -> Funkce __construct je jedna z magických metod PHP, volá se vždy při initializaci třídy. -> V této funkci nastavujeme naše proměnné ze začátku. -> require_once načte obsah soubory SampQuery.class.php PS: Já ho mám ve složce libs -> Funkce ini nám inicializuje třídu popřípadě vyhodí error pokud ji již máme "načtenou". -> Dále se zkouší připojit na server abychom zjistili či funguje. -> Funkce vrací hodnotu true / false -> Funkce render bude využita pro vykreslení našich dat v šabloně. Zjištuje také podmínkou funkce ini jestli je server funkční pokud ne vypisuje zprávu. var_dump je zde pouze pro testování výstupu. Použití ve vašem webu: -> require_once načteme náš soubor se třídou. -> vytvoříme instanci třídy s pomocí new a tu uložíme do proměnné $banner a přidáme do parametrů i IP a port -> Podotýkám u PORTU jsme nemuseli použít "" aneb je to celé číslo. Jednoduché, že? Závěrem: Doufám, že Vám tento tutoriál byl k něčemu v dalším dílu tohoto se podíváme na lepší vykreslování přidáme více obrázků a možnost přepínat mezi nimi. Zdroják: www.zip
  22. linanohaahuba

    script vinewood port

    Můj první FS který zveřejním /vinewood Nebo-li port na vinewood LINK: uloz.to/xoy2kUUK/vinewood-amx
  23. Ewwe

    script Tipy + ochrana

    Zdarec... Rozhodl jsem se na udělat takový menší script jako praktickou ukázku práce s y_timers. Jsou to jednoduché tipy + ochrana aby se nezobrazil 2x po sobě stejný tip. #include a_samp #include <YSI\y_timers> #define MINUTY (5) new tips[][] = { "[ i ]{FFFFFF} Tip číslo 1", "[ i ]{FFFFFF} Tip číslo 2", "[ i ]{FFFFFF} Tip číslo 3", "[ i ]{FFFFFF} Tip číslo 4", "[ i ]{FFFFFF} Tip číslo 5", "[ i ]{FFFFFF} Tip číslo 6" }; new r = -1; task tipsandtricks[1000*60*MINUTY]() { there: new rand = random(sizeof(tips)); if( rand != r ) { SendClientMessageToAll( 0x0080FFFF , tips[rand] ); print(tips[rand]); r = rand; }else goto there; } Otázky ?
  24. DeLeTeCZ

    script Titul Script v2.0

    Titul Script Zdravím, chtěl bych vám představit můj nový script. Tento script vám umožní nastavit hráči libovolný titul do 30 znaků. Obsahuje: -Nastavení titulu (Pro RCON). -Config, ve kterém si můžete nastavit barvu titulu a textu. -Vše se ukládá (barvy v configu můžete upravovat i při hraní). Příkazy: /stitul (id) (titulid) (titul) Nastaví hráči titul (když políčko s titulem necháte prázdné titul se odebere) Návod: Soubor Titul.amx nahrajte do složky "filterscripts" a zapište do "server.cfg" vedle filterscripts "Titul". Složku "Titul" ve složce scriptfiles nahrajte do složky "scriptfiles". Changelog (v2.0) - Přidáno 5 ID Titulů (/stitul (ID) (ID Titulu) (Titul)) u každého ID můžete mít jinou barvu - Nový config.cfg - Opraveny bugy Screeny: Download
  25. Čaute, tento jednoduchý program som si spravil už dávnejšie, ale dnes som sa rozhodol si ho ešte trochu upraviť a nahrať sem. Je to v podstate určené pre zjednodušenie práce s reťazcami - zisťuje to ich presnú dĺžku. Využitie je samozrejme širšie (sám som to využil nielen pri programovaní). Je mi jasné, že väčšina si to vie napísať sama ale niekomu sa to môže hodiť (sme hlavne na pawn fóre, nie na C#). Program nemá žiadny keylogger ani podobné pičoviny: VirusTotal Screenshot: Download
×
×
  • Create New...