Jump to content

návod [2017] Easy BankSystem


Scydo

Recommended Posts

  • Administrátor

Není zbytečné u té funkce OnlyNumbers kontrolovat každý znak jeslti ej číslo ? Není jednodužší rovnou zkontrolovat jestli je to celé číslo ?

Link to comment
Share on other sites

  • Globální moderátor

Ewwe má pravdu, ale z hlediska estetiky pro uživatele to bude hezčí. Přeci jenom když zadá čistě text a napíše se mu "Nelze vybrat 0$," tak to není vůbec ono. 

 

 

Jinak je tam redundantní kód 

if (!response) return true;
   
return true;

Tohle by mohlo jít mimo toho switche

 

 

Možná by bylo ještě fajn ošetřit přetečení hodnotou 2^32-1 :d

Link to comment
Share on other sites

  • Administrátor

Ewwe má pravdu, ale z hlediska estetiky pro uživatele to bude hezčí. Přeci jenom když zadá čistě text a napíše se mu "Nelze vybrat 0$," tak to není vůbec ono. 

 

Jak to myslíš ?

Link to comment
Share on other sites

  • Globální moderátor

Říkals jestli není jednodušší zkontrolovat jestli je to číslo

 

strval("asdasdgdg") ==> 0

strval("123sdfdsf") ==> 123

strval("asdas456564") ==> 0

 

Z 2/3 případů vrací 0, ve tvém případě by se uživateli vypsalo "Nelze vybrat/vložit 0$", což není úplně hezký

Link to comment
Share on other sites

To bych mohl, to je pravda. Jsem fci přidal hlavně kvůli záporu, aby se pak nemuselo všude zjišťovat menší nebo rovno ale rovnou fakticky pouze kladná čísla.

 

//edited, upraven topic.

Edited by Ernst Remer
Link to comment
Share on other sites

  • Hlavní moderátor

Jak to myslíš ?

Být to PHP, mohlo by strval vracet false a použil bys jednoduše operátor ===, tady to holt vrací nulu jak pro strval("0"), tak pro strval("asdf"). icon_e_biggrin.gif Zas ale nemůžu chtít zázraky od jazyka, který datové typy nerozeznává (o tagech Float, bool apod. nemluvme).

 

Jinak návod je v pohodě. Aktuální návody pro tento a podobné systémy tu momentálně nejsou (alespoň co vím), takže se to hodí. Ty z roků 2008 a 2010 už akorát přidělávají práci helperům, kteří pak musí opravovat zastaralé kódy.

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 3 years later...

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

Edited by DuFF
  • Děkuji (+1) 1
Link to comment
Share on other sites

před 28 minutami, DuFF said:

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...(více)

To je sice dobrá přípomínka ale tohle je (k tomu ještě 3 roky starý) tutoriál a ne publikovaný FS. Návod je plně zaměřený na tvorbu Banky, to znamená na vklad, výběr a manipulace. Tvoje připomínka už spadá do kategorie optimalizace.
Mimochodem, všimni si poslední věty:

On 18. 4. 2017 at 21:37, Scydo said:

PSS: Ano, jde to udělat ještě lépe, ale já jsem to chtěl zpracovat jednoduchou a snadně-pochopitelnou cestou.

Tím myslím, že tohle je jedna z možností, jak zpracovat Banky, ne celý FS.

Edited by Scydo
Link to comment
Share on other sites

  • Majitel
před 15 hodinami, Scydo said:

To je sice dobrá přípomínka ale tohle je (k tomu ještě 3 roky starý) tutoriál a ne publikovaný FS. Návod je plně zaměřený na tvorbu Banky, to znamená na vklad, výběr a manipulace. Tvoje připomínka už spadá do kategorie optimalizace.
Mimochodem, všimni si poslední věty:

Tím myslím, že tohle je jedna z možností, jak zpracovat Banky, ne celý FS.

Náhodou je to velmi dobrá připomínka, kterou je potřeba brát v potaz nejen v těchto typech systémů. Overflow je vážná bezpečnostní díra, se kterou by se mělo počítat od základu :)

  • Děkuji (+1) 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...