Jump to content

Nejuspornejsi registracni system


ATomas

Recommended Posts

Zdravim,

Na zacatek

toto je TUT = navod pro pouziti nikoli pro skopirovani a nasledne hlaseni primitivnich erroru

takze jsem se rozhodl vam udelat tutorial na klasickou registraci

fwrite

fread

fopen

fclose

jak vidim tak vsichni pouzivaji dini (dudb funguje taky pres dini)

je to velmi zatezovy script a k registracim kde staci jen cist a ukladat neni potreba takova propracovanost

hlavne tim hodne setrite CPU

 

registrace si budeme ukladat do scriptfiles do slozky "Ucty"

 

#define MAX_STRING 					   	   128
#define textdraw(%1,%2) SendClientMessage(%1,0xFFFFFFAA,%2)
forward UlozSkore(playerid);
new Banka[MAX_PLAYERS];
new bool:Prihlasen[MAX_PLAYERS];

public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
{
if(dialogid == 1)
{
	if(!inputtext[0]) return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Přihlášení","Prosím přihlašte se, napište své heslo","OK","OK");
	else if(Prihlasen[playerid] == true) textdraw(playerid,"Uz jste prihlaseny");
	new string[MAX_STRING];
	new Data[MAX_STRING];
	format(string,sizeof(string),"Ucty/%s.sav",Jmeno(playerid));//zde si naformatujeme jmeno souboru do jmena se formatuje i umisteni to je to "Ucty/". %s je jmeno hrace a pak pripona budeme pouzivat ".sav" (ve slozce scriptfiles musite vytvori slozku "Ucty")
	if(fexist(string))//pokud existuje soubor ve slozce. kdyz nebude existovat slozka tak se odesle nejako ze soubor neexistuje
	{
		new File:LogFile = fopen(string,io_read);//otevreme soubor pro cteni LogFile je aby jsme vedely s jakym pracujeme
		if(!LogFile) printf("problem se souborem %s (io_read)",string);//pokud nastala chyba
		fread(LogFile,Data,sizeof(Data));// precteme radek a mame heslo ve tvaru "heslo\r\n"
		strdel(Data,NajdiEnter(Data),strlen(Data));// pomoci funkce a oriznuti ziskame "heslo" bez tech odratkovani
		if(strcmp(Data,inputtext,false))//pokud zadal spatne heslo
		{
			textdraw(playerid,"Login selhal");
			ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Přihlášení","Prosím přihlašte se, napište své heslo","OK","OK");
		}else{//pokud zadal spravne heslo
		    SetPVarString(playerid,"PrihlasovaciHeslo",inputtext);//ulozime si jeho heslo do promene dale uvidite proc
			//vzdy kdyz pouzijete fread se precte radek a po pristim pouziti se precte ten dalsi (pod nim) lze fread pouzit do podminky true odesle ze radek existuje a false kyz neexistuje a nenahraje do promene
			fread(LogFile,Data,sizeof(Data)); GivePlayerMoney(playerid,strval(Data));//strval prevedeni textu na cislo
			//zde precteme ze souboru do promene Data s maximalnim poctem znaku velikosti Data
			fread(LogFile,Data,sizeof(Data)); Banka[playerid] = strval(Data);
			fread(LogFile,Data,sizeof(Data)); SetPlayerWantedLevel(playerid,strval(Data));
			fread(LogFile,Data,sizeof(Data)); SetPlayerFightingStyle(playerid,strval(Data));

			textdraw(playerid,"Uspesne prihlasen /info");
			Prihlasen[playerid] = true;//aby jsme vedely ze je prihlasen
		}
		fclose(LogFile);
	}else{//kdyz neexistuje
		Prihlasen[playerid] = true;//dame mu promenou aby chom vedeli ze je prihlaeny

	 	SetPVarString(playerid,"PrihlasovaciHeslo",inputtext);//ulozime si jim zadahe heslo do promene
	  	UlozSkore(playerid);//a zalozime mu soubor
	}
}
return 1;
}

 

public UlozSkore(playerid)
{
if(Prihlasen[playerid] == true)//toto je pokud je prihlasen takze pokud nekdo zkousi nekomu uhodnout heslo a pak se odpoji neprihlasen tak tomu dotycnemu muze vybilit ucet 
{
	new ucet[MAX_STRING];
	format(ucet,sizeof(ucet),"Ucty/%s.sav",Jmeno(playerid));//stejne jako u loginu
	new File:SaveFile = fopen(ucet,io_write);//otevreme pro cteni pokud soubor neexistuje vytvori se sam
	if(!SaveFile) printf("problem se souborem %s (io_write)",ucet);
 	new napis[50];
 	new heslo[128];
 	GetPVarString(playerid,"PrihlasovaciHeslo",heslo,sizeof(heslo));//zde si zjistime heslo zadane v loginu a nahrajeme si ho promene s kterou muzeme pracovat
	format(napis,sizeof(napis),"%s\r\n",heslo);fwrite(SaveFile,napis); //zapiseme jeho heslo na zacatek pro pristi prihlaseni
	format(napis,sizeof(napis),"%d\r\n",GetPlayerMoney(playerid)); fwrite(SaveFile,napis);//a ulozime string ktery jsme si naformatovaly
	format(napis,sizeof(napis),"%d\r\n",Banka[playerid]);fwrite(SaveFile,napis);
	format(napis,sizeof(napis),"%d\r\n",GetPlayerWantedLevel(playerid));fwrite(SaveFile,napis);
	format(napis,sizeof(napis),"%d\r\n",GetPlayerFightingStyle(playerid));fwrite(SaveFile,napis);

	fclose(SaveFile);
}
return 1;
}

 

