Jump to content

Tanga

Uživatel
  • Příspěvků

    1 218
  • Registrován

  • Aktivní

  • Vítězných dnů

    18

Tanga last won the day on Únor 19

Tanga had the most liked content!

Reputace

107 Marc Wayne "B-Dup"

About Tanga

  • Moto
    Dieta internetu
  • Narozeniny 31.12.2014

Kontaktní údaje

  • Web
    http://www.tangosblog.com

Portfolio

  • Github
    ts12311122014
  1. Ako by to otvorili v servise bez toho aby odtrhli tie papieriky? Jednoducho nijak a preto tam nie sú podľa mňa.
  2. pomoc Záhadný crash

    Uh mám pocit že ani nevieš čo -d3 robí. Sú to len debug informácie a rekurzia je v poriadku.. Odstráň si celý pawn.cfg súbor, myslím že zbytočne ťa to pletie.. A fixni si mód klasickou ručnou metódou s pomocou print().
  3. pomoc Záhadný crash

    Do googlu som si dal dof2 download, prvy link, nasledne som odtialto stiahol includ, pawno->new->include dof2. Skompiluje sa to bez problemov.
  4. pomoc Záhadný crash

    1) zožerie ti to pamať resp. dačo sa tam dojebe, nemam šajn 2) ver mi, v dof2 nie je chyba, chyba je niekde v tvojom kode.
  5. pomoc Záhadný crash

    a) odstraň rekurziu
  6. pomoc USB booting

    Skús iné iso/iný torrent.
  7. pomoc How to: PickUp

    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? 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.
  8. pomoc "if do if"

    Pre tvoje dobro, založ si už novú tému, takéto dlhé príspevky kde sa rieši 10 vecí sú nečitatelné.
  9. pomoc Explode v pawn

    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...
  10. pomoc Explode v pawn

    Na to sa bežne používa "sscanf" plugin. Našiel som nejaký návod aj na tomto fóre, možno by som ho pozrel na tvojom mieste.
  11. Podľa mňa by sa dal ten návod zlepšiť. Rozhodne by som kód nedával do spoileru, ale do code, takto sa to zle číta.
  12. Vďaka za komenty, inak, v hlavnom príspevku som trochu detajlnejšie popísal speedtest. Teší ma pozitívny ohlas. Č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. 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ší.
  13. 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.
  14. pomoc Spawn auta

    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). 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.
  15. Podľa nových pravidiel nie je povinnosť v prípade vyriešenia HELP problému zakliknúť správne riešenie. Navrhujem pridať do pravidiel (hoc je to asi nevynútiteľné, ale aspoň aby to tam bolo..), že pri vyriešení musí zakladateľ topicu označiť správnu odpoveď. Aby aspoň ten čo mu pomohol niečo z toho mal.
×