Jump to content
  • 0

pomoc Property Problém


DonMafia

Dotaz

Popis problému:

Ahojte po dlhšom čase sa snažím niečo spackať v pawne a mám s tým trošku problémy.Errory mi to nehádže žiadne len je to nejakosi nefunkčné.
Mám tri problémy: 1.) Dialóg na kúpu/predaj mi vyskočí hneď po pripojení
2.)Stále mi do logu vypisuje že maximálny počet bol prekročený aj keď nebol
3.)Keď vojdem do pickupu s nehnuteľnosťou dialóg na kúpu/predaj vyskočí ale nereaguje.



Chyby/varování kompilátoru a při běhu:
--

Kód:


1.)Dialóg na kúpu





    for(new i=0; i<MAX_PLAYERS; i++)
    {
         if(IsPlayerConnected(i))
         {
              for(new p=0; p<MAX_PROPERTY; p++)
              {
                     if(IsPlayerInSphere(i, Property[p][PosX], Property[p][PosY], Property[p][PosZ], 5) == 1)
                     {
                               ShowPlayerDialog(i,1005,DIALOG_STYLE_LIST,"Nehnuteľnosti","Kúpiť\nPredať\nVykradnúť\nNajať ochranku\nVybrať kasu","Potvrď","Zrušiť");
                }
           }
      }
  }
if(dialogid == 1005) // Ak vybral že kúpiť (to je ten dialóg čo nereaguje)
{
if(listitem == 0)
{
for(new p=0; p GetPlayerMoney(playerid))
{
new strings[128];
GivePlayerMoney(playerid,-Property[p][CenaProperty]);
Property[p][MajitelProperty] = Meno(playerid);
format(strings,sizeof(strings), "Nazov budovy: %s\nMajitel: %s\nCena: %d$\nZisk: %d$",Property[p][NazovProperty],Property[p][MajitelProperty],Property[p][CenaProperty],Property[p][ZiskProperty]);
Update3DTextLabelText(P_Label_Name[p],0x00FF00AA,strings);
}
}
}
}

A tu je že som prekročil nehnuteľnosti a pritom mám hore define na 50 property

    public AddProperty(propertyid,PropertyName[], Float:x, Float:y, Float:z, PropertyPrice,SellProperty,PropertyZisk,PropertyOwner[])
{
   Property[propertyid][PosX]  =  x;
   Property[propertyid][PosY]  =  y;
   Property[propertyid][PosZ]  =  z;
   Property[propertyid][CenaProperty]  =  PropertyPrice;
   Property[propertyid][ZiskProperty]  =  PropertyZisk;
   Property[propertyid][PredajnaProperty] = SellProperty;
   format(Property[propertyid][NazovProperty], MAX_PROPERTY_NAME, "%s", PropertyName);
   format(Property[propertyid][MajitelProperty], MAX_PLAYER_NAME, "%s", PropertyOwner);
if(propertyid < MAX_PROPERTY)
{
   new strings[256];
   Property[propertyid][PropertyPickup] = CreatePickup(1273, 1, Property[propertyid][PosX], Property[propertyid][PosY], Property[propertyid][PosZ]);
   for(new bn=0; bn<MAX_PROPERTY; bn++)
   {
format(strings,sizeof(strings), "Nazov budovy: %s\nMajitel: %s\nCena: %d$\nZisk: %d$",Property[propertyid][NazovProperty],PropertyVlastnik,Property[bn][CenaProperty],Property[bn][ZiskProperty]);
P_Label_Name[propertyid] = Create3DTextLabel(strings,0x00FF00AA,Property[propertyid][PosX], Property[propertyid][PosY], Property[propertyid][PosZ],30,0,0);
propertyid++;
   }
   new string[128];
   format(string, sizeof(string), "/Majetky/%d.sav", propertyid);
     if(!dini_Exists(string))
   {
       dini_Create(string);
       dini_Set(string, "Majetok", Property[propertyid][NazovProperty]);
       dini_Set(string, "Majitel", Property[propertyid][MajitelProperty]);
       dini_Set(string, "Cena", Property[propertyid][CenaProperty]);
       dini_Set(string, "Zisk", Property[propertyid][ZiskProperty]);
       dini_Set(string, "Hodnota", Property[propertyid][PredajnaProperty]);
}
else
{
   print("Kapacita nehnutelnosti prekrocena");
}
}}

 




Dodatečné poznámky:
--

Edited by DonMafia
Link to comment
Share on other sites

10 odpovědí na tuto otázku

Recommended Posts

  • 0
  • Administrátor

Sekcia kód,

prosím kódy dávajte do sekcie kód, táto sekcia je automaticky v bbkóde spoiler a code,
takže ho netreba pridávať. Ak kódy nebudú vo svojej správnej sekcií, téma vám nebude schválená.

Ďakujem za pochopenie.

Link to comment
Share on other sites

  • 0
  • Globální moderátor

1) Procházíš úplně všechny property včetně nevytvořených. Na začátku než se vše zinicializuje je player pos na pozici 0,0,0, proto se zřejmě zobrazuje při připojení

Fix: procházet jen existující

