Jump to content
  • 0

pomoc port k nemovitosti


vladasavel

Dotaz

zdarec mam problem.
myslím že ani moc nemusím popisovat o to má dělat ale když napíšu /gobus tak mi to nezobrazí ani dialog.
a to ani v případě když žádnou nemovku nemám a ani v případě když nemovku mám. nevite kdy by mohl být problem ?
Diky

 

HCMD:gobus(playerid, params[])
{
if(IsPlayerInAnyVehicle(playerid)) return SCM(playerid,-1,"Musíš být mimo vozidlo pro port k nemovitosti!");
    new seznam[64];
    if (!CanPlayerTeleport(playerid))return SCM(playerid,-1,"Nemůžeš se portnout z tohoto místa!");
if (GetPlayerWantedLevel(playerid) > 3) return SCM(playerid,-1,"Nemůžš se portnou pokud jsi hledaný!");
    for (new i=1; i<=MAX_BUSS; i++)
    {
        if (!strcmp(BusinessInfo[bOwner], PlayerName(playerid)))
{
if(i != -1 || i != 0)
{
format(seznam, sizeof(seznam), "%s\t %i\n", BusinessInfo[bName],BusinessInfo[bMoney]);
}
   else
{
format(seznam, sizeof(seznam), "Nevlastníš žádnou nemovitost");
}
}
}
ShowPlayerDialog(playerid,DialogBus[4], DIALOG_STYLE_LIST, "Tvoje nemovitosti", seznam, "Ok", "");
return 1;
}

Link to comment
Share on other sites

21 odpovědí na tuto otázku

Recommended Posts

  • 0

jsi si jistej že jsi chtěl dávat proměnu do ID dialogu?

 