public OnPlayerDisconnect(playerid,reason)
{
UlozSkore(playerid);//pri odchodu aby se mu skore ulozilo
Prihlasen[playerid] = false;
return 1;
}

//pokud nemate

stock NajdiEnter(string[])
{
for(new i=strlen(string) -1; i>-1; i--)
{
	if(string[i] != '\r' && string[i] != '\n') return i +1;
}
return false;
}

stock Jmeno(playerid)
{
new p[MAX_PLAYER_NAME];
GetPlayerName(playerid,p,MAX_PLAYER_NAME);
return p;
}

 

do registrace se uklada jen heslo a cisla a ne jak jste zvykly neco=0 to je zbytecne

a diky tomu mate maximalni usporu mista a maximalni usporu CPU

cim neme souboru tim lepe taky je dobre ty soubory ktere nebyly mesic pouzity mazat pro este lepsi beh

 

dini smrdi :d

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

Hmmm....pekny urcite to zkusim protoze muj mod zere 9% CPU :d

 

Hodnoceni :

- Uspora CPU

- vse je popsany

- Hodne lidi to vyuzije

- Neni to pres DUDB nebo DINI

 

Verdikt : 10/10

 

 

Asi těžko u stažených modu .amx

si vytvora vlastny :d

Kolik procent CZ/SK serverů mají vlastní,originální mod? "confused"

 

Ja jo ;)

Link to comment
Share on other sites

Pro me nic noveho, mam to z MReg (Maverick-Register).

Je to super, a nezatezuje to tolik server.

Hodnotit nebudu.

 

PS: pokud by nekdo chtel M-Reg.pwn, piste SZ.

jo ale ja to mam este uspornejsi nez maverick a hlavne pri tom cteni on tam pouzival cykleni coz u mne zadne neni protze presne se vi na jakym radku je jakej udaj a nemusi tam byt ten text=

Link to comment
Share on other sites

Je to dobrý..

Jen pár detailů pro "amatéry"

 

V tomhle kodu je chyba takže by vám to házelo errory,jde jen o závorky u SetPlayerFightingStyle(playerid,strval(Data)); takže odstranit poslední " ); "

    fread(LogFile,Data,sizeof(Data)); SetPlayerFightingStyle(playerid,strval(Data));
textdraw(playerid,"Uspesne prihlasen /info");

A pak možná error na to že není definovanej forward na UlozSkore(playerid);

Takže mezi forwardy

forward UlozSkore(playerid);

A možná i na MAX_STRING nahoru k dalším #define

#define MAX_STRING 256

A pak asi přepsat to textdraw na

SendClientMessage

Ale je to fakt fajné! Hezky popsaný a všechno moc dobrý :)

10/10

Link to comment
Share on other sites

jo v toho prvniho se mi tam nejak vetrela chybicka :d

jinak je to spis tut takoveto veci by nemely nastat pokud to delas podle toho a primo nekopirujes jinak sem tam ty definice pridal

jinak neni potreba 256 nidke tak dlouhou zpravu nemam ja pouziam 128 i na textdraw protze neposilam zpravy delsi nez 128 znaku

Link to comment
Share on other sites

jo v toho prvniho se mi tam nejak vetrela chybicka :d

jinak je to spis tut takoveto veci by nemely nastat pokud to delas podle toho a primo nekopirujes jinak sem tam ty definice pridal

jinak neni potreba 256 nidke tak dlouhou zpravu nemam ja pouziam 128 i na textdraw protze neposilam zpravy delsi nez 128 znaku

Jo jasný,já jsem to psal jen kvůli těm co by zas psali zbytečný příspěvky že to nejde..

Edit: mám takový problém,nevim proč,ale nejde mi ukládání při restartu - respektive - mám ukládáná na pozici a skin - přihlásim se na rcon a přes rcon restartuju server - když normálně odejdu tak se to uloží a dobře načte - ale po tom restartu mě to hodí do blueberry..se skinem CJ tedy 0..nevim proč :d čekal jsem že mi tohle pomůže,že mi to třeba server nestihne uložit,nebo tak...ale nejde to anui přes tohle :?

Link to comment
Share on other sites

