Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Fergosonn poslato Maj 20, 2021, 16:32:06 POSLE PODNE

Naslov: Vip Sistem
Poruka od: Fergosonn poslato Maj 20, 2021, 16:32:06 POSLE PODNE
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): ///
Naslov: Odg: Vip Sistem
Poruka od: 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?
Naslov: Odg: Vip Sistem
Poruka od: Fergosonn poslato Maj 20, 2021, 16:45:57 POSLE PODNE
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
Naslov: Odg: Vip Sistem
Poruka od: Fergosonn poslato Maj 21, 2021, 16:49:40 POSLE PODNE
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
Naslov: Odg: Vip Sistem
Poruka od: Bit Frosty poslato Maj 21, 2021, 18:41:50 POSLE PODNE
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.
Naslov: Odg: Vip Sistem
Poruka od: 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...
Naslov: Odg: Vip Sistem
Poruka od: Fergosonn poslato Maj 21, 2021, 20:37:12 POSLE PODNE
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