Jump to content

ATomas

Uživatel
  • Příspěvků

    2935
  • Registrován

  • Aktivní

  • Vítězných dnů

    87

Příspěvky posted by ATomas

  1. Ja teda s pluginy moc nekamaradim. Ale zajima me to asynchronni programovani. To asi nefunguje na principu vice vlaken (procesoru) ze? Zkosel jsem si vytvorit moznost vice vlaken pomoci C++, ovsem vzdy mi to druhe vlakno proste cekalo az se dokonci akce na vlakne prvnim. Kdyz jsem odstranil to cekani, tak svr crashnul.

    Jinak nejake rychlostni testy? Celkem by me zajimalo jestli je to rychlejsi nez postaru. Protoze jestli ne, tak bych rozhodne neobjetoval pomalost scriptu vymenou za pohodlnost programatora :)

  2. No aby se to vysvetlilo, nektery komenty jsou znacne nepresne.

    Zobrazit (vytvorit, dejme tomu) lze na 0.3.7 verzi 1000 objektu a na 0.3.Dl 2000 objektu. A pocita se zde kazdy objekty navic (At je to CreateObject nebo CreatePlayerObject a pak je jedno co s tim delas jestli ho nekam attachnes treba na to vozidlo) vse se pocita dohromady. Vyjimkou jsou objekty attachnute na hracich ty do tohoto limitu nespadaji.

    Jak tento limit zvysit lze pomoci streameru. Ovsem kdyz si zjistit jak funguje streamer, tak nefunguje tak, ze by zvysil pocet zobrazitelnych objektu. Streamer funguje na principu ze objekty co jsou od tebe daleko ti nezobrazi a zobrazi jen ty co jsou blizko. A to tak aby jsi nikdy nemel zobrazeno vic jak 1000 (2000) objektu najednou.

  3. Jo toto se mi libi, sice jsem nejak moc peclive necetl komenty, ale udelal jsem svuj zpusob reseni:

     

    #include <a_samp>
    
    #define RANDOM_OTAZEK       5
    
    new Otazky[][] = {//neni potreba vyplnovat, compiler si doplni sam podle obsahu pole (new string[sizeof(Otazky[])]; <- vytvoris string tak, aby se ti tam vesla nejdelsi otazka)
    	"Otazka 1",
    	"Otazka 2",
    	"Otazka 3",
    	"Otazka 4",
    	"Otazka 5",
    	"Otazka 6",
    	"Otazka 7",
    	"Otazka 8",
    	"Otazka 9",
    	"Otazka 10"
    };
    
    new Odpovedi[sizeof(Otazky)][] = {//opet neni potreba zadavat rozmery, je to udelane tak ze odpoved muze mit i vic nez jedno pismeno. (Pro sychr "sizeof(Otazky)" aby ti compiler zarval, pokud bude jiny pocet odpovedi nez otazek)
    	"a",
    	"a",
    	"a",
    	"a",
    	"a",
    	"a",
    	"a",
    	"a",
    	"a",
    	"a"
    };
    
    stock VylosujOtazky(otazky[])
    {
    	new index,nahoda[sizeof(Otazky)] = {0,1,2,...};
    	for(new i;i<RANDOM_OTAZEK;i++)
    	{
    		index = random(sizeof(Otazky)-i);//random na danou otazku (ale vybira jen ze zacatku pole, protoze na konec uklada jiz vylosovane - zajisti se tak unikatnost)
    		otazky[i] = nahoda[index];//ulozime vylosovane cislo
    		//nahoda[sizeof(Otazky)-1-i] = nahoda[index];//na misto na konci pole ulozime vylosovanou hodnotu (neni treba pouzit, protoze vysledek ukladame uz nahore)
    		nahoda[index] = sizeof(Otazky)-1-i;//a na vylosovany prvek presuneme hodnotu z konce pole
    	}
    	return 1;
    }
    
    stock KontrolaOdpovedi(playerid,otazky[],odpovedi[][])
    {
        new string[144];
    	for(new i;i<RANDOM_OTAZEK;i++)
    	{
    		if(odpovedi[i][0] && strcmp(Odpovedi[otazky[i]],odpovedi[i],true) == 0)
    		{
    			format(string,sizeof(string),"Otázka %s odpovezena správně",Otazky[otazky[i]]);
    			SendClientMessage(playerid,-1,string);
    			print(string);
    		}
    		else
    		{
    			format(string,sizeof(string),"Otázka %s odpovezena špatně",Otazky[otazky[i]]);//správná odpověď: "Odpovedi[otazky[i]]" vaše odpověď: "odpovedi[i]" blabla...
    			SendClientMessage(playerid,-1,string);
    			print(string);
    		}
    	}
    	return 1;
    }
    
    public OnFilterScriptInit()
    {
    	new otazky[RANDOM_OTAZEK];
        VylosujOtazky(otazky);
        for(new i;i<sizeof(otazky);i++) printf("%d) %d",i,otazky[i]);
        
        new playerid = 0;//prasarna nepouzvat !!! ale pro ten priklad...
        
        new odpovedi[][] = {//popripade "new odpovedi[MAX_PLAYERS][][];" a do funkce dole dat "odpovedi[playerid]"
    		"a",
    		"n",
    		"a",
    		"n",
    		"a"
    	};
        KontrolaOdpovedi(playerid,otazky,odpovedi);
        
    	return 1;
    }

    Myslim ze myslenka je vystizena, implementovat to a dodelat tomu dialogy uz je hracka :)

  4. Je to logicke protoze by majitele sa-mp serveru mohli takto skreslovat, kolik lidi hraje na jejich serveru a tvorit dojem ze je jejich server uspesnejsi nez je realne. (Ale i presto existuji metody jak to udelat lze, a bohuzel mam podezreni ze to nektere servery delaji...). Coz by znemoznil prechod na novou verzi, tedy za predpokladu ze tu vec nekdo opet neudela pro novou verzi znovu :d

  5. Pokud je obsah dialogu prazdny (allstlost je null) tak se dialog nezobrazi. Takze doporucuji pouzit neco v tomto duchu:

    if(strlen(allslots) > 0) ShowPlayerDialog(playerid, D_PERSONALVEHICLES, DIALOG_STYLE_LIST, "Osobní vozidla", allslots, "Potvrdit", "Zpět");
    else SendClientMessage(playerid,-1,"Někde se stala chyba");

    Jinak na nejaky odhadovani velikosti pole se vykasli. RAM pameti je vsude dost. A hlavne ta promena existuje jen kdyz je v dane urovni te funkce/podminky a pak se smaze. Tam jde o to ze jen zabira procesorovy cas jeji vytvoreni, ale to je tak mizive ze nestoji za to se tim vubec zabyvat. Takze na velikost promenych muzes s klidnout dusi kaslat (tedy na jeji velkou velikost, pokud das veliksot moc malou tak samozrejme ne :) )
     

    Jinak plugin crashdetect rozhodne doporucuji. Hodne urychli hledani nekterych typu problemu :)

  6. Vytvoril jsem takovy hodne jednoduchy explode. Umi to jen integery a prepoklada ze na prvni pozici uz je integer.

    stock explode(delimiter[],string[],array[],len = sizeof(array))
    {
    	new dellen = strlen(delimiter);
    	array[0] = strval(string);
    	for(new i=1,pos;i<len && (pos = strfind(string,delimiter,true,pos)) != -1;i++)
    	{
    		array[i] = strval(string[pos]);
    		pos+=dellen;
    	}
    	return 1;
    }
    
    public OnFilterScriptInit()
    {
    	new str[] = "1 2 3 4 5";
    	new Pole[5];
    	explode(" ",str,Pole);
    	for(new i;i<sizeof(Pole);i++) printf("%d=%d",i,Pole[i]);
    	return 1;
    }

     

  7. před 3 minutami, Lucifer Morningstar said:

    Na starom systéme to vôbec ani nebolo, keďže tam sa nedalo hlasovať v otázkach, keďže tam otázky vôbec ani neboli :d 

    Ja se nebavim o hlasovani na otazky. Ale o hodnoceni prispevku. To slo tedy jen likovat prispevky, protoze na zadost niCeho byly smazany minusove hlasovani.

  8. před 1 minutou, Lucifer Morningstar said:

    Na to aby sa to zarovnalo, by som musel celý ten vote systém presunúť do prava, kde by mne nevyhoval vôbec. Vyhovuje mi v ľavo, nevidím dôvod ho dávať v pravo len kvôli tomu aby bol main topic zarovnaný s odpoveďami.

    Takze kdyz byl na starem systemu v pravo tak ti to vadilo ?

  9. před 8 minutami, Lucifer Morningstar said:

    Myslím že tie tlačítka vôbec nie su obrovské sú ideálne. Či už by boli v ľavo alebo v pravo tak či tak by zaberali rovnaké miesto, myslím že sú viacej logické v ľavo.

    Design je v bootstrap, ale nechcem len tak meniť pozície a riskovať že to pokazí responzivitu.

    Jde o zarovnani.

  10. před 6 minutami, Lucifer Morningstar said:

    Posunuté je to kvôli tomu, že v sekcií pomoc ide hlasovať na jednotlivé odpovede, preto je to posunuté, lebo sú tam pridané tlačítka na hlasovanie.

    Aha quote super :d Myslim ze nejake hlasovaci tlacitka mi muzou... A kdyz uz tam musi byt tak proc tak kravska? a nemuzou byt aspon v pravo aby to licovalo na leve strane ? :d

    Jinak ono je tohle forum psane v nejakem frameworku ze je to v kodu neprehledne a nelze tam delat jednoduse delat zmeny s posouvat divy a buttony? Pokud je to jeste klasik PHP nebo u phyton tak by to nemel byt problem.

    Jinak bych barvu toho quote "nadpis divu" zmenil a nejakou mene vyraznou. Ta modra oddeluje prispevky a byt je to jiny odstrin modre je to furt dost vyrazne a docela mito pusobi chaos v tom kde zacina a konci prispevek nekoho dalsiho.

    BTW to je nejaky javascript antispam ze tlacitko "Uložit" funguje až na nekolikaty pokud kliknuti ?

  11. před 1 hodinou, Lucifer Morningstar said:

    to je prekladom, nie designom. Work in progress.

    ako do prava? Nerozumiem tie komentáre sú normálne od topicu.

    Znovu nerozumiem, tie rozostupy mi príjdu normálne.

    Popíš viacej trochu, ako myslíš neprehľadné.

    Code ide zmazať, tak isto aj spoiler aj všetko ostatné. Klikneš na neho a dáš delete.

    Tak uz tedka kdyz te cituju tak to odmaze moje citace na ktere jsi reagoval ty. Dale nevim jak to rozdelim na kousky jako js ito udella ty. Kopirovat to je stupidita. Dopsani [ quote ] je krasne a pohodlne jak to vyresit. Kdyby byla aspon moznost ty vokna v tom psani prispevku vypnout a videt to v bbcode nebo treba na prasaka v html. Tohle je forum pro programatory, to si muzeme dovolit to udelat :d

    Jak tedy smazu ten code pripadne quote abych neprisel o jeho obsah (jen ho "vyndal z okna") ?

    Screenry prikladam tady tim co to nabizi

     

    Quote

    Mně ta RZE 8.1 taky přijde taková nepřehledná. Není nad klasickou rze 7.4

    RZE7.4 kdybych secetl vsechny server co najdu v internet nehraje dohromady ani 50 lidi. 8.1 200. To asi o necem vypovida

    Quote

    Mimochodem, můžeš si pročistit schránku se soukromými zprávami, případně si zapnout přijímání zpráv? Snažím se tě již nějakou dobu zkontaktovat, ale prostě ti nelze odeslat SZ (kvůli jednomu z uvedených důvodů).

    Aha ja myslel ze se odmazavaji odzadu samy. Mam tam 25 zprav a to uz je to plne ?

     

    Jinak mi chybi vymozenosti "stareho" code (kde sel myslim vybrat jazyk pawn, ale C je alternativa, ale mohl by byt predvyplneny misto HTML). A nepodaril ose mi najit moznost zobrazit radky a zvolit zacatecni cislo radku. To byly hodne uzitecne veci.

     

    roztazene.png

    odsazene doprava.png

  12. Zdravím,

    nejdřív jsem si říkal, že je to o zvyku, ale už je to delší dobu, ale prostě to nejde.

    Kdo a proč sem nahodil tenhle design? Je to nepřehledny, napul anglicky napul česky. Ve foru jsou kometaře nejak divne odsazeny od hlavního topicu, nesmyslně do prava až moc. Nejaký divný rozestup mezi příspevky. Zbytečné divy co zabírají místo. Když píšu příspěvek, je to nepřehledné. nejde mi odmazat code kdyz ho použiju

    . Když použitu tu ikonku tak mi to překreje obsah takže ani nevim na co reaguju. No tahkel bych mohl pokračovat. Čekal jsem že se to nahodilo a bude se to ladit za běhu, ale moc změn, aspon těch co mě páli jsem si nevšiml. Dale je nepřehledne umístěno upravení příspevku. Když už hodim code nejde odstranit abych nepřisel o obsah
    
    
    

    ATomas

    • Líbí se mi to! (+1) 1
  13. new pass[MAX_PLAYERS];
    pass[playerid] = inputtext;

    Tato kontrukce je sice myslena dobře, ovšem lze použít jen u pole, kde je při kompilaci známá veikost. Což není tento případ.

    Doporučuji použít

    pass[playerid][0] = 0;//Pokud vis ze to bude prazdne, neni treba pouzit
    strcat(pass[playerid],inputtext);

     

  14. V tuhle chvili nemuzu rict jak to bude. Jeste zjistuju nejake informace od beta testeru jak to s tou DL verzi ma byt, ale pokud to bude mozne, tak bych radeji preferoval, aby WTLS bezelo na te DL verzi a myslim si, ze ATomas bude preferovat to same se SP, protoze do vytvareni modelu objektu dal asi taky hodne casu. Tim padem by nemel byt nejspis problem se mezi CZ servery domluvit, ze vsichni budou pouzivat tu DL verzi.

     

    Ale problem bude, jestli si hraci budou schopni stahnout tu DL verzi klienta. Pokud totiz na hlavni strance sa-mp.com bude ke stazeni jen obycejna 0.3.7, tak by se treba uplne novy hraci nemuseli dozvedet, ze musi mit stazenou DL verzi, aby mohli hrat na nekterem z CZ serveru. A tim by mohlo pak vzniknout spoustu problemu.

    Ano taky jsem na tom nechal nekolik hodin casu. Byt mezi sebou mame neresitelne spory, myslim ze by jsme se mohli domluvit ze my velke servery, spolu se SFDFD protoze ma taky velkou fanovskovskou zakladu prestoupime na 0.3.7-DL. Aby jsme si nekradli hrace napric verzemi.

  15. Je to tim ze si to prepisujes naformatuejs sice jeden radek ale tim druhym ten prvni premazes.

     

    Existuje dve reseni, ktere muzes pouzit.

     

    Toto je vhodne pouzit pokud je radku min kod je rychlejsi

        if(dialogid == 2)
        {
            new string[2048],jmeno[MAX_PLAYER_NAME];
            GetPlayerName(playerid,jmeno,sizeof(jmeno));
            if(listitem == 0)
            {
                format(string,sizeof(string),"Peníze banka: %d",Banka[playerid]);
                format(string,sizeof(string),"%s\nPeníze v ruce: %d",string,GetPlayerMoney(playerid));
                format(string,sizeof(string),"%s\nAdministrační úroveň: %d",string,Admin[playerid]);
                ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,jmeno,string,"OK","");
            }
        }
    

    Tent odruhy zpusob je dobre pouzit pokud tec hradku v dialogu bude hodne. Protoze je zase v tomhle pripade rychlejsi tento druhy

    	if(dialogid == 2)
    	{
    		new string[2048],str[128],jmeno[MAX_PLAYER_NAME];
    	 	GetPlayerName(playerid,jmeno,sizeof(jmeno));
    		if(listitem == 0)
    		{
    			format(string,sizeof(string),"Peníze banka: %d",Banka[playerid]);
    			format(string,sizeof(string),"\nPeníze v ruce: %d",GetPlayerMoney(playerid));
    			strcat(string,str);
    			format(string,sizeof(string),"\nAdministrační úroveň: %d",Admin[playerid]);
    			strcat(string,str);
    			ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,jmeno,string,"OK","");
    		}
    	}
    
  16. No já nevim ale nechápu jak to můžeš přidat k nečemu jinýmu.. Jo chápu tu část s TXD ale ohledně toho dffka ne. 

    No tak tobe jde o textdraw ne ? tj .dff potrebujes jen za tim ucelem, aby ti ten .dff natahl ten .txd do clienta. Protoze AddSimpleModel musi byt uplny. Samotny .txd ke clientovy nedostanes.

  17. Jo už jsem se k tomu dopídil. Ted už jen sehnat někde jak se tvoří dff a hurá do tachometru icon_e_biggrin.gif

    No pokud ten .txd chces pouzit jen pro ucely textdrawu, tak si muzes do toho jednoho .txd dat vice tech obrazku a to priradit k nejkymu .dff treba nesmyslnemu, jen pro ten ucel, aby jsi mohl vytvorit AddSimpleModel kterej ti natahne ten .txd k tomu hraci, aby to v tom TD fakt videl. A ten .dff v ramci objektu nemusis vubec pouzit.

     

    Ja mam treba tu rucicku modelovanou jako .dff (protoze bych ji jinak neorotoval). Ale v tom .txd mam i texturu toho tachometru i kdyz na objekt pouzity nikdy neni. Prave pro ucel toho aby to slo zobrazit v TD :)

×
×
  • Create New...