Nepomohl by někdo prosím z touto registrací vyhodilo m i to tyto errory :(

 

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(38) : warning 201: redefinition of constant/macro (symbol "MAX_STRING")

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(218) : warning 235: public function lacks forward declaration (symbol "OnDialogResponse")

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(222) : error 017: undefined symbol "ShowPlayerDialog"

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(236) : error 017: undefined symbol "ShowPlayerDialog"

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(238) : error 017: undefined symbol "SetPVarString"

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(239) : error 017: undefined symbol "GiveMoneyMoney"

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(242) : error 017: undefined symbol "SetPlayerFightingStyle"

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(251) : error 017: undefined symbol "SetPVarString"

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(268) : error 017: undefined symbol "GetPVarString"

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(268) : warning 202: number of arguments does not match definition

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(273) : error 017: undefined symbol "GetPlayerFightingStyle"

 

 

.Kdyžtak přes ICQ nebo přes teamwiewer ? děkuji moc

Link to comment
Share on other sites

jo v toho prvniho se mi tam nejak vetrela chybicka :d

jinak je to spis tut takoveto veci by nemely nastat pokud to delas podle toho a primo nekopirujes jinak sem tam ty definice pridal

jinak neni potreba 256 nidke tak dlouhou zpravu nemam ja pouziam 128 i na textdraw protze neposilam zpravy delsi nez 128 znaku

Jo jasný,já jsem to psal jen kvůli těm co by zas psali zbytečný příspěvky že to nejde..

Edit: mám takový problém,nevim proč,ale nejde mi ukládání při restartu - respektive - mám ukládáná na pozici a skin - přihlásim se na rcon a přes rcon restartuju server - když normálně odejdu tak se to uloží a dobře načte - ale po tom restartu mě to hodí do blueberry..se skinem CJ tedy 0..nevim proč :d čekal jsem že mi tohle pomůže,že mi to třeba server nestihne uložit,nebo tak...ale nejde to anui přes tohle :?

no protoze se pri restartu nevyvola public OnPlayerDisconnect a tim se nemuze vyvolat to ulozeni

 

-- stř 01. pro 2010 17:06:12 --

 

Nepomohl by někdo prosím z touto registrací vyhodilo m i to tyto errory :(

 

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(38) : warning 201: redefinition of constant/macro (symbol "MAX_STRING")

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(218) : warning 235: public function lacks forward declaration (symbol "OnDialogResponse")

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(222) : error 017: undefined symbol "ShowPlayerDialog"

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(236) : error 017: undefined symbol "ShowPlayerDialog"

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(238) : error 017: undefined symbol "SetPVarString"

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(239) : error 017: undefined symbol "GiveMoneyMoney"

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(242) : error 017: undefined symbol "SetPlayerFightingStyle"

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(251) : error 017: undefined symbol "SetPVarString"

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(268) : error 017: undefined symbol "GetPVarString"

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(268) : warning 202: number of arguments does not match definition

C:\Documents and Settings\Administrator\Plocha\SFCITY.pwn(273) : error 017: undefined symbol "GetPlayerFightingStyle"

 

 

.Kdyžtak přes ICQ nebo přes teamwiewer ? děkuji moc

mas stary pawno resp. includy :)

a to MAX_STRING si smaz uz ho mas definovany v includech dudb dini nebo dutils nekde tam

Link to comment
Share on other sites

jo v toho prvniho se mi tam nejak vetrela chybicka :d

jinak je to spis tut takoveto veci by nemely nastat pokud to delas podle toho a primo nekopirujes jinak sem tam ty definice pridal

jinak neni potreba 256 nidke tak dlouhou zpravu nemam ja pouziam 128 i na textdraw protze neposilam zpravy delsi nez 128 znaku

Jo jasný,já jsem to psal jen kvůli těm co by zas psali zbytečný příspěvky že to nejde..

Edit: mám takový problém,nevim proč,ale nejde mi ukládání při restartu - respektive - mám ukládáná na pozici a skin - přihlásim se na rcon a přes rcon restartuju server - když normálně odejdu tak se to uloží a dobře načte - ale po tom restartu mě to hodí do blueberry..se skinem CJ tedy 0..nevim proč :d čekal jsem že mi tohle pomůže,že mi to třeba server nestihne uložit,nebo tak...ale nejde to anui přes tohle :?

no protoze se pri restartu nevyvola public OnPlayerDisconnect a tim se nemuze vyvolat to ulozeni

 

Ten public sa pri reštarte vyvola ... uloži ti to všetko ako ma okrem SKINU,ZBRANI,A POZICIE,INTERIERU... lebo hned ako zadaš gmx tak nastavi to skin 0 poziciu 0.0.0.0 atd .. čiže ty to da všetko na nulu okrem tvojych vlastnych premien tym padom sa to da spraviť tak že si reštart spraviš sam pomocou prikazu + to uloži všetky učty + spusti reštart za 1-2sek a daš podmienku do onplayerdisconn.. ked ma uloženy + je momentalne reštart v priebehu tych 1-2 aby mu učet zase neukladalo aby mu to zase nenastavilo 0000.. no nič zložite

 

Som myslel že si pawner ATomas...

Link to comment
Share on other sites

Som myslel že si pawner ATomas...

jo pawner sem ale nikdy sem moc neskoumal jak sa-mp team udelal restart serveru :)

ja restart nepouziam ja pouzivam exit a pak zase nahodim je to jistejsi :d

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