Jump to content

script Registrace, login a změna hesla


Andrey

Recommended Posts

Registrace, login a změna hesla

Před nedávnem jsem se začal věnovat pawnu a jako první jsem hledal register/login systém a s tím změnu hesla. Nějak se mi nedařilo a nemohl jsem najít tento FS a tak jsem si řekl, že tak to nepůjde. Začal jsem dělat vlastní a nakonec se podařilo. Občas jsem mrkl na vedlejší práce, ovšem pouze když jsem opravdu netušil, jak dále a proto se některé kódy mohou zdát ,,okopírované". Chci poděkovat SkiBigovi že mi otevřel oči a dokázal mi, že Dof2 je lepší a jednodušší, než dini.

 

Zde je kód: http://pastebin.com/4GJjjvWw

 

Obrázky: 

 

Můžete využít na jakékoliv účely.

 

v1.1

Update scriptu - 17.8.2016

 

Obsahuje:

Ukládání statistik (poslední pozice, peníze, nahraný čas, IP adresu, skin, úmrtí, zabití)

Nový příkaz /informace

Hezčí vzhled přihlašování/registrace/změny hesla (nové barvy, text)

Z DCMD na IZCMD

 

Obrázky:

https://ctrlv.cz/ERIu

https://ctrlv.cz/zc9m

https://ctrlv.cz/3KQK

https://ctrlv.cz/ipwN

 

Pastebin:

http://pastebin.com/Fm0b3djL

 

Pokud bude čas a nálada, možná udělám ještě dialog s nastavením účtu (heslo, nick atd.)

 

Vývoj scriptu jsem ukončil a pokud budete chtít další věci přidávat, je to již na Vás. Momentálně pracuji na dalším scriptem který zveřejním brzy.

Edited by Andrey
Link to comment
Share on other sites

  • Hlavní moderátor

Díval jsem se na kód, je tam co zlepšovat, ale na to časem přijdeš sám. Pokud sis nechal poradit s DOF2, taky bych ti chtěl dát pár rad:

 

1. Místo dcmd používej zcmd, práce s ním je jednoduchá, jednodušší jak s dcmd. V tomto návodu máš přesně vysvětleno, jak tvořit příkazy pomocí (i)zcmd.

 

2. Vytváříš zbytečně velké řetězce.

new soubor[256];

/Ucty/Hesla/%s.txt

Když za %s dosadíš nejdelší možný nick, což je 24 znaků, bude celková délka 40 znaků, bohatě by tedy stačilo dát jako velikost 41. Samozřejmě si můžeš udělat rezervu (50, 55), ale 255 znaků na to určitě nebudeš potřebovat. Naučit se šetřit s pamětí není na škodu.

 

3. Chválím tě, že hashuješ hesla, ale dneska už ani nemusíš kvůli tomu přidávat další knihovnu (dudb.inc). SA:MP už má svou funkci na hashování, viz tento návod.

 

To je to hlavní, na co jsem tě chtěl upozornit, zbytek jsou drobnosti.

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

Díval jsem se na kód, je tam co zlepšovat, ale na to časem přijdeš sám. Pokud sis nechal poradit s DOF2, taky bych ti chtěl dát pár rad:

 

1. Místo dcmd používej zcmd, práce s ním je jednoduchá, jednodušší jak s dcmd. V tomto návodu máš přesně vysvětleno, jak tvořit příkazy pomocí (i)zcmd.

 

2. Vytváříš zbytečně velké řetězce.

new soubor[256];

/Ucty/Hesla/%s.txt

Když za %s dosadíš nejdelší možný nick, což je 24 znaků, bude celková délka 40 znaků, bohatě by tedy stačilo dát jako velikost 41. Samozřejmě si můžeš udělat rezervu (50, 55), ale 255 znaků na to určitě nebudeš potřebovat. Naučit se šetřit s pamětí není na škodu.

 

3. Chválím tě, že hashuješ hesla, ale dneska už ani nemusíš kvůli tomu přidávat další knihovnu (dudb.inc). SA:MP už má svou funkci na hashování, viz tento návod.

 

To je to hlavní, na co jsem tě chtěl upozornit, zbytek jsou drobnosti.

 

Díky, určitě se podívám a zkusím to. 

Link to comment
Share on other sites

Ale to nic nebylo ... :oops: Jsem rád, že ty návody mají alespoň nějaký účel ... Teď k hodnocení scriptu:

 

Klady:

- Funkčnost jsi nám tedy dokazoval screeny, takže snad ho nemusím zkoušet +1

- Určitě ten bod za dof2 a ne další ignorantské dini. +1

- Náznaky tabování, jen bych to dopiloval, rozhodně to přidá na přehlednosti +1

- Nikdy mě nenapadlo, že jde barvit i text v tlačítkách :d+1

- Nejsou v kódě takové fatální či až absurdní chyby(ale k tomu ještě později) +1

 

Zápory

