Jump to content

Search the Community

Showing results for tags 'script'.



More search options

  • Search By Tags

    Oddělujte čárkami
  • Search By Author

Content Type


Fórum

  • Fórum
    • Pravidla fóra
    • Co by se tu mělo změnit
    • Nahlášení chyb/Návrhy změn
    • Všechno možné
  • Pawn
    • Pomoc
    • Návody
    • Mapy a editor map
    • Scripty
    • Prezentace módů
    • Hledám pawnera/mappera
    • SA-MP
  • Programování a grafika
    • Vývoj webových stránek a aplikací
    • Vývoj desktopových a jiných aplikací
    • Grafika a webdesign
    • Dlouhodobé projekty
    • Hledám programátora/skriptera
  • Hry a herní tématika
    • MTA
    • Counter Strike 1.6 , Source, Global Offensive
    • Ostatní hry
    • Obrázky a videa z her
    • Herní hostingy
    • Prezentace herních klanů
    • Prezentace herních serverů
  • Ostatní
    • Hardware a software
    • Hledám/nabízím
    • Koš

Categories

  • Pawn – filterscripty a gamemody
  • Pawn – skripty od nováčků povinně sem
  • Aplikace a hry

Blogs

  • rEwolutionary
  • Polisův Blogík
  • DoubleX's Blog
  • [Info] Dark Island
  • Albus Brambůrek's Blog
  • Trampoty pána buggeda
  • vEndovo všechno možné
  • Cybrionkov Game Development v Unity
  • [Printova hlava]
  • Woodyho blog

Calendars

  • Kalendář Pawno.cz

Categories

  • Verze

