Jump to content

Tanga

Uživatel
  • Příspěvků

    1278
  • Registrován

  • Aktivní

  • Vítězných dnů

    29

Příspěvky posted by Tanga

  1. Tiež by som určite pridal do server.cfg riadok "rcon 0".
    Ono je možné sa prihlásiť do RCONu aj zo vzdialeného servera a dajú sa tak hackovať rcon heslá. S "rcon 0" zablokuješ log-in zvonku, ale stále sa budeš môcť prihlásiť in-game.

  2. před 10 hodinami, IllidanS4 said:

    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í.

    Milé! :d

    Vcelku prepracované aj ostatné veci, také rôzne detajly a tak. Páči sa mi to! :)

    Edit: Tá sekcia "Reflexe", čo iné by si tam chcel napríklad nakódiť? Podla mňa Pawn je vcelku schopný v tomto. Našiel si niečo čo sa nedá?

  3. Nechcel som byť "ten čo to kritizuje", ale napíšem svoj názor, že roky som mal nulové súkromie a nič sa nikdy nestalo...
    Lel, su ludia na pawne ktori mi posielali fotky mojho domu z google maps, pritom si to len vygooglili. Z roznych dovodov som uz zacal pracovat na svojom sukromi :d ale vravim, nie je to potrebne.

    Citace

    antivirus

    roky žiadny nepoužívam, nikdy sa nič nestalo

    Citace

    Microsoft jsou kundy

    S tymto suhlasim, jediny gigant čo funguje v Číne je Microsoft, len preto že suhlasili že vlade poskytnu údaje o používateloch keď budú potrebovať.
    Kedysi som používal Windows Phone, čo ma pobavilo je, že kontakty sa nedajú (nijako) uložiť na SIM, máte dve možnosti :d uložiť ich do "Microsoft Account" alebo "Outlook Kalendár". :d

    Citace

    Whatsap, Wechat

    Myslim ze whatsap je na strane tych dobrych, da sa vygooglit ako FBI podava zaloby na whatsap kvoli tomu, že nedokažu prelomiť ich šifrovanie.
    Čo sa tyka wechat, to je different story.. možno to tu nepozna kazdy (podla homepage to použiva 900 milionov ludi), kazdopadne wechat je popularny v cine. Stalo sa mi, že jedna osoba pri odchode napisala na wechat "status" ako sa teší na slobodu zapadneho sveta.. Na druhy den dostala (osoba) ban na wechate a zrušenie učtu za porušenie podmienok pri registracii. :d

    Citace

    RDP

    exactly ako vravi bloodman, defaultne je to vypnute pre globalne siete a na Windows 10 Home to ani nie je nainstalovane.
     

    před 19 minutami, Asakura Yoh said:

    Windows + L

    Byvam na internate a NIKDY som si nezamkol PC. Mam tam random luddi z roznych izieb.
    Jedine co sa mi stalo bolo, že mi stiahli nCage extension do browsera (co som za par ssekund zistil a odstranil, ale pobavili sme sa). Raz nechtiac pridali nechutny prispevok do celouniverzitnej skupiny xD ale pochvili sme to zmazali. Na tom sme sa tiez akurat smiali. A občas kedniekto z inej izhby jed ožraty tak často vypisuje cez moj facebook, ale kazdy kto ma pozna vie ze bud si robim srandu alebo to nie som ja...
    Rly, nema sa čo stat.

    A o secret konverzaciach na facebooku, to mi pripomina appku "wickr.com".

    • Kappa 1
  4. před 9 hodinami, ForestCZE said:

    Pak potřebuju náhodně vybrat 5 otázek z 20 tak, aby se ve výběru žádná neopakovala:

    
    new allot[5];
    
    for(new i = 0; i < 5; i++)
    {
    	allot[i] = random(19);
    	//nevím, jak sestavit podmínku, aby to opravdu hodilo znovu random pokud to na nějakém indexu 0-4 najde stejné číslo
    }

     

     

    Asi cyklom pozrieť, či sa už tá otázka nevybrala.. A potom vygenerovať inú.

    --

    Čo sa týka celkového riešenia, ak odpoveď je vždy len jeden znak (A/B/C), tak na uloženie správnej odpovede nepotrebuješ ďalšie pole.
    Môžeš správnu odpoveď uložiť na začiatok každej otázky, :

    question[0] = "aOtázka číslo 1\nA) ano\nB) ne\nC) nevim"; // vsimni si prvy znak v stringu; spravna odpoved je a)

    Následne pri zadaní otázky hráčovi dáš:
     

    #define ShowPlayerQuestion(%0,%1) ShowPlayerQuestionEx(%0,%1[1]) // pri zobrazeni preskoc prvy znak (odpoved)
    // nieco na tento styl, neviem ako to zobrazuješ hracovi
    // ShowPlayerQuestion(playerid, questionString);

    Odpoved potom kontroluješ cez
     

    if (playersAnswer[0]) == playerQuestion[0][0]) // ak jeho odpoved (znak) == prvemu znaku v stringu otazky

     

  5. před 2 hodinami, ondrasmusil said:

    Bože. To je ale kravina, dávat takhle záruku na otevření bedny. To ani nevysaješ prach. :d 

     

    // Co jsem koukal na internet, tak tam budou nejspíš takové "papírky", které nesmíš přetrhnout. Tak jestli jsi šikovný, tak to můžeš zkusit otevřít. :d

    Ako by to otvorili v servise bez toho aby odtrhli tie papieriky? Jednoducho nijak a preto tam nie sú podľa mňa.

  6. Kód nedávaj do spojleru, ale do "code", a vyber tam jazyk "C", potom to tu bude aj vyfarbené (ako v editore) a krajšie naformátované. :)

    Z wiki:

    CreatePickup(1242, 2, 1503.3359, 1432.3585, 10.1191, -1);

    Ty máš:

    CreatePickup(1274, 2096.1487, 1285.3604, 10.8203, 180.2378, -1);

    ..

    Nevidíš, že si tam dal tých parametrov viac? :d

    Prvý parameter model, druhý je typ a až potom idú x,y,z!
    Ty si predsa vynechal typ a dal navyše niečo ďalšie.

  7. před 1 hodinou, ForestCZE said:

    Zkusil jsem s tím pracovat dál nějak takto:

     

    
    new out[4][4], count;
    count = strexplode(out, inputtext, " ");
    for(new i = 0; i < count; i++) strval(out[i]);
    new total = (out[0]*86400) + (out[1]*3600) + (out[2]*60) + out[3]);
    
    if(total > promenna) Tvuj aktualni cas je mensi nez zadany...

    A errrors:

     

    
    error 033: array must be indexed (variable "out")
    error 029: invalid expression, assumed zero
    warning 215: expression has no effect

    Předpokládám, že ta proměnná total musí být také pole. Asi?

    ignorujme chybu čo ti to teraz vypisuje..
    Máš v cykle strval(out), ale nikde tú hodnotu neukladáš.
    Myslím, že tvoj cyklus by sa dal prepísať takto:

    
    new out[4][4], count, total;
    count = strexplode(out, inputtext, " ");
    
    for(new i = 0; i < count; i++) {
      total *= 60;
      total += strval(out[i]);
    }
    
    if(total > promenna) Tvuj aktualni cas je mensi nez zadany...

     

  8. Vďaka za komenty, inak, v hlavnom príspevku som trochu detajlnejšie popísal speedtest.

    před 11 hodinami, IllidanS4 said:

    O instrukci FILL jsem neměl ani tušení, ale tohle je fascinující použití. Jenom by mě zajímalo, koho mohlo napadnout ji navrhnout tak, že velikost bude pevný parametr.

    Teší ma pozitívny ohlas. :p
    Čo sa týka pevného parametra, dôvod je ten že v pawn neexistujú polia s dynamickou veľkosťou a tiež inštrukcia fill sa generuje kompilerom len v jednom prípade, pri vytvorení poľa. V jedinom prípade teda kde sa fill použije je počet buniek (veľkosť poľa) známy.

     

    před 10 hodinami, ATomas said:

    Nechce se mi to testovat, ale je to napr rychlejsi nez toto?

     

    
    new Pole[] = {1,2,3,4},pole[sizeof(Pole)];//"pole" je vytvoreno pouze jednou, jde tedy o to testovat jen ten druhy radek v cyklu
    
    Pole = pole;
    

     

    Pre teba som to teda otestoval, s rovnakým kódom ako vyššie (akurát pre "klasické nulovanie" som nahradil Pole = pole) je fillArray() 4x pomalší pre polia o veľkosť 100 - 100 000 prvkov. Pre milión prvkov už majú rovnakú rýchlosť a pre 10 miliónov je fillArray() 1.2krát rýchlejší.

  9. 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.

    Spoiler

    Kód je založený na inštrukcii fill

    #emit fill number

    ktorá má tri parametre:
    Pri - (primarny pawn register) -pointer, kde začať fillovať
    Alt - (alternate pawn register) - hodnota, ktorou naplniť všetky bunky
    number - počet bajtov, ktoré naplniť (musí byť násobok buniek..), musí to byť konštantný integer -> znemožňuje prácu s poliami o rôznych veľkostiach

    Kód fillArray() jednoducho len využíva inštrukciu fill a za behu pomocou CIP (Code instruction pointer), upraví code sekciu módu - parameter number inštrukcie fill nastaví na príslušnú velkosť arrayu a potom vykoná fill.

    Ešte dodatok k rýchlosti algoritmu, pri speedteste som napísal "podivné" časové výsledky. Podľa mojich odhadov majú obidva algoritmy lineárnu zložitosť (O(n)), ale je tam nejaký overhead, tipujem pri inštrukcii lctrl, alebo fill, ktorý sa manifestuje hlavne pri menšom počte prvkov poľa, preto sa lineárnosť neukazuje pri menších poliach.

     


     

    • Paráda! (+1) 1
    • Líbí se mi to! (+1) 3
  10. Ja len pre úplnosť, keďže ja by som to nevedel, lebo v škole som nič nerobil..
    Sinus/kosinus sa používa pri vyjadrení vzťahu medzi 2 stranami a uhlom medzi nimi v pravouhlom trojuholniku.

    Platí, že
    sin(θ) = protilahla/prepona
    cos(θ) = prilahla/prepona, kde θ (čítaj theta) je uhol
    a "protilahla" a "prepona" su dlžky danych stran... (protilahla/prilahla oproti uhlu).

    418px-Sinus_und_Kosinus_am_Einheitskreis

     

    A teda, pre preponu dĺžky 1 môžeme vety prepísať ako
    sin(θ) = protilahla/1 = protilahla
    cos(θ) = prilahla/1 = prilahla

    Obrázok vyššie tiež môžeš brať tak, že je to pohlad na hráča z vtáčej perspektívy (zhora) a θ je uhol, kam sa hráč pozerá.
    Ty teda namiesto vytvorenia auta na hráčovej pozícii, toto auto chceš posunúť po "stranách trojuholníka", aby sa nespawnlo na hráčovi, ale pred ním.

    Ako je z kružnice s polomerom 1 zrejmé, protilahla a prilahla budú tiež desatinné čísla medzi 0 a 1.


    Toto desatinné číslo následne treba vynásobiť vzdialenosťou (2 metre?) v ktorej chceš od seba to auto vytvoriť.

    Tiež keďže samp používa divné uhly, musíš použiť ich záporné hodnoty... Toto bolo také vysvetlenie toho princípu, čo duff myslel. Kódy spomenuté pred ním podľa mňa nie sú správne (ich autori nepochopili ako si to myslel).

    Ak máš ešte nejaké otázky, môžeš sa pýtať. :) Niekto určite pomôže.

    • Paráda! (+1) 1
  11. lel, ako si napisal co je D, tak som chvilu rozmyslal, napadlo mi Drive :d a fakt :d

     

    inak co sa tyka tachometrov trosku late to the party :)

    Mozno by si mohol spravit ze sa to rychlejšie rotuje, ako byva na unixoch že lomítko "/" v ascii rotuje (/,-,\,|,/,-,\,|,) pri tankovaní.. alebo nieco - vyzera to moc staticky

  12. Zde mate zakladne pravidla, ktore bohate stacia na prevadzkovanie pawna.

     

     

    1. Uživatel smí vlastnit pouze jeden zaregistrovaný účet (dále jen „účet“).

     

    2. K obsahu chráněnému právy k duševnímu vlastnictví nám výslovně udělujete nevýhradní, přenosnou, převoditelnou, celosvětovou bezúplatnou (royalty-free) licenci na použití veškerého obsahu podléhajícího DV, který zveřejníte na fore pawno.cz nebo v návaznosti na něj (Licence k DV). Tato licence k DV končí, jakmile svůj obsah podléhající DV odstraníte, s výjimkou případů, kdy tento obsah citovali jini uzivatele.

     

    3. Uzivatel ma pravo na odstraneni jak jeho osobnich udaju, tak veskereho obsahu podlehajiciho jeho autorskym pravum prostrednictvim emailu: [email protected]

     

    4. Uživatel se zavazuje, že zverejneny obsah nebude porusovat zakony Ceske Republiky a statu, kde se uzivatel prave nachazi.

     

    5. Uživatel nesmí zveřejňovat příspěvky s pornografickým a erotickým obsahem.

     

    6. Pawno.cz si vyhrazuje právo změnit výše uvedená pravidla či obecná pravidla fóra.

    hm, preco si to sem napisal?

     

    Je tam nejaky neviditelny text priehladnou farbou ktory hovori ze majitelom je bloodman? :d A dufal si ze to admini len prekopiruju ? :d

×
×
  • Create New...