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. Honles

    script Pekny kopirantko

    čaute Neviem prečo hráte na servery wtls je to kopirat kopiruje všetko čo vidi že sa nehabiš nice kido ä https://forum.sa-mp.com/showthread.php?p=3856359 event kopirovany aj tie diplomi hrájte dalej na wtls !!!
  2. Janik22

    script predám

    Zdravím predávam moj mod v ktorom su skoro všetky features systemy SHOP,EVENT.DERBY.TDM.DM,KONGRES,JOBY,30+,TOPS,HOUSE,PROPERTY,ADMINSYSTEM,HELPERSYSTEM,/EVENTINFO/EVENTLIST/HELP/MOD/NEWS ponuknite kolko dáte screeny budu dodane ak budete mát zaujem napíšte mi do sz pošlem fotky
  3. hoj, hledám gamemode na SAMP který by měl obsahovat toto: - Warp systém + vozidla po warpech (několik warpů + vozidla u nich, která pak budete moci použít) - Autoškola systém (několik autoškol po celém SA, např. řidičák na auto, motorku, autobus, ...) - Job systém (výběr z pár desítek zaměstnání, která budete moci vykonávat na serveru) - Admin systém - Event systém - House systém (nějakých cca 600+ domů na serveru, které budete moci odkoupit) - Property systém (nějakých 200+ nemovitostí, které budete moci odkoupit a budou vám vydělávat peníze) - Firemní systém (systém několika firem, které budete moci odkoupit, pozvat do ní hráče a vydělávat více peněz) - Garáž systém - Gang systém - Výběr skinů - VIP systém RZE
  4. https://california-rp.eu https://discord.gg/CdJz6SG
  5. bigw3b.

    script CRP - Rally Script

    RALLY SCRIPT Spolu s tímom C-RP sme v posledných dňoch pracovali na novej feature využiteľnej napríklad pri eventoch a to rallye tuning vozidiel - pridáva 4 upravené vozidlá (Landstalker, Blista Compact, Sultan, Club) ktoré sú vybavené na jazdu rallye. Script zahŕňa rôzne funkčné objekty na aute (polepy od sponzorov, lampy) ktoré fungujú rozlišne podľa užívateľa a nastavenia administrátorom. Každé vozidlo má jedinečné očíslovanie. V scripte sa nachádza simulovaný efekt streľby z výfuku zachytený na videách nižšie. Všetky objekty a modely (okrem upravených OffRoad kolies, ktoré sú modifikácia) sú na serveri a vidia ich všetci hráči, nevyžadujú žiadne modifikácie. Tento script nájdete po spustení plnej verzie (aktuálne open beta) na https://california-rp.eu
  6. _viTo_

    script Registrační System 1.0

    Dobrý Den, Chci se vám pochlubit s Registračním systémem, se kterým si na serveru vytvoříte herní účet. Týká se to pro servery, které nemají registrační pole, nebo se dá také říci že u některých herních modu se nacházejí registrace ktere se buď: - Nezobrazují správně. - Nefungují tak jak mají tudíž jsou zabugované - Nebo je tam registrace ale která se pro změnu neukáže vůbec. Takže sem vytvořil registrační systém který je přesně testován mnou a dalšími hráči SAMP mnohokrát a jejich odpověď byla " Super, Díky, Dobrý " Registrační Systém 1.0 Registrační Systém verze 1.0 proto, protože se jedná pouze o verzi která je po beta verzi. Tudíž pokud se najdou chyby, tak bych byl rád kdyby ste mi je sem pod tento příspěvek napsali a já je opravím. Je to primitivní Registrační Systém ale jak sem si četl téma jak jeden člověk dělá herní mod a že by potřeboval Registrační systém tak sem ho udělal. Můžete ho získat tím, že mi napíšete do soukromé zprávy že byste měli zájem o registrační systém a já vám ho pošlu. Samozřejmě pokud byste chtěli přepsat dialog s registrací tak mi také napište a já vám podle vašeho přání poupravím dialogy. Registrační Systém bych chtěl postupem času vyvíjet víc a víc až z toho třeba bude nový GameMode 😄 co já vím uvidíme v budoucnu co nám to přinese za pár měsíců. Také chci dopsat že nové verze budu aktualizovat po měsíci. To znamená že následující aktualizase Registračního Systému bude 3.6.2020 kde už bude něco více než registrační dialog s přihlášením. Pokud mi napíšete do soukromé zprávy o registrační systém, tak vám bude zaslán Soubor v scriptfiles poté samotný AMX soubor s registračním systémem a dále instrukce co a jak dělat. na závěr prezentace vám sem hodím obrázek který sem vytvářel dodatečně a chápu že si pomyslíte že je to zbytečné a tak dále ale tak proč ne si to vyzkoušet a zapojit to do presentace. Vytvořil sem ten obrázek z důvodu jelikož sem dělal takové obrázky ve kterém se nachází manuál jak se co používá a k čemu to je tak je to promitivní. Vytvářel sem to pro jednu aplikaci aby lidé věděli na co klikají a podobné věci. Vesměs je to zbytečnost ale proč ne.
  7. Čauko, potreboval by som pomoc s pár vecami. 1. Ako spravím aby týpek dostal výplatu za každú misiu čo spraví ? (+ako spravím misiu s viacerými checkpointami) 2.Ako spravím aby sa mu tá výplata zvyšovala ako to nastavím ? 3.Ako spravím niečo ako bodovací systém, že ked hráč spraví misiu dostane napr. 5 bodov, portebuje 25 bodov pre vyššiu výplatu, potom 80 bodov, potom 120 potom 200 atd. Ďakujem za všetkú pomoc ! Oceňujem všetky typy pomoci ! Začínam s pawnom takže moc o tomto neviem. Dikes
  8. _niCo_

    script Warp System

    Zdarec všechny, Toto je můj první FilterScript Jedná se o warp system který sem dopawnil a dávám sen na Pawno.cz ================================================= Filter script obsahuje : warpy do Las Venturas / Los Santos / San Fierro Příkazy /warpy po napsání /warpy se vám ukáže dialog z warpama /lv /sf /ls ======================================================= [ !!! ] DÁM VÁM SEM I KOD WARP SYSTEMU ALE PROSIM VÁS ZANECHTE MNE JAKO AUTORA FS DĚKUJI MOC [ !!! ] Doufám že se vám můj první FilterScript bude líbit a zdar #include <a_samp> #include <zcmd> #define COLOR_BLUE 0xFF0000FF #define COLOR_RED 0xFFFF0000 public OnFilterScriptInit() { print("\n--------------------------------------"); print(" Warp system by _niCo_"); print("--------------------------------------\n"); return 1; } public OnPlayerConnect(playerid) { SendClientMessage(playerid,COLOR_BLUE," {FF0000}[ WARPS SYSTEM ] {0000FF}Server používá {FF0000}Warps System {0000FF}by {FF0000}_niCo_ {0000FF}/ {FF0000}v1.0"); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/warpy", cmdtext, true, 10) == 0) { ShowPlayerDialog(playerid,1,DIALOG_STYLE_MSGBOX,"Warp System by _niCo_","/ls\n/sf\n/lv\n{00FF00}ZA KAŽDÝ WARP SE TI STRHNE 100 $","{FF0000}Závřít",""); return 1; } if (strcmp("/ls", cmdtext, true, 10) == 0) { GivePlayerMoney(playerid,-100); SetPlayerPos(playerid,1715.1248, -1879.8043, 13.5665); ShowPlayerDialog(playerid,1,DIALOG_STYLE_MSGBOX,"Las Venturas","{0000FF}Nyní se nacházíš v {FF0000}Los Santos","{FF0000}Závřít",""); return 1; } if (strcmp("/sf", cmdtext, true, 10) == 0) { GivePlayerMoney(playerid,-100); SetPlayerPos(playerid,-1979.5410, 882.8173, 45.2031); ShowPlayerDialog(playerid,1,DIALOG_STYLE_MSGBOX,"Las Venturas","{0000FF}Nyní se nacházíš v {FF0000}San Fierro","{FF0000}Závřít",""); return 1; } if (strcmp("/lv", cmdtext, true, 10) == 0) { GivePlayerMoney(playerid,-100); SetPlayerPos(playerid,2137.2100, 1468.2996, 10.8203); ShowPlayerDialog(playerid,1,DIALOG_STYLE_MSGBOX,"Las Venturas","{0000FF}Nyní se nacházíš v {FF0000}Las Venturas","{FF0000}Závřít",""); return 1; } return 0; } Warpy.amx
  9. exiplayer

    script Savecar

    Ahoj potrebol by script /savecar na gta samp server alebo proste volaký scrpit ktorý dokaže uložit auto vitunene
  10. exiplayer

    script Rcon Ochrana

    Potreboval by rcon ochranu Bol by niekdo kdo by mi pomohol prosím skype martinko9632
  11. Patrně se vám již stalo, že jste otevřeli soubor, aniž byste ho poté zase zavřeli, či jste zapomněli smazat výsledek dotazu SQLite apod. Možná z vyšších programovacích jazyků znáte příkaz using či try-with-resources a litujete, že něco takového není i v Pawnu. To ale může být! #define using(new%9\32;%0:%1=%2) for(new %0@guard:guard@%1=(%0@guard:%2),%0:%1=(%0:guard@%1);_:%1!=cellmin;_:%1=cellmin) Stačí tento řádek, abyste hned mohli vesele začít používat using na libovolné výrazy, jakmile dodefinujete destruktor. Je pravděpodobné, že jste o destruktorech ještě neslyšeli, poněvadž v dokumentaci o nich není ani zmínka, ale principiálně se jedná o něco podobného, jako je automatické mazání proměnných v C++. Pokud má určitý tag definován destruktor, zavolá se tento v momentě, kdy je ukončen blok obsahující proměnnou s tímto tagem. Jednoduchý destruktor příkazu using pro tag File: vypadá takto: stock operator~(File@guard:arr[], count) { for(new i = 0; i < count; i++) { if(_:arr[i] != 0) fclose(File:arr[i]); } } Destruktor dostane jako parametr pole všech hodnot, které opustily blok, a jeho velikost. Tento destruktor se tedy zavolá vždy, pokud proměnná s tagem File@guard: (to je jen název) opustí blok. Makro using zařídí, že taková proměnná bude existovat vždy, když se takový blok otevře, a destruktor se zavolá při každém vyskočení z bloku. Např. příkaz using(new File:f = fopen("file", io_read)) se přetransformuje na toto: for(new File@guard:guard@f = File@guard:fopen("file", io_read), File:f = File:guard@f; _:f != cellmin; _:f = cellmin) Toto zneužívá sémantiku cyklu for k tomu, aby spustilo nějaký kód na začátku a na konci bloku. Napřed se vytvoří dvě proměnné - guard@f a f. První obsahuje vrácenou hodnotu, druhá její kopii. Hodnota cellmin je použita jako ukončovací; na konci bloku je nastavena a v dalším průchodu ukončí cyklus. Mohl bych použít klasický for s jednoprvkovým intervalem, ale tohle mi přijde elegantnější. Teď k té důležité části: jakmile řízení opustí cyklus, proměnná guard@f zmizí a tedy se spustí její destruktor, který zavře soubor. Zbývá otázka - k čemu destruktor? Pokud mohu vyvolat kód na konci bloku, proč smazání nedám tam? Proto: using(new File:f = fopen("f", io_read)) { return; } Bez destruktorů by se soubor nikdy nezavřel, protože řízení opustí funkci ještě před ukončením cyklu. Naopak destruktor je vyvolán i v případě, kdy se cyklus opouští násilně, tedy příkazem break, return nebo exit (ale ne goto a sleep). Díky tomuto se chová using tak, jak by měl.
  12. PawnPlus 0.8 Stažení | Dokumentace Představuji vám svůj nový plugin, který z Pawnu udělá moderní programovací jazyk, v němž bude radost programovat pro SA-MP. Přidáním nových konstruktů a "typů" rozšiřuje sílu jazyka, ale zachovává a dokonce i navyšuje jednoduchost programování. Shrnutí hlavních funkcí Řetězce Všichni to známe – řetězec je pole znaků s pevnou maximální délkou, kterou vždy musíme znát, pokud chceme s řetězci cokoliv provést. Odteď už ne! PawnPlus přináší dynamickou alokaci řetězců, které lze spojovat, rozdělovat, porovnávat či jinak upravovat. Možná si říkáte, k čemu je to dobré, když funkce SA-MP (např. SendClientMessage) vyžadují předání řetězce jako pole, ale počkejte – jde to! Tento plugin umožní přetvořit jakoukoliv funkci SA-MP (i jiných pluginů) na variantu, která místo polí bere nové řetězce a funguje naprosto stejně. Asynchronní programování Nebojte, žádná vlákna či race-condition, ale lehké asynchronní programování pomocí úloh, jehož vzorem je jazyk C#. Pomocí nového příkazu jazyka lze pozastavit průběh stávající funkce a odložit jeho vykonávání na jakoukoliv jinou dobu a mezitím spustit třeba něco jiného. Již žádné složité používání SetTimerEx, s tímto pluginem lze prostě ve funkci čekat, než nastane žádaná situace, a pak pokračovat. "Reflexe" Pawn sice není natolik pokročilý, aby umožňoval jakoukoliv reflexi, ale v tomto pluginu naleznete i pár funkcí, které umožní např. zavolat nativní funkci pomocí jejího jména jako řetězce, či navázání libovolné funkce na konkrétní událost serveru. Příklady Vytvoření, spojení a předání řetězců #include "PawnPlus.inc" //Původní SendClientMessageToAll(color, const message[]) upravíme tak, že všechny "const x[]" nahradíme "AmxString:x". native SendClientMessageToAllStr(color, AmxString:message) = SendClientMessageToAll; //Pomocná funkce vytvářející řetězec (jehož maximální velikost známe). stock String:GetPlayerNameStr(playerid) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid, name, sizeof(name)); return str_new(name); } public OnPlayerConnect(playerid) { //Řetězce jsou reprezentované proměnnými se značkou "String". Lze je spojovat pomocí operátoru +. Funkce str_val umí převést libovolnou hodnotu na řetězec. new String:name = GetPlayerNameStr(playerid); new String:msg = str_new("Hráč ")+name+str_new(" (")+str_val(playerid)+str_new(") se připojil na server."); //Provede se zavolání funkce SendClientMessageToAll, jen místo druhého parametru se vezme dynamický řetězec namísto pole znaků. SendClientMessageToAllStr(-1, msg); } Rozdělení a porovnání řetězce //Obdobným způsobem upravena funkce SendClientMessage. native SendClientMessageStr(playerid, color, AmxString:message) = SendClientMessage; public OnPlayerCommandText(playerid, cmdtext[]) { new String:cmd = str_new(cmdtext); new String:name = cmd; new String:args = STRING_NULL; //Cyklus nalezne v řetězci mezeru a rozdělí jej na jméno a argumenty. new len = str_len(cmd); for(new i = 0; i < len; i++) { if(str_getc(cmd, i) == ' ') { name = str_sub(cmd, 0, i); args = str_sub(cmd, i+1); break; } } //Porovnání jména příkazu. if(name == str_new("/test")) { SendClientMessageStr(playerid, -1, args); //Vypsání argumentů. return true; } return false; } str_find a str_split bude v pozdější verzi. Pozastavení vykonávání funkce stock Odpocet() { SendClientMessageToAll(-1, "3"); wait_ms(1000); //Neblokující čekání (žádný cyklus). SendClientMessageToAll(-1, "2"); wait_ms(1000); SendClientMessageToAll(-1, "1"); wait_ms(1000); SendClientMessageToAll(-1, "0"); } //Poznámka: Čekání zablokuje vykonávání kódu až do nejbližší (externě vyvolané) funkce public. Pokud chcete, aby vnější kód pokračoval rovnou, použije CallLocalFunction. Čekání na libovolnou událost //Předělání funkce MoveObject tak, aby vracela úlohu, na niž lze "čekat" (tedy dokončení hýbání s objektem). stock task:MoveObjectTask(objectid, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX = -1000.0, Float:RotY = -1000.0, Float:RotZ = -1000.0) { //Úloha představuje abstraktní proces, který lze dokončit a jehož výsledkem může být nějaká hodnota. //task_new vytvoří novou prázdnou (nedokončenou) úlohu. new task:t = task_new(); //Zaregistruje novou "obsluhu" pro callback OnObjectMoved. Veřejná funkce SingleFireObjectTask se zavolá pokaždé, //kdy by se měla zavolat funkce OnObjectMoved a navíc se jí předá několik argumentů navíc. //specifikátor "e" značí předání ID nově vytvořeného objektu (to funkce pawn_register_callback i vrací). pawn_register_callback(#OnObjectMoved, #SingleFireObjectTask, "edd", t, objectid); MoveObject(objectid, X, Y, Z, Speed, RotX, RotY, RotZ); return t; } stock ObjectTest() { new obj = CreateObject(19300, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); print("Object created!"); //Proběhne čekání na úlohu; zbytek kódu se vykoná, až skončí. await MoveObjectTask(obj, 0.0, 0.0, 10.0, 5.0); print("Object moved!"); } //Nová obsluha události OnObjectMoved má navíc tři parametry (na začátku), jejichž hodnotu lze určit //v pawn_register_callback. Zbytek parametrů je z OnObjectMoved. forward SingleFireObjectTask(callback:id, task:task, obj, objectid); public SingleFireObjectTask(callback:id, task:task, obj, objectid) { if(obj == objectid) { //Pokud se pohnul objekt, na nějž je zaregistrovaná tato obsluha (uloženo v parametru obj), obsluha se odregistruje pawn_unregister_callback(id); //a úloha, která k ní náleží, je nastavena na hotovou (s nějakým výsledkem). task_set_result(task, objectid); } } Technické informace Jak to celé funguje? Technologie, na které celý tento plugin staví, se nazývá hookování. Hookování principiálně umožňuje přepsat kód nějaké funkce vlastním kódem, který se spustí místo něj. Díky patří Zeexovi za jeho knihovnu subhook. Tak například každá nativní funkce, která bere řetězce, používá funkci amx_GetAddr z API AMX. Tato funkce očekává adresu nějaké proměnné uvnitř stroje AMX a vrací ukazatel, který na ni ukazuje (to lze zapsat jako DAT+addr, kde DAT je ukazatel na počátek datové sekce stroje AMX, jenž lze získat z takto pojmenovaného registru). Tato funkce se musí zavolat vždy, když v Pawnu předáváme nějakou adresu (výstupní proměnné či pole) a na hookování je tedy ideální. Pokud AMX zjistí, že addr neukazuje dovnitř datové sekce, vrátí chybu, a pak přichází na scénu nový kód pluginu, který místo vrácení chyby interpretuje adresu jako (nějaký) identifikátor dynamicky alokovaného řetězce a ukazatel na jeho znaková data úspěšně vrátí. Tak se navenek každé funkci jeví předaný argument jako správný, ale když dojde na získání ukazatele, namísto dovnitř AMX ukazuje vrácené číslo na data pluginu. Zbývá maličkost, tedy zařídit, že addr bude pro dynamické řetězce ukazovat vždy do paměti, která je mimo AMX (sice to téměř jisté, ale nikoliv zaručené). Zde se uplatňuje vlastní tag AmxString, za nímž stojí funkce str_addr. Ta z ukazatele na řetězec spočítá relativní ofset vůči datové sekci stroje AMX, takže pro ukazatele mimo datovou sekci bude vytvořené číslo vždy chybné pro normální funkci amx_GetAddr. Funkce amx_Exec se zase volá vždy, když chce server spustit kód v AMX. AMX samotné podporuje předčasné ukončení vykonávání funkce pomocí vyvolání chyby a jedna taková chyba je i AMX_ERR_SLEEP (lze ji vykonat příkazem sleep v Pawnu), která značí, že se kód může obnovit. Jelikož hookuji každé volání amx_Exec, mohu to okamžitě zjistit a průběh vykonávání obnovit, aniž by o tom byl informován server. Zbývá vyřešit jediný problém – uložený obnovovací stav AMX je jen jeden a při jiném volání se zruší. Proto si plugin ukládá veškerou dynamickou paměť AMX (halda a zásobník) a registry k sobě, jakmile je výkon funkce pozastaven, aby nedošlo ke ztrátě. Při obnově je potom paměť AMX dočasně vrácena do původního stavu a spouštění původní funkce se obnoví. Funkce pawn_register_callback funguje pomocí hookování amx_Exec a amx_FindPublic, jež se zavolá vždy, když je třeba zjistit index veřejné funkce v AMX. Pokud je na název callbacku registrována nějaká obsluha, místo skutečného indexu se vrátí záporný index, který je následně identifikován v amx_Exec, která napřed vykoná příslušné obsluhy zjištěné z tohoto indexu. Řetězce a garbage collection Jak známo, každá dynamická alokace musí mít svoji dealokaci, jinak by začala unikat paměť, ale tady jsem si vesele používal str_new a žádnou dealokaci jsem neřešil, ačkoliv použitá paměť byla nová. Jak je to možné? Řetězce mají svůj vlastní garbage collector, který se stará o jejich mazání. Ve skutečnosti existují dva druhy řetězců – lokální (dočasné) a globální. Lokální řetězce jsou jejich nejčastější typ (String) a jejich existence je omezena po dobu výkonu nejvyššího callbacku. Je-li např. do skriptu vstoupeno callbackem OnPlayerConnected, všechny nové lokální řetězce existují po celý běh této veřejné funkce a jakmile ta skončí, smažou se. Pozor! – jakmile funkce skončí, použití jejích lokálních řetězců způsobí pád serveru. Řetězce se mažou jen po skončení nejvyšší veřejné funkce, takže pokud se ve skriptu skáče pomocí CallLocalFunction/CallRemoteFunction, vnitřní řetězce existují i po skončení vnitřních funkcí public. To ovšem neplatí pro SetTimer, jelikož vnitřní funkce se zavolá až po skončení vnější. Životnost lokálních řetězců není prodloužena ani pomocí asynchronních funkcí, neboť samotný callback je ukončen prvním čekáním. Proto existují globální řetězce, které nejsou automaticky mazány. Jejich použití je ale nebezpečné, neboť se musíte postarat o jejich smazání; musíte myslet na každé místo, kde by byl globální řetězec. Příklad: native print_s(AmxString:string) = print; new GlobalString:str; public OnFilterScriptInit() { str = str_new("Goodbye world!"); } public OnFilterScriptExit() { print_s(str); str_free(str); str = STRING_NULL; } Globální řetězce jsou označeny tagem GlobalString a převod na ně je automatický, pokud do takto značené proměnné přiřazujete. Lze toho docílit i voláním funkce str_to_global. Všechny funkce fungují stejně pro globální i lokální řetězce. Místo str_free můžete použít i funkci str_to_local, jež naopak vrátí řetězec do lokálního prostoru. To doporučuji použít v kombinaci s asynchronními funkcemi: public OnFilterScriptInit() { new String:str = str_new("Hello world!"); str_to_global(str); wait_ms(1000); str_to_local(str); print_s(str); } Mutabilita řetězců Řetězce jsou mutabilní, tedy měnitelné (až na jednu výjimku – STRING_NULL). To znamená, že některé funkce (například str_del) pouze upravují existující řetězec, takže pokud s ním pracují jiné funkce, dostanou jiná data. To lze vyřešit vytvořením nového řetězce (např. přes str_clone) nebo použitím funkcí, které samy o sobě tvoří nový řetězec (např. str_sub). STRING_NULL má speciální chování. Lze jej použít na místě normálního řetězce a všechna volání proběhnou úspěšně, ale jeho délka je vždy nulová. Funkce jako str_resize nebo str_set na něj tedy nemají žádný vliv. str_clone a jiné vytvářející funkce ale vždy udělá řetězec nový (a normální). Návratová hodnota asynchronní funkce Funkce obsahující čekání skončí vlastně předčasně a v takovém případě je nutno vrátit kontrolu serveru. Jelikož ale server očekává od funkce nějakou hodnotu hned, na případný příkaz return nemusí vůbec dojít. Od toho je tu funkce yield, jež navrátí hodnotu volajícímu kódu okamžitě: public OnFilterScriptInit() { new ret = CallLocalFunction(#Func, ""); printf("%d", ret); } forward Func(); public Func() { yield 12; wait_ms(1000); return 13; } Program vypíše 12 hned po spuštění. Návratovou hodnotu zbytku funkce (či z dalších volání yield) zatím nelze nijak odchytit, ale očekávám přidání něčeho na způsob coroutines v Lua (task_create z veřejné funkce a await, který lze zavolat vícekrát na takovou úlohu). Něco divného na mém kódu? await a yield jsou funkce, ale používám je jako příkazy. Pawn umožňuje vypustit závorky z takového volání, což vypadá rozhodně lépe. Také používám výraz typu #Func, což známe z maker, a je to totéž jako prosté "Func". Pokud řetězec je zároveň jméno funkce, líbí se mi toto použití pro odlišení.
  13. Zdravím vás, Toto je můj první FilterScript co dávám sem na forum. Jedná se o AntiReklamu která reaguje rychle a dotyčného zabanuje. FilterScript má 117 Řádku _____________________________________________________________ Jestli AntiRekala má hráče zabanovat nebo jen kicknout nebo i napomenou můžete změnit na řádku [ 65 , 83 , 101 ]
  14. Darko698

    script Pravidlá FS

    Vytvoril som môj prvý FS pre ./pravidla dúfam že sa bude páčiť.
  15. Na tvorbe sa podielali milous22 (objekty), NoxeS (dizajn), DYXiCZ (napad) a bigw3b (script). Najdete na http://sfb-rp.cz (1.3.2) uz coskoro. .
  16. Hladám plugin mastra na moj minecraft server Minimalný vek 13 moj skype live:rbrindzak2932 Vsetko dalsie na skype !
  17. Ahojky, chcel by som vám ukázať jeden stock čo som nakódil, fillArray(), ktorý dokáže vynulovať pole, resp. nastaviť každý prvok v poli na nejakú hodnotu. Je to užitočné v tom, že je to rýchlejšie než použitie loopu, pomer rýchlosti sa odvíja od počtu prvkov, kde pre 100 prvkové pole je fillArray() 18x rýchlejší, pre 1000 a viac prvkové ~65krát rýchlejší. Použitie main() { new pole[] = {1,2,3,4}; fillArray(pole, 55); // nastavi kazdu hodnotu v poli na 55 for (new i; i < sizeof (pole); i++) // vypise cele pole, teda 4 riadky s textom "55" printf("%d", pole[i]); } Pre viac-rozmerné polia treba použiť cyklus fillArray()ov. main() { pole[][] = {{1,2}, {3,4}}; for (new i; i < sizeof (pole); i++) fillArray(pole[i]); // default hodnota je 0, toto teda vynuluje cele pole for (new i; i < sizeof (pole); i++) for (new j; j < sizeof (pole[]); j++) printf("%d", pole[i][j]); } Speedtest Ťažko sa získavajú grafy pre rôzne veľkosti polí (lebo pawn nemá polia s dynamickou veľkosťou), ale pár manuálnymi pokusmi som zistil, že s kódom nižšie je fillArray() rýchlejší okolo 18x pre polia o veľkosti 100 prvkov, pre polia okolo 1000 prvkov okolo 70 krát rýchlejší a pre viac (až po 10 000 000 prvkové polia) to už osciluje medzi 60-65-70krát. Získal som: [19:45:51] Klasicka metoda: 74012 tickov [19:45:52] fillArray() metoda: 1075 tickov Pre kód: main() { #define MAX 1234567 new pole[2000]; new tick = GetTickCount(); for (new i; i < MAX; i++) for (new j; j < sizeof(pole); j++) pole[j] = 1; printf("Klasicka metoda: %d tickov", GetTickCount() - tick); tick = GetTickCount(); for (new i; i < MAX; i++) fillArray(pole, 2); printf("fillArray() metoda: %d tickov", GetTickCount() - tick); } Kód (môžete copy-paste do modu) stock fillArray(array[], value = 0, size = sizeof(array)) { new cip; size *= 4; cip = get_code_relative_address(); #emit load.s.alt cip #emit lctrl 6 #emit add #emit add.c 56 #emit stor.s.pri cip #emit load.s.alt size #emit sref.s.alt cip #emit load.s.alt array #emit load.s.pri value #emit fill 0 } stock get_code_relative_address() { new dat, cod; #emit lctrl 1 #emit neg #emit add.c 12 #emit stor.s.pri cod #emit lref.s.pri cod #emit stor.s.pri cod #emit lctrl 1 #emit neg #emit add.c 16 #emit stor.s.pri dat #emit lref.s.pri dat #emit stor.s.pri dat return cod - dat; } Resp., aktuálna verzia (aj s pár vysvetľujúcimi komentmi) tu. Ó, Majstre! Uč ma! Krátke vysvetlenie pre tých, čo vedia čo znamená slovo "assembler", ale nevedia čítať emit.
  18. ==[Informcia]== Ahojte, vytvoril som svoj FS, a môžete si ho dať voľne na svoj Server. ==[Načo FS slúži]== Tento FS som vytvoril skôr z nudy. Nájdete tam napr. zbrane, oprava auta, a rôzne ďalšie príkazy / funkcie. Ďalej som tam pridal taký menší "AntiHack", ide o to, že keď nejaký hráč zabije nejakého hráča minigunou, automaticky dostane ban. ==[Príkazy]== - /menup - Menu pre hráčov - /menua - Menu len pre Adminov ==[Aký FS bude na budúce?]== Aktuálne pracujem na VIP systéme, kde budú prefixy, rôzne výhody atď... Potom mám na pláne urobiť hlavne pre vás Pravidlá na server, že sa pripojíte na server a zobrazia sa vám pravidlá a vy ich musíte odsúhlasiť. Ďalej v zozname mám v pláne urobiť Admin enu, kde bude: Zabanovať hráča A to je asi všetko.. xD Tak isto ak chcete, môžem vám urobiť váš FS úplne zadarmo. Ale musí to byť FS, GM nerobím. Príklad: Urobím vám FS na hocijaký príkaz, stačí sa len dohodnúť. Môžete ma poprosiť buď tu alebo v SZ, a už sa dohodneme. Možno si hovoríte, že prečo to robím zadarmo? No lebo ma to baví :D. Odkaz na PWN súbor => https://pastebin.com/YXGFW4YE Môžete si to upraviť podľa seba.
  19. Mivčo

    script 3D Editor

    Prinášam vám 3D editor vo farbách ako Červena, Modrá, Zelená, Biela, Šedá a tak ďalej. Je tam 11 farieb ale dajú sa dorobiť viacej aby boli Ukladá sa do SF pod menom 3Dtext.txt DOWNLOAD 3DText.zip + k tomu je aj COLOR Editor možná ho poznáte niektorý V tom editori si môžeš aké farby len chcieť
  20. Thomasek

    script Gta 5 Styl umrtí

    KOD: #include <a_samp> Tady sem zkoušel něco v pwn (udělal jsem to podle pawn stránek) Jenom textdrawy Doufám že se vám Líbí! Thom Gta5WastedThom.zip
  21. ATomas

    script Timestamp to date

    Zdravím, přináším Vám nový způsob převádění timestamp (časového razítka = počet sekund od 1.1.970) na lidčtější způsob. Sice je tento způsob paměťově (RAM) náročnější. Zato CPU nejrychlejší. Ovšem RAM paměti je pro sa-mp server všude dost. Zato CPU ne. Existuje mnoho způsobů např. vložit timestamp do databáze a nechat si vrátit string výsledek. Ovšem můj způsob vykazuje rychlejší výsledky. Další a asi nejhloupější zpusobje samotné počítání data. Protože tu není povoleno vlozit tak dlouhý kód, dávám sem odkaz: https://pastebin.com/6BN6kc1L Použíti: new time = gettime();//random(cellmax); printf("dnes je %s",GetDate(time)); Pokud chcete k tomu přidat i čas tak to lze lehce pomocí: new time = gettime();//random(cellmax); time = time%(24*60*60); printf("hodin=%d minut=%d vterin=%d",time/(60*60)/*pozor na časové pásmo !!!*/,(time/60)%60,time%60); Enjoy
  22. Zdravím, vytvořil jsem StuntPark na Nevadě. Budu rád za ohodnocení - Fotky jsou v .rar souboru, download níže. DOWNLOAD : https://ulozto.cz/!55xl4KoGuDT6/stuntpark-nevada-rar OBSAHUJE : 1.) FS StuntParkNevada + AdminVila - Oba 2 FS jsou v jednom - StuntParkNevada 2.) FS Port - AdminVila ( /avila ) 3.) Textový soubor - Kdo stáhne, přečíst ! S҉T҉U҉N҉T҉ ҉P҉A҉R҉K҉ ҉N҉E҉V҉A҉D҉A҉ ҉-҉ ҉B҉Y҉ ҉D҉B҉G҉ | All rights reserved to Jan Partl & dbGraphics
  23. Ingame Camera Movement Editor O čom to je? Jedná sa o FilterScript, ktorý vám pomôže pri vytváraní pohybu fotoaparátu pomocou InterpolateCameraLookAt a InterpolateCameraPos v hre. Používa sa FlyMod s ktorými môžete ľahko lietať po mape. Vlastnosti => Lietať pomocou FlyMode => Nastavte pozície kamery jednoducho kliknutím na tlačidlo myši => Môžete zmeniť štart pozície, koniec pozície a rýchlosť pozície aj po ukončení pohybu => Jednoducho používaný systém aj z návodom Video Poznámka: Tento filtercript bude fungovať len s SA-MP 0.3e RC5 a vyššie Download: Original topic: Inštalácia: 1. Skopírujte script a dajte ho do programu pawno 2. Stlačte F5 vytvorí sa vám príkaz v amx 3. Vytvorený príkaz dajte do zložky FilterScript 4. Vytvorený príkaz zapíšte do server.cfg 5. Spustite server a ste hotoví!
  24. EskiL

    script New Drift Point Counter

    Tu mate odemne muj novy drift point counter, vice info se dozvite v samostatnem pwn souboru. Screenshoty: https://prnt.sc/g7a493 https://prnt.sc/g7a4p2 Download: AMX: https://ulozto.cz/!iuUB3oBZqUSn/driftpointcounter-amx PWN: https://ulozto.cz/!bZvSTeaJbJuX/driftpointcounter-pwn Heslo: pawno.cz Tento script funguje tak, ze jakmile zacnete driftovat, tak se vam ukaze tabulka (Screenshoty nahore) A pokud si porad budete udrzovat vas drift, tak vam to bude neustale pricitat, a pricitat penize A jakmile prestanete driftovat, tak se vam prictou penize, a zacinate znova Upozorneni: Toto si nedavejte do RZE, nebo "Ne"vlastnich modu, protoze v nekterych modech, jako je RZE to nemusi fungovat, protoze vlastni anti money hack A tim se vam neprictou penize za drift.
  25. NeoRevCrew

    script [inc] ReturnDate

    ReturnDate ​Převod časové známky na datum ​Zdravím, rád bych vám představil moji verzi převodu timestampu na datum - ReturnDate. ​Předem bych chtěl skutečně poděkovat za pozornost a trpělivost při čtení tohoto dlouhého příspěvku, snažil jsem se zkrátit jej co nejvíce to jen šlo tak, aby to bylo pochopitelné a mělo to hlavu a patu. ​V případě problémů či potřeby rady se nebojte mě kontaktovat zde či prostřednictvím SZ. Soubor ke stažení zde. ​Proč jsem udělal vlastní verzi? ​Vyvíjím vlastní mód, kde krom pluginů nepoužívám cizí funkce, vždy se snažím udělat vše po svém tak, aby to bylo rychlejší a pokud možno tak i zatěžovalo míň RAM či CPU než verze z internetu. Je sice pravda, že já testuju funkce v cyklu opakující se 1.000.000x (abych zajistil rozdíly) a v praxi se vyvolá tak jedou, možná 2x 3x, ale nemění to nic na tom, že kód musí být nepřehledný a zbytečně komplikovaný, když to jde jednoduše. V tomto případě jsem se po zkušenostech a používání funkcí TimestampToDate a 'date', které mi často ukazovaly trochu jiný datum než měly, že udělám vlastní převod na datum. ​Jaký je rozdíl mezi původními a touto verzí? ​Tato verze nepoužívá zbytečně dvourozměrné proměnné (do kterých se ukládá 12 měsíců, ke každému 2 možné počty dní v měsíci a časová známka) jako je tomu u původních verzí. ​Dalším a hlavním rozdílem je to, že se časová známka nebere od 1.1.1970 00:00:00, ale od předem nastaveného začátku roku. ​Například první registrovaný hráč X bude dne 12.1.2017 (čas není důležitý) a vím, že server nebude už ukládat žádná starší data, ale vždy už jen novější (později registrovaní, timeban,..). ​Proto v includu nastavíme FYear jako 2017; FStamp jako časovou známku pro půlnoc 1.1.2017 (možné získat ZDE, je potřeba k výslednému timestampu přičíst 7200 -> 2 hodiny, SEČ). Při vyvolání funkce se jakoby už přeskočí k té zadané části, kterou je v tomto případě začátek roku 2017 a pokračuje už výpočet ze zbylé časové známky. Prvně se začne cyklit odčítání roku (pokud je minimálně 1 rok k dispozici), dále pokračuje na zjištění měsíců (v tomto kroku není udělaný cyklus, ale jelikož víme, že už zbývá 12 měsíců tak je po jednom prověříme, pokud se zjistí, že už není další k dispozici, přeskočí se na klasické cykly, které dopočítají dny, hodiny, minuty a zbytek jsou sekundy. ​Výhody a nevýhody? ​Výhodami této verze je rychlejší provedení a menší využití paměti RAM. ​Nevýhodou je, že funkce nezjistí starší data než od definovaného v includu (čímž se vlastně zajistí to rychlejší provedení). ​​Test rychlosti ​Porovnal jsem rychlost všech 3 funkcí v cyklu 1.000.000 - ReturnDate, TimestampToDate a date. ReturnDate: 1749 | 709 | 1809 ms (průměr: 1423 ms) TimestampToDate: 3568 | 2167 | 3454 ms (průměr: 3063 ms) date: 37637 | 9752 | 37344 ms (průměr: 28245 ms) ​Shrnutí funkce ​Abych tedy shrnul použití této funkce. ​Přidejte soubor returndate.inc do složky pawno\include. ​V souboru dle vlastních potřeb upravte FYear a FStamp. ​FStamp si můžete obstarat ZDE, zadáte jako datum 1.1. (rok podle FYear) - čas 00:00:00. ​Z timestampu, který vám vygeneruje musíte odečíst 7200 (to jsou 2 hodiny, kvůli SEČ). ​Výslednou hodnotu nastavíte k definici FStamp. ​Příklad, jak získat FStamp a FYear je zde.
×
×
  • Create New...