Jump to content

T.Evil

Uživatel
  • Příspěvků

    74
  • Registrován

  • Aktivní

Příspěvky posted by T.Evil

  1. Já jsem začal vytvářet svůj gamemode z toho důvodu že můj oblíbený server skončil. Nebudu tu říkat proč ale dost mě to mrzelo protože tam byla dobrá komunita lidí a celý to zkrachovalo na demenci majitele. Tak jsem se dostal k pawnu. Je to už více než rok a půl co jsem poprvé otevřel nový soubor  .pwn. Na modu pracuji každý den a i přesto že jsem stále totální noob věřím že mód dokončím. Nicméně s každou novinkou kterou do módu přidávám narážím na další a další problémy které neznám ačkoliv jsem si myslel že už to zvládnu úplně sám. A teď ve chvíli, kdy tomu začínám trochu lépe rozumět a už vím proč a jaké funkce jsou potřeba tam kde jsou a jak to funguje můžu říct, že tvorba módu se zrychlila téměř o dvojnásobek. Bohužel to ale neznamená že to bude hotové za měsíc. 

    No a co tím vlastně chi říct? Vložil jsem do toho spoustu úsilí,času a práce a přesto jsem teprve v polovině. Už mám v hlavě ten topic kde mód s velkým nadšením představím a udělal bych to nejraději hned. Jenže neudělám. Proč? Protože mód zdaleka není hotový a až bude, budu ho minimálně měsíc testovat s kámošema abysme přišli na všechny nedostatky a nepustili hráče do zabugovanýho prostředí. Chce to trpělivost, ambice a opravdu chtít dosáhnout toho, jak si to člověk představuje aby to bylo. Pokud je výsledek o 1% horší než si autor představuje, nemá cenu mód vydávat. A pokud mód oficálně neběží, nemá cenu ho prezentovat.

    Peace.

    • Líbí se mi to! (+1) 3
  2.  

     

    Edit.: Jinak v pawnu existuje funkce Najít a nahradit icon_e_wink.gif

    No, nepovídej :) Díky ale mám v modu svůj systém a vyhovuje mi tak jak je, především práce s pickupama je mnohem jednodušší a rychlejší.

     

     

     

    Rozdiel medzi SetTimer a SetTimerEx je, ze SetTimerEx ti da do publicu parametre. Cize do Ex som pridal 2 veci, prva je "i", coz oznacuje, ze ide o jeden ciselny parameter (i = integer = cele cislo). Napriklad "sii" by bol string a 2 cisla.

    Druha vec, ktoru som pridal je id pickupu, ktory hrac zobral, aby si v danom pickupe potom mal toto cislo pickupu a mohol vytvorit len ten jeden pickup. (aby sa nevytvorili vsetky naraz) Cize to cislo v tom SetTimerEx je ta premenna "id" v tom publicu timeru

     

    Díky moc za vysvětlení, rozhodně to v budoucno využiju vícekrát. Já jsem používal SetTimerEx pouze když jsem chtěl vyvolat timer por jednoho hráče, pro integer playerid ale teď už vim že se toho dá využít i jiným zplsobem :)

  3. @GaRGoyLeS

    Moc si vážím toho že jsi si s tím dal práci. Jenže já mám v kódu tisíce a stovky pickupů a fukncí s nimi spjaté že se mi to popravdě vůbec celý předělávat nechce icon_e_biggrin.gif

     

     

     

     

     

    PROBLÉM VYŘEŠEN - LOCK!

    Mockrát děkuji xHunterx za vyřešení problému. 
    Také děkuji všem ostatním kteří nad tím strávili svůj čas, aby pomohli.

    Náhodný návštěvníku tohoto téma:
    Pokud používáš podobný systém pickupů musel jsi se setkat se stejným problémem,
    já osobně jsem nikde jinde než zde na pawno.cz řešení nemohl najít. Oceň tedy toho, kdo
    ti právě pomohl. V tomto případě je to xHunterx !

     

  4. Udělal jsem ti scriptík, stačí použít CreateRePickup, který vše už zařídí, ale je to na tobě co použiješ, kód upravený od xhunterx je rozhodně kratší icon_e_biggrin.gificon_e_wink.gif

     

    PASTEBIN.COM

    Díky, ale přijde mi to zbytečně složitý, myslím že můj problém je pouze v resetování pickupu a nebo používám špatně timer...

     

     

     

    Je to z roku 2016 ... icon_e_biggrin.gif

     

    No vidíš jak to letí, po roce jsem se vrátil k pickupům, do teď jsem je zatim moc neřešil

     

     

    EDIT - DŮLEŽITÉ

     

    Když hráč sebere pickup[1], použiju DestroyPickup[1] , nastavím pickup[1] = -1, zapnu timer na 10000ms(10 vteřin) ...

    v timeru mám if(pickup[1] = -1) CreatePickup(...)

     

    To znamená, že pokud hráč sebere pickup, pickup zmizí a znovu se vytvoří za tu dobu kdy doběhne timer (10 vteřin). Což je super.

    Problém je však to, že když hráč sebere pickup a spustím timer, a jiný hráč sebere jiný pickup a spustí tento timer, timer začne zase znovu a oba pickupy se vytvoří za 10 vteřin.

     

    Já potřebuji aby hráč sebral pickup a ten se znovu vytvořil prostě za těch 10 vteřin nehledě na to jestli někdo jiný sebere jinej pickup jinde.

     

    Pokud timer udělám do ongamemodeinit a budu ho repeatovat pickupy se budou respawnovat všechny najednou po 10 vteřinách a to nechci.

     

    Znamená to tedy že bych musel pro každý pickup udělat zvláštní timer, nebo existuje něco "víc safe" ? icon_e_biggrin.gif

     

    Díky xHunterx

    Nevšiml jsem si že jsi to tam napsal. Vtipný je že jsem udělal přesně to samý mezitim co jsem tu nebyl  až na to že v tom timeru nemám switch, je to

    tak, že když použiju switch timer se spustí pouze pro tento konkrétní case když player seberepickup?icon_e_biggrin.gif 

    A jak moc je důležitý rozdíl mezi SetTimer a SetTimerEx v tomto případě? Hádám že to souvisí s caseováním těch pickupů v timeru že? Hned jsem zpět.. 

  5. Jenom dotaz: chceš, aby zmizel na 30 minut pro všechny hráče, nebo jenom pro hráče, co ho sebrali?

     

    Potřebuji aby pickup zmizel na 30 minut pro všechny hráče nehledě na tom jestli se hráč odpojí nebo ne. Pokud hráč sebere pickup[1], musí pouze pickup[1] zmizet na 30 minut.

     

    Znamená to tedy že bych musel mít pro každý pickup jeden timer?

  6. Hh, jo když mám

    INI:

    Alias0: BlaBla
    Alias1: BlaBla
    Alias2: BlaBla

    Tak si to dokážu přečíst jak potřbeuju to umim. Problém v ini_string je že ti to dycky přepíše Alias0 pokud to chci ukládat jednou funkcí a né třema.
    Pro každej string neboli nick bych musel vytvořit speciální funkci kterou to budu ukládat. Podobně jako když ukládám statistiky či data.

    Nicméně já to ukládal takhle:

    BlaBla = Alias
    BlaBla2 = Alias
    Blabla3 = Alias

    A chtěl jsem loadnout Alias = BlaBla, BlaBla2, BlaBla3 ... Ale to je zbytečně složitý takže seru na ini co se týče ukládání ip a nicků. TXT to jistí :d
     

  7. Jj právě chci mít 1 soubor s názvem IP a v tom jména všech co na tý ip byli.
    Musel bych zbytečně přepisovat celej kód kdybych to měl udělat bez použití ini.

    Takhle mi zbejvá už jenom načíst si jména a poslat to do SendClientMessage
    tak nějak jak jsem to psal nahoře cmd:alias. Jestli to nejde tak to budu muset
    předělat ale kdyby to šlo.. Byl bych rád :d

  8. Já to dělám kvůli tomu abych viděl kolik a jaký jména jsou na jedný ip, což se může hodit ve hře icon_e_biggrin.gif
    Pomocí INI to ukládám do souboru s názvem tý IP a v INI souboru mám

    Jméno1 = Alias
    Jméno2 = Alias

    Jméno3 = Alias
    ...

    Teď řešim jak to readnout a udělat z toho cmd:alias
    po jehož zadání ti vyskočí text IP: x.x.x.x.x - Alias = Jméno1, Jméno2, Jméno3 ...

     

    CMD:alias(playerid, params[])
    {
            new string[258],IPadress[16],alias[258], targetid;
            if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid,0xFFFFFFFF,"text");
    	if(sscanf(params, "u", targetid)) return SendClientMessage(playerid, 0xFFFFFFFF, "text");
    	if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid,0xFFFFFFFF,"text");
    
    	GetPlayerIp(targetid, IPadress, sizeof(IPadress)) ;
    
    	new INI:file = INI_Open(IP(targetid));
    	INI_String("Alias", alias, sizeof(alias)) ;
    	INI_Close(file);
    	
    	
    	format(string, sizeof(string), "IP: {FFFFFF}%s{CC0000} - {FFFFFF}%s{CC0000} !", IPadress, alias);
        SendClientMessageToAll(0xCC000022, string);
    
        
    	return 1;
    
    }
    

    Tohle je totální bordel, zatim to mám rozpracovaný icon_e_biggrin.gif Ale docela v tom tápu icon_e_biggrin.gif

  9. Ahoj,
    když se připojí nový hráč vytvořím si soubor s názvem jeho IP adresy. Do tohoto souboru uložím jeho nick.
    Mám tedy IP.ini a uvnitř Nick. Dále si vytvořím podmínku. Když se hráč připojí pod stejnou ip adresu s jiným nickem,
    otevřu soubor této IP a připíšu další nick. Problém je že přepisuju furt ten jeden ... "Alias". Existuje u ini způsob jako to ukládat
    jako Alias, Alias1, Alias2 ... nebo tak ?icon_e_biggrin.gif Nebo se mam na to rovnou vysrat a ukládat to do TXT? icon_e_biggrin.gificon_e_biggrin.gif


    OnPlayerConnect

    //kód předtim
    else if(!fexist(User(playerid)) && fexist(IP(playerid))) //Neexistuje nick ale existuje IP adresa
    {
        PlayerInfo[playerid][FirstSpawn] = 2;
        SetPlayerColor(playerid, 0xFFFFFFFF);
    		
        new INI:file = INI_Open(IP(playerid));
        INI_WriteString(file, "Alias", GetName(playerid)); //Přepíše Alias(nick) který jsem uložil s Ipčkem poprvé co se připojil
        INI_Close(file);
        return 1;
    }
    //kód potom
    

    Potřeboval bych si při každém novém nicku uložit nový nick na té IP adrese icon_e_biggrin.gif

  10. 1. Stáhni si mod s0beit
    2. Ve hře zmáčkni F11
    3. Teleportuj se do jednoho z interiérů (jsou tam všechny)
    4. napiš /save blabla
    5. Jdi do složky s uloženýma pozicema
    6. SetPlayerPos(playerid, x,y,z); a SetPlayerInferior(playerid, číslo);

    EDIT: Ve hře v interioru napiš /interior a napíše ti to číslo interioru - tzn že už víš jaký číslo máš dát do SetPlayerInterior

    Žádný interiory nestahuj, použij ty co ve hře již jsou.

  11. @ATomas
    Díky moc,
    dal jsem tedy dialog do OnPlayerRequestClass. Měl jsi pravdu s tim timerem na skipspawn, přeskočil kameru. Dal jsem ho tedy pryč ale vzniká nový problém.
    Když nemám skip spawn, ve chvíli kdy zobrazím dialog se zobrazí i Spawn Button a to nechci... Nemám vůbec představu jak ho odstranit a nejlepší by bylo
    kdyby se nezobrazovali ani AddPlayerClass.

    Když je registrovaný - pouze kamera a login dialog

    Any idea?

     

     

     

    EDIT: Už jsem to vyřešil, díky moc všem za radu moc si toho vážim :)

  12. Přihlašovací dialog se zobrazí ve chvíli OnPlayerConnect,
    OnPlayerRequestClass se vyvolá až když odpoví na přihlašovací dialog a to už je dávno spawnutý.
    Potřebuju tu kameru vyvolat současně s login dialogem... Ale login dialog v OnPlayerRequestClass dělá bordel, lepší je v OnPlayerConnect

  13. @Ocet
    Nefunguje mi to - Kamera se prostě nezobrazí...

    @Carlosoo
    Tohle sice funguje ale ze záhadných důvodů se kamera naukáže na pozici kde chci ale ukáže hráče a jeho pozici.. 
     

    :/

    Kamera v OnPlayerConnect nejspíš nemá co dělat, jenže já potřebuju aby se zobrazila když se hráč připojí... Né
    když vyžaduje class..

  14. Popis problému:

     

    Zdravím,

    potýkám se s problémem ohledně kamery.

     

    Problém:

    Po přihlášení hráči zobrazím register/login dialog.

    Problém je, že kamera se spustí až potom co hráč zareaguje na dialog.

    To se děje v případě že kameru nastavím do OnPlayerRequestClass.

    Když kameru nastavím do OnPlayerConnect nic se neděje, kamera se nezobrazí.

    Otázka tedy zní, kam mám kameru nastavit tak, aby se zobrazila ve stejnou chvíli jako register/login dialog?

     

    Chyby/varování kompilátoru a při běhu:

    --

     

    Kód:

     

     

     

     

    forward SkipSpawn(playerid);
    public OnPlayerRequestClass(playerid)
    {
      SetTimerEx("SkipSpawn",1,0,"i",playerid);
      return 1;
    }
    public SkipSpawn(playerid)
    {
      SpawnPlayer(playerid);
      return 1;
    }
    
    // KAM S TÍM?
    
    SetPlayerCameraPos(playerid, 320.0, 50.0, 170.0);
    SetPlayerCameraLookAt(playerid, 324.34, 54.122, 173.35);

     

     

     

    Dodatečné poznámky:

    --

×
×
  • Create New...