Oko restarta servera.


Započeo Claus, Avgust 07, 2018, 15:28:51 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Problem(error/warning): Drzim DeathMatch server, i sad likovi nabiju skor 300-400 i kad restartujem server vrati im se skor na 0. Pa ako neko hoce da pomogne da resim to, hvala unapred.
Dio skripte: [ pawn ]//[ /pawn ]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [ code ]//[ /code ]
Slika/video ingame problema(obavezno ako je ingame problem): //

Da li uopste cuvas/ucitavas igraceve podatke?
Oduvek sam se pitao:
"Zbog cega se ljudi toliko brinu jedni za druge?",
"Zasto ljudi daju sve od sebe da usrece neku osobu?"

Najjednostavnije receno brinu se jer vole tu osobu celim svojim srcem,
daju sve od sebe da je usrece zbog toga sto ne zele da je ikada vide tuznom ili rasplakanom.
#xsarnaaparatima..




// ucitavanje igraca
forward LoadUser_data(playerid,	name[],	value[]);
public LoadUser_data(playerid,	name[],	value[])
{
    INI_Int("Sifra",PlayerInfo[playerid][pSifra]);
    INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
    INI_Int("Novac",PlayerInfo[playerid][pNovac]);
    INI_Int("Ubistva",PlayerInfo[playerid][pUbistva]);
    INI_Int("Smrti",PlayerInfo[playerid][pSmrti]);
    INI_Int("Skin",PlayerInfo[playerid][pSkin]);
    INI_Int("Skor",PlayerInfo[playerid][pSkor]);
   	INI_Int("Mutiran",PlayerInfo[playerid][pMutiran]);
    INI_Int("MutiranVreme",PlayerInfo[playerid][pMutiranVreme]);
 	return 1;
}

stock SavePlayer(playerid)
{
		new INI:File = INI_Open(UserPath(playerid));
		INI_SetTag(File,"data");
	    INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
	    INI_WriteInt(File,"Novac",PlayerInfo[playerid][pNovac]);
	    INI_WriteInt(File,"Ubistva",PlayerInfo[playerid][pUbistva]);
	    INI_WriteInt(File,"Smrti",PlayerInfo[playerid][pSmrti]);
	    INI_WriteInt(File,"Skin",PlayerInfo[playerid][pSkin]);
	    INI_WriteInt(File,"Skor",PlayerInfo[playerid][pSkor]);
	    INI_WriteInt(File,"Mutiran",PlayerInfo[playerid][pMutiran]);
	    INI_WriteInt(File,"MutiranVreme",PlayerInfo[playerid][pMutiranVreme]);
		INI_Close(File);
		return 1;
}

Posalji pozivanje ucitavanja na OnGameModeInit
I skloni stock, istavi samo SavePlayer { kod }, razumes, nepotrebno ti je stock. I posalji to na ongamemodeinit
Unkovic.
- Ex. BlackStorm Founder, Owner & Developer
- Ex. Underground Developer.

Citat: Unkovic poslato Avgust 08, 2018, 00:15:48 PRE PODNE
Posalji pozivanje ucitavanja na OnGameModeInit
I skloni stock, istavi samo SavePlayer { kod }, razumes, nepotrebno ti je stock. I posalji to na ongamemodeinit
Jel bi mogo malo detaljnije da mi objasnis oko toga SavePlayer { kod }

Citat: Unkovic poslato Avgust 08, 2018, 00:15:48 PRE PODNE
Posalji pozivanje ucitavanja na OnGameModeInit
I skloni stock, istavi samo SavePlayer { kod }, razumes, nepotrebno ti je stock. I posalji to na ongamemodeinit
nemoj nabijati bezveze postove,vec ako pomazes lijepo mu pomozi i napisi/objasni a ne ovako, sta znaci pozivanje ucitavanja na OnGameModeInit? nema smisla pozivanje ucitavanja igracevih podataka (playerid) na OnGameModeInit? (osim ako praviÅ¡ preko timera pa pozoves timer i u njemu for petlju za igrace i  to za igraca.. - a necemo dalje o tome jer nije vezano za pomoc sto je zatrazio on).

