Ich brauche irgendeine Konstante zwischen dem Besitzer des Hauses und dem Mieter, um zu überprüfen, ob der Spieler Mieter in dem jeweiligen Haus ist. Es ist schwierig zu helfen, ohne wirklichen Code.
Beiträge von malE
-
-
Ich möchte gerne per MSGBOX wissen wie ich die Mieter die Online sind auflisten kann.
Versuchs mal.
new str[256];
for(new i=0, j=GetPlayerPoolSize(); i<=j; i++) {
if(PlayerInfo[playerid][pHouseKey] == PlayerInfo[i][pHouseKey]) {
format(str, sizeof(str), "%sMieter: %s (ID: %d)\n", str, PlayerInfo[i][pName], i);
}
}
if(!strlen(str))return format(str, sizeof(str), "Du hast keine Mieter");
ShowPlayerDialog(playerid, DIALOG_HOUSE_MIETERLIST, DIALOG_STYLE_MSGBOX, "Mieter", str, "Schließen", ""); -
Pauschal kann man sowas eh nie genau sagen! Aber grundsätzlich gilt eigentlich bei allem Verkaufspreis / 2. Außerdem kann man den Wert seiner Hardware selbst grob ermitteln, indem man z.B. auf eBay den Durchschnitt des höchsten und niedrigsten Preis berechnet.
-
Ich kriege einfach die Antwort: "SERVER: Unkown Command"
returnst du das Callback OnPlayerCommandText mit 0 oder 1? Wenn 1, dann ändere es zu return 0;. [wiki]OnPlayerCommandText[/wiki] hier kannst du auch weiterlesen.
-
100€ das sind seine Hausaufgaben?
Ja, es ist für meine Hausarbeit, die ich mit Erfahrungen oder Ideen von anderen Leuten ergänzen möchte.
-
Hallo,
ich bitte mit diesem Thread um eure Ideen und vor allem Erfahrung zum Thema "Berufsbildung im Wandel".
Was kommt euch als aller erstes in den Sinn und was sind eure Sorgen und Bedenken für die Zukunft diesbezüglich. Wie wird deiner Meinung nach die Erwerbstätigkeit der Zukunft aussehen?Freue mich auf zahlreiche Antworten und Meinungen.
Grüße
-
-
-
Für weitere Fragen zu dem Thema mache bitte einen separaten Thread auf, da es sich bei der Entwicklung eines kompletten Systems nicht um eine kleine Frage handelt.
Das kann ich dir so nicht sagen, da ich nicht weiß was du vor hast, und es keinen Code dazu gibt.
-
Kommt drauf an, wie die Zuweisung stattfindet, sprich welchen Wert itemID hat, den von item1ID, oder den des Indexes.
Beim Index:
printf("Name: %s", ItemList[Items[idx][itemID]][item1Name]);
Ich lese die itemID aus der Datenbank aus:
Mein Problem ist gerade allerdings, wie ich den von dir beschriebenen korrekten Index für das Item bekomme. Nebenbei: wie definiere ich MAX_PLAYER_ITEMS so, dass jeder Spieler maximal z.B. 20 verschiedene Items tragen kann. MAX_PLAYER_ITEMS (20*MAX_PLAYERS) ? Ich kriege nämlich, wenn ich das Gewicht von Item 2 haben möchte, dass Gewicht von Item 3.
-
Wie schreibt man am besten Array-Übergreifend?
Ich habe nämlich eine kleine Struktur von drei Enums, die aber miteinander "kommunizieren" müssen.Als Beispiel: Ich möchte aus dem Enum "Items" über die 'itemID' den korrekten 'itemName' aus dem Enum "ItemList" herausbekommen.
Dieses Prinzip halt auch mit anderen Variablen wie z.B. 'itemInventoryID' aus Enum "Items" um es mit der 'inventoryID" aus dem Enum "Inventory" zu vergleichen.Ich habe es schon mit Schleifen ausprobiert, allerdings bekomme ich nicht die gewünschte Variable heraus.
Code
Alles anzeigenenum enum_Inventory { inventoryID, inventoryBesitzerID, inventorySize } new Inventory[MAX_INVENTORYS][enum_Inventory]; enum enum_ItemList { itemlID, itemlName[24], Float:itemlWeight, itemlUseFunction[31], itemlDescription[96] } new ItemList[MAX_ITEMS][enum_ItemList]; enum enum_Items { itemInventoryID, itemID, itemAmount } new Items[MAX_PLAYER_ITEMS][enum_Items];
-
Falls das geht, poste bitte, wie du "getItemName" definiert hast, und wie "Items" deklariert ist.
Jetzt funktioniert's! Du hast mich mit dem Satz daran erinnert, dass ich vergessen habe die Array Größe in der Variable einzutragen.
Anschließend hab ich es noch mal getestet, jetzt wird der Befehl ausgeführt und kein Error mehr in der Konsole ausgelöst. Danke!! -
Trotz dass du /xinventory im Spiel eingegeben hast, und den ocmd Befehl nicht geändert hast (auskommentiert gelassen)?
Ja...
Falls ja, was passiert, wenn du es zu /abcxyz umbenennst?
Gleicher Fehler...
Es wäre ansonsten eventuell ein Versuch wert, das enum, die Werte im enum und das Array umzubenennen, von Inventory zu "xyInventar" (nur testweise, kann dann ja nochmal umbenannt werden).
Wäre zumindest eine gewisse Erklärung, dass ocmd versucht, das Array, da es fast gleich heißt, auszuführen, was ja nicht geht.Wie von dir beschrieben ein Prefix eingefügt, aber ändern tut sich leider auch nichts...
-
Hast du irgendwo im Code noch etwas anderes, das "inventory" heißt?
Keinen weiteren Befehl, aber ein enum.
Codeenum enum_Inventory { inventoryID, inventoryBesitzerID, inventorySize } new Inventory[MAX_INVENTORY][enum_Inventory];
ocmd setzt sich vor OnPlayerCommandText hin, von daher kommt er wohl dort erst gar nicht an.
Klappt es denn, wenn du den strcmp Befehl mal "/xinventoy" nennst?Leider der gleiche Fehler.
-
Dem Log nach wurde erneut ocmd aufgerufen, für den Befehl. Prüfe das bitte nochmal.
ocmdOnPlayerCommandTextAh, stimmt das wollte ich auch noch kommentieren! Liegt es vielleicht daran, weil sich ocmd zwischen OnPlayerCommandText klemmt? Weil der ocmd Befehl ist auf jeden Fall auskommentiert.
Code
Alles anzeigenpublic OnPlayerCommandText(playerid, cmdtext[]) { if(!strcmp(cmdtext, "/inventory", true)) { new frmt[496]; for(new i=0; i < MAX_PLAYER_ITEMS; i++) { if(Items[i][itemBesitzerID] != PlayerAccount[playerid][playerDBID])continue; format(frmt, sizeof(frmt), "%s%d. Item: %s (%d) | Amount: %d | Total Weight: %0.2f\n", frmt, i+1, getItemName(Items[i][itemID]), Items[i][itemID], Items[i][itemAmount], (ItemList[Items[i][itemID]][itemlWeight]*Items[i][itemAmount])); //Items[i][itemName] } if(!strlen(frmt))return SendClientMessage(playerid, -1, "Es befinden sich keine Items in deinem Inventar."); return SendClientMessage(playerid, -1, frmt); } return 0; }
-
Die Meldung kam in dem Fall dann vom Debug Modus.
Tritt der Fehler denn nur bei dem Befehl auf, oder auch bei anderen Befehlen?
Hast du mal versucht, den Befehl als "strcmp" Befehl anzulegen, und den ocmd Befehl zu entfernen, klappt es dann?Andere Befehle funktionieren einwandfrei. /inventory funktioniert allerdings auch nicht als "strcmp".
-
Geht die Meldung im Compiler denn weg? Falls nein, hast du eine "pawn.cfg" im pawno Ordner für den Debug Modus drin? Wenn ja, entferne diese bitte mal und versuche es dann nochmal
Danke! Das Problem lag tatsächlich daran, aber warum?
Allerdings bleibt der gleiche Fehler, wenn ich meinen Befehl aufrufe.Code
Alles anzeigenocmd:inventory(playerid, params[]) { new frmt[496]; for(new i=0; i < MAX_PLAYER_ITEMS; i++) { if(Items[i][itemBesitzerID] != PlayerAccount[playerid][playerDBID])continue; format(frmt, sizeof(frmt), "%s%d. Item: %s (%d) | Amount: %d | Total Weight: %0.2f\n", frmt, i+1, getItemName(Items[i][itemID]), Items[i][itemID], Items[i][itemAmount], (ItemList[Items[i][itemID]][itemlWeight]*Items[i][itemAmount])); //Items[i][itemName] } if(!strlen(frmt))return SendClientMessage(playerid, -1, "Es befinden sich keine Items in deinem Inventar."); return SendClientMessage(playerid, -1, frmt); } [debug] Run time error 5: "Invalid memory access" [debug] AMX backtrace: [debug] #0 0000821c in public ocmd_inventory (0, 339332) from script.amx [debug] #1 native CallLocalFunction () from samp-server.exe [debug] #2 000003e0 in public OnPlayerCommandText (0, 339288) from script.amx
-
Füge bitte unter den Includes das ein:#pragma dynamic 100000
Erhöhe die Zahl etwas, falls die Meldung nicht weg geht, so lange, bis die Meldung im Compiler weg geht.
Trotz mehrfacher Erhöhung gleicher Fehler.
-
Hast du irgendwelche Warnungen im Compiler stehen, oder eine Meldung bezüglich Stack/Heap Size
CodeHeader size: 4028 bytes Code size: 71924 bytes Data size: 339288 bytes Stack/heap size: 80000 bytes; estimated max. usage: unknown, due to recursion Total requirements: 495240 bytes
Entferne auch mal das str[256], aus dem Befehl, das ist ungenutzt, eine Warnung müsste daher mindestens da sein.
Gleicher Fehler.
-
Hast du sicher die Neuste Version von OCMD?
Benutze die 2.1.1, ist also laut diesem Thread die aktuellste Version.
Wenn du die Neuste Version hast, dann evtl mal so schreiben ocmd:inventory(playerid) {
Bereits versucht, gleicher Fehler.