Integer gibt komische nie definierte Zahlen aus
-
npc = action - (GOSSIP_ACTION_INFO_DEF+10) + 200001;?
-
Bitte nicht über diese riesige WAND an un- optimierten Code meckern mir ging es vorerst um die Funktion, da bisher niemand wusste, ob sowas überhaupt machbar ist..
Der Kritikpunkt ist nicht die Suboptimalität, sondern DRY. Und dieses resultiert definitiv nicht aus fehlender Optimierung.
-
Schreib mal nach allen default:s einfach
throw "What is this?";und guck was passiert.

-
cooky451 schrieb:
Schreib mal nach allen default:s einfach
throw "What is this?";und guck was passiert.

Vor oder nach dem break;?
-
Baeumchen schrieb:
Vor oder nach dem break;?
Ich hoffe, dass ist Sarkasmus.
Nebenbei:
Die String-Makros im Header sind auch nicht zu beschönigen.
-
Falls das kein Sarkasmus war, erst mal ein totales Anfängerbuch kaufen scheint mir eine gute Idee zu sein.
http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list
-
Erklärungen:
GOSSIP_ACTION_INFO_DEF+x Beschreibt einen Menü eintrag...
OnGossipSelect - Wird jedes Mal beim Klick auf einen Menü Eintrag (GOSSIP_ACTION_INFO_DEF+x) aufgerufenDas ganze ist ein Menü mit verschiedenen Untermenüs:
Bei klick auf einen Eintrag im 1. Menü (GOSSIP_ACTION_INFO_DEF+1 - GOSSIP_ACTION_INFO_DEF+9) wird ein zweites Menü aufgerufen... Beim klick auf einen Eintrag im zweiten Menü (GOSSIP_ACTION_INFO_DEF+10 - GOSSIP_ACTION_INFO_DEF+102) soll npc eine einzigartige id bekommen, um ein Monster im Spiel zu spawnen, dass dem Klick des Menü Eintrags entspricht...
Alle IF- Anweisungen, inder npc einen Wert bekommen soll werden später noch zu einer if zusammen gefasst...
-
Alle IF- Anweisungen, inder npc einen Wert bekommen soll werden später noch zu einer if zusammen gefasst...
Wieso führst du so triviale Aufgaben nicht sofort durch? Das würde die Lesbarkeit und dadurch die Fehlersuche erheblich beinflussen.
Edit: Dir fehlen Grundlagen, ich bekräftige cooky451' Post.
-
- schrieb:
Alle IF- Anweisungen, inder npc einen Wert bekommen soll werden später noch zu einer if zusammen gefasst...
Wieso führst du so triviale Aufgaben nicht sofort durch? Das würde die Lesbarkeit und dadurch die Fehlersuche erheblich beinflussen.
Oder diese Zwischenstation gleich ganz auslassen und bei Menüaktionen gleich die gewünschte Aktion durchführen:
if (event) action = X; if (anderes_event) action = Y; if (action == X) tu_was(); if (action == Y) tu_was_anderes();->
if (event) tu_was(); if (anderes_event) tu_was_anderes();Natürlich nicht unbedingt hardcodiert (außer es handelt sich wirklich um fundamentale Vorgänge) sondern dynamisch. Code ist als Pseudocode zu verstehen. if-Kaskaden besser durch geeignete Datenstruktur (z.B. map) ersetzen.
-
cooky451 schrieb:
Schreib mal nach allen default:s einfach
throw "What is this?";und guck was passiert.

Danke
Das Problem war also eine fehlerhafte Verschachtelung..Ich habe nun alle if's, die eine npc id setzen sollen zusammengefasst und im default npc = 0 gemacht.. Nun läuft alles einwandfrei.. Das Problem ist also gelöst.
PS: Ich bin in der Tat ein Anfänger, aber zum Glück hab ich solch ein Buch hier schon liegen

-
Zumal man in diesem Fall eh
npc = 200000 + action - GOSSIP_ACTION_INFO_DEF - 9schreiben könnte.
-
Nathan schrieb:
Zumal man in diesem Fall eh
npc = 200000 + action - GOSSIP_ACTION_INFO_DEF - 9schreiben könnte.
dann würde npc aber eine andere id bekommen, als gewünscht.. Es soll ja keine Rechnung, sondern eine Zuweisung sein

-
Nehmen wir mal an GOSSIP_ACTION_INFO_DEF ist 0 und action ist 10.
Dann erhält npc den Wert 200000 + 10 - 0 - 9 = 20001, also wie gewünscht.
-
Baeumchen schrieb:
dann würde npc aber eine andere id bekommen, als gewünscht..
Wieso? Was wäre denn anders?
Es soll ja keine Rechnung, sondern eine Zuweisung sein
Wenn das im allgemeinen keine einfache Rechnung ist (hier ist es eine einfache Rechnung!) dann mach es trotzdem nicht mit einer if/switch-Kaskade. Ein einfaches Feld, mit der Verbindung Feldindex<->gewünschte ID wäre schon eine sehr große Verbesserung. Allgemeiner geht es mit anderen Datenstrukturen, die in deinem Lehrbuch (hoffentlich) bald drankommen.
P.S.: Außerdem habe ich diese Rechnung schon auf Seite 1 vorgeschlagen, aber anscheinend hat es niemand bemerkt
.
-
SeppJ schrieb:
Außerdem habe ich diese Rechnung schon auf Seite 1 vorgeschlagen, aber anscheinend hat es niemand bemerkt
.Was? Oh, stimmt. KOmisch, ist mir echt nicht aufgefallen.
Wenn ich es nicht besser wüsste, würde ich sagen, du hättest dich nachträglich reingeschummelt.
-
Ich dachte indes, SeppJ hätte sich über eine Code-Zeile gewundert, daher habe ich diese tatsächlich im Header gesucht...