_DIAMOND_ 9 Odesláno: 24. Září, 2021 Share Odesláno: 24. Září, 2021 (upraveno) Zdravíčko, Potřebuju poradit se systemem, který má vykonávat následovně: Hráč získá někde 16 místný kod ( 5555 5555 5555 5555 ) Pokud zadá /voucher zobrazí se dialog kde bude DIALOG_STYLE_INPUT Tam zadá ten 16 místný kod ( 5555 5555 5555 5555 ) klikne se na levé tlačítko Aktivovat a zobrazí se další dialog DIALOG_STYLE_MSGBOX kde bdue napsáno " Kód byl úspěšně aktivován. " Hráč obdrží počet peněz. [ ! ] Pokud stejný hráč nebo kdokoliv jiný zadá ten voucher, tak podruhé už nebude možné použít znovu. [ ! ] _____________________________________________________________________________________________________________ Můj Kód #include <a_samp> #include <zcmd> #include <sscanf> #define DIALOG_VOUCHER 801 new Voucher [250]; CMD:voucher(playerid) { new MAX_STR[3000]; format(MAX_STR, sizeof(MAX_STR), ""); strcat(MAX_STR, "{FFFFFF}Aktivujte Váš voucher ve hře a získejte herní peníze do hry.\n"); strcat(MAX_STR, "{FFFFFF}Na Vás zadaný email při platbě byl odeslán Email s kartou voucheru kde stačí opsat\n"); strcat(MAX_STR, "{FFFFFF}16 místné číslo do kolonky.\n"); ShowPlayerDialog(playerid, DIALOG_VOUCHER, DIALOG_STYLE_INPUT, "Aktivace Voucherů", MAX_STR, "Aktivovat", "Závřít"); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("5555 5555 5555 5555", cmdtext, true, 10) == 0) { SendClientMessage(playerid,-1,"Voucher Aktivován."); return 1; } return 0; } Obracím se na Vás s pomocí. Děkuji za pomoc. Vážím si každé pomoci. Edited 24. Září, 2021 by _DIAMOND_ Link to comment Share on other sites More sharing options...
Fakerko_ 190 Odesláno: 24. Září, 2021 Share Odesláno: 24. Září, 2021 To budeš muset vždy ten kód voucheru přidat do databáze a při zadání kódu hráčem musíš ověřit, že ten kód existuje a zda ještě není použit. Pokud není použitý, dáš hráči peníze a nastavíš kód jako použitý. Pokud kód již je použit, tak by se mělo hráči zobrazit, že kód nelze použit, protože už ho použil někdo jiný a nebo, že kód neexistuje. Link to comment Share on other sites More sharing options...
_DIAMOND_ 9 Odesláno: 24. Září, 2021 Author Share Odesláno: 24. Září, 2021 před 2minutami, Fakerko_ said: To budeš muset vždy ten kód voucheru přidat do databáze a při zadání kódu hráčem musíš ověřit, že ten kód existuje a zda ještě není použit. Pokud není použitý, dáš hráči peníze a nastavíš kód jako použitý. Pokud kód již je použit, tak by se mělo hráči zobrazit, že kód nelze použit, protože už ho použil někdo jiný a nebo, že kód neexistuje. Děkuji, A obával jsem se té databáze. Protože to fakt nedám. Jestli bys mi s tím pomohl ? ocenil bych to. Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 24. Září, 2021 Administrátor Share Odesláno: 24. Září, 2021 Záleží jak moc chceš ty kody měnit. Databáze by byla nejlepší ale pokud třeba v modu nemáš připojení do db tak to lze řešit třeba databází na webu a jednou metodou v pawnu. Link to comment Share on other sites More sharing options...
_DIAMOND_ 9 Odesláno: 24. Září, 2021 Author Share Odesláno: 24. Září, 2021 A nešlo by to pouze podmínkou ? Pokud hráč použije tento kod tak se nastaví hodnota 1 a s tím že už byl kod aktivován. Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 24. Září, 2021 Administrátor Share Odesláno: 24. Září, 2021 šlo ale musel bys ukladat nekam vedle aby se ti po restartu serveru kody neresetovali Link to comment Share on other sites More sharing options...
Ninjonik 11 Odesláno: 24. Září, 2021 Share Odesláno: 24. Září, 2021 (upraveno) databáza je najlepšia možnosť vo všetkých prípadoch. Keďže sa jedná o vouchery, tak by bolo pravdepodobne najlepšie to mať aj nejak prepojené s webom - čo bez databáze nespravíš. A databáze sa niet prečo báť, tie základné príkazy ako INSERT a SELECT sú úplne jednoduché a pochopí ich každý. Takže naučiť sa databázy nie je ťažké. Práve naopak - paradoxne veľmi odmeňujúce. Edited 24. Září, 2021 by Ninjonik Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 24. Září, 2021 Administrátor Share Odesláno: 24. Září, 2021 před 1hodinou, Ninjonik said: databáza je najlepšia možnosť vo všetkých prípadoch. Keďže sa jedná o vouchery, tak by bolo pravdepodobne najlepšie to mať aj nejak prepojené s webom - čo bez databáze nespravíš. A databáze sa niet prečo báť, tie základné príkazy ako INSERT a SELECT sú úplne jednoduché a pochopí ich každý. Takže naučiť sa databázy nie je ťažké. Práve naopak - paradoxne veľmi odmeňujúce. To neni uplne pravda. Databaze neni vzdy nejlepsi reseni ( vetsinou muze byt ) a propojit web s modem jde i bez databaze 1 Link to comment Share on other sites More sharing options...
DuFF 81 Odesláno: 25. Září, 2021 Share Odesláno: 25. Září, 2021 (upraveno) Ak si nikdy nepracoval s ukladaním dát, databáza môže byť príliš veľký skok. Napadlo mi riešenie, ktoré nie je úplne ideálne, ale mal by si ho zvládnuť naprogramovať sám: Navrhujem vytvoriť si v scriptfiles priečinok "available_vouchers", do ktorého si budeš ukladať dostupné kódy. Ak budeš chcieť pridať nejaký nový kód, iba vytvoríš súbor "available_vouchers/<kód>" - teda napríklad pre pridanie kódu 5555 5555 5555 5555 by si vytvoril súbor "available_vouchers/5555 5555 5555 5555" (využiješ fopen s módom io_write). Keď hráč zadá kód do dialogu, najskôr overíš, či je kód dostupný - zistíš, či existuje súbor "available_vouchers/<kód, ktorý ti hráč zadal>" (využiješ fexist). Pre zvýšenú bezpečnosť si predtým môžeš skontrolovať, že jeho vstup neobsahuje iné znaky ako 0-9 a medzery. Ak je kód dostupný, dáš hráčovi odmenu a súbor "available_vouchers/<kód, ktorý ti hráč zadal>" vymažeš (využiješ fremove). // Edit: V mojom predošlom riešení nebolo domyslené pridávanie kódov Edited 25. Září, 2021 by DuFF Link to comment Share on other sites More sharing options...
Fakerko_ 190 Odesláno: 25. Září, 2021 Share Odesláno: 25. Září, 2021 před 2minutami, DuFF said: Ak by bola pre teba databáza príliš veľký skok, môžeš najskôr začať ukladaním do textových súborov v scriptfiles. Navrhujem vytvoriť si v scriptfiles priečinok s názvom napr. "used_vouchers", do ktorého si budeš ukladať použité kódy. Ak niekto úspešne zadá kód napríklad 5555 5555 5555 5555, vytvoríš v priečinku used_vouchers súbor s názvom "5555 5555 5555 5555" a môžeš si do neho zapísať nick hráča, ktorý voucher zadal. Na toto ti bude stačiť fopen a fwrite. Na overenie, či už bol kód napr. 5555 5555 5555 5555 zadaný, iba cez fexist overíš, či už existuje súbor "/used_vouchers/5555 5555 5555 5555". To mi přijde jako prasárna, hlavně u voucherů, které se hádám budou kupovat za peníze. Z pohledu bezpečnosti, kdy bude hostovat na nějakém free hostu nebo levném, si tam někdo přes nějakou díru v administraci vleze do scriptfiles a vytvoří/upraví voucher dle svého. Když už dělá mód, tak bych doporučoval nebýt línej a dělat to pořádně, což pořádné řešení je udělat to přes databázi. Nehledě na to, databáze se ti bude určitě hodit i na další vylepšení, čím dříve s tím začne, tím lépe pro něj. 1 Link to comment Share on other sites More sharing options...
Ninjonik 11 Odesláno: 25. Září, 2021 Share Odesláno: 25. Září, 2021 před 22minutami, Fakerko_ said: To mi přijde jako prasárna, hlavně u voucherů, které se hádám budou kupovat za peníze. Z pohledu bezpečnosti, kdy bude hostovat na nějakém free hostu nebo levném, si tam někdo přes nějakou díru v administraci vleze do scriptfiles a vytvoří/upraví voucher dle svého. Když už dělá mód, tak bych doporučoval nebýt línej a dělat to pořádně, což pořádné řešení je udělat to přes databázi. Nehledě na to, databáze se ti bude určitě hodit i na další vylepšení, čím dříve s tím začne, tím lépe pro něj. presne tak. jednoducho prečo by si to robil inak ako cez databázu? nevidím tam žiaden pádny dôvod Link to comment Share on other sites More sharing options...
Robin 67 Odesláno: 25. Září, 2021 Share Odesláno: 25. Září, 2021 (upraveno) if (strcmp("5555 5555 5555 5555", cmdtext, true, 10) == 0) { SendClientMessage(playerid,-1,"Voucher Aktivován."); return 1; } vieš vlastne prečo tam máš 10 ako 4. parameter? https://open.mp/docs/translations/th/scripting/functions/strcmp Edited 25. Září, 2021 by Robin Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now