ShowPlayerDialog(playerid,DialogBus[4]

 

popřípadě si udělej SCM test např

 

Funkce

Zprava

Funkce

Zprava 

Edited by Steam Wallet
Link to comment
Share on other sites

  • 0

Ano jsem si jistej. Jelikož server kde to bude použivá UNIT od xhunterx tak místo pevných ID dialogu si unit priradi ID automaticky.
jo vidíš to..zkusim si vypsat a pak napíšu


takže mi to vypsalo cyklus,jmeno taky a poslední co se vykonalo je toto

if(i != -1 || i != 0)
{
format(seznam, sizeof(seznam), "%s\t %i\n", BusinessInfo[bName],BusinessInfo[bMoney]);
}
pak se to zasaví a nic se nestane..
Link to comment
Share on other sites

  • 0

 

Ano jsem si jistej. Jelikož server kde to bude použivá UNIT od xhunterx tak místo pevných ID dialogu si unit priradi ID automaticky.

jo vidíš to..zkusim si vypsat a pak napíšu

takže mi to vypsalo cyklus,jmeno taky a poslední co se vykonalo je toto

if(i != -1 || i != 0)
{
format(seznam, sizeof(seznam), "%s\t %i\n", BusinessInfo[bName],BusinessInfo[bMoney]);
}
pak se to zasaví a nic se nestane..

 

zkus zkontrolovat { } a popřípadě přepsat podmínky.

Link to comment
Share on other sites

  • 0

Ne v proměnný problém není. všechny dialogy fungují stejně. 
Unit si prostě připíše ID dialogu sám. TZN že někdo napíše #define dialog 35559
a já si dám jen new DialogBus[7]={8001,8002,...};
ty čísla jsou jen pro jistotu kdyby unit neudělal to co má.
Ale ve zkutečnosti dialog 8001 má reálné id na serveru 102.
To že jste to neviděli neznamená že to nefunnguje :d

Link to comment
Share on other sites

  • 0

Hmm ttak ted to sice dialog zobrazí ale kdy ž mám nemovitost tak v dialogu mi to ukaze misto jmena nemovky jen prázdný místo a výdělek 0
ale bohužel to stejný to udělá i když nemovky nemám :d

 

HCMD:gobus(playerid, params[])
{
    new seznam[512];
    if (!CanPlayerTeleport(playerid))  return SCM(playerid,-1,"Nemůžeš se portnou z toho místa!");
if (GetPlayerWantedLevel(playerid) > 1) return SCM(playerid,-1,"Jsi hledaný!");
if (GetPlayerVehicleSeat(playerid) != -1) return SCM(playerid,-1,"Musíš být mimo vozidlo pro port k nemovitosti!");
for (new i; i < MAX_BUSS; i++)
{
if (!strcmp(BusinessInfo[bOwner], PlayerName(playerid)))
{
if (i!=-1)
{
        format(seznam, sizeof(seznam), "%s \t %i\n", BusinessInfo[bName],BusinessInfo[bMoney]);
SCM(playerid,-1,"seznam. 1 nacten");
}
   else
{
format(seznam, sizeof(seznam), "Nevlastníš žádnou nemovitost");
SCM(playerid,-1,"seznam prazdny nacten");
}
}
}
  ShowPlayerDialog(playerid,DialogBus[5], DIALOG_STYLE_LIST, "Tvoje nemovitosti", seznam, "Ok", "");
SCM(playerid,-1,"Zobrazení dialogu");
return 1;
}

Link to comment
Share on other sites

  • 0

zkus to takle

 

 

 


HCMD:gobus(playerid, params[])
{
if(IsPlayerInAnyVehicle(playerid)) return SCM(playerid,-1,"Musíš být mimo vozidlo pro port k nemovitosti!");
new seznam[64];
if (!CanPlayerTeleport(playerid))return SCM(playerid,-1,"Nemůžeš se portnout z tohoto místa!");
if (GetPlayerWantedLevel(playerid) > 3) return SCM(playerid,-1,"Nemůžš se portnou pokud jsi hledaný!");
format(seznam, sizeof(seznam), "Nevlastníš žádnou nemovitost");
for (new i=1; i<=MAX_BUSS; i++)
{
if (!strcmp(BusinessInfo[bOwner], PlayerName(playerid)))
{
format(seznam, sizeof(seznam), "%s\t %i\n",BusinessInfo[bName],BusinessInfo[bMoney]);
}
}
ShowPlayerDialog(playerid,DialogBus[4], DIALOG_STYLE_LIST, "Tvoje nemovitosti", seznam, "Ok", "");
return 1;
}

 

 

Edited by Steam Wallet
Link to comment
Share on other sites

  • 0

Hmm, len tak sa tu vyjadrím:

 

ak máš sestru, iste ste ako malí pili z neexistujúcich hrnčekov že? predstierali ste že máte hrnčeky v ruke a predstierali ste že pijete napríklad čaj ;) zlaté časy však?

 

mno pawno to skrátka nedokáže... máš zle nadefinovaný cyklus :p 

 

pre objasnenie:

new premenna[10]; // vytvorím 10x premennú (pole)

if(premenna[10] == 100) // a ejhle, máme problém pretože pole začína číslom 0 - takže číslo 10 neexistuje

 

riešenie?

for (new i=1; i<=MAX_BUSS; i++) zmeníš na for (new i=1; i<MAX_BUSS; i++)

 

potom daj vedieť či to pomôhlo :) (možno sa mýlim ja, veď som tiež len človek)

 

 

a ešte 1 vec :)

keď chceš ZOZNAM, použi funkciu na skladanie reťazcov nie formát reťazcov (tuším STRCAT sa volá)

Link to comment
Share on other sites

  • 0

Hmm, len tak sa tu vyjadrím:

 

ak máš sestru, iste ste ako malí pili z neexistujúcich hrnčekov že? predstierali ste že máte hrnčeky v ruke a predstierali ste že pijete napríklad čaj ;) zlaté časy však?

 

mno pawno to skrátka nedokáže... máš zle nadefinovaný cyklus :p

 

pre objasnenie:

new premenna[10]; // vytvorím 10x premennú (pole)

if(premenna[10] == 100) // a ejhle, máme problém pretože pole začína číslom 0 - takže číslo 10 neexistuje

 

riešenie?

for (new i=1; i<=MAX_BUSS; i++) zmeníš na for (new i=1; i<MAX_BUSS; i++)

 

