Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

DuFF

Uživatel
  • Příspěvků

    108
  • Registrován

  • Aktivní

  • Vítězných dnů

    13

DuFF last won the day on Říjen 18

DuFF had the most liked content!

Reputace

36 Dwaine

About DuFF

  • Moto
    Jethro
  • Narozeniny 22.8.1998

Kontaktní údaje

  • Skype
    lupino297

Návštěvníci

811 profile views
  1. Možno si si nevšimol, že nejde o originálnu wiki, ale o jej kópiu na doméne blast.hk. Ja som napríklad o tejto kópii nevedel a som za tento príspevok vďačný, keďže originálna samp wiki už nie je dostupná ani cez wayback machine na archive.org.
  2. Vyhovuje ti f(n) = n * 0.55 / 1000 + 0.245? Teda napríklad pre y = 500 by bola výška postavy 500 * 0.55 / 1000 + 0.245 = 0.52. Dopracoval som sa k tomu pomocou sústavy 2 rovníc o 2 neznámych, ktoré vznikli dosadením tvojich bodov ([100;0.3] a [1100;0.85]) do všeobecného tvaru lineárnej funkcie (y = a * x + b): 0.3 = a * 100 + b 0.85 = a * 1100 + b
  3. Môžeš sa pozrieť na funkciu GetWeaponName. Ak ti nevyhovujú tieto (anglické) názvy zbraní alebo spôsob použitia tejto funkcie, môžeš si vyrobiť vlastnú alternatívu. Namiesto miliona else ifov, ktoré navrhuje bigMike, by som radšej skúsil statické pole. Napríklad nejak takto:
  4. Možno treba brať ohľad na to, že nie všetci tu začínali hrávať v rovnakej dobe, a teda u každého môže vyvolať nostalgiu niečo iné. Napríklad ja (a určite nie som jediný) som začínal až na tvojej RZE okolo 2011 a mám na to pekné spomienky. Určite by to u mňa vyvolalo viac nostalgie ako Maikeroo Town alebo nejaké iné módy zo zoznamu, ktoré som hral možno 2-krát v živote. Na druhej strane chápem, že hráči, ktorí začínali oveľa skôr ako ja, môžu mať úplne iné preferencie.
  5. Chápem správne, že tieto objekty nechceš pridať na server, ale chceš si ich pridať do hry tak, aby si ich videl aj v singleplayeri? Nikdy som to nerobil, ale pokiaľ viem, docieliš to úpravou .ipl súborov v GTA San Andreas/data/maps. Tu je na to nejaký návod.
  6. Keď všetko ostatné zlyhá a budeš zúfalý, môžeš ešte skúsiť Zeexov compiler, ktorý má opravených pár známych bugov pawn compileru. Compiler sa ešte zvykol chovať podobne v prípade, že niekde chýbala zátvorka uzatvárajúca blok. Tanga na to vyrobil užitočný nástroj "Missing Brackets Detector", ktorý by tu mal byť niekde v sekcii Na stažení (ak prežil rollback).
  7. DuFF

    pomoc C - Divný output

    Aj keď sme už problém vyriešili, ešte si dovolím drobnú optimalizáciu. Skús sa zamyslieť, či potrebuješ ten vnútorný cyklus na počítanie temp_sum. Podľa mňa by ti stačilo spočítať ho iba raz (na začiatku) a v každej iterácii cyklu ho iba mierne upraviť (bez potreby vnútorného cyklu). Skús to vymyslieť najskôr sám, až potom si rozklikni spoiler.
  8. DuFF

    pomoc C - Divný output

    Neviem, kde môžeš mať chybu. Ja s týmto programom: Dostávam pravdepodobne správny výstup: count = 3 special numbers: 17 5 2 V maine, ktorý si sem postol, máš nejaké "test_array", ktoré ani nevidím nikde zadeklarované. Možno si over, či si namiesto toho použil result_array.
  9. DuFF

    pomoc C - Divný output

    Myslím si, že chyba je na tomto riadku: result_array[i] = input_array[i]; Špeciálne číslo na i-tom indexe vstupu nemusí byť nutne uložené na i-tom indexe výstupu. Vstupné pole môže obsahovať najskôr nejaké čísla, ktoré nie sú špecialne a povedzme, že prvé špeciálne číslo bude vo vstupnom poli na indexe 3. Toto prvé špeciálne číslo pochopiteľne nechceš uložiť vo výstupnom poli na index 3, ale na index 0. Chceš, aby bolo i-té nájdené špeciálne číslo uložené na i-tom indexe výstupu. Správne by malo teda byť: result_array[totally] = input_array[i];
  10. Trochu si ten login prekombinoval, skús to nejak takto: Ak sa rozhodneš pridávať hashovanie, urobíš to vo funkciách Register a Login. Pre začiatočníka to nie je najľahšie na pochopenie, ale skúsim: Trik je v tom, že neukladáš priamo heslo, ale iba jeho hash - reťazec, ktorý vznikol aplikovaním hashovacej funkcie na heslo a náhodný reťazec (salt). Pri prihlasovaní potom rovnakou hashovacou funkciou a rovnakým saltom zahashuješ heslo, ktoré hráč zadal do prihlasovacieho dialogu. Ak sa tento nový hash zhoduje s hashom, ktorý si uložil do súboru pri registrácii, je veľmi vysoká šanca, že hráč zadal správne heslo (niektoré hashovacie funkcie majú kolízie a tak sa môže stať, že 2 rôzne heslá majú rovnaký hash). Teda čo musíš urobiť: Vo funkcii Register vygeneruješ náhodný salt, zahashuješ hráčovo heslo pomocou vygenerovaného saltu a salt a hash si uložíš do súboru (budeš ich potrebovať pri overení správnosti hesla pri prihlasovaní). Vo funkcii Login potom prečítaš zo súboru salt, zahashuješ hráčovo heslo pomocou prečítaného saltu, prečítaš zo súboru hash, ktorý si tam uložil pri registrácii a porovnáš (napríklad pomocou funkcie strcmp), či sa nový hash rovná tomu prečítanému zo súboru. Ak áno, hráč zadal správne heslo. Ak nie, zobrazíš mu znova prihlasovací dialog.
  11. Nič by sa nepokazilo, hráč by iba videl namiesto zadávaných znakov v dialogu bodky. Môj osobný názor ale je, že je fajn schovávať heslo pri logine, ale pri registrácii by som ho hráčovi radšej zobrazil, aby mal istotu, že sa zaregistruje pod správnym heslom (caps lock, num lock, preklepy, ... vedia spôsobiť problémy).
  12. Problém je v tejto časti: Pravdepodobne si chcel napísať if (response == 1). Každopádne táto podmienka je zbytočná a môžeš ju z kódu odstrániť, pretože o 5 riadkov vyššie kontroluješ, či je response 0 a ak je, tak ukončíš funkciu returnom. Ak sa teda vykoná kód z tejto časti, máš istotu, že response nie je 0 (aj bez ďalšieho overovania podmienkou). Momentálne sa ti deje to, že kód v tele tvojej podmienky sa nemôže nikdy vykonať. Je to z toho dôvodu, že ak je response 0, funkciu ukončíš o pár riadkov vyššie returnom. Naopak, ak response nie je 0, funkcia sa síce neukončí, ale podmienka response == 0 nie je splnená, a tak sa nevykoná jej telo. Druhý problém je s podmienkou if(strlen(inputtext)). Ak by si to nechal takto, ako to je teraz, na každé neprázdne heslo by ti vypísalo správu, že ty heslo je krátke. Pravdepodobne si chcel napísať napríklad if(strlen(inputtext) < 6). Tip: Aj keď to nie je všeobecne dobrá prax, v pawne je užitočné používať debugovacie správy. Napríklad aby si zistil, ktorá vetva podmienky sa vykonala, prípadne kde sa ukončilo vykonávanie funkcie. Jednoducho na nejaké miesto v kóde pridaj printf("<nejaký unikátny text>"); a keď tento text potom nájdeš v server logu, budeš vedieť, že sa ten blok kódu, do ktorého si vložil print, vykonal. Keby si takýto print vložil na začiatok svojej funkcie Register, zistil by si, že sa táto funkcia nikdy nevolá.
  13. Ospravedlňujem sa za otváranie starého topicu, ale všimol som dosť podstatný bug. Nie je ošetrený výber (ani vklad) zápornej čiastky. Funkcia OnlyNumbers mi síce zabráni napísať do dialogu priamo zápornú hodnotu, ale myslím, že mi nič nebráni docieliť zápornú hodnotu pomocou overflowu. Napríklad tak, že by som do dialogu na výber peňazí napísal sumu 2147483649 (2^31 + 1). Funkcia OnlyNumbers ma nezastaví, pretože každý znak v reťazci "2147483649" je platná číslica. strval("2147483649") vracia hodnotu -2147483647. if (GetPlayerMoney(playerid) < strval(inputtext)) ma nezastaví, pretože budem mať pri sebe viac $ ako -2147483647. Riadok GivePlayerMoney(playerid, -strval(inputtext)); nakoniec spôsobí, že mi server vyplatí 2147483647 $ aj napriek tomu, že som v banke nemusel mať uložené vôbec nič.
  14. DuFF

    VIP - GAMING

    Bohužiaľ (pre niekoho vďakabohu), realita je taká, že všetky známejšie rze servery sú už buď úplne mŕtve (progamers, sacz, nfs, tgr, avalon, play sector, velka parba, psycho social, real national...) alebo postupne zomierajú aj napriek (aspoň minimálnej) snahe majiteľov a admin teamu (bfs, snk, ...).
  15. Zdravím, má niekto nápad, ako sa bez použitia hrubej sily dopracovať k riešeniu rovnice 2 * n^2 = d^2 + d, ak musí platiť 50 <= d <= 500 a n <= d? Použitím hrubej sily som sa síce dopracoval k jedinému možnému riešeniu (d = 288, n = 204), ale verím, že na to existuje aj krajší postup. // Edit: n a d sú prirodzené čísla.
×
×
  • Create New...