Jump to content

Mort

Uživatel
  • Příspěvků

    326
  • Registrován

  • Aktivní

  • Vítězných dnů

    3

Everything posted by Mort

  1. nejdřív si musíš říct, co všechno chceš ukládat a pak ti můžeme pomoct
  2. Jako kdyby ti byly 2,147,483,647 peněz málo Nebo můžeš použít nějakej 64bit include, ve kterým dokážeš vytvořit takovou proměnnou. To je už asi 1.8×1019
  3. Mort

    pomoc Příkaz

    Smaž ten return u těch zpráv
  4. Musíš to mít v OnPlayerConnect nebo někde jinde, kde znáš ID hráče.
  5. http://wiki.sa-mp.com/wiki/OnPlayerCommandText Tady je to celkem hezky napsaný, jak to funguje. Podívej se na ten kód a přečti si ty poznámky a pochopíš.
  6. Mort

    pomoc Pomoc s /padmins

    pokud neplatí podmínka IsPlayerAdmin, tak v tom formátování toho textu (proměnná string[1000]) nepřipojíš ten starý text k tomu novému => takže se vždycky přepíše jinou chybu v tom nevidím, pokud i tak to nebude fungovat, tak je chyba někde jinde
  7. Mort

    pomoc Pomoc s /padmins

    tak pošli celý příkaz /padmins
  8. Mort

    pomoc Camera

    nečekaně funkce v názvu obsahují slovo "camera" a dají se za 3 vteřiny najít na googlu http://wiki.sa-mp.com/wiki/SetPlayerCameraPos http://wiki.sa-mp.com/wiki/SetCameraBehindPlayer http://wiki.sa-mp.com/wiki/SetPlayerCameraLookAt
  9. http://wiki.sa-mp.com/wiki/SetObjectMaterialText
  10. *pwn soubor gamemódu/filterscriptů..
  11. Asi nějaká protekce pro přihlášení do rcon na ip adresu, pokud nemáš source tak s tím asi nic neuděláš.
  12. logicky přece nemůžeš zapsat float do integeru.. změn datový typ proměnné HP, uprav formátování znaménka '%' (viz. zde )a doporučuju ti změnit textdraw na playertextdraw
  13. Mort

    hledám Si pawner? Klikni sem

    Danny, pokud jsi již pochopil základy programování, tj. umíš u toho logicky přemýšlet, víš jak to funguje, tak učitele nepotřebuješ. Některé věci nevytvoříš za pár hodin, někdy to trvá i dny, týdny, než vytvoříš dokonalý algoritmus. Nejdřív si ale musíš ujasnit, co vše má tvůj kód dělat, co se kdy stane a podle toho začni.
  14. Mort

    pomoc [POMOC]Odpočet

    Musíš přes cyklus projít všechny online hráče na serveru a zjišťovat dálku mezi policistou a daným hráčem (pozor, aby jsi nezjišťoval dálku mezi sebou) Pokud podmínka platí (tj. jsou mezi sebou míň než 10 metrů) tak přidej další podmínku, jestli má hráč wantedlevel. Jestli ano, tak ho zatkneš.
  15. Mort

    pomoc [POMOC]Odpočet

    Ahoj, to se udělá tak, že danému hráči vytvoříš timer přes funkci SetTimerEx Na samp-wiki máš návod na použití Ještě je tu něco ohledně zatýkání, máš spoustu zbytečného kódu, když se na to podívám tak se to dá napsat takto: public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if(Zamestnanie[playerid] == 1) { if(newkeys == KEY_WALK) { new id; if(GetPlayerWantedLevel(id) == 0)return SendClientMessage(playerid,0xFFAAFF,"Hráč nemá WantedLevel"); if(GetDistanceBetweenPlayers(playerid, id) >= 10) return SendClientMessage(playerid,0xFFAAFF,"Niesi pri hráčovi"); ResetPlayerWeapons(id); Vyplata[playerid] += 50 * GetPlayerWantedLevel(id); SetPVarInt(id,"Jail",1); SetTimerEx("Jail",60000 * GetPlayerWantedLevel(id),true,"i",id); SetPlayerWantedLevel(id,0); SetPlayerInterior(id,3); SetPlayerPos(id,198.3796, 160.8905, 1003.03); } return 1; } Ps.: opravdu ti to zatýkání funguje? opravdu tomu moc nevěřím, myslím totiž, že takovéto zatýkání půjdou pouze na hráče ID:0
  16. Testování rychlosti: new start, end, help, str[5]; fclose(fopen("test-files.ini", io_write)); start = GetTickCount(); new file = FileOpen("test-files.ini"); for(new i = 0; i < 5000; i++) { format(str, 5, "%d", i); FileWriteInteger(file, str, i); } FileClose(file); end = GetTickCount(); printf("mIni zapis: %dms", end - start); start = GetTickCount(); file = FileOpen("test-files.ini"); for(new i = 0; i < 5000; i++) { format(str, 5, "%d", i); FileReadInteger(file, str, help); } FileClose(file); end = GetTickCount(); printf("mIni cteni: %dms", end - start); fremove("test-files.ini"); fclose(fopen("test-files.ini", io_write)); start = GetTickCount(); for(new i = 0; i < 5000; i++) { format(str, 5, "%d", i); dini_IntSet("test-files.ini", str, i); } end = GetTickCount(); printf("dini zapisovani: %dms", end - start); start = GetTickCount(); for(new i = 0; i < 5000; i++) { format(str, 5, "%d", i); help = dini_Int("test-files.ini", str); } end = GetTickCount(); printf("dini cteni: %dms", end - start); Já jsem to taky zkoušel testovat oproti DOF2, ale nevím jestli jsem něco špatně nastavil, ale nikdy se mi do souboru nic nenapsalo. Kdyby jsi měl čas tak to můžeš prubnout.
  17. Je to jednoduchý ini systém, který je jednoduchý na použití a poměrně rychlý, protože data čte a zapisuje pouze jednou. Includ obsahuje následující fce: FileOpen(path[]) Otevře soubor path[] - cesta k souboru return: -1, pokud je již využíváno maximum souboru naráz, jinak vrací n číslo, se kterým se pracuje dál FileWriteString(index, key[], value[]) Zapíše textový řetězec př. Heslo=pawno.cz index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - je to jedinečný klíč, který se používá k zapisování dat např. "Heslo" value[] - hodnota klíče např. "pawno.cz" FileWriteInteger(index, key[], value) Zapíše číslo př. Penize=420 index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - je to jedinečný klíč, který se používá k zapisování dat např. "Penize" value - hodnota klíče např. 420 FileWriteFloat(index, key[], float:value) Zapíše desetinné číslo př. poziceX=420.420 index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - je to jedinečný klíč, který se používá k zapisování dat např. "poziceX" float:value - hodnota klíče např. 420.420 FileWriteBoolean(index, key[], bool:value) Zapíše logickou hodnotu, základně je to nastaveno tak, že pokud je podmínka pravdivá, tak se zapíše jako "ANO", pokud ne tak "NE" př. VIP=ANO index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - je to jedinečný klíč, který se používá k zapisování dat např. "VIP" bool:value - hodnota klíče true/false FileReadString(index, key[], val[]) Přečte textový řetězec a zapíše jej do val[] index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - klíč k hodnotě val[] - sem se hodnota daného klíče zapíše FileReadInteger(index, key[], &val) Získá hodnotu a zapíše jej do val index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - klíč k hodnotě &val - sem se hodnota daného klíče zapíše FileReadFloat(index, key[], &Float:val) Přečte desetinné číslo a zapíše jej do val index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - klíč k hodnotě &Float:val - sem se hodnota daného klíče zapíše FileReadBoolean(index, key[], &bool:value) Přečte textový řetězec a zapíše jej do val[] index - je to číslo, které dostaneme, když otevřeme soubor pomocí FileOpen key[] - klíč k hodnotě &bool:value - sem se hodnota daného klíče zapíše FileDelete(path[]) Smaže soubor path[] - cesta k souboru FileRemoveData(index, key[]) Smaže data pomocí klíče (smaže celý řádek) index - číslo, které dostaneme pomocí FileOpen key[] - klíč, který smaže FileClose(index) Zapíše všechny změny a uvolní paměť k dalšímu použití. index - číslo, které dostaneme pomocí FileOpen ---------------------------------------------------------------------------------------------------------------- Příklad použití: new soubor = FileOpen("ahoj.txt"); FileWriteString(soubor, "Pozdrav", "zdravim vsechny"); // zapíšeme string FileWriteInteger(soubor, "Cislo", 420); // zapíšeme číslo FileWriteFloat(soubor, "Cislo_Float", 666.6666); // zapíšeme float FileWriteBoolean(soubor, "Opily", true); // zapíšeme bool FileClose(soubor); // zapíšeme všechny data // soubor bude nyní vypadat takto /* Pozdrav=zdravim vsechny Cislo=420 Cislo_Float=666.6666 Opily=ANO */ // nyni ziskame data do promennych new pozdrav[50], cislo, Float:cislo2, bool:opily; soubor = FileOpen("ahoj.txt"); FileReadString(soubor, "Pozdrav", pozdrav); // v proměnné pozdrav nyní bude "zdravim vsechny" FileReadInteger(soubor, "Cislo", cislo); // v proměnné cislo nyní bude 420 FileReadFloat(soubor, "Cislo_Float", cislo2); // v proměnné cislo2 nyní bude 666.6666 FileReadBoolean(soubor, "Opily", opily); // proměnná opily nyní bude true // ještě zkusíme vymazat řádek FileRemoveData(soubor, "Pozdrav"); // a uložíme FileClose(soubor); // takže nyní v souboru "ahoj.txt" bude: /* Cislo=420 Cislo_Float=666.6666 Opily=ANO */ ------------------------------------------------------------------------------ Pokud soubor nemohl byt vytvoren tak se server vypne. Přidal jsem i definy nahoře v includu, je u nich popisek co dělají takže si je raději přečtěte a kdyby něco nefungovalo, tak zvyšte hodnotu nebo mi napiště. Zkoušel jsem přečíst a načíst 5000 hodnot ze souboru, vyšli mi takové hodnoty oproti dini: [21:23:13] mIni zapis: 3463ms [21:23:17] mIni cteni: 3502ms [21:25:25] dini zapisovani: 128208ms [21:26:12] dini cteni: 47059ms Kdyby někdo chtěl tak se může dát hodnoty i oproti ostatním ini systémům, y_ini je rozhodně lepší ale já než bych se prodral nekonečnými warningy a errory Odkaz na stažení: http://pawno.cz/files/file/427-mini/ Jestli ho někdo použije tak budu rád Díkec, Mort.
  18. Mort

    pomoc Gang Wars

    Konstanta = neměnná hodnota
  19. Mort

    pomoc Gang Wars

    On je problém v tom, že tam máš 2D pole s enumem. Kdyby tam nebyl ten enum, tak by vše fungovalo jak mělo. Proto budeš v tomto případě muset použít nějakou konstantu. #define MAX_ZONES 10 new ZoneAttacker[MAX_ZONES] = {-1, ...}; new ZoneAttackTime[MAX_ZONES]; new ZoneID[MAX_ZONES]; new ZoneInfo[MAX_ZONES][eZone]; Pak už by neměl být problém ani s cykly: for(new i=0; i < MAX_ZONES; i++)//242 { ZoneID[i] = GangZoneCreate(ZoneInfo[i][zMinX], ZoneInfo[i][zMinY], ZoneInfo[i][zMaxX], ZoneInfo[i][zMaxY]); }
  20. já už jsem ti to psal, pokud ti to nefunguje tak to budeš muset odtabovat
  21. Myslel jsem nahoru mezi #define
  22. nahoru: #pragma tabsize 0 a ve funkci Streamer_OnPlayerEditObject na konec dej: return 1;
  23. Mort

    pomoc Citácia

    format(pText, sizeof pText, "Bot: Ahoj {%06x}%s", GetPlayerColor(playerid) >>> 8, PlayerName(playerid)); PS.: Pokud nenastavíš hráčovi barvu přes SetPlayerColor tak to bude psát vždycky černou barvou
  24. http://wiki.sa-mp.com/wiki/GameTextStyle
  25. To proto, že ta proměnná string do který to zapisuješ je moc malý, ten text je rozhodně delší. Místo 128 tam dej 500 a uvidíš. Navíc ten ShowPlayerDialog vypadá jinak, nejdřív je playerid, pak dialogid, potom typ dialogu, hlavička, text, l. tlačítko, p. tlačítko
×
×
  • Create New...