Jump to content

Search the Community

Showing results for tags 'dynamic'.

  • 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

Found 7 results

  1. JUST ADMIN SYSTEM v0.3Dynamic Admin systém, který obsahuje nejmodernější zpracování zdrojového kódu, průměrné optimalizace, jednoduchou práci a možnosti vlastní úpravy, redukuje zbytečnou námahu, a využívá jak nejrychlejší tak i nejlepší a nejnovější includy UDĚLOVÁNÍ SKUPINY NAMÍSTO ADMIN LEVELU ČETNOST PŘÍKAZŮ PRO VŠECHNY HRÁČE A ADMINY VIP SYSTÉM S PŘIJATELNÝMI MOŽNOSTMI MOŽNOST UDĚLOVAT JMÉNO BARVY NAMÍSTO HEX JEDNODUCHÉ PŘIDÁVÁNÍ RANKU A TITULU NĚKOLIK MOŽNOSTÍ VPISU DO CHATU PO ESTETICKÉ STRÁNCE NEJLEPŠÍ ZPRACOVÁNÍ PŘEHLEDNÝ SEZNAM PŘÍTOMNÝCH VIP HRÁČŮ A ADMINŮ JEDNODUCHÁ A PŘEHLEDNÁ MOŽNOST ÚPRAVY ÚDAJŮ NĚKOLIK INFORMACÍ O SCRIPTU Každý příkaz vrací jednu z 5 fcí, která obsahuje podmínku(aka odkaz) na daný příkaz, kvůli přehlednosti, na místo hexu barvy, stačí jen napsat její ang. jméno, například red nebo blue, část užitečných fcí jsou preprocesory namísto zbytečných přidávání jako ostatní fce, na heslo byla použita stan. fce ze a_sampu, titul, rank a skupinu, hráče, která se odešle do chatu spolu s nickem, kontroluje fce, a není to všechno zbytečně v callbacku, pokud má hráč nějaký trest, například zmražení, tak po odpojední a následném návratu ho po spawnu zkontroluje a znova zmrazí obsahuje nejznamnější příkazy a možnosti jednoduché zpracování zdrojového kódu pro snadnější úpravy či pokračování v tvorbě pro ostatní uživatele, lze si jednoduše přenastavit ceník vip mincí u daných příkazů využívá rychlejší cyklus na to foreach, obsahuje desítky kontrol, například zda je/není hráč ve vozidle, server může mít pouze jednoho majitele, a mnoho dalšího... SEZNAM PŘÍKAZŮ A VYSVĚTLENÍ k verzi 0.1 Hráč Premium Moderátor Pomocník Admin Majitel /aregister - Registrace. Bez něj, se údaje neuloží a nelze používat příkazy z AS. /alogin - Přihlášení. Bez ní, se údaje neuloží a nelze používat příkazy z AS. /admin - Zobrazení všechny příkazů v AS. /admins - Zobrazení všechny přítomných administrátorů na serveru. /asave - Uloží všechny údaje. Jinak se údaje ukládají po odchodu ze serveru. /vips - Zobrazení všechny přípomných vip hráčůn na serveru. /vip - Zobrazení všechny příkazů v AS pro vip hráče. /vcoins - Zobrazí hráči jeho počet VIP mincí. /vhp - Doplní hráči život. /varmour - Doplní hráči vestu. /vrepair - Opraví hráčovi vozidlo. /vme - Mluvka v chatě. /vflip - Obrátí vozidlo. /vpara - Daruje padák. /vjetpack - Daruje jetpack. /vhide - Zneviditelní na mapě. /vunhide - Zviditelný na mapě. /vpsave - Uloží pozici pro port. /vpload - Portne hráče na uloženou pozici. /vnitro - Namontuje nitro do hráčova vozidla. /vhydrau - Namontuje hydrauliku do hráčova vozidla /vweapons - Daruje hráči výbavu. /asay - Mluvka v chatě /avar - Varuje hráče, nemá limit. /aspam - Promaže celý chat prázdným textem. /atime - Lze přenastavit čas na serveru. /aweather - Lze přenastavit počasí na serveru. /agoto - Portne administrátora k danému hráči. /amute - Umlčí daného hráče v chatu. /aunmute - Odmlčí daného hráče v chatu. /ajail - Uvězní daného hráče do známého vězení. /aunjail - Propustí daného hráče. /afreeze - Zmrazí daného hráče na místě /aunfreeze - Odmrazí daného hráče. /aget - Porte admina k danému hráči. /akick - Vyhodí hráče ze serveru. /arank - Nastavit hráči daný rank /agw - Darovat hráčovi danou zbraň. /acar - Vytvořit vozidlo, max 1. /adcar - Zničit vytvořené vozidlo. /agetstats - Zjistí statistky daného hráče. /aremove - Vyhodí hráče z vozidla. /apingkick - Vyhodí hráče za serveru, pokud má vysoký ping. /acolors - Zobrazí jména barev, které lze nastavit. /anickcolor - Změní barvu nicku. /aban - Zabanuje daného hráče. /atitle - Nastavit danému hráči titul. /ahp - Nastavit danému hráči život. /aar - Nastavit danému hráči vestu. /akill - Zabije daného hráče. /asetvip - Nastavit danému hráči vip. /agm - Darovat hráčovi daný počet peněz. /askin - Nastavit danému hráčovi skin. /adisarm - Odzbrojí daného hráče. /agivecoins - Daruje danému hráči VIP mince. /atakecoins - Odebere danému hráči VIP mince. /asetowner - Admin s rcon po zadání tohoto příkazu se stane majitelem a může nastavit adminlevel. /asetlevel - Pouze majitel. Může nastavit danému hráči oprávnění(adminlevel). JAK PŘIDAT SCRIPT NA SERVER 1. Stáhnout si celý soubor a rozbalit 2. Soubor .amx přetáhnout do filterscripts. 3. Ve složce scriptfiles vytvořit složku Datas a v ní složku Saf. 4. Ve konfiguraci serveru přidat do řádku filterscripts daný script. 5. Resetovat server. 6. Připojit se na server, přihlásit se na rcon a zadat příkaz /asetowner. 7. Hotovo. VLASTNÍ ÚPRAVY AS Seznam preprocesorů - Hlavní Preprocesor Hodnota Popis #define MAX_TITLE_LEN 20 Maximální délka titulu v chatě. Nedoporučuji upravovat bez znalosti ssacanf2! #define MAX_RANK_LEN 20 Maximální délka ranku v chatě. Nedoporučuji upravovat bez znalosti sscanf2! #define MAX_FILE_NAME_LEN 40 Maximální délka jména složky, kde se ukládají údaje. #define MAX_PASSWORD_LEN 65 Maximální povolená délka hesla. Nedoporučuji upravovat bez pokročilé znalosti pawn! #define MAX_COLOR_LEN 10 Maximální délka jmén barve, které lze přidat. Upravit jen, pokud přidáte jméno delší než 9 znaků! #define MAX_ALLOWED_PING 300 Maximálně povolený ping pro příkaz /pingkick. #define MAX_ADMIN_LEVEL 7 Maximální admin level. NOVÉ #define MAX_VEHICLE_SPAWN 10 Maximální počet spawnutí acars Seznam levelů Jméno levelu Kód Level Hráč LEVEL_PLAYER 0 Moderátor LEVEL_MOD 1 Pomocník LEVEL_HELPER 2 Hlavní Moderátor LEVEL_MAINMOD 3 Hlavní Pomocník LEVEL_MAINHELPER 4 Administrátor LEVEL_ADMIN 5 Hlavní Administrátor LEVEL_MAINADMIN 6 Majitel LEVEL_OWNER 7 Seznam preprocesorů - Ceník vip příkazů Preprocesor Hodnota #define COINS_HEALTH 50 #define COINS_ARMOUR 100 #define COINS_REPAIR 150 #define COINS_PARACHUTE 100 #define COINS_JETPACK 200 #define COINS_HIDE 250 #define COINS_ME 10 #define COINS_FLIP 50 #define COINS_SAVE 50 #define COINS_LOAD 100 #define COINS_NITRO 150 #define COINS_WEAPONS 200 #define COINS_HYDRAULICS 100 Seznam funkcí - Hlavní Jméno Parametry Popis IsPlayerRegistered playerid Vrací true/false, zda je hráč zaregistrovaný. IsPlayerLogged playerid Vrací true/false, zda je hráč přihlášen. IsPlayerVip playerid Vrací true/false, zda je hráč vip. HavePlayerRank playerid Vrací true/false, zda hráč má rank. HavePlayerTitle playerid Vrací true/false, zda hráč má titul. GetPlayerTitle playerid Vrací titul hráče. GetPlayerCoins playerid Vrací hráčův počet vip mincí. GetPlayerRank playerid Vrací rank hráče. IsPlayerFreeze playerid Vrací true/false, zda je hráč zmražen. IsPlayerMute playerid Vrací true/false, zda je hráč je hráč umlčen. IsPlayerJail playerid Vrací true/false, zda je hráč uvězněn. IsPlayerHide playerid Vrací true/false, zda je hráč neviditelný na mapě. GetPlayerLevel playerid Vrací hráčův adminlevel. GetPlayerGroup playerid Vrací jméno skupiny hráče. IsPlayerOwner playerid Vrací true/false, pokud je hráč majitel. GetPlayerNick playerid Vrací nick hráče. IsColorExist sColorName[] (red, blue...) Vrací true/false, zda daná barva existuje. GetColorID sColorName[] (red, blue...) Vrací id dané barvy. ShowPlayerCoinsStatus playerid, iTake Odebere dané vip mince+odešle zprávu ohledně zůstatku SendMessageToAT Message[] Odešle zprávu všem administrátorům. SaveServerData - Uloží údaje serveru. LoadServerData - Načte údaje serveru. SavePlayerData playerid Uloží údaje hráče. NOVÉ SetPlayerRank playerid, sRank[], sColorName[] Nastavit údaje hráče. NOVÉ SetPlayerTitle playerid, sRank[], sColorName[] Nastavit titul hráči. NOVÉ RemovePlayerTitle playerid Odebrat titul NOVÉ RemovePlayerRank playerid Odebrat rank Seznam funkcí - Zprávy Funkce Parametry Output MsgUnRegistered playerid "Nejsi zaregistrován: Použijte /aregister" MsgUnLogged playerid "Nejsi přihlášen: Použijte /alogin" MsgRegistered playerid "Již jste zaregistrován: Použijte /alogin" MsgLogged playerid "Již jste přihlášen." MsgPremium playerid "Nevlastníte VIP účet." MsgNotEnoughCoins playerid "Nemáte odstatek VIP mincí" MsgAdminLevel playerid "Na tento příkaz nemáte dostatečné oprávnění." MsgPermission playerid "Nevlastníte administrátorská práva." MsgUseCommand playerid, var1[], var2[] "[ ! ] Použití příkazu: {FF0000}var1[] {FFFFFF}var2[]" MsgCmdError playerid, var1[] "[ ! ] {FFFFFF}var1" Postup pro přidání příkazu k danému oprávnění, k verzi v0.3 Rozmyslet si pro jaké oprávnění, například příkaz slap pro Helpera. Přidává se prakticky stejně jako standartní příkazy přes i-zcmd, jen se změní jméno a přidá oprávnění(level): Command[aslap, LEVEL_HELPER](playerid, params[]) { //Obsah příkazu return (true); //<--- nezapomenout ! } Již samotný příkaz nám zajistí, že příkaz budou moct jen přihlášení hráči s levelem Helper. Pokud váš postup byl správný, tak by jste po úspěšně kompilaci měl mít příkaz na serveru pouze pro helpery a výšše. DOWNLOAD v0.1 - Začátek Pawno v0.2 - Lukášův update Pawno v0.3 - Groups update Pawno v0.4 - Code update ? PODĚKOVÁNÍ Y_Less Yashas Double-O-Seven xhunterx Lukasz vEnd Za jeho sscanf2. Za jeho i-zcmd. Za jeho dof2. Inspirace některých název skupin z jeho unit a princip. Za pomoc při úprave a opravě scriptu, a za 'Lukášův update' Za pomoc při úprave a opravě scriptu, a za návod a radu na hash hesla. ZÁVĚR Na závěr bych chtěl dodat, že pokud bude mít tento AS dobré ohlasy, tak budu neprodleně dělat na další verzi, kde bude spousty úprav a několik novinek, včetně různých dodatků, například rozšířený počet skupin.
  2. Obsah Úvod Čo sú to runtime erorry Príklad použitia Záver Úvod Pri vývoji softvéru je veľmi ľahké urobiť nejakú chybu. Na testovanie (debugovanie) sa používajú rôzne metódy, jednou z tých agresívnejších môžu byť runtime errory. Je len na Vás, či si vyberiete túto metódu s využitím runtime errorov / výnimiek / exceptions. V návode sa v podstate nenaučíte nič nové, patrí medzi "zložitejšie" len preto, že na správne využitie týchto informácií musíte mať isté programátorské myslenie a poznať peklo debugovania komplexných programov. Čo sú to runtime errory Určite ste sa stretli s tým, že Vám padol za behu server s textom Run time error 4: "Array index out of bounds" Stalo sa to, že server na pozadí pri každom priradení hodnoty kontroluje, či ste neprekročili veľkosť premennej. Server zistil, že áno a zhodil server. V momente ste vedeli, že v kóde je chyba. Keby server nepadol, čo by sa stalo? V prípade, že by nedochádzalo ku kontrole, že či nebola prekročená veľkosť pola, zapisovanie údajov by pokračovalo ďalej v pamäti (aj za danou premennou) a mohlo by sa stať, že by sa prepísali hodnoty nasledujúcich premenných / polí. Takáto chyba je prakticky nemožná na detekciu. Napíšem príklad z mojej praxe. Čo to obnáša? V prípade, že dôjde k nejakej chybe, padne server. V prípade, že tam nejaká chyba je, nájdete ju ľahšie. Prakticky platí, čim väčší mód, tým ťažšie sa hľadajú chyby a presne to uľahčujú runtime errory. V skratke teda ide len o to, že namiesto bežnej kontroly extrémnych hodnôt premenných, nevrátite "0", "-1", alebo nejakú podobnú hodnotu, ale rovno zhodíte server a poviete programátorovi, kde hľadať chybu. Samozrejme pri nasadení servera online môžete tieto runtime errory vypnúť a používať ich len pri debuggingu. Príklad použitia Pre zjednodušenie práce som dal dokopy definície runtime errorov (žiadny zložitý kód). Includ sa dá stiahnuť tu. Nezabudnite ho uložiť do pawno/include. #define DEBUGGING // povoli run time errory | pre ich vypnutie staci zakomentovat / zmazat tento riadok #include <runtime_errors> // includnut AZ ZA DEFINE DEBUGGING main() { new a = 4; TestZero(a, AMX_ERR_PARAMS, "Tento string sa nevypise kedze a nie je 0."); a = 0; TestZero(a, AMX_ERR_PARAMS, "Hodnota \"a\" nemoze mat nulu."); print("Tento string sa uz nevypise, kedze server padol v predoslom kroku."); } Výstup: ... Loaded 0 filterscripts. Hodnota "a" nemoze mat nulu. Script[gamemodes/test.amx]: Run time error 25: "Parameter error" Number of vehicle models: 0 Odkiaľ je funkcia TestZero()? To je len príklad, nemusíte ju použiť. Nachádza sa už defaultne v include. Vyzerá takto: stock TestZero(var, err, str[]) { // nazov funkcie si zmente ako chcete #pragma unused var, err, str #if defined DEBUGGING if (var == 0) { // tuto podmienku mozete zmenit, vsetko ostatne nechajte tak print(str); switchError(err); } #endif } Svoje vlastné funkcie si môžete vytvoriť na základe predlohy TestZero(), alebo akokoľvek sa rozhodnete. Odkiaľ mám hodnotu AMX_ERR_PARAMS? To sú oficiálne hodnoty vstavané do Pawn AMX, ich zoznam sa nachádza v include runtime_errors, ale na ukážku sem nejaké dám. Ich hodnoty nie sú nijak podstatné, upravujú len správu čo sa vypíše pri páde servera. Môžete tiež všade použiť AMX_ERR_NONE, čo nevypíše žiadnu ďalšiu správu o páde a vypísať svoje vlastné informácie pre uľahčené nájdenie chyby. #define AMX_ERR_NONE 0 #define AMX_ERR_EXIT 1 // forced exit #define AMX_ERR_ASSERT 2 // assertion failed #define AMX_ERR_STACKERR 3 // stack/heap collision #define AMX_ERR_BOUNDS 4 // index out of bounds Úplný zoznam errorov sa nachádza v include. Záver To, či je toto využitie dobré, alebo nie, nikto nemôže povedať. Je to jednoducho štýl programovania a "exceptions", alebo "runtime errory" sú bežnou súčasťou vyšších programovacích jazykov. Ich implementácia v Pawn je vcelku chabá, ale dá sa použiť. Ak sa však raz pre neho rozhodnete, buďte zodpovední a používajte ho všade.
  3. OceT

    script DynamicWarp Systém v1.0

    Za poslední dobu jsem tu viděl dva warp systémy, tak mě napadlo, že udělám dynamický warp systém s tvořením warpů, ukládáním a zapsáním do /warpy ve hře. Jak vytvořit warp: 1) Najděte si místo, kde chcete vytvořit warp. 2) Na tom místě napište příkaz /createwarp (pro RCON) 3) Do dialogu napište jaký bude příkaz na warp (bez lomítka) 4) Zvolte, zda se můžou hráči na tento warp warpovat s vozidly nebo bez. 5) Pokud jste všechno udělali správně, tak je warp vytvořen, uložen a zapsán ve /warpy. 6) Můžete daný warp používat.. Screeny: http://prnt.sc/edicbj http://prnt.sc/edicev http://prnt.sc/edicnv http://prnt.sc/edics9 http://prnt.sc/edicw4 http://prnt.sc/edid13 http://prnt.sc/edid4j Ukládání - DOF2 (Ukládají se pozice X,Y,Z, FacingAngle a ID Interiéru): TOTAL_WARPS = 1 Nazev[0] = test X[0] = 1613.55664062 Y[0] = 1863.12292480 Z[0] = 12.01562500 A[0] = 175.98764038 Interior[0] = 0 Vozidla[0] = 1 Ke stáhnutí dávám .pwn + .amx. Download: http://pawno.cz/files/file/52-dynamicwarp-system/
  4. Scydo

    script Dynamic GroupSystem

    DYMAMIC GROUPS SYSTEM není potřeba žádný jiný include! VÝHODA Zdravím vás u include z nacistické dílny. Největší výhoda je, že include nemá řádné zásadní možné zpracování(například ukládání údajů). Uživatel tak má naprostý přehled, nemusí se vrtat v několika funkcích o desítkách parametrů, takže může kreativně vytvářet spousty systémů, jak AdminSystém či VipSystém. SEZNAM FUNKCÍ IsGroupExist GetGroupID GetFreeGroup GetGroupCount GetGroupIdef GetGroupName GetGroupObjName GroupInConsoleCheck CreateGroup SetPlayerGroup SetMainGroup bool:GetPlayerGroup RemovePlayerGroup GetPlayerGroupEx VYSVĚTLENÍ FUNKCÍ CreateGroup Parametry (sGroup[], sObjName[], Idef) Základní funkce. Vytváří skupinu. Nejdůležitější pro uživatele je parametr sGroup. Pracuje se s ním stejně jako s id, akorát slovně. Parametr sObjName značí jméno pak ve hře. Idef je spíše jen číslo, ale může se brát i jako level či pořadí. Použití: public OnFilterScriptInit() { CreateGroup("vip", "{FFFF00}VIP", 1); CreateGroup("premium", "{00FF00}Premium", 1); CreateGroup("helper", "{0000FF}Pomocník", 2); CreateGroup("admins", "{FF0000}Administrátor", 3); return 1; } GetGroupID Parametry (sGroup[]) Systémová funkce - Zjistí ID skupiny a vrátí jí. Pokud jí nenajde, vrátí -1. Použití: public OnFilterScriptInit() { /* Globál = id 0 */ CreateGroup("vip", "{FFFF00}VIP", 1); /* VIP = id 1 */ CreateGroup("premium", "{00FF00}Premium", 1); /* Premium = id 2 */ new premium_id = GetGroupID("premium"); /* Vrátí 2 */ GetFreeGroup Parametry (Žádne parametry) Systémová funkce - Zjistí ID volného slotu pro skupinu a vrátí jí. Použití: new freeid = GetFreeGroup(); /* Vrátí 1 */ CreateGroup("vip", "{FFFF00}VIP", 1); CreateGroup("premium", "{00FF00}Premium", 2); new freeid2 = GetFreeGroup(); /* Vrátí 3 */ GetGroupCount Parametry (Žádne parametry) Systémová funkce - Zjistí počet uživatelem vytvořených skupin a vrátí tento počet. Použití: CreateGroup("vip", "{FFFF00}VIP", 1); CreateGroup("premium", "{00FF00}Premium", 1); CreateGroup("helper", "{0000FF}Pomocník", 2); CreateGroup("admins", "{FF0000}Administrátor", 3); new count = GetGroupCount(); /* Vrátí 4 */ GroupInConsoleCheck Parametry (Žádne parametry) Použití: IsGroupExist Parametry (sGroup[]) Zjistí, zda daná skupina existuje. Jesltiže ano, vrátí true, jinak vrátí false. Použití: if (IsGroupExist("admins")) print("Admine existuji !"); GetGroupName Parametry (iGroup_ID) Vrátí zjištěné jméno skupiny z id. Použití: public OnFilterScriptInit() { CreateGroup("skupina1", "Skupina1", 0); CreateGroup("skupina2", "Skupina2", 0); new grpid = GetGroupName(2); /* Vrátí "skupina2" */ SetMainGroup Parametry (sGroup[], sObjName[]) Podobně jako CreateGroup, akorát nastaví globální/hlavní skupinu, kterou bude mít defaultně každý hráč. Použití: public OnFilterScriptInit() { SetMainGroup("players", "Hráč"); GetGroupIdef Parametry (sGroup[]) Vrátí idef číslo dané skupiny. Použití: CreateGroup("admins", "Admins", 3); new sString[34 + 1]; format(sString, sizeof(sString), "Administrátoři mají nyní level %i", GetGroupIdef("admins")); SendClientMessage(playerid, -1, sString); /* Administrátoři mají nyní level 3 */ GetGroupObjName Parametry (sGroup[]) Vrátí jméno ve hře dané skupiny. Použití: CreateGroup("admins", "Admins", 3); new sString[20 + 1]; format(sString, sizeof(sString), "%s má level %i", GetGroupObjName("admins"), GetGroupIdef("admins")); SendClientMessage(playerid, -1, sString); /* Admins mají nyní level 3 */ SetPlayerGroup Parametry (playerid, sGroup[]) Nastaví hráči danou skupinu. Použití: public OnFilterScriptInit() { CreateGroup("vip", "{FFFF00}VIP", 1); return 1; } public OnPlayerSpawn(playerid) { if (Zazrak[playerid]) SetPlayerGroup(playerid, "vip"); return 1; } GetPlayerGroup Parametry (playerid, sGroup[]) Zjistí zda hráč je v dané skupině. Jestliže je, vrátí true, jinak vrátí false Použití public OnFilterScriptInit() { CreateGroup("admins", "{FF0000}Admins", 1); return 1; CMD:hp(playerid, params[]) { if (!GetPlayerGroup(playerid, "admins")) return SendClientMessage(playerid, -1, "Nemáš dostatečné oprávnění !"); GetPlayerGroupEx Parametry (playerid) Vrátí id skupiny, ve které se hráč nachází. RemovePlayerGroup Parametry (playerid) Odstraní skupinu danému hráči. Použití RemovePlayerGroup(playerid, "admins"); UKÁZKY NĚKOLIK UKÁZEK POUŽITÍ JEDNODUCHÉ NASTAVENÍ SKUPIN VE HŘE JEDNODUCHÁ KONTROLA SKUPINY/IDEFU HRÁČE TITUL V CHATĚ PRO VŠECHNY HRÁČE TITUL VŠECH SKUPIN V CHATĚ JEDNODUCHÝ VIP SYSTÉM DOWNLOAD Stačí include vložit do složky pawno/include Pawno Pastebin Enjoy.
  5. Guyy

    pomoc Save Tuning

    Ahoj Našiel som Vehicle Dynamic Systém ale problém je že mi nechce uložiť Tuning, zakládal som Topicy na iných fórach no odpovede som sa nedočkal, tak aspoň dúfam že tu sa dočkám. Prosím upravte mi tento Kód Ďakujem.
  6. Zdravím normální uživatelé tohoto fora(nenormální se k tomu ani nevyjadřujte ) Mám jen takovou teoretickou otázku. Dělám jeden FS pro server kde je RZE 8. Jenže mám takovej poblem že když vytvořím pickup tak s eprostě ve hře nezobrazí. Na localhostu kde nemám RZE jen prazdnej GM tak je to ok. Zkoušel jsem Normální pickup(CreatePickup) i Dynamickej(CreateDynamicPickup) ale ani jeden se proste nezobrazí. Máte s tím někdo stejnou z kušenost popřípadě jak to vyřešit jiným zpusobem než pickupem,Checkpointem, a nebo objectem. Předem díky za tipy a rady
  7. Stack/heap size warning Niektorým z vás sa už stalo, že pri kompilácii ste uvideli správu podobnú tejto: Header size: 88 bytes Code size: 60 bytes Data size: 0 bytes Stack/heap size: 16384 bytes; estimated max. usage=4064 cells (16256 bytes) Total requirements: 16532 bytes Je to chyba vášho kódu, ale kompiler ju nedokáže sám nájsť. Tým, čo nevedia o čo sa jedná, vysvetlím čo je to za chybu, ako ju nájsť a opraviť. Text uvedený vyššie bol vygenerovaný pri kompilácii nasledujúceho kódu: main() { new pole[4059]; } Štruktúra AMX súboru Keď sa skompilovaný .amx súbor nahrá do pamäte (pri spustení servera), má nasledovnú štruktúru: +--------+ | prefix | <- metadáta o amx súbore, napr. adresy sekcií code a data, verzia kompilera, .. | ------ | | code | <- v tejto časti sa nachádza kód skriptu | ------ | | data | <- nemenné dáta, hlavne stringy | ------ | | stack | <- časť pamäte, do ktorej sa ukladajú lokálne premenné | ~~~~~~ | | heap | <- časť pamäte, do ktorej sa ukladajú globálne a static premenné +--------+ Prefix má najnižšiu adresu v RAM a heap je na konci programu - najvyššia adresa v RAM. Zásobník - stack V stacku sú uložené všetky lokálne premenné. Pri spustení servera preto stack začína prázdny. Medzi heap a stack je v tom momente rezervovaný priestor. Podľa výstupu kompilera (uvedený vyššie) je defaultná veľkosť celej dynamickej oblasti 16KB. Keďže veľkosť dát alokovaných na zásobníku sa nedá pri kompilácii predpovedať (lokálne premené vzniknú až počas behu programu), kompiler iba odhadne, že hrozí pretečenie zásobníka. Nedokáže povedať kedy ani kde. Avšak, ak už raz si myslí, že k nemu dôjde, tak mu treba veriť. V prípade, že nastane povestný stack overflow, tak dáta zo sekcie stack začnú prepisovať dáta zo sekcie heap (lokálne premenné zmenia chybne hodnoty globálnych premenných). V Pawn každá premenná zaberá 4 bajty. Testovací kód vyššie, kde pole má 4059 prvkov, zaberie 16276 bajtov. Na stack sa tiež ukladajú ďalšie hodnoty, o ktorých programátor nemá prehľad, adresa návratu z funkcie, atď. Tieto dokopy budú mať tých 16 KB. Navyše, je to len odhad kompilera, že sa niečo stane. new test0; /* zabera 4 bajty */ new test1[3]; /* zabera 12 bajtov */ Viac informácií nájdete na nete. Ako to opraviť Najrozumnejšie bude zoptimalizovať kód - odstrániť 256 bajtové polia, nepotrebné premenné a všetko bude fungovať. Sú gamemody rátajúc 100 000 riadkov, ktoré tento limit neprekračujú, prečo by mal váš skript prekračovať? Pragma dynamic V prípade, že už nemôžete optimalizovať viac, môžete manuálne zväčšiť dynamickú pamäť pre .amx súbor. Direktíva preprocesoru pragma dynamic určuje koľko dynamickej (stack/heap) pamäte bude skript používať. Nastavíte to jednoducho pomocou #pragma dynamic 17000 /* velkost dynamickej pamate v bajtoch */
×
×
  • Create New...