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: [pawn]//[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): ///
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
[pawn]enum PInfo{
pVip,
pVipDan,
pVipMesec,
pVipGodina
}
Pinfo[MAX_PLAYERS][PInfo][/pawn]
sada proveras to sve na OnPlayerConnectu
[pawn]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;
}[/pawn]
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
[pawn]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;
}
[/pawn]
ucitavanje
[pawn] 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;
}
[/pawn]
cuvanje
{FF6347} ne moras stock a i mozes kako ti lepsi kod
[pawn] {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]);
}[/pawn]
i samo dodas na login provjeru dan/mesec/godinu koliko mu ostalo vipa i to je to...
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
[pawn]enum PInfo{
pVip,
pVipDan,
pVipMesec,
pVipGodina
}
Pinfo[MAX_PLAYERS][PInfo][/pawn]
sada proveras to sve na OnPlayerConnectu
[pawn]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;
}[/pawn]
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
[pawn]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;
}
[/pawn]
ucitavanje
[pawn] 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;
}
[/pawn]
cuvanje
{FF6347} ne moras stock a i mozes kako ti lepsi kod
[pawn] {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]);
}[/pawn]
i samo dodas na login provjeru dan/mesec/godinu koliko mu ostalo vipa i to je to...
TJt hvala puno i lock