house system pickup bug

Započeo Bandit234, Decembar 19, 2021, 19:33:45 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

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


ti ga ovde 2 puta unistavas prvi put ako je validan i drugi put putem ove funk deletehousetext kako se vec zove


A kada ti hoces da se unisti, a kad ne?

Pa kad se kupuje i prodaje ( da se unisti i postavi drugi model za obe situacija ali nece)

Pokusao sam sve ali bas sve imal bar neko predpostavku sta bi bilo

if(IsValidDynamicPickup(HousePickup)) { DestroyDynamicPickup(HousePickup); }

Ovo HousePickup, prodji kroz skriptu vidi da li je definisano, gde i kako...

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.