- Tvoje audio. Přidal bych alespoň preprocesor, aby si, ne moc zběhlejší uživatel, mohl jednoduše změnit nebo úplně odstranit. -1.

- dcmd, jak již říkal vEnd -1

- hash, také jak již říkal vEnd, ale co vidím, tak nahráváš dudb. Proč? Jestli je to kvůli hash, tak dof2 ho obsahuje také. -1

- A nakonec máš tam drobnější chyby, například nemusíš využívat pragmu na parametry, podmínku response znegovat a inline přidat jen, že ho to vyhodí(pokud přidáš i druhé tlačítko), to pole(opět vEnd). -1.

 

 

Jen tak dál. Zlepšuj se.

Link to comment
Share on other sites

- Nikdy mě nenapadlo, že jde barvit i text v tlačítkách :d+1

 

- Tvoje audio. Přidal bych alespoň preprocesor, aby si, ne moc zběhlejší uživatel, mohl jednoduše změnit nebo úplně odstranit. -1.

 

Taky jsem netušil že jdou barvit tlačítka, ale tak dělal jsem barvy tak jsem to zkusil a fungovalo to.

Zkusím taky udělat to audio, bude to další pěkná zkušenost.

A děkuji :d

Link to comment
Share on other sites

Zkusím taky udělat to audio, bude to další pěkná zkušenost.

Není, se jen zdá. Ve skutečnosti to jsou jen podmínky a preprocesory, ti ukážu příklad:

 

#define INSERT_AUDIO
	#define AUDIO_ODKAZ http://www.nic.nc/nic.mp