znaci ovako daj nam public OnPlayerConnect,te public OnPlayerDisconnect.  ( OnPlayerConnect - samo da provjerim radil dobro ucitavanje iako kazes da im se samo skor ne ucitava - al opet da provjerim, a OnPlayerDisconnect - da provjerim cuva li / poziva li funkciju za cuvanje igracevih podataka... )
69

Citat: youngdeal poslato Avgust 08, 2018, 01:59:26 PRE PODNE
nemoj nabijati bezveze postove,vec ako pomazes lijepo mu pomozi i napisi/objasni a ne ovako, sta znaci pozivanje ucitavanja na OnGameModeInit? nema smisla pozivanje ucitavanja igracevih podataka (playerid) na OnGameModeInit? (osim ako praviÅ¡ preko timera pa pozoves timer i u njemu for petlju za igrace i  to za igraca.. - a necemo dalje o tome jer nije vezano za pomoc sto je zatrazio on).

znaci ovako daj nam public OnPlayerConnect,te public OnPlayerDisconnect.  ( OnPlayerConnect - samo da provjerim radil dobro ucitavanje iako kazes da im se samo skor ne ucitava - al opet da provjerim, a OnPlayerDisconnect - da provjerim cuva li / poziva li funkciju za cuvanje igracevih podataka... )
Evo slike: https://imgur.com/a/sh5JMa1
Ako treba pawn code ili nesto drugo, samo kazite.

Citat: Ñ,ιмιc poslato Avgust 08, 2018, 11:33:21 PRE PODNE
Evo slike: https://imgur.com/a/sh5JMa1
Ako treba pawn code ili nesto drugo, samo kazite.
sta je ovo?

bezveze pozivanje defaultnog ID-a za cuvanje igraca svaki put ? - nema smisla i to ti nije potrebno u onplayerconnect kako sam skuzio kad se ucitaje server reseta mu varijable i tako spremi ? znaci svakom igracu koji je po default idu (0) ce snimit acc tako,pogrijesio si, makni to iz  public OnPlayerConnect  - mislim na ovo ispod u pawn kodu,takodjer ako jos gdje ima  tako isto makni
new id;
 SavePlayer(id);

i koristi SavePlayer(playerid); - da sacuva od ID igraca pravog podatke (osim ako koristis u kojoj komandi param koji npr param id koji se odnosi na igraca onda koristi SavePlayer(id), a ne ovako bezveze ces mu sacuvat acc prije registracije), ali i ta ti funkcija nije potrebna u OnPlayerConnect - objasnio sam ti u zagradi zasto, te onda public OnPlayerDisconnect cijeli obrisi i moj kod postavi
public OnPlayerDisconnect(playerid, reason)
 {
    new ime[ 24 ];
    GetPlayerName( playerid, ime, sizeof( ime ) );
    if(fexist( UserPath( playerid ) ) ) {
	SavePlayer( playerid );
	printf( "--> Igrac %s napustio server - podatci uspjesno sacuvani.", ime); }
	else { printf( "--> Igrac %s napustio server - podatci mu nisu sacuvani jer se uopste nije registrovao / ne postoji fajl u folderu.", ime); }
	return 1;
}

po tvom bi cuvalo svakom igracu kad udje na server i ako napusti iako se nije registrovao njemu ce spremiti acc u folder, a po mom sto sam ti napisao je da ako ima mu vec acc u folderu da ga opet spremi ( na najnovije podatke) , a ako nema nece nista uraditi samo ce ispisat ti u server_log-u da mu nisu podatci sacuvani.

a za score ja mislim da uopste nisi stavio tu funkciju mislim da postavlja score za igraca  kad se logira i to - ne vidim nigdje sto si poslao sve nema nigdje, znaci
kad se logira pod DIALOG_LOGIN stavi ovo
SetPlayerScore(playerid, PlayerInfo[playerid][pSkor]);

te stavi to i pod public OnPlayerSpawn da se moze prikazivat tacan skor i kad se ponovno spawnas, i daj mi public OnPlayerDeath da vidim kako ide za skor brojanje  i to - da provjerim ako nije ispisano kako treba da ti i to popravim.

EDIT. - Daj mi i DIALOG_REGISTER kod da vidim da li radi lijepo za registraciju accounta,ako ne radi kako treba / ako nije ispisano kako treba da ti i to popravim
 