Found 510 results

  1. 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
  2. script Savecar

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

    Potreboval by rcon ochranu Bol by niekdo kdo by mi pomohol prosím skype martinko9632
  4. define using

    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.
  5. plugin PawnPlus 0.4

    PawnPlus 0.4 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í.
  6. script AntiReklama System

    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 ]
  7. script Pravidlá FS

    Vytvoril som môj prvý FS pre ./pravidla dúfam že sa bude páčiť.
  8. script Emergency Lightning Module

    Na tvorbe sa podielali milous22 (objekty), NoxeS (dizajn), DYXiCZ (napad) a bigw3b (script). Najdete na http://sfb-rp.cz (1.3.2) uz coskoro. .
  9. Hladám plugin mastra na moj minecraft server Minimalný vek 13 moj skype live:rbrindzak2932 Vsetko dalsie na skype !
  10. 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.
  11. script MultiFS *By MajorGames4*

    ==[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.
  12. 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ť
  13. 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
  14. 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
  15. script StuntPark Nevada - FS Download

    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
  16. 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í!
  17. 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.
  18. 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.
  19. https://t.co/G4gWmPeC3y https://t.co/vp5FzG5baf

  20. Zdravím, hledám script kde se dá přidávat hudba a lidé si ji na serveru mohou pustit. Bývalo to hodně na rze, hledal jsem to ale nenašel. O čem script je ? To že v pawnu nebo někde se přidají linky na hudbu (youtube atd..) Na serveru napíšeš příkaz /hudba nebo jak to je. A vyjede ti několik písniček který si můžeš pouštět pořád dokola. Prosím nemáte to někdo ? Potřeboval bych to.
  21. script Mam problem z Random Weather

    Mam to urobene tak že , sa zapne ako keby anketa o POCASIE kde sa každemu hračovy zobrazi MSG v ktorom ma navyber bud suhlasi z určitym počasim alebo nie po skončeni ankety by to malo zmeniť na to počasie ale nedeje sa bohužial nič a ja nwm kvoli čomu by to mohlo biť , takže budem vdačny za vašu radu ak by sa dalo tak do SS , nechcem to rozoberať zbytočne na vyrejnosti ... dakujem za bližšiu radu
  22. script Tip Systém

    Zdar! Dneska sem se nudil tak sem se rozhodl udělat TIP Systém. Žádné chyby tam nejsou. Jediný "include" který potřebujete je "a_samp" který by jste měli mít už ve složce "includes" automaticky. PASTEBIN https://pastebin.com/iHVy5jCb Myslím si že nejste až tak tupý aby jste nevěděli jak to změnit. V případě problému mně kontaktujte do SZ tzv. Soukromá zpráva S pozdravem. Kazma
  23. script Hostname Changer

    Zdar! Dneska sem se nudil tak sem se rozhodl udělat Hostname Changer nebo Změna názvu serveru. Záleží na vás jak si to přeložíte Žádné chyby tam nejsou. Jediný "include" který potřebujete je "a_samp" který by jste měli mít už ve složce "includes" automaticky. PASTEBIN https://pastebin.com/9LMDbtKf Myslím si že nejste až tak tupý aby jste nevěděli jak to změnit. V případě problému mně kontaktujte do SZ tzv. Soukromá zpráva S pozdravem. Kazma // Edit! 27.5.2017 / 18:48 Opravena chyba | new var = random(5) https://pastebin.com/F1G8F602
  24. script Just GangSystem - Beta v0.1

    JUST GANG SYSTEM v0.1BETA Nejobsáhlejší a nejmodernější gangsystem... JEDNODUCHÝ A PŘEHLEDNÝ EDITOR OBSÁHLÝ SEZNAM MOŽNOSTÍ PRO HRÁČE V GANGU PŘEHLEDNÉ STATISTIKY HRÁČE V GANGU PŘEHLEDNÝ A JEDNODUCHÝ OBCHOD S VOZIDLY DO GANGU PŘEHLEDNÝ SEZNAM VOZIDEL GANGU UKÁZKA JAK ONLINE ČLENŮ GANGU TAK I OFFLINE ČLENŮ GANGU UŽITEČNÝ A PŘEHLEDNÝ SEZNAM VŠECH GANGŮ NA SERVERU MOŽNOST ZMĚNIT RANK I S HEX KÓDY PŘEHLEDNÝ SEZNAM ZBRANÍ GANGU STEJNĚ JAKO JEJICH KOUPĚ A ZMĚNA MOŽNOST ZMĚNIT GANG SÍDLO VYPISOVÁNÍ TAG GANGU DO CHATU NĚKOLIK INFORMACÍ O SCRIPTU Gangy se přidávají in-game pomocí editoru. GS podporuje i možnost vytvářet gangy pro více administrátorů. Jakmile někdo otevře editor, zjistí volné gangid a pro dalšího administrátora zjistí jiné volné id a zůstává "využívané", dokud administrátor gang nevytvoří a nebo neodejde. Po vytvoření gangu v editoru se ukládá a vytváří(načítá) i po zapnutí serveru. V editoru musí administrátor přidat jméno gangu, tag, majitele a pozici. Cena, kasa a respekt lze mít na 0. Pozice v editoru se přidává způsobem, že zjistí aktuální pozici admina. Lze přidat i defaultního majitele aka Město, zapomocí mínusu. Ale pozor: Lze přidat majitele gangu(jméno hráče), ale zároveň dát gang na prodej! Gangy se ukládájí a načítájí zapomocí jejich id, nikoliv jejich jmén. Editor se u daného hráče uchovává dokud gang nevytvoří nebo neopustí server. Většina titulů v dialogu začíná nebo obsahuje jméno gangu, u kterého hráč momentálně je. Nelze přidat gang s jménem, který už existuje. Stejně jako u majitele, jestliže vlastní už nějaký gang. GS obsahuje 4 hodnoty pro každého člena a to Nováček, Člen, Zástupce a Vůdce. Do jednoho gangu lze pozvat pouze 1 hráče, dokud pozvání nepřijme nebo neodejde. Vůdce/Zástupce může upravovat údaje i offline členovi. Maximální možný počet peněz, které lze mít v gangu je 999 999 999$. V případě přesáhnutí se opět vrátí na totu hodnotu. Maximální možný počet respektu, úmrtí a zabití je 9999. V případě přesáhnutí se opět vrátí na tuto hodnotu. Do každého gangu lze zakoupit maximálně 10 vozidel. Každé vozidlo se přidává po zadání příkazu /gvehicle tak, že zjistí jeho pozici po zadání /gva. Jestliže vůdce/zástupce během přidávání vozidlo opustí, bude zničeno. Vozidlo lze pouze začit přidávat na pickupu gangu, a hráč má omezenou pozici na přidání. Lze zakoupit do gangu pouze určitě modely vozidel. GS obsahuje 5 základných kategorií aka slotů pro zbraně, a to Chladné zbraně, pistole, brokovnice, samopaly a těžké zbraně. Po založení gangu, gang nemá žádné zbraně. V obchodě se zakupují zbraně cenou za náboj. Maximální možný počet počet nábojů u každé zbraně v gangu je 99999. Každý člen gangu po spawnu obdrží učité zbraně a náboje. Pokud dojdou, člen dostane poslední zásoby. Respekt lze získat, ale i ztratit ze zabíjení s jinými členy gangů. Gang lze opustit jedině vyhozením z gangu. Až na vůdce. Nelze změnit výplatu Nováčkům a Vůdci. Takže jí vůdce ani nemůže vybrat. a mnohem více... OHLEDNĚ UKLÁDÁNÍ ÚDAJŮ scriptfiles/Gangy/ {id_gangu}.dat - veškeré informace ohledně gangu. {id_gangu}Members.dat- seznam všech členů v daném gangu. Užitečné kvůli jménům offline hráčů. scriptfiles/Gangy/Hraci/{jméno_hráče}.dat - standartní údaje hráče(jestli je v gangu, id gangu, údaje a tak dále). scriptfiles/Gangy/Zbrane/{id_gangu}.dat - seznam zbraní a jejich počet nábojů. scriptfiles/Gangy/Vozidla/{id_gangu}_{slot_id}.dat - informace o daném vozidle(pozice, model, gang a tak dále). SEZNAM PŘÍKAZŮ /gmenu Menu pro rcon administrátora. Zahrnuje vytvoření gangu a smazání gangu /gang Základní příkaz pro všechny hráče a členy gangů. Otevře dialog s možnostmi u daného pickupu gangu. Hráč samozřejmě musí být poblíž. /gangs Seznam gangů pro rcon administrátora. /ginvite Pozve hráče do vašeho gangu. /gyes Přijmout pozvání do gangu. /gno Odmítnout pozvání do gangu. /grleft Opustit gang sídlo. DALŠÍ INFORMACE A MOŽNOSTI ÚPRAVA GANG ÚDAJŮ Ukázka uložených údajů: 1 0 0 0 0 0 3000 5766000 3 3000 1000 0 0 2206.63 1231.45 10.82 GuS Scydo GangUSilnice 1 - Existence gangu. 0 - Gang id. 0 - Zda je gang na prodej. 0 - Cena gangu při prodeji. 0 - Počet zabití v gangu. 0 - Počet úmrtí v gangu. 3000 - Respekt gangu. 5766000 - Kasa gangu. 3 - Počet členů. 3000 - Výplata člena. 1000 - Výplata zástupce. 0 - ID interióru. 0 - Zda je majitelem Město. 2206.63 - X pozice pickupu. 1231.45 - Y pozice pickupu. 10.82 - Z pozice pickupu. GuS - Tag gangu. Scydo - Jméno vůdce gangu. GangUSilnice - Jméno gangu. ÚPRAVA ÚDAJŮ DANÉHO HRÁČE Ukázka uložených údajů: 1 0 3 350661 44 11 102 0 1 0 0 {FFA500}Střelec 1 - Pokud je hráč v gangu. 0 - ID gangu. 3 - Oprávnění člena. 350661 - Přispěl do gangu. 44 - Počet zabití. 11 - Počet úmrtí. 102 - Získaný respekt. 0 - Zda si může vybrat výplatu. 1 - Zda má člen vyp/zapnutý spawn u gangu. 0 - Zda má člen vyp/zapnuté zprávy gangu. 0 - Zda je hráč v interiéru. {FFA500}Střelec - Rank. ÚPRAVA ÚDAJŮ GANG VOZIDEL Ukázka uložených údajů: 0 1 432 0 0 2194.994 1234.298 10.703 266.3910 - ID gangu. 1 - Slot vozidla. 432 - Model vozidla. 0 - 1. ID barvy. 0 - 2. ID barvy. 2194.994 - X pozice pickupu. 1234.298 - Y pozice pickupu. 10.703 - Z pozice pickupu. 266.391 - A pozice pickupu. LZE PŘIDAT I VOJENSKÝ GANG Stačí, když přidáte vozidla a při úprave vozidel přepíšete všechny modely na vojenská vozidla. JAK ZMĚNIT VŮDCE GANGU 1. Změnit vůdce v hl. soubouru - První je potřeba změnit jméno vůdce souboru {id_gangid}.dat 2. Změnit jméno v seznamu členů - V souboru {id_gangu}Members.dat změnit první jméno. 3. Změnit údaji hráči - A nakonec změnit údaje v souboru hráče. DOWNLOAD INCLUDE i-zcmd http://forum.sa-mp.com/showthread.php?t=576114 A to je všechno. jgsystem https://pawno.cz/files/file/67-just-gangsystem/ ZÁVĚR Zatím jsem pracoval stylem "hlavně, že to funguje", takže nechť konečně začne hromadná optimalizace!
×