public OnFilterScriptInit() {

	#if defined INSERT_AUDIO 
	PlayAudioStreamForPlayer(playerid, AUDIO_ODKAZ);
	#endif
Link to comment
Share on other sites

stačí

#define AUDIO_ODKAZ "url"

...
#if defined AUDIO_ODKAZ
PlayAudioStreamForPlayer(playerid, AUDIO_ODKAZ);
#endif

To je ale celkem jedno a teď něco ke scriptu.

Měl by jsi vždy řádně tabovat, protože takhle z toho máš akorát něco nečitelného. ID dialogů si nadefinuj, udělej do enumu, nebo cokoliv, ať si je můžou uživatelé jednoduše změnit (ty tvoje ID budou ve většině případech využity).

V OnDialogResponse vracíš 1, což ti zapříčiní nevolání dalších OnDialogResponse v jiných FS (vracej tam 0) a při nalezení dialogu vracej 1. Viz kód níže.

if(dialogid == 1)
{
    tvůj kód

    return 1; // vrátíme 1, nebudou se volat další fce OnDialogResponse v jiném scriptu
}

if(dialogid == 2)
{
    tvůj kód

    return 1;
}

return 0; // nenalezli jsme náš dialog, zavolá se další OnDialogResponse v jiném scriptu, kde se možná nalezne

Pak tam máš ještě drobnosti a věci výše napsané. Btw dobrá písnička :d

Link to comment
Share on other sites

Update scriptu - 17.8.2016

 

Obsahuje:

Ukládání statistik (poslední pozice, peníze, nahraný čas, IP adresu, skin, úmrtí, zabití)

Nový příkaz /informace

Hezčí vzhled přihlašování/registrace/změny hesla (nové barvy, text)

Z DCMD na IZCMD

 

Obrázky:

https://ctrlv.cz/ERIu

https://ctrlv.cz/zc9m

https://ctrlv.cz/3KQK

https://ctrlv.cz/ipwN

 

Pastebin:

http://pastebin.com/Fm0b3djL

 

Pokud bude čas a nálada, možná udělám ještě dialog s nastavením účtu (heslo, nick atd.)

Edited by Andrey
Link to comment
Share on other sites

Ahoj 
Ako vidím Dof2 sa ti nejak zapáčil. To je chvályhodné. Skrypt je samozrejme v poriadku čo som tak na rýchlo prelistoval len my do očí skočil ten timer a tu by som ti chcel odporúčal použiť Unix Time Stamp

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

/*Credits to Dracoblue*/
stock udb_hash(buf[]) {
    new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}

Můžeš zkusit tohle

Link to comment
Share on other sites

Co se týče designu, tak máš pěkně zvolený barvy, ale určitě bych jinak zarovnal ty Informace. Dvojtečky bych dal pod sebe a malý odsazení těch info od nich (třeba tab).

Edited by GaRGoyLeS
Link to comment
Share on other sites

  • 2 months later...

Prosím help

 

G:\Games\GTA San Andreas\pawno\ \Login.pwn(63) : error 017: undefined symbol "ShowPlayerDialog"
G:\Games\GTA San Andreas\pawno\ \Login.pwn(64) : error 017: undefined symbol "PlayAudioStreamForPlayer"
G:\Games\GTA San Andreas\pawno\ \Login.pwn(71) : error 017: undefined symbol "ShowPlayerDialog"
G:\Games\GTA San Andreas\pawno\ \Login.pwn(72) : error 017: undefined symbol "PlayAudioStreamForPlayer"
G:\Games\GTA San Andreas\pawno\ \Login.pwn(89) : error 017: undefined symbol "ShowPlayerDialog"
G:\Games\GTA San Andreas\pawno\ \Login.pwn(86) : warning 203: symbol is never used: "playerid"
G:\Games\GTA San Andreas\pawno\ \Login.pwn(86 -- 93) : warning 235: public function lacks forward declaration (symbol "OnDialogResponse")
G:\Games\GTA San Andreas\pawno\ \Login.pwn(101) : error 017: undefined symbol "ShowPlayerDialog"
G:\Games\GTA San Andreas\pawno\ \Login.pwn(110) : error 017: undefined symbol "StopAudioStreamForPlayer"
G:\Games\GTA San Andreas\pawno\ \Login.pwn(124) : error 017: undefined symbol "ShowPlayerDialog"
G:\Games\GTA San Andreas\pawno\ \Login.pwn(130) : error 017: undefined symbol "ShowPlayerDialog"
G:\Games\GTA San Andreas\pawno\ \Login.pwn(141) : error 017: undefined symbol "StopAudioStreamForPlayer"
G:\Games\GTA San Andreas\pawno\ \Login.pwn(153) : error 017: undefined symbol "ShowPlayerDialog"
G:\Games\GTA San Andreas\pawno\ \Login.pwn(157) : error 017: undefined symbol "ShowPlayerDialog"
G:\Games\GTA San Andreas\pawno\ \Login.pwn(175) : warning 203: symbol is never used: "ret_memcpy"
Pawn compiler 3.2.3664     Copyright © 1997-2006, ITB CompuPhase

Link to comment
Share on other sites

 

Prosím help   G:\Games\GTA San Andreas\pawno\ \Login.pwn(63) : error 017: undefined symbol "ShowPlayerDialog" G:\Games\GTA San Andreas\pawno\ \Login.pwn(64) : error 017: undefined symbol "PlayAudioStreamForPlayer" G:\Games\GTA San Andreas\pawno\ \Login.pwn(71) : error 017: undefined symbol "ShowPlayerDialog" G:\Games\GTA San Andreas\pawno\ \Login.pwn(72) : error 017: undefined symbol "PlayAudioStreamForPlayer" G:\Games\GTA San Andreas\pawno\ \Login.pwn(89) : error 017: undefined symbol "ShowPlayerDialog" G:\Games\GTA San Andreas\pawno\ \Login.pwn(86) : warning 203: symbol is never used: "playerid" G:\Games\GTA San Andreas\pawno\ \Login.pwn(86 -- 93) : warning 235: public function lacks forward declaration (symbol "OnDialogResponse") G:\Games\GTA San Andreas\pawno\ \Login.pwn(101) : error 017: undefined symbol "ShowPlayerDialog" G:\Games\GTA San Andreas\pawno\ \Login.pwn(110) : error 017: undefined symbol "StopAudioStreamForPlayer" G:\Games\GTA San Andreas\pawno\ \Login.pwn(124) : error 017: undefined symbol "ShowPlayerDialog" G:\Games\GTA San Andreas\pawno\ \Login.pwn(130) : error 017: undefined symbol "ShowPlayerDialog" G:\Games\GTA San Andreas\pawno\ \Login.pwn(141) : error 017: undefined symbol "StopAudioStreamForPlayer" G:\Games\GTA San Andreas\pawno\ \Login.pwn(153) : error 017: undefined symbol "ShowPlayerDialog" G:\Games\GTA San Andreas\pawno\ \Login.pwn(157) : error 017: undefined symbol "ShowPlayerDialog" G:\Games\GTA San Andreas\pawno\ \Login.pwn(175) : warning 203: symbol is never used: "ret_memcpy" Pawn compiler 3.2.3664     Copyright © 1997-2006, ITB CompuPhase
 
C:\Users\User\Desktop\reg.pwn(333) : warning 203: symbol is never used: "DOF2_Exit"
C:\Users\User\Desktop\reg.pwn(333) : warning 203: symbol is never used: "ret_memcpy"
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
 
 
2 Warnings.
 
 
Wtf, mě to jde v pohodě, warningy jsem si napravil že kdekoliv do FS/GM dal #pragma unused ret_memcpy
a přidal public OnFilterScripExit do kterého jsem dal DOF2_Exit();
 
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
 
 
Zkus si znova stáhnout všechny includy které tento script potřebuje.
Edited by rawenCB
Link to comment
Share on other sites

  • 2 months later...
  • 2 weeks later...

WAU 10/10 určite využijem do svojho gm

Aspoň si trošku prispel tomu že na serveroch vymizne RZE sice je to škoda ale určite je lepšie si spraviť svoj vlastný gm.

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