Poslednja Izmena: Avgust 08, 2018, 19:04:25 POSLE PODNE od youngdeal
69

Citat: youngdeal poslato Avgust 08, 2018, 01:59:26 PRE PODNE
nemoj nabijati bezveze postove,vec ako pomazes lijepo mu pomozi i napisi/objasni a ne ovako, sta znaci pozivanje ucitavanja na OnGameModeInit? nema smisla pozivanje ucitavanja igracevih podataka (playerid) na OnGameModeInit? (osim ako praviÅ¡ preko timera pa pozoves timer i u njemu for petlju za igrace i  to za igraca.. - a necemo dalje o tome jer nije vezano za pomoc sto je zatrazio on).

znaci ovako daj nam public OnPlayerConnect,te public OnPlayerDisconnect.  ( OnPlayerConnect - samo da provjerim radil dobro ucitavanje iako kazes da im se samo skor ne ucitava - al opet da provjerim, a OnPlayerDisconnect - da provjerim cuva li / poziva li funkciju za cuvanje igracevih podataka... )
Nek si mi zbog moje greske je*o majku mrtvu, e neka si. I jesam hteo OnPlayerConnect, al desava se jbg, hbala na ispravci. Postove ne nabjjam btw xD
Unkovic.
- Ex. BlackStorm Founder, Owner & Developer
- Ex. Underground Developer.

Citat: youngdeal poslato Avgust 08, 2018, 19:02:11 POSLE PODNE
sta je ovo?

bezveze pozivanje defaultnog ID-a za cuvanje igraca svaki put ? - nema smisla i to ti nije potrebno u onplayerconnect kako sam skuzio kad se ucitaje server reseta mu varijable i tako spremi ? znaci svakom igracu koji je po default idu (0) ce snimit acc tako,pogrijesio si, makni to iz  public OnPlayerConnect  - mislim na ovo ispod u pawn kodu,takodjer ako jos gdje ima  tako isto makni
new id;
 SavePlayer(id);

i koristi SavePlayer(playerid); - da sacuva od ID igraca pravog podatke (osim ako koristis u kojoj komandi param koji npr param id koji se odnosi na igraca onda koristi SavePlayer(id), a ne ovako bezveze ces mu sacuvat acc prije registracije), ali i ta ti funkcija nije potrebna u OnPlayerConnect - objasnio sam ti u zagradi zasto, te onda public OnPlayerDisconnect cijeli obrisi i moj kod postavi
public OnPlayerDisconnect(playerid, reason)
 {
    new ime[ 24 ];
    GetPlayerName( playerid, ime, sizeof( ime ) );
    if(fexist( UserPath( playerid ) ) ) {
	SavePlayer( playerid );
	printf( "--> Igrac %s napustio server - podatci uspjesno sacuvani.", ime); }
	else { printf( "--> Igrac %s napustio server - podatci mu nisu sacuvani jer se uopste nije registrovao / ne postoji fajl u folderu.", ime); }
	return 1;
}

po tvom bi cuvalo svakom igracu kad udje na server i ako napusti iako se nije registrovao njemu ce spremiti acc u folder, a po mom sto sam ti napisao je da ako ima mu vec acc u folderu da ga opet spremi ( na najnovije podatke) , a ako nema nece nista uraditi samo ce ispisat ti u server_log-u da mu nisu podatci sacuvani.

a za score ja mislim da uopste nisi stavio tu funkciju mislim da postavlja score za igraca  kad se logira i to - ne vidim nigdje sto si poslao sve nema nigdje, znaci
kad se logira pod DIALOG_LOGIN stavi ovo
SetPlayerScore(playerid, PlayerInfo[playerid][pSkor]);

te stavi to i pod public OnPlayerSpawn da se moze prikazivat tacan skor i kad se ponovno spawnas, i daj mi public OnPlayerDeath da vidim kako ide za skor brojanje  i to - da provjerim ako nije ispisano kako treba da ti i to popravim.

EDIT. - Daj mi i DIALOG_REGISTER kod da vidim da li radi lijepo za registraciju accounta,ako ne radi kako treba / ako nije ispisano kako treba da ti i to popravim

Evo slike, DIALOG_REGISTER i OnPlayerDeath: https://imgur.com/a/OTWhy1f
Ako treba jos nesto napisi.