Hint: var propertyid

 

2) Ten print je na první pohled, že se váže k dini_Exist

Fix: Tabovat a předělat uzávorkování

 

3) Co je tohle za prasárnu?

for(new p=0; p GetPlayerMoney(playerid))
{

Tohle nemohlo projít bez erroru

 

 

Also IsPlayerInSphere bych nahradil IsPlayerInRangeOfPoint

Edited by HighPrint
Link to comment
Share on other sites

  • 0
  • Administrátor

Když jsem odtaboval tak vidím  chybu na první pohled.

public AddProperty(propertyid,PropertyName[], Float:x, Float:y, Float:z, PropertyPrice,SellProperty,PropertyZisk,PropertyOwner[])
{
    Property[propertyid][PosX]  =  x;
    Property[propertyid][PosY]  =  y;
    Property[propertyid][PosZ]  =  z;
    Property[propertyid][CenaProperty]  =  PropertyPrice;
    Property[propertyid][ZiskProperty]  =  PropertyZisk;
    Property[propertyid][PredajnaProperty] = SellProperty;
    format(Property[propertyid][NazovProperty], MAX_PROPERTY_NAME, "%s", PropertyName);
    format(Property[propertyid][MajitelProperty], MAX_PLAYER_NAME, "%s", PropertyOwner);
    if(propertyid < MAX_PROPERTY)
    {
        new strings[256];
        Property[propertyid][PropertyPickup] = CreatePickup(1273, 1, Property[propertyid][PosX], Property[propertyid][PosY], Property[propertyid][PosZ]);
        for(new bn=0; bn<MAX_PROPERTY; bn++)
        {
            format(strings,sizeof(strings), "Nazov budovy: %s\nMajitel: %s\nCena: %d$\nZisk: %d$",Property[propertyid][NazovProperty],PropertyVlastnik,Property[bn][CenaProperty],Property[bn][ZiskProperty]);
            P_Label_Name[propertyid] = Create3DTextLabel(strings,0x00FF00AA,Property[propertyid][PosX], Property[propertyid][PosY], Property[propertyid][PosZ],30,0,0);
            propertyid++;
        }
        new string[128];
        format(string, sizeof(string), "/Majetky/%d.sav", propertyid);
        if(!dini_Exists(string))
        {
            dini_Create(string);
            dini_Set(string, "Majetok", Property[propertyid][NazovProperty]);
            dini_Set(string, "Majitel", Property[propertyid][MajitelProperty]);
            dini_Set(string, "Cena", Property[propertyid][CenaProperty]);
            dini_Set(string, "Zisk", Property[propertyid][ZiskProperty]);
            dini_Set(string, "Hodnota", Property[propertyid][PredajnaProperty]);
        }
        else
        {
            print("Kapacita nehnutelnosti prekrocena");
        }
    }
}

Co ty ?

Link to comment
Share on other sites

  • 0
  • Administrátor

        if(!dini_Exists(string))
        {
            dini_Create(string);
            dini_Set(string, "Majetok", Property[propertyid][NazovProperty]);
            dini_Set(string, "Majitel", Property[propertyid][MajitelProperty]);
            dini_Set(string, "Cena", Property[propertyid][CenaProperty]);
            dini_Set(string, "Zisk", Property[propertyid][ZiskProperty]);
            dini_Set(string, "Hodnota", Property[propertyid][PredajnaProperty]);
        }
        else
        {
            print("Kapacita nehnutelnosti prekrocena");
        }

A teď ?

Link to comment
Share on other sites

  • 0
  • Administrátor

Tohle je ta chyba která ti způsobuje tvůj problém číslo 2. A ten zbytek se těžko opravuje bez kontextu hlavně by mě zajímalo jak máš použitý ten cyklus navrchu... Dále bych si vytvořil proměnou new propCount = 0; a při vytvoření bych do ní přičítal ++ a pak cykloval jen tu proměnou a budeš rázem pracovat jen třeba s 15 místo xy nebo kolik jich máš jako MAX_PROP 

Link to comment
Share on other sites

  • 0

A nechýba mu tam náhodou aj

return ?

return nemusi byt uvede nvzdy, jen v pripade kdyz potrebujes aby ti funkce neco vratila

 

 

 

Tohle je ta chyba která ti způsobuje tvůj problém číslo 2. A ten zbytek se těžko opravuje bez kontextu hlavně by mě zajímalo jak máš použitý ten cyklus navrchu... Dále bych si vytvořil proměnou new propCount = 0; a při vytvoření bych do ní přičítal ++ a pak cykloval jen tu proměnou a budeš rázem pracovat jen třeba s 15 místo xy nebo kolik jich máš jako MAX_PROP 

A nebo si to nainicializuje rovnou do pole a pri startu si jen vytvori ty pickupy texty atp a pak nemusi resit pri compile-time kolik ma nemek icon_e_smile.gif

 

Ale je pravda ze se k pawnu vratil po hodne dloube dobe. Tenhle property system jsem uz nekde videl to je od mavericka tusim... A jeste to pouziti dini to uz je fakt historie :d

Edited by ATomas
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...