Jump to content

pomoc Kody


_DIAMOND_

Recommended Posts

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 by _DIAMOND_
Link to comment
Share on other sites

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

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

  • Administrátor

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

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 by Ninjonik
Link to comment
Share on other sites

  • Administrátor
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 

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

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 by DuFF
Link to comment
Share on other sites

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.

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

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

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 :conf:

Edited by Robin
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...