Poste bitte den Code von OnDialogResponse.
Beiträge von Jeffry
-
-
Jetzt zu meiner nächsten Fragen: Wie kann man den Spawn botton weg machen? Also sodass der nicht mehr gesehen wird? Geht sowas oder? (Sagt bitte es geht :X)
-
Naja vielleicht kommt ja in der 0.4 Version dann 4096 TextDraws?
Wäre nicht schlecht
Oh ja, das stimmt. Aber mach dir da mal keine falschen Hoffnungen. Ich persönlich verstehe sowieso nicht, warum man überhaupt so ein mickriges Limit macht.Eine wirkliche Verbesserung wäre, wenn man selbst das Limit bestimmen kann, eben auf Kosten von mehr Arbeitsspeicher, aber das sollte kein Problem sein, denn so ein SAMP Server verbraucht zwischen 100 und 500 MB, da ist noch viel Luft nach oben, mein Server hat 24 GB Arbeitsspeicher, da kommt es auf ein paar MB nicht an.
Aber das wird wohl ein Wunsch bleiben...Heißt eben: Sparsam mit Textdraws umgehen.
-
Du kannst ja die Textdraws auch nur dann erstellen wenn ein Spieler den Server betritt. Außerdem musst du nicht 500 Slots am Server haben, 100 werden ewig reichen.
Generell ist das mit den Textdraws so eine Sache, die sind einfach viel zu limitiert. Da muss man einfach schauen, dass man so sparsam wie möglich damit umgeht.
-
Na also, das ist doch was.
Wenn du jetzt ein Item aus der Liste auswählst, was passiert dann? Bekommst du die Nachricht oder den Dialog angezeigt der kommen soll? Was passiert?Wenn nein:
Ändere den print hier:
printf("response = 1, listitem = %d", listitem);zu:
printf("response = 1, listitem = %d, House: %d", listitem, PlayerInfo[playerid][pHouseKey]);Was wird dann geprintet?
Außerdem könntest du die prints weitermachen, also zwischen jede Zeile die folgt einen print, am besten mit einer fortfolgenden Zahl. Dann den Code nochmal posten, in dem die prints sind, und den Log dazu. Vielleicht findest du das Problem so ja auch selbst.
Nach diesem Prinzip:
Spoiler anzeigen if(dialogid == Hausdialog)
{
printf("Hausdialog aufgerufen");
if(response==0)
{
return 1;
}
if(response==1)
{
printf("response = 1, listitem = %d, House: %d", listitem, PlayerInfo[playerid][pHouseKey]);
new i = PlayerInfo[playerid][pHouseKey];
if(listitem==0)// Mietstatus
{
print("Step 1");
if(!HouseInfo[i][hRentable])
{
print("Step 2");
HouseInfo[i][hRentable] = 1;
print("Step 3");
UpdateHouseLabel(i);
print("Step 4");
//Und so weiter mit den prints.
SendClientMessage(playerid, SPIELERROT,"Andere Spieler können sich nun dein Haus mieten!");
SaveHouse(i);
format(string,sizeof(string),"Mietstatus\nMiete erhöhen/ verringern\nNahrungsmittel verstauen\nAuf- & abschließen\nHaus verkaufen");
ShowPlayerDialog(playerid,Hausdialog,DIALOG_STYLE_LIST,"Hausverwaltung",string,"Auswählen","Abbruch");
return 1;
}//mehr Code folgt... auch mit prints bestücken.
-
Na klar funktioniert es nicht. Du sollst ja auch im Log schauen was da steht, deshalb die prints. Wir müssen ja erst mal wissen was falsch sein könnte.
-
Ah, habe ich übersehen, sorry. Es liegt an den Integer Werten. 32/10=3 und 3 gibt aufgerundet 3.
new ergebnis=floatround((float(site)/10.0),floatround_ceil);
Dann sollte es klappen.
-
Weil erst ab .5 aufgerundet wird. Was soll denn rauskommen? 4?
-
Du musst es größer machen:
TextDrawTextSize(Textdraw2, 700.0, 50.0); -
Und wie kann man das machen , sodass wenn ich jetzt ein Box hinmache , dass da drin ein bestimmter Skin angezeigt wird?
Hiermit: http://wiki.sa-mp.com/wiki/TextDrawSetPreviewModel
Beispiel ist dabei. -
Du musst es mit "PlayerText:" deklarieren, nicht nur mit "Text:".
-
Ich habe etwas weiter untern so ein Feld wo steht "Passwort: " Wie kann man das machen sodass wenn man drauf drückt dass man da etwas eintragen kann ?
In TextDraws kannst du nichts eintragen.
Du kannst es höchstens über ein selektierbares (TextDrawSetSelectable) TextDraw machen, und dann einen Dialog öffnen lassen. -
Am besten du suchst nach dem Preis den du ändern willst (z.B. nach 20000, wenn das Auto 20000 kostet).
Wenn du nichts findest, steht es vielleicht in einer Datei in den Scriptfiles.Ansonsten kannst du auch nach "preis" oder "price" suchen.
-
PlayerTextDrawTextSize(playerid, Textdraw2[playerid], 80.000000, 301.777832);
zu:
PlayerTextDrawTextSize(playerid, Textdraw2[playerid], 500.0, 50.0);Dann sollte es passen.
80 war als X-Wert etwas zu kurz. -
Dann hast du es nicht richtig eingefügt. Eine Klammer zu viel oder zu wenig überschrieben.
-
In pastebin war es gut, mach es von nun an in pastebin. Zum Glück war ich schnell genug um es zu kopieren.
Ändere den Hausdialog zu:
printf("dialogid = %d", dialogid);
if(dialogid == Hausdialog)
{
printf("Hausdialog aufgerufen");
if(response==0)
{
return 1;
}
if(response==1)
{
printf("response = 1, listitem = %d", listitem);
new i = PlayerInfo[playerid][pHouseKey];
if(listitem==0)// Mietstatus
{
if(!HouseInfo[i][hRentable])
{
HouseInfo[i][hRentable] = 1;
UpdateHouseLabel(i);
SendClientMessage(playerid, SPIELERROT,"Andere Spieler können sich nun dein Haus mieten!");
SaveHouse(i);
format(string,sizeof(string),"Mietstatus\nMiete erhöhen/ verringern\nNahrungsmittel verstauen\nAuf- & abschließen\nHaus verkaufen");
ShowPlayerDialog(playerid,Hausdialog,DIALOG_STYLE_LIST,"Hausverwaltung",string,"Auswählen","Abbruch");
return 1;
}
if(HouseInfo[i][hRentable])
{
HouseInfo[i][hRentable] = 0;
UpdateHouseLabel(i);
format(string,sizeof(string),"Mietstatus\nMiete erhöhen/ verringern\nNahrungsmittel verstauen\nAuf- & abschließen\nHaus verkaufen");
ShowPlayerDialog(playerid,Hausdialog,DIALOG_STYLE_LIST,"Hausverwaltung",string,"Auswählen","Abbruch");
SendClientMessage(playerid, SPIELERROT,"Andere Spieler können sich dein Haus nun nicht mehr mieten!");
SaveHouse(i);
return 1;
}
}
if(listitem==1)// Miete erhöhen
{
format(string,256,"{FFFFFF}Miete ändern\nGeben Sie bitte an hoch die Miete für Ihr Haus sein soll!");
ShowPlayerDialog(playerid,Hausdialog1,DIALOG_STYLE_INPUT,"Miete erhöhen/ verringern",string,"Auswählen","Schließen");
return 1;
}
if(listitem==2)//Nahrungsmittel einlagern
{
if(Nahrungsmittel[playerid] == 0)
{
SendClientMessage(playerid,SPIELERROT,"Du hast keine Nahrungsmittel bei dir!");
return 1;
}
format(str, sizeof str, "Du hast %d Nahrungsmittel im Kühlschrank verstaut!",Nahrungsmittel[playerid]);
SendClientMessage(playerid, HELLBLAU, str);
HouseInfo[i][hEssen]+=Nahrungsmittel[playerid];
Nahrungsmittel[playerid]=0;
SaveHouse(i);
return 1;
}
if(listitem==3)// ab oder auf schließen
{
if(HouseInfo[i][hLocked])
{
format(string,sizeof(string),"Mietstatus\nMiete erhöhen/ verringern\nNahrungsmittel verstauen\nAuf- & abschließenn\nHaus verkaufen");
ShowPlayerDialog(playerid,Hausdialog,DIALOG_STYLE_LIST,"Hausverwaltung",string,"Auswählen","Abbruch");
HouseInfo[i][hLocked] = 0;
SendClientMessage(playerid, WEIß, "{FFFFFF}Haus {51FF0D}aufgeschlossen{FFFFFF}!");
SaveHouses();
return 1;
}
else if(!HouseInfo[i][hLocked])
{
format(string,sizeof(string),"Mietstatus\nMiete erhöhen/ verringern\nNahrungsmittel verstauen\nAuf- & abschließen\nHaus verkaufen");
ShowPlayerDialog(playerid,Hausdialog,DIALOG_STYLE_LIST,"Hausverwaltung",string,"Auswählen","Abbruch");
HouseInfo[i][hLocked] = 1;
SendClientMessage(playerid, WEIß, "{FFFFFF}Haus {FF0D0D}abgeschlossen{FFFFFF}!");
SaveHouses();
return 1;
}
}
if(listitem==4)// ab oder auf schließen
{
ShowPlayerDialog(playerid, HauskasseDiag, 2, "Hauskasse", "Inhalt\nEntnehmen\nHerein legen", "Auswählen", "Beenden");
SetPVarInt(playerid, "Hauskassehid", i);
}
if(listitem==5)// ab oder auf schließen
{
ShowPlayerDialog(playerid, HausUpgrades, 2, "Haus Upgrade", "{4EF538}4000€{FFFFFF} - Kühlschrank\n{4EF538}15000€{FFFFFF} Sicherheitstür\n{4EF538}8000€{FFFFFF} Alarmanlage", "Kaufen", "Zurück");
}
if(listitem==6)// Haus verkaufen
{
new Preis=HouseInfo[i][hPrice]*2/3;
PlayerGiveMoney(playerid, Preis);
HouseInfo[i][hOwned] = 0;
HouseInfo[i][hEssen]=0;
HouseInfo[i][hMietSlot]=0;
format(HouseInfo[i][hOwner], MAX_PLAYER_NAME, "-");
DestroyDynamicPickup(HouseInfo[i][hPick]);
HouseInfo[i][hPick] = CreateDynamicPickup(1273, 1, HouseInfo[i][hEntrx], HouseInfo[i][hEntry], HouseInfo[i][hEntrz]);
format(string,sizeof(string),"Du hast dein Haus verkauft und erhälst {0DBF19}%d€{00EBFF} wieder zurück.",Preis);
SendClientMessage(playerid,HELLBLAU,string);
UpdateHouseLabel(i);
PlayerInfo[playerid][pHouseKey] = -1;
SaveHouse(i);
}
}
}Dann poste was im Log steht, wenn du den Dialog andrückst.
-
Jetzt hast du mich sogar zitiert wie ich gesagt habe du sollst es in die PWN Tags setzen und machst es nicht?
So kann man deinen Code nicht lesen, da Indexe mit [ i ] kursiv werden.Versuche es nochmal.
Und falls alles in einer Zeile steht danach, füge deinen Code erst in Word ein, und poste ihn dann hier.
-
if(strcmp(cmdtext, "/lizenzen", true) == 0 || strcmp(cmdtext, "/liz", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
new str1[500];
new text1[20];
new text3[20];
new text4[20];
new text5[20];
new text6[20];
new text7[20];
new text8[20];
if(Spieler[playerid][Autoschein]) { text1 = "bestanden"; } else { text1 = "nicht vorhanden"; }
if(Spieler[playerid][Flugschein]) { text3 = "bestanden"; } else { text3 = "nicht vorhanden"; }
if(Spieler[playerid][Bootschein]) { text4 = "bestanden"; } else { text4 = "nicht vorhanden"; }
if(Spieler[playerid][Angelschein]) { text5 = "bestanden"; } else { text5 = "nicht vorhanden"; }
if(Spieler[playerid][Waffenschein]) { text6 = "bestanden"; } else { text6 = "nicht vorhanden"; }
if(Spieler[playerid][Bikeschein]) { text7 = "bestanden"; } else { text7 = "nicht vorhanden"; }
if(Spieler[playerid][LKWSchein]) { text8 = "bestanden"; } else { text8 = "nicht vorhanden"; }
format(str1, sizeof(str1), "{66FFFF}Auto-Führerschein: {FFFFFF}%s.\n{66FFFF}Fluglizenz: {FFFFFF}%s.\n{66FFFF}Segelschein: {FFFFFF}%s.\n{66FFFF}Angelschein: {FFFFFF}%s.\n{66FFFF}Waffenschein: {FFFFFF}%s.\n{66FFFF}Motorrad-Führerschein: {FFFFFF}%s.\n{66FFFF}LKW-Führerschein: {FFFFFF}%s",,text1,text3,text4,text5,text6,text7,text8);
format(str1, sizeof(str1), "%s\n\nPunkte\n{66FFFF}Auto: {FFFFFF}%d\n{66FFFF}Motorrad: {FFFFFF}%d\n{66FFFF}LKW: {FFFFFF}%d",str1,Spieler[playerid][AutoPunkte],Spieler[playerid][BikePunkte],Spieler[playerid][LKWPunkte]);
ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Deine Lizenzen",str1,"OK","");
return 1;
}
return 1;
}strcat musst du dar gar nicht verwenden. Du schreibst einfach str1 wieder an den Anfang der neuen format-Zeile.
-
Das ist doch nicht der GANZE dazugehörige Code. Wo ist denn text1,text3,text4,text5,text6,text7 und text8?
Versuch es nochmal, den ganzen Befehl. -
Bitte poste den ganzen Code der da dazu gehört, in aktueller Version, so wie er jetzt ist.