potom daj vedieť či to pomôhlo :) (možno sa mýlim ja, veď som tiež len človek)

 

 

a ešte 1 vec :)

keď chceš ZOZNAM, použi funkciu na skladanie reťazcov nie formát reťazcov (tuším STRCAT sa volá)

na seznam není třeba strcat. ale můžeš i normalně přes format. 

Link to comment
Share on other sites

  • 0

na seznam není třeba strcat. ale můžeš i normalně přes format. 

 

nespamuj mu tu blbosti lebo si nenájde moju radu (kto v dnešnej lenivej dobe číta viac ako posledný príspevok všakže?)

 

ano, ide to aj cez formát, ale nie tak ako to má spravené on :) naviac ho naučím novej funkcii :d to máš 2 v 1 :p a to sa už oplatí :d :D :d

 

v jeho prípade mu to za každú nehnuteľnosť ktorú vlastní prepíše celý reťazec a vo výsledku sa mu zobrazí len posledná nehnuteľnosť ktorú vlasní :d

na druhú stranu, možno to tak chce, možno chce aby človek vlastnil len 1 nehnuteľnosť, ale to už ja netuším

Link to comment
Share on other sites

  • 0

nemovitosti budou 3 na hráče to je jen tak mimo.
Ale musím souhlasit se Steamem. strcat není potřeba na rozdělení více jak jedný nemovky. format to udělá bez toho aniž bych si to komplikoval :d

Link to comment
Share on other sites

  • 0

nemovitosti budou 3 na hráče to je jen tak mimo.

Ale musím souhlasit se Steamem. strcat není potřeba na rozdělení více jak jedný nemovky. format to udělá bez toho aniž bych si to komplikoval :d

no dobre ako chceš :d aj ta si myslím že to tu budeme za chvíľu riešiť :d teraz nám radšej prezraď ako si na tom? čo funguje, čo nefunguje :d

Link to comment
Share on other sites

  • 0

No nechcu nic říkat, ale Quiter má pravdu.

Evidentně může vlastnit víc nemovitostí a když použije format tak neudělá seznam, ale naformatuje se maximálně ta poslední nemovitost která projde cyklem.

 

Protože až uděláte seznam z tohodle kódu tak mi řekněte

new str[10];
for(new i;i<10;i++)
      format(str,sizeof(str),"%d",i);

print(str);

Také bych řekl, že naráží na správnou věc. Pokud tam je v cyklu <= a zasahuje to mimo array, tak se nesplní strcmp podmínka. Takže žádný format = žádný text = žádný dialog

 

Navíc tahle podmínka

