Jump to content

xhunterx

Uživatel
  • Příspěvků

    154
  • Registrován

  • Aktivní

  • Vítězných dnů

    13

Everything posted by xhunterx

  1. Skus do configu dat sscanf.so ak si nahodou na Linuxe. A samozrejme musis aj nahrat .so a nie .dll. Z nejakeho dvodu sa na linuxe musi pisat pripona a na windowse nie.
  2. Technicky sa to da, ale nestaci ti na to znalost PAWN. A je to tak zlozite, ze som este nikoho nevidel spravit netrivialnu upravu.
  3. Nie, to by podla mna bolo zbytocne. Ono to len vytvory subor s tymi premennymi. Cize mozes pouzit git verziu v pawne a mat vdaka tomu prehlad kde je aka verzia. Idem asi editnut ten post a vysvetlit to.
  4. Git Compiler Hook Tento compiler umožňuje zobraziť Git verziu vašeho scriptu. Vďaka tomu budete vždy vedieť, ktorú verziu máte na ktorom servery. Tento štandardný a Zeexov PAWN compiler je upravený tak, že pri kompilácii vytvára súbor "gitversion.pwn", ktorý obsahuje: new const stock GIT_SHA1_LONG[] = SHA1_aktualneho_commitu; new const stock GIT_SHA1_SHORT[] = Prvych_7_znakov_SHA1; Ak má repozitár neuložené zmeny, na koniec oboch sa pridá text "-dev" a compiler zobrazí Git warning. Ak sa súbor nenachádza v Git repozitáry, compiler zobrazí Git error, avšak v kompilácii bude pokračovať. Použitie Tento súbor môžete include-nuť štandardne: #include "gitversion.pwn" V scripte potom môžeťe použiť tieto konštanty: GIT_SHA1_LONG, GIT_SHA1_SHORT. Napríklad: public OnFilterScriptInit() { printf( "\n" \ " +------------------------------------+\n" \ " | *** Git Example Script *** |\n" \ " +------------------------------------+\n" \ "\n" \ " +------------------------------------+\n" \ " | Autor: xhunterx |\n" \ " | SA-MP Version 0.3.7 R2 Linux/Win |\n" \ " | Git SHA1 Version: %s |\n" \ " +------------------------------------+\n\n", GIT_SHA1_SHORT); return 1; } Ak chcete byť schopný compilovať FS aj mimo Git repozitáru, môžete použiť napríklad: #tryinclude "gitversion.pwn" #if !defined GIT_SHA1_LONG new const stock GIT_SHA1_LONG[] = "Unknown"; new const stock GIT_SHA1_SHORT[] = "Unknown"; #endif Download: https://pawno.cz/files/file/69-git-pawn-compiler/ Source: https://gitlab.com/UnitedPAWN/CompilerHook Official site: https://www.xhunterx.tk/git-pawn-compiler/
  5. xhunterx

    info HTTPS

    Ewwe ak nechces mat "mied content" warningy, tak by si mal donutit aj obrazky z imgur a podobne veci aby sa nacitali cez https
  6. Pouzivam FileZillu a jediny pripad, kde som si vsimol problem z rychlostou je posielanie velkeho mnozstva malych suborov. Ale na to sluzia zipy. Okrem toho nikdy ziadny problem.
  7. Diki Opravene A nie, jazyk rozhodne neriesim Vacsina toho co je cesky je okopirovane zo zadania prveho kola Ten zvysok bez diakritiky je moja hroza Ale chapeme sa a to je hlavne
  8. Cíl scriptu Cílem je implementovat funkce dle prototypů a popisu v zadání. Jedná se o funkce pro práci s daty. Princip je podobny funkciam PVar. Pojde o premenne, ktore budu mat svoj nazov a svoje id. Bude mozne s nimi pracovat podla id aj podla nazvu. Kazda premenna bude pole velkosti MAX_VAR_INDEX, podobne ako PVar je premenna velkosti MAX_PLAYERS. S kazdym indexom sa bude pracovat zvlast. Co ovlivní hodnocení Hodnocení bude záležet na níže uvedených faktorech (od nejdůležitějšího). 1. Přeložitelnost a chybovost (chyby, pády a varování kompilátoru, chyby při běhu [klikněte pro příklad]); 2. Správná implementace (dodržení zadání) a funkčnost; 3. Ošetření neočekávaných vstupů a hodnot; 4. Optimalizácia kódu 5. Přehlednost kódu. Povolené "warning 203: symbol is never used" a "error 013: no entry point (no public functions)" Tieto chyby su povolene, pretoze ide skorej o include nez o script. Váš kód by nemal obsahovať nič, čo nieje súčasť vášho riešenia. Funkcie a globálne premenné, ktoré niesú súčasťou zadania by mali byť statické. Optimalizujte na vyuzitie CPU, az potom na RAM a na realne pouzivanie (funkcie Var_Create a Var_Destroy mozu byt pomalsie, kedze sa budu pouzivat malo, ale ostatne by mali byt co najrychlejsie). Co je zakázáno Níže uvedené funkce a způsoby programování jsou zakázány a za jejich použití bude značná ztráta bodů. 1. Jakékoliv knihovny (includy), které nejsou součástí a_samp.inc; 2. Jakékoliv pluginy. 3. Definovanie funkcie main alebo OnFilterScriptInit 4. Pouzivat funkcie PVar, SVar, setproperty a getproperty Datum a způsob odevzdání Hotové scripty zasílejte vEnd-ovi pomocí soukromé zprávy. Název scriptu bude ve tvaru vas_nick_na_foru.inc. Scripty mi můžete zasílat do 28. 2. 2017. Zadání 1. Vlozte do suboru: #define INVALID_VAR_ID -1 2. Vytvorte define ak neexistuju: #define MAX_VAR_INDEX 100 // Index moze byt od 0 do MAX_VAR_INDEX-1 #define MAX_VAR_NUM 1000 // Maximalny pocet premennych Var Ak uz je MAX_VAR_INDEX alebo MAX_VAR_NUM definovany, pouzije sa ten. 3. Vytvorte tag: Error: Tento tag obsahuje vystup funkcii. Premenna s tymto tagom sa musi rovnat true ak sa nevyskytla chyba a false ak sa chyba vyskytla. Taktiez podmienka if(error) musi byt splnena vtedy a len vtedy, ak funkcia neprebehla uspesne (vyskytla sa chyba alebo ak hodnota nieje definovana. Napriklad: Error:-376437). Funkcie musia vracat rozne hodnoty pre rozne druhy chyb. Odporucame pouzit enum na jednotlive hodnoty napriklad: enum Error { Var_Err_Invalid = 0, Var_Err_OK = 1, // uspesne hodnoty su kladne Var_Err_AllReturned = 2, Var_Err_SomeReturned = 3, Var_Err_NotFound = -1, // chyby su zaporne Var_Err_BadIndex = -2, // ... } 4. Implementujte následující funkce a) Var_Create forward Var:Var_Create(const name[]); Účel a implemenační detaily: Vytvorit premennu s nazvom name. Premenna musi na vsetkych indexoch obsahovat hodnotu 0. Ci toto docielite v Create alebo Destroy je na vas. Návratová hodnota: id vytvorenej premennej – uspesne vytvorenie; id premennej s danym nazvom – premenna so zadanym nazvom uz existuje; INVALID_VAR_ID – nastala chyba; Var_Destroy forward Error:Var_Destroy(Var:id); Účel: Odstrani premennu id. Návratová hodnota: Chyba alebo uspech. Příklad použití: new Var:var = Var_Create("Zabitia"); Var_Destroy(var); . c) Var_DestroyNamed forward Error:Var_DestroyNamed(const name[]); Účel a implementační detaily: Odstrani premennu s nazvom name. Návratová hodnota: Chyba alebo uspech. Příklad použití: Var_Create("Zabitia"); Var_DestroyNamed("Zabitia"); . d) Var_Set forward Error:Var_Set(Var:id, index, value); Účel: Nadstavit hodnotu premennej id na indexe index na hodnotu value. Návratová hodnota: Chyba alebo uspech. Příklad použití: new Var:var = Var_Create("Zabitia"); Var_Set(var, 0, 22); Var_Destroy(var); . e) Var_SetNamed forward Error:Var_SetNamed(const name[], index, value); Účel: Nadstavit hodnotu premennej s nazvom name na indexe index na hodnotu value. Návratová hodnota: Chyba alebo uspech. Příklad použití: new Var:var = Var_Create("Zabitia"); Var_SetNamed("Zabitia", 0, 22); Var_Destroy(var); . f) Var_Get forward Error:Var_Get(Var:id, index, &value); Účel a implementační detaily: Vlozi hodnotu premennej id na indexe index do parametru value. Návratová hodnota: Chyba alebo uspech. Příklad použití: new Var:var = Var_Create("Zabitia"); Var_Set(var, 0, 22); new value; Var_Get(var, 0, value); printf("Zabitia: %i", value); // vypise sa 22 Var_Destroy(var); . g) Var_GetNamed forward Error:Var_GetNamed(const name[], index, &value); Účel: Vlozi hodnotu premennej s nazvom name na indexe index do parametru value. Návratová hodnota: Chyba alebo uspech. Příklad použití: new Var:var = Var_Create("Zabitia"); Var_Set(var, 0, 22); new value; Var_GetNamed("Zabitia", 0, value); printf("Zabitia: %i", value); // vypise sa 22 Var_Destroy(var); . h) Var_GetID forward Var:Var_GetID(const name[]); Účel: Ziska id premennej s nazovm name. Návratová hodnota: ID premennej. INVALID_VAR_ID v případě, že premenna s nazvom name neexistuje! Příklad použití: Var_Create("Zabitia"); new Var:var = Var_GetID("Zabitia"); Var_Destroy(var); . i) Var_GetOrdered forward Error:Var_Ordered(Var:id, array[], size = sizeof(array)); Účel a implementační detaily: Ziska prvych size indexov zoradenych zostupne (od najvacsieho po najmensi). Návratová hodnota: Chyba alebo typ uspechu. Musi vratit rozne hodnoty ak sa do pola zmestili vsetky indexy a ak nie. Příklad použití: new Var:var = Var_Create("Zabitia"); Var_Set(var, 0, 22); Var_Set(var, 1, 33); Var_Set(var, 2, 27); new arr[3]; Var_Ordered(var, arr, 3); // Ziska top 3 zabijakov // arr[0] = 1 // arr[1] = 2 // arr[2] = 0 . j) Var_GetError forward bool:Var_GetError(Error:error, str[], maxsize = sizeof(str)); Účel a implementační detaily: Ziska cloveku citatelny popis chyby error a vlozi ho do str. Ak je popis chyby dlhsi ako maxsize, tak ho oreze. Vrati "Uspech" alebo niec podobne ak nejde o chybu ale uspech. Návratová hodnota: true pre uspech, false ak ide o neplatnu chybu. Příklad použití: new Var:var = Var_Create("Zabitia"); new Error:err = Var_SetNamed("Zabitia", 0, 22); new str[128]; Var_GetError(err, str); print(str); // vypise chybu
  9. Ak sa nepletem, DMCA ta rozumne chrani, ak tie linky nepridavas ty, ale nechavas ich tam pridavat ludi. Cize ak niesi schopny pre kazdy link overit, ci ide o copyrightovane dielo. Ale ak pridavas linky osobne alebo ked ta stranka je vyslovene pre nelegalne veci, tak sa myslim mozes dostat do problemov. Taktiez suhlasim s ostatnymi: naco?
  10. Adresu tej funkcie. Vsetko v pawne ma svoju adresu, konkretne adresu toho, kde to je ulozene v ramke (relativne k zaciatku amx). Dokonca ak by si moc chcel by si mohol skakat na konkretne riadky, alebo aj dovnutra riadkov pomocou adries. Alebo ak si Y_Less a vidis priamo matrix, tak dokonca mozes funkcie za chodu prepisovat (on to pouziva napr. v y_hooks).
  11. Yumcake, prave preto ze naucit sa PAWN nieje lahke ti nikdo nepojde len tak robit na server, ked nemas co ponuknut. Bud musis venovat ten cas a naucit sa to alebo obetovat nejake peniaze a zaplatit si pawnera, alebo mat nieco unikatne na servery, co toho pawnera zaujme. Inak si ten, kdo vie pawnit radsej zalozi svoj server.
  12. Ocividne nevies ako funguje volanie funkcii v PAWN. Keby tam bolo CallLocalFunction, tak mas pravdu. Lenze compiler pri compilacii prelozi volanie Public2(); na neco ako call 0x00006487 (adresa). Takze zmenit meno publicu nestaci. PAWN ten public zavola priamo tak ako sa volaju trebars stocky.
  13. Ak to chapem spravne, tak on to ma takto: public OnGameModeInit() { SetTimer("Public1", 5000); return 1; } public Public1() { DoleziteVeci(); Public2(); DoleziteVeci2(); } public Public2() { OtravnaReklama(); } Preto ked zmenis meno Public1, tak nebudu fungovat dolezite veci a ked zmenis Public2, tak sa nic nezmeni, lebo sa vola adresou ako bezna funkcia.
  14. Forward je prazdny statement, do amx sa nekompiluje. Ale GT222 pisal, ze ten publiuc sa vola z vacsieho timeru, ktory nemoze vypnut, inak by stratil funkcionalitu. Ak sa teda nevola cez CallLocalFunction z nejakeho dovodu, tak menit meno publicu nijak nepomoze.
  15. Takto: - upravit GM pomocou FS sa NEDA bez pouzita nejakeho pluginu - zabranit odosielani SCM cez FS sa NEDA bez pouzitia nejakeho pluginu Najlepsia volba pre teba je upravit amx modu, ak proti tomu nieje nejak chraneny. Vzhladom k tomu, ako zlozite to je a k tomu, ze ak nemas pwn, tak autor zrejme nechcel, aby si jeho mod upravoval (alebo vobec pouzival), ta to ucit nebudem.
  16. xhunterx

    ostatní Public Pawn

    Without a license, the code is copyrighted by default. People can read the code, but they have no legal right to use it. To use the code, you must contact the author directly and ask permission. Zdroj: https://blog.codinghorror.com/pick-a-license-any-license/ Toto sedi aj s tym, co nam povedali v skole ked sme robili seminarny projekt. Na pouzitie niecoho potrebujes licenciu. Ak nieje licencia, nemozes to pouzivat. PS: Tato licencia je asi lepsia: https://referencesource.microsoft.com/license.html
  17. Len poznamka, udb_hash je sice jednoduchy na pouzitie, ale je lahke ho prekonat a hlavne kolizie podstatne znizuju bezpecnost hesla! Odporucam pouzit https://wiki.sa-mp.com/wiki/SHA256_PassHash
  18. xhunterx

    ostatní Zvuk nejde

    Ak nejde ani jedno, skus ist na stranku vyrobcu zakladovej dosky, zadat model a stiahnut drivery. Mne tak tiez nesiel celkovo zvuk na PC ked som ho preinstaloval kedysi. Ale ak ti idu reproduktory, len sluchatka nie, tak to je zaujimave...
  19. Ak spravne chapem, chces vedet ako funguje funkcia sscanf(). Tu je ofik thread kde je vsetko vysvetlene. Pokial viem, hentu ostaru zatial nikdo neprelozil. http://forum.sa-mp.com/showthread.php?t=570927 (please no ban) A poznamka pre buducnost, je to funkica, nie prikaz. /kick je prikaz.
  20. xhunterx

    pomoc FS

    https://github.com/Zeex/pawn
  21. xhunterx

    pomoc FS

    Vim ze v Zeexovom compileri to nejde asi koly bugu, ale je to tak super <3
  22. Sorry, som si to neskopiroval do pawna, skus takto stock randomStr(data[], size) { for(new i = 0; i < size; ++i) { data[i] = LetterList[random(sizeof(LetterList))]; } data[size] = '\0'; } RandomText(); public RandomText(){ new rand[11], str[256]; randomStr(rand, 10); RandText = rand; //uloží písmena na RandText, RandText musi byt aspom 11 velky! Nemozes dat vacsi text do mensieho RText=1; format(str, sizeof(str), "[ {C2A2DA}Text{FFFFFF} ] Kdo jako první napíše náhodný text \"%s\" získá náhodnou cástku.",rand); SendClientMessageToAll(-1,str); //vypíše zprávu pro všechny hráce return true; }
  23. xhunterx

    pomoc Vypne hudbu v polovici

    Nieje mozne, ze to je nejaka ochrana webu? Napriklad nejaka maximalna dlzka spojenia, alebo take neco.
  24. Ja by som len doplnil, ze ak chcete nieco taketo: test(a, b = 2, c = 3, ...) {} A chcete pouzit defaultne hodnoty, mozete pouzit _ Cize npisete: test(1, _, _, 4, 5, 6); // a = 1, b = 2, c = 3, ... = {4, 5, 6} Cize _ sa pouziva tam, kde chcete defaultny parameter a da sa to pouzit aj vo funkciach kde nie je variabilny pocet parametrov
×
×
  • Create New...