Citat: Unkovic poslato Avgust 08, 2018, 21:52:28 POSLE PODNE
Nek si mi zbog moje greske je*o majku mrtvu, e neka si. I jesam hteo OnPlayerConnect, al desava se jbg, hbala na ispravci. Postove ne nabjjam btw xD
opusteno ispravio sam te bio samo haha i prije postanja pogledaj sta si tacno mislio pa napisi i postaj a ne  OnGameModeInit a htio OnPlayerConnect al desava se da da se pogrijesi al nemoj vise puta xD  al dobro bio sam ja tu pa ispravio sam te,ako ne nabijas postove sorry  xD
stock ResetVarijabli(playerid) { gLoggedCheck[playerid] = 0; PlayerInfo[playerid][pSkor] = 0; PlayerInfo[playerid][pAdmin] = 0;
PlayerInfo[playerid][pUbistva] = 0; PlayerInfo[playerid][pSmrti] = 0; PlayerInfo[playerid][pNovac] = 0; PlayerInfo[playerid][pSkin] = 45;
PlayerInfo[playerid][pMutiran] = 0; PlayerInfo[playerid][pMutiranVreme] = 0; DoubleKill[playerid] = 0; TripleKill[playerid] = 0; return 1; }


public OnPlayerConnect(playerid)
{
	ResetVarijabli(playerid);
	return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	if(strfind(inputtext, "%", true) != -1 || strfind(inputtext, "#", true) != -1)
	{
		SCM(playerid, -1, ""SRWPLAVA"[I:DM]"BELA" U dialogu ne mozete koristiti procente i tarabe");
		KickIgraca(playerid);
		return 0;
	}
	if(dialogid == DIALOG_REGISTER)
	{
		if(!response) return KickIgraca(playerid);
		if(response)
		{
			if(strlen(inputtext) < 6 || strlen(inputtext) > 15)
			{
				SPD(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registracija na Insanity DeathMatch", "Sifra mora ti bude duza od 6 slova ili manja od 15 slova!\nUkucaj sifru kako bi se registrovao:", "Dalje", "Izlaz" );
				return 1;
			}
	   ResetVarijabli( playerid );
       gLoggedCheck[playerid] = 1;
       PlayerInfo[playerid][pSifra] = udb_hash( inputtext );
	   new INI:File = INI_Open( UserPath( playerid ) );
	   INI_SetTag(File, "data" );
	   INI_WriteInt(File, "Sifra", udb_hash( inputtext ) );
	   INI_WriteInt(File, "Admin", PlayerInfo[playerid][pAdmin] );
	   INI_WriteInt(File, "Novac", PlayerInfo[playerid][pNovac] );
	   INI_WriteInt(File, "Skor",  PlayerInfo[playerid][pSkor] );
	   INI_WriteInt(File, "Ubistva", PlayerInfo[playerid][pUbistva] );
	   INI_WriteInt(File, "Smrti", PlayerInfo[playerid][pSmrti] );
	   INI_WriteInt(File, "Skin", PlayerInfo[playerid][pSkin] );
	   INI_Close( File );
	    }
	    // za ovo dalje ispod gibanica varijablu ne vidim nista dalje da vidim sta je to ima li koja greska i to..
	    return 1;
	}
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	if(killerid != INVALID_PLAYER_ID)
	{
		SendDeathMessage( killerid, playerid, reason );
		PlayerInfo[killerid][pUbistva]++;
		PlayerInfo[killerid][pSkor]++;
		SetPlayerScore(killerid, PlayerInfo[killerid][pSkor] );
		PlayerInfo[killerid][pNovac] = PlayerInfo[killerid][pNovac] + 1000;
		ResetPlayerMoney(killerid); GivePlayerMoney(killerid, PlayerInfo[killerid][pNovac] );
		PlayerInfo[playerid][pSmrti]++; SavePlayer( killerid ); SavePlayer( playerid );
	}
	else
	{
		SendDeathMessage( INVALID_PLAYER_ID, playerid, reason );
        PlayerInfo[playerid][pSmrti]++; SavePlayer ( playerid );
	}
	return 1;
}
i sljedeci put posalji link koda da vidim preko  www.pastebin.com lakse tako  i kopirat u pawno i ispravit nego preko slika citati kod..
69

Citat: youngdeal poslato Avgust 08, 2018, 22:39:31 POSLE PODNE
opusteno ispravio sam te bio samo haha i prije postanja pogledaj sta si tacno mislio pa napisi i postaj a ne  OnGameModeInit a htio OnPlayerConnect al desava se da da se pogrijesi al nemoj vise puta xD  al dobro bio sam ja tu pa ispravio sam te,ako ne nabijas postove sorry  xD
stock ResetVarijabli(playerid) { gLoggedCheck[playerid] = 0; PlayerInfo[playerid][pSkor] = 0; PlayerInfo[playerid][pAdmin] = 0;
PlayerInfo[playerid][pUbistva] = 0; PlayerInfo[playerid][pSmrti] = 0; PlayerInfo[playerid][pNovac] = 0; PlayerInfo[playerid][pSkin] = 45;
PlayerInfo[playerid][pMutiran] = 0; PlayerInfo[playerid][pMutiranVreme] = 0; DoubleKill[playerid] = 0; TripleKill[playerid] = 0; return 1; }


public OnPlayerConnect(playerid)
{
	ResetVarijabli(playerid);
	return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	if(strfind(inputtext, "%", true) != -1 || strfind(inputtext, "#", true) != -1)
	{
		SCM(playerid, -1, ""SRWPLAVA"[I:DM]"BELA" U dialogu ne mozete koristiti procente i tarabe");
		KickIgraca(playerid);
		return 0;
	}
	if(dialogid == DIALOG_REGISTER)
	{
		if(!response) return KickIgraca(playerid);
		if(response)
		{
			if(strlen(inputtext) < 6 || strlen(inputtext) > 15)
			{
				SPD(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registracija na Insanity DeathMatch", "Sifra mora ti bude duza od 6 slova ili manja od 15 slova!\nUkucaj sifru kako bi se registrovao:", "Dalje", "Izlaz" );
				return 1;
			}
	   ResetVarijabli( playerid );
       gLoggedCheck[playerid] = 1;
       PlayerInfo[playerid][pSifra] = udb_hash( inputtext );
	   new INI:File = INI_Open( UserPath( playerid ) );
	   INI_SetTag(File, "data" );
	   INI_WriteInt(File, "Sifra", udb_hash( inputtext ) );
	   INI_WriteInt(File, "Admin", PlayerInfo[playerid][pAdmin] );
	   INI_WriteInt(File, "Novac", PlayerInfo[playerid][pNovac] );
	   INI_WriteInt(File, "Skor",  PlayerInfo[playerid][pSkor] );
	   INI_WriteInt(File, "Ubistva", PlayerInfo[playerid][pUbistva] );
	   INI_WriteInt(File, "Smrti", PlayerInfo[playerid][pSmrti] );
	   INI_WriteInt(File, "Skin", PlayerInfo[playerid][pSkin] );
	   INI_Close( File );
	    }
	    // za ovo dalje ispod gibanica varijablu ne vidim nista dalje da vidim sta je to ima li koja greska i to..
	    return 1;
	}
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	if(killerid != INVALID_PLAYER_ID)
	{
		SendDeathMessage( killerid, playerid, reason );
		PlayerInfo[killerid][pUbistva]++;
		PlayerInfo[killerid][pSkor]++;
		SetPlayerScore(killerid, PlayerInfo[killerid][pSkor] );
		PlayerInfo[killerid][pNovac] = PlayerInfo[killerid][pNovac] + 1000;
		ResetPlayerMoney(killerid); GivePlayerMoney(killerid, PlayerInfo[killerid][pNovac] );
		PlayerInfo[playerid][pSmrti]++; SavePlayer( killerid ); SavePlayer( playerid );
	}
	else
	{
		SendDeathMessage( INVALID_PLAYER_ID, playerid, reason );
        PlayerInfo[playerid][pSmrti]++; SavePlayer ( playerid );
	}
	return 1;
}
i sljedeci put posalji link koda da vidim preko  www.pastebin.com lakse tako  i kopirat u pawno i ispravit nego preko slika citati kod..

Nemoj samo stock
Unkovic.
- Ex. BlackStorm Founder, Owner & Developer
- Ex. Underground Developer.