if(i != -1 || i != 0){

S tímhle cyklem ?

for (new i=1; i<=MAX_BUSS; i++)

Je fajn kontrolovat nulu a zápornou hodnotu když k ní nikdy, nikdy, nikdy, nikdy, ... nikdy nedojde. Protože i = 1;

Edited by mxco
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0

No nechcu nic říkat, ale Quiter má pravdu.

Evidentně může vlastnit víc nemovitostí a když použije format tak neudělá seznam, ale naformatuje se maximálně ta poslední nemovitost která projde cyklem.

 

Protože až uděláte seznam z tohodle kódu tak mi řekněte

new str[10];
for(new i;i<10;i++)
      format(str,sizeof(str),"%d",i);

print(str);

Také bych řekl, že naráží na správnou věc. Pokud tam je v cyklu <= a zasahuje to mimo array, tak se nesplní strcmp podmínka. Takže žádný format = žádný text = žádný dialog

 

Navíc tahle podmínka

if(i != -1 || i != 0){

S tímhle cyklem ?

for (new i=1; i<=MAX_BUSS; i++)

Je fajn kontrolovat nulu a zápornou hodnotu když k ní nikdy, nikdy, nikdy, nikdy, ... nikdy nedojde. Protože i = 1;

uplně jednoduše.

 

new str[10];

for(...)

{

format(str,...,"%s %i",str,cislo);

}

 

print(str);

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0

uplně jednoduše.

 

new str[10];

for(...)

{

format(str,...,"%s %i",str,cislo);

}

 

print(str);

 

Dobré. Tohle mi uniklo, ačkoli on to má ve fázi kdy mu to seznam stejně neudělá.

Link to comment
Share on other sites

  • 0

HCMD:gobus(playerid, params[])
{
if (!CanPlayerTeleport(playerid))  return SCM(playerid,-1,"Nemůžeš se portnou z toho místa!");
if (GetPlayerWantedLevel(playerid) > 1) return SCM(playerid,-1,"Jsi hledaný!");
if (GetPlayerVehicleSeat(playerid) != -1) return SCM(playerid,-1,"Musíš být mimo vozidlo pro port k nemovitosti!");


new seznam[512];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
for (new i = 0; i < MAX_BUSS; i++)
{
if (!strcmp(BusinessInfo[i][bOwner], name))
{
format(seznam, 512, "%s%s \t %i\n", seznam, BusinessInfo[i][bName], BusinessInfo[i][bMoney]);
SCM(playerid,-1,"seznam. 1 nacten");
}
}


if(seznam[0] == '\0') return SCM(playerid,-1,"Nevlastníš žádnou nemovitost");


ShowPlayerDialog(playerid,DialogBus[5], DIALOG_STYLE_LIST, "Tvoje nemovitosti", seznam, "Ok", "");
SCM(playerid,-1,"Zobrazení dialogu");
return 1;
}
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0

https://ctrlv.cz/k0N9
No tak mezitim co mi nesel net na PC ta jsem se s tím jebal. Dosel jsem presne k tomu jak si to napsal ty lukazsi. Dialog to sice zobrazí...Ale..Zobrazí to i všechny nemovky co jsou vytvořený a i dalších 900 co vytvořený nejsou :d

Ví někdo kde je problem ?

Kod jsem použil od lukasze. má to přehlednější jak já :d

Link to comment
Share on other sites

  • 0

V tom případě máš u zbytku nemovitostí prázdný string s jménem majitele.. Naplň ho třeba "a" (hráč se tak nemůže jmenovat) nebo kontroluj, jestli string není prázdný

Link to comment
Share on other sites

  • 0

Zkus crashdetect, nejak bych hadal preteceni pole...

 

Kadopadne podle nadpisu "Tvoje nemovitosti" bych hadal vyskyt 1-N, ovsem tvuj dialog vzdy vypise pouze jednu nemovitost (a tu s nejvyssim id kterou hrac vlastni), protoze ti tam chybi pripojovani k uz existujicimu stringu ale prepisujes to vzdy novym.

Edited by ATomas
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0

prblém byl vyřešen.
řešení:

Do proměné ukládám při coneectu vššechny nemitosti hráče. Převzato z PPC Busines

 

 

HCMD:gobus(playerid, params[])
{
    if (!CanPlayerTeleport(playerid))  return SCM(playerid,-1,"Nemůžeš se portnou z toho místa!");
    if (GetPlayerWantedLevel(playerid) > 1) return SCM(playerid,-1,"Jsi hledaný!");
    if (GetPlayerVehicleSeat(playerid) != -1) return SCM(playerid,-1,"Musíš být mimo vozidlo pro port k nemovitosti!");
 
 
    new BusinessList[512];
for (new BusSlot; BusSlot < MAX_BUSINESSPERPLAYER; BusSlot++)
{
new BusID = APlayerData[playerid][business][busSlot];
        if (BusID != 0)
{
  format(BusinessList, 1000, "%s{00FF00}%s{FFFFFF} (výdělek: $%i)\n", BusinessList, BusinessInfo[busID][bName], BusinessInfo[busID][bMoney]);
}
else
format(BusinessList, 1000, "%s{FFFFFF}%s{FFFFFF}\n", BusinessList, "Prázdné místo pro podnik");
}
    ShowPlayerDialog(playerid,DialogBus[5], DIALOG_STYLE_LIST, "Tvoje nemovitosti", BusinessList, "Ok", "");
    SCM(playerid,-1,"Zobrazení dialogu");
    return 1;
}

 

 

Samozdrejme vsem moc děkuji za pomoc :)

Edited by vladasavel
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...