Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Bandit234 poslato Decembar 19, 2021, 19:33:45 POSLE PODNE

Naslov: house system pickup bug
Poruka od: Bandit234 poslato Decembar 19, 2021, 19:33:45 POSLE PODNE
Problem(error/warning): Tokom kupovine ili prodaje kuce dynamic pickup se ne destroya
Deo skripte: [pawn]stock DeleteHouseText(id)
{
   if(IsValidDynamicPickup(HousePickup[id])) { DestroyDynamicPickup(HousePickup[id]); }
   Delete3DTextLabel(HouseText[id]);
   return 1;
}


stock HouseLP(i)
{
   new string[170];
   if(HouseInfo[hOwned] == 0)
   {
      if(HouseInfo[hVrsta] == 1) { format(string,sizeof(string),"Kuca na prodaju!\nCijena: %d\nLevel: %d\nVrsta: Mala kuca",HouseInfo[hCijena],HouseInfo[hLevel]);  }
      else if(HouseInfo[hVrsta] == 2) { format(string,sizeof(string),"Kuca na prodaju!\nCijena: %d$\nLevel: %d\nVrsta: Srednja kuca",HouseInfo[hCijena],HouseInfo[hLevel]);  }
      else if(HouseInfo[hVrsta] == 3) { format(string,sizeof(string),"Kuca na prodaju!\nCijena: %d$\nLevel: %d\nVrsta: Velika kuca",HouseInfo[hCijena],HouseInfo[hLevel]);  }
      else if(HouseInfo[hVrsta] == 4) { format(string,sizeof(string),"Kuca na prodaju!\nCijena: %d$\nLevel: %d\nVrsta: Vila",HouseInfo[hCijena],HouseInfo[hLevel]);  }
      HouseText = Create3DTextLabel(string,COLOR_RED,HouseInfo[hUlazX],HouseInfo[hUlazY],HouseInfo[hUlazZ],4.0,0,0);
      HousePickup = CreateDynamicPickup(1273,0,HouseInfo[hUlazX],HouseInfo[hUlazY],HouseInfo[hUlazZ],0);

   }
   else if(HouseInfo[hOwned] == 1)
   {
        if(HouseInfo[hRent] == 1)
      {                 
         if(HouseInfo[hVrsta] == 1) { format(string,sizeof(string),"Vlasnik: %s\nCijena: %d\nLevel: %d\nVrsta: Mala kuca\nRent cijena: %d\nNeaktivnost: %d",HouseInfo[hOwnerName],HouseInfo[hCijena],HouseInfo[hLevel],HouseInfo[hRentCijena],HouseInfo[hNeaktivnost]); }
         else if(HouseInfo[hVrsta] == 2) { format(string,sizeof(string),"Vlasnik: %s\nCijena: %d$\nLevel: %d\nVrsta: Srednja kuca\nRent cijena: %d\nNeaktivnost: %d",HouseInfo[hOwnerName],HouseInfo[hCijena],HouseInfo[hLevel],HouseInfo[hRentCijena],HouseInfo[hNeaktivnost]); }
         else if(HouseInfo[hVrsta] == 3) { format(string,sizeof(string),"Vlasnik: %s\nCijena: %d$\nLevel: %d\nVrsta: Velika kuca\nRent cijena: %d\nNeaktivnost: %d",HouseInfo[hOwnerName],HouseInfo[hCijena],HouseInfo[hLevel],HouseInfo[hRentCijena],HouseInfo[hNeaktivnost]); }
         else if(HouseInfo[hVrsta] == 4) { format(string,sizeof(string),"Vlasnik: %s\nCijena: %d$\nLevel: %d\nVrsta: Vila\nRent cijena: %d\nNeaktivnost: %d",HouseInfo[hOwnerName],HouseInfo[hCijena],HouseInfo[hLevel],HouseInfo[hRentCijena],HouseInfo[hNeaktivnost]); }
          HouseText = Create3DTextLabel(string,COLOR_RED,HouseInfo[hUlazX],HouseInfo[hUlazY],HouseInfo[hUlazZ],4.0,0,0);
         HousePickup = CreateDynamicPickup(1272,0,HouseInfo[hUlazX],HouseInfo[hUlazY],HouseInfo[hUlazZ],0);
      }
      else if(HouseInfo[hRent] == 0)
      {
         if(HouseInfo[hVrsta] == 1) { format(string,sizeof(string),"Vlasnik: %s\nCijena: %d\nLevel: %d\nVrsta: Mala kuca\nNeaktivnost: %d",HouseInfo[hOwnerName],HouseInfo[hCijena],HouseInfo[hLevel],HouseInfo[hNeaktivnost]); }
         else if(HouseInfo[hVrsta] == 2) { format(string,sizeof(string),"Vlasnik: %s\nCijena: %d$\nLevel: %d\nVrsta: Srednja kuca\nNeaktivnost: %d",HouseInfo[hOwnerName],HouseInfo[hCijena],HouseInfo[hLevel],HouseInfo[hNeaktivnost]); }
         else if(HouseInfo[hVrsta] == 3) { format(string,sizeof(string),"Vlasnik: %s\nCijena: %d$\nLevel: %d\nVrsta: Velika kuca\nNeaktivnost: %d",HouseInfo[hOwnerName],HouseInfo[hCijena],HouseInfo[hLevel],HouseInfo[hNeaktivnost]); }
         else if(HouseInfo[hVrsta] == 4) { format(string,sizeof(string),"Vlasnik: %s\nCijena: %d$\nLevel: %d\nVrsta: Vila\nNeaktivnost: %d",HouseInfo[hOwnerName],HouseInfo[hCijena],HouseInfo[hLevel],HouseInfo[hNeaktivnost]); }
         HouseText = Create3DTextLabel(string,COLOR_RED,HouseInfo[hUlazX],HouseInfo[hUlazY],HouseInfo[hUlazZ],4.0,0,0);
         HousePickup = CreateDynamicPickup(1272,0,HouseInfo[hUlazX],HouseInfo[hUlazY],HouseInfo[hUlazZ],0);
      }
            
    }

   return 1;
}YCMD:kupikucu(playerid,params[],help)
{
   new i = GetHouse(playerid); new name1[MAX_PLAYER_NAME],string[128];
   if(Ulogovan[playerid] == 0)return SCM(playerid,COLOR_RED,"Niste ulogovani");
   if(i == -1)return SCM(playerid,COLOR_RED,"Niste u blizini nikakve kuce!");
   if(GetPlayerMoney(playerid) < HouseInfo[hCijena])return SCM(playerid,COLOR_RED,"Nemate dovoljno novca!");
   if(PlayerInfo[playerid][pKuca] != -1)return SCM(playerid,COLOR_RED,"Vi imate vec kucu");
   if(PlayerInfo[playerid][pLevel] < HouseInfo[hLevel])return SCM(playerid,COLOR_RED,"Nemate dovoljan level za ovu kucu!");
   if(HouseInfo[hOwned] == 1)return SCM(playerid,COLOR_RED,"Ova kuca je vec kupljena!");
   format(name1,sizeof(name1),"%s",GetName(playerid));
   PlayerInfo[playerid][pKuca] = i;
   HouseInfo[hOwned] = 1;
   HouseInfo[hLock] = 1;
   HouseInfo[hOwnerName] = name1;
   GivePlayerMoney(playerid,-HouseInfo[hCijena]);
   if(IsValidDynamicPickup(HousePickup)) { DestroyDynamicPickup(HousePickup); }
   Delete3DTextLabel(HouseText);
   DeleteHouseText(i);
   if(HouseInfo[hVrsta] == 1) { format(string,sizeof(string),"Vlasnik: %s\nCijena: %d\nLevel: %d\nVrsta: Mala kuca\nNeaktivnost: %d",HouseInfo[hOwnerName],HouseInfo[hCijena],HouseInfo[hLevel],HouseInfo[hNeaktivnost]); }
   else if(HouseInfo[hVrsta] == 2) { format(string,sizeof(string),"Vlasnik: %s\nCijena: %d$\nLevel: %d\nVrsta: Srednja kuca\nNeaktivnost: %d",HouseInfo[hOwnerName],HouseInfo[hCijena],HouseInfo[hLevel],HouseInfo[hNeaktivnost]); }
   else if(HouseInfo[hVrsta] == 3) { format(string,sizeof(string),"Vlasnik: %s\nCijena: %d$\nLevel: %d\nVrsta: Velika kuca\nNeaktivnost: %d",HouseInfo[hOwnerName],HouseInfo[hCijena],HouseInfo[hLevel],HouseInfo[hNeaktivnost]); }
   else if(HouseInfo[hVrsta] == 4) { format(string,sizeof(string),"Vlasnik: %s\nCijena: %d$\nLevel: %d\nVrsta: Vila\nNeaktivnost: %d",HouseInfo[hOwnerName],HouseInfo[hCijena],HouseInfo[hLevel],HouseInfo[hNeaktivnost]); }
   HouseText = Create3DTextLabel(string,COLOR_RED,HouseInfo[hUlazX],HouseInfo[hUlazY],HouseInfo[hUlazZ],4.0,0,0);
   HousePickup = CreateDynamicPickup(1272,0,HouseInfo[hUlazX],HouseInfo[hUlazY],HouseInfo[hUlazZ],0);
   SaveHouse(i);
   PlayerInfo[playerid][pSpawn] = 1;
   SavePlayer(playerid);
   return 1;
}[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [pawn]Vaš odgovor[/pawn]
Slika/video ingame problema(obavezno ako je ingame problem): link slike
Naslov: Odg: house system pickup bug
Poruka od: Bandit234 poslato Decembar 20, 2021, 13:40:08 POSLE PODNE
Zna li iko
Naslov: Odg: house system pickup bug
Poruka od: index poslato Decembar 20, 2021, 14:25:54 POSLE PODNE
ti ga ovde 2 puta unistavas prvi put ako je validan i drugi put putem ove funk deletehousetext kako se vec zove
Naslov: Odg: house system pickup bug
Poruka od: Bandit234 poslato Decembar 20, 2021, 14:43:04 POSLE PODNE
pa nece da se unisti neznam sta cu
Naslov: Odg: house system pickup bug
Poruka od: Fr0z3n poslato Decembar 20, 2021, 19:35:35 POSLE PODNE
A kada ti hoces da se unisti, a kad ne?
Naslov: Odg: house system pickup bug
Poruka od: Bandit234 poslato Decembar 20, 2021, 19:39:01 POSLE PODNE
Pa kad se kupuje i prodaje ( da se unisti i postavi drugi model za obe situacija ali nece)
Naslov: Odg: house system pickup bug
Poruka od: Bandit234 poslato Decembar 20, 2021, 20:38:59 POSLE PODNE
Pokusao sam sve ali bas sve imal bar neko predpostavku sta bi bilo
Naslov: Odg: house system pickup bug
Poruka od: Fr0z3n poslato Decembar 21, 2021, 13:34:23 POSLE PODNE
if(IsValidDynamicPickup(HousePickup)) { DestroyDynamicPickup(HousePickup); }

Ovo HousePickup, prodji kroz skriptu vidi da li je definisano, gde i kako...
Naslov: Odg: house system pickup bug
Poruka od: Bit Frosty poslato Decembar 21, 2021, 19:21:12 POSLE PODNE
Debug HousePickup id nakon kreiranja i pre destroy. Takodje debug da li je validan pickup.
U sustini iz onoga sto si poslao pickup ne bi trebalo da bude problem da se destroy. Jedina greska je sto ne vracas na invalid id nakon sto destroy ali to nema nikakvog efekta u datom kodu.