Vip Sistem


Započeo Fergosonn, Maj 20, 2021, 16:32:06 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Problem(error/warning): Ovako kako da napravim Isticanje Vipova sistem je napravljen samo me interesuje kako da napravim da oduzima od vremene cak i kad je igrac offline
Deo skripte:
//

Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log):
///
Poslednja Izmena: Maj 22, 2021, 02:23:55 PRE PODNE od M Ө M Σ N Z I

Galardo

*

mgWhosyGD

Uzmes mu vrijeme kad se disconnecta i ponovo kada udje, te poredis ta dva vremena?

Citat: Galardo poslato Maj 20, 2021, 16:40:08 POSLE PODNE
Uzmes mu vrijeme kad se disconnecta i ponovo kada udje, te poredis ta dva vremena?
Ako ti nije tesko kod da mi das brate bio bi ti zahvalan puno bi mi znacilo

Citat: Galardo poslato Maj 20, 2021, 16:40:08 POSLE PODNE
Uzmes mu vrijeme kad se disconnecta i ponovo kada udje, te poredis ta dva vremena?
Ako ti nije problem malo dateljnije objasniti ako jeste ond nmvz

Lepo brate koristi timestamp. Kada mu dodelis VIP, na trenutni timestamp dodaj jos koliko bi hteo da taj VIP traje. Takodje kada mu dodelis taj VIP i kada se igrac connect, proveri da li je taj timestamp veci od trenutnog, ako jeste onda jos uvek ima VIP i postavi tajmer za preostalo vreme da mu skine (ako VIP istekne za vreme igre). Naravno taj timestamp moras da cuvas i loadujes.

Ja bi to ovako uradio ne znam koliko je tacno testirao nisam neka me neko ispravi ukoliko gresim cod

enum PInfo{
           pVip,
           pVipDan,
           pVipMesec,
           pVipGodina
}
Pinfo[MAX_PLAYERS][PInfo]


sada proveras to sve na OnPlayerConnectu

public OnplayerConnect( playerid ){
     Pinfo[playerid][pVip] = 0; ( zavisi ukoliko ti je sa vipom pocetni stats stavis koji ti je vip pocetni )
     Pinfo[playerid][pVipDan] = 0;
     Pinfo[playerid][pVipMesec] = 0;
     Pinfo[playerid][pVipGodina] = 0;
}


e sada ja ne znam da li ti je mysql ili ini eo ti za ini ne verujem da ti je mysql procesor cuvanje

komanda

CMD:postavivipa( playerplayer, params[]) {
    if(UlogovanProvera[playerplayer] == 0) return SendClientMessage(playerplayer, 0xFF6347FF, "* Morate da se ulogujete !");
    if(Pinfo[playerplayer][perm_vip] != 1)
        return SendClientMessage(playerplayer, 0xFF6347FF, "* Nemate ovlascenje za upotrebu ove komande."); // stavi tvoju varijablu
 	if( !AdminDuty[ playerplayer ] ) return SendClientMessage(playerplayer, 0xFF6347FF, "* Da bi koristili ovu komandu morate biti na duznosti." );
	{
		new player, level;
		if(sscanf(params, "ud", player, level)) return SCM(playerplayer, NS_YELLOW, "[KORISCENJE] "BELA"/postavivipa [player/Ime] [Level (1-7)");
		if(!IsPlayerConnected(player)) return SendClientMessage(playerplayer, 0xFF6347FF, "* Pogresan player!");
		if(level < 0 || level > 7) return SendClientMessage(playerplayer, 0xFF6347FF, "* Vip Level ne moze biti manji od 0 i veci od 7!");
		if(level >= 1)
 		{
			Pinfo[player][pVip] = level;
			va_SendClientMessage(player,NS_YELLOW,"[INFO]  "BELA"Cestitamo, postavljen vam je VIP level %d od strane vlasnika %s", level, GetName(playerplayer));
			va_SendClientMessage(player,NS_YELLOW,"[INFO]  "BELA"Postavili ste igracu %s VIP level %d.", GetName(player), level);

			// provjera za to sto ti zelis

			new d,me,y,bx,ca;
			getdate(y,me,d);
			bx = d+30;
			if(me == 12 && bx > 31) { ca = bx-31; me = 1; y++; }
			else if(bx > 31 && me == 1) { ca = bx-31; me++; }
			else if(me == 2 && bx > 29 && y == 2015) { ca = bx-29; me++; }
			else if(me == 2 && bx > 28 && y == 2016) { ca = bx-28; me++; }
			else if(bx > 31 && me == 3) { ca = bx-31; me++; }
			else if(bx > 30 && me == 4) { ca = bx-30; me++; }
			else if(bx > 31 && me == 5) { ca = bx-31; me++; }
			else if(bx > 30 && me == 6) { ca = bx-30; me++; }
			else if(bx > 31 && me == 7) { ca = bx-31; me++; }
			else if(bx > 31 && me == 8) { ca = bx-31; me++; }
			else if(bx > 30 && me == 9) { ca = bx-30; me++; }
			else if(bx > 31 && me == 10) { ca = bx-31; me++; }
			else if(bx > 30 && me == 11) { ca = bx-30; me++; }
			else if(bx > 31 && me == 12) { ca = bx-31; me++; }
			else ca = bx;
			Pinfo[player][pVIPDan] = ca;
			Pinfo[player][pVIPMesec] = me;
			Pinfo[player][pVIPGodina] = y;
			va_SendClinetMessage( playerid, 0xFF6347FF, "#Warn: Njegov VIP paket istice: %d/%d/%d godine.", Pinfo[player][pVIPDan],Pinfo[player][pVIPMesec],Pinfo[player][pVIPGodina]);
			va_SendClientMessage( player, 0xFF6347FF, "#! Vas VIP paket istice: %d/%d/%d godine.", Pinfo[player][pVIPDan],Pinfo[player][pVIPMesec],Pinfo[player][pVIPGodina]);

			save_acount(player);
		}
		else if(level == 0)
		{
			va_SendClientMessage(player,NS_YELLOW,"[INFO]  "BELA"Skinuli ste igracu %s vipa.",GetName(player));
			va_SendClientMessage(player,NS_YELLOW,"[INFO]  "BELA"Vlasnik %s vam je skinuo vipa.",GetName(playerplayer));
			Pinfo[player][pVip] = 0;
			Pinfo[player][pVIPDan] = 0;
			Pinfo[player][pVIPMesec] = 0;
			Pinfo[player][pVIPGodina] = 0;
			save_acount(player);
		}
	}
	return 1;
}


ucitavanje

forward load_user(playerid,name[],value[]);
           public load_user(playerid,name[],value[]);{
                   	INI_Int("VipDan",Pinfo[playerid][pVIPDan]);
    INI_Int("VipMesec",Pinfo[playerid][pVIPMesec]);
    INI_Int("VipGodina",Pinfo[playerid][pVIPGodina]);
    return 1;
}


cuvanje
{FF6347} ne moras stock a i mozes kako ti lepsi kod
{FFFFFF} save_acount(playerid) { 
            INI_WriteInt(File,"VipDan",PlayerInfo[playerid][pVIPDan]);
	    INI_WriteInt(File,"VipMesec",PlayerInfo[playerid][pVIPMesec]);
	    INI_WriteInt(File,"VipGodina",PlayerInfo[playerid][pVIPGodina]);
}


i samo dodas na login provjeru dan/mesec/godinu koliko mu ostalo vipa i to je to...
Poslednja Izmena: Maj 21, 2021, 19:48:35 POSLE PODNE od Skorpija_026
Vandals Project OGC
[size=11.25pt]Vandals Project OGC[/size][/font]
[/color]

Citat: Skorpija_026 poslato Maj 21, 2021, 19:46:56 POSLE PODNE
Ja bi to ovako uradio ne znam koliko je tacno testirao nisam neka me neko ispravi ukoliko gresim cod

enum PInfo{
           pVip,
           pVipDan,
           pVipMesec,
           pVipGodina
}
Pinfo[MAX_PLAYERS][PInfo]


sada proveras to sve na OnPlayerConnectu

public OnplayerConnect( playerid ){
     Pinfo[playerid][pVip] = 0; ( zavisi ukoliko ti je sa vipom pocetni stats stavis koji ti je vip pocetni )
     Pinfo[playerid][pVipDan] = 0;
     Pinfo[playerid][pVipMesec] = 0;
     Pinfo[playerid][pVipGodina] = 0;
}


e sada ja ne znam da li ti je mysql ili ini eo ti za ini ne verujem da ti je mysql procesor cuvanje

komanda

CMD:postavivipa( playerplayer, params[]) {
    if(UlogovanProvera[playerplayer] == 0) return SendClientMessage(playerplayer, 0xFF6347FF, "* Morate da se ulogujete !");
    if(Pinfo[playerplayer][perm_vip] != 1)
        return SendClientMessage(playerplayer, 0xFF6347FF, "* Nemate ovlascenje za upotrebu ove komande."); // stavi tvoju varijablu
 	if( !AdminDuty[ playerplayer ] ) return SendClientMessage(playerplayer, 0xFF6347FF, "* Da bi koristili ovu komandu morate biti na duznosti." );
	{
		new player, level;
		if(sscanf(params, "ud", player, level)) return SCM(playerplayer, NS_YELLOW, "[KORISCENJE] "BELA"/postavivipa [player/Ime] [Level (1-7)");
		if(!IsPlayerConnected(player)) return SendClientMessage(playerplayer, 0xFF6347FF, "* Pogresan player!");
		if(level < 0 || level > 7) return SendClientMessage(playerplayer, 0xFF6347FF, "* Vip Level ne moze biti manji od 0 i veci od 7!");
		if(level >= 1)
 		{
			Pinfo[player][pVip] = level;
			va_SendClientMessage(player,NS_YELLOW,"[INFO]  "BELA"Cestitamo, postavljen vam je VIP level %d od strane vlasnika %s", level, GetName(playerplayer));
			va_SendClientMessage(player,NS_YELLOW,"[INFO]  "BELA"Postavili ste igracu %s VIP level %d.", GetName(player), level);

			// provjera za to sto ti zelis

			new d,me,y,bx,ca;
			getdate(y,me,d);
			bx = d+30;
			if(me == 12 && bx > 31) { ca = bx-31; me = 1; y++; }
			else if(bx > 31 && me == 1) { ca = bx-31; me++; }
			else if(me == 2 && bx > 29 && y == 2015) { ca = bx-29; me++; }
			else if(me == 2 && bx > 28 && y == 2016) { ca = bx-28; me++; }
			else if(bx > 31 && me == 3) { ca = bx-31; me++; }
			else if(bx > 30 && me == 4) { ca = bx-30; me++; }
			else if(bx > 31 && me == 5) { ca = bx-31; me++; }
			else if(bx > 30 && me == 6) { ca = bx-30; me++; }
			else if(bx > 31 && me == 7) { ca = bx-31; me++; }
			else if(bx > 31 && me == 8) { ca = bx-31; me++; }
			else if(bx > 30 && me == 9) { ca = bx-30; me++; }
			else if(bx > 31 && me == 10) { ca = bx-31; me++; }
			else if(bx > 30 && me == 11) { ca = bx-30; me++; }
			else if(bx > 31 && me == 12) { ca = bx-31; me++; }
			else ca = bx;
			Pinfo[player][pVIPDan] = ca;
			Pinfo[player][pVIPMesec] = me;
			Pinfo[player][pVIPGodina] = y;
			va_SendClinetMessage( playerid, 0xFF6347FF, "#Warn: Njegov VIP paket istice: %d/%d/%d godine.", Pinfo[player][pVIPDan],Pinfo[player][pVIPMesec],Pinfo[player][pVIPGodina]);
			va_SendClientMessage( player, 0xFF6347FF, "#! Vas VIP paket istice: %d/%d/%d godine.", Pinfo[player][pVIPDan],Pinfo[player][pVIPMesec],Pinfo[player][pVIPGodina]);

			save_acount(player);
		}
		else if(level == 0)
		{
			va_SendClientMessage(player,NS_YELLOW,"[INFO]  "BELA"Skinuli ste igracu %s vipa.",GetName(player));
			va_SendClientMessage(player,NS_YELLOW,"[INFO]  "BELA"Vlasnik %s vam je skinuo vipa.",GetName(playerplayer));
			Pinfo[player][pVip] = 0;
			Pinfo[player][pVIPDan] = 0;
			Pinfo[player][pVIPMesec] = 0;
			Pinfo[player][pVIPGodina] = 0;
			save_acount(player);
		}
	}
	return 1;
}


ucitavanje

forward load_user(playerid,name[],value[]);
           public load_user(playerid,name[],value[]);{
                   	INI_Int("VipDan",Pinfo[playerid][pVIPDan]);
    INI_Int("VipMesec",Pinfo[playerid][pVIPMesec]);
    INI_Int("VipGodina",Pinfo[playerid][pVIPGodina]);
    return 1;
}


cuvanje
{FF6347} ne moras stock a i mozes kako ti lepsi kod
{FFFFFF} save_acount(playerid) { 
            INI_WriteInt(File,"VipDan",PlayerInfo[playerid][pVIPDan]);
	    INI_WriteInt(File,"VipMesec",PlayerInfo[playerid][pVIPMesec]);
	    INI_WriteInt(File,"VipGodina",PlayerInfo[playerid][pVIPGodina]);
}


i samo dodas na login provjeru dan/mesec/godinu koliko mu ostalo vipa i to je to...
TJt hvala puno i lock