World of Gothic Archiv > Editing
Conditioin mit &! int_variable
Seite 1 von 1  1 
21.04.2003, 16:04 #1
Mud-Hunter
Beiträge: 32
Conditioin mit &! int_variable
hallo miteinander!
habe folgendes problem:

wie beim script-tutorial abgeschaut :-) habe ich mir einen npc gebastelt, der aufgrund einer bedingung: den auftrag angenommen, das begehrte stück bei sich und eben das " &! int_gotsword" wieder mit einem spricht und eine belohnung gibt.

bedingung1 & bedingung2 &! int_variable heisst doch meiner meinung nach, dass bedingung1 UND bedingung2 erfüllt sein müssen, UND NICHT (=&! ???) die variable "erfüllt". Heisst das nun, dass die variable, die ja in den - glaub ich - globals definiert sein muss FALSE oder null oder sowas sein muss??

bzw.: was schreibt man nach dem erfüllten auftrag, damit eben die bedingung so wird, dass die condition nicht erfüllt ist, obwohl bedingung1 (zb er kennt den auftrag) und bedingung2 (zb eine bestimmte anzahl items abliefern, die man aber immer wieder bekommt)?

also wie muss ich int_variable "danach" setzen, dass es mit &! auf keinen fall mehr dieser dialog kommt?

kurzes beispiel:
der npc will - im "ersten" auftrag - fleisch haben. 50 Stück. dafür gibt es 5 lernpunkte. die description ist in diesem fall, wenn ich ihn anspreche. "ich hab das futter das auftrags(zb)"
also erscheint, solange der auftrag nicht erfüllt ist - wenn ich ihn anspreche - ich hab das futter.....

wenn der auftrag erfüllt ist, soll der npc aber immer dann, wenn man futter bringt, 1 LP, geben und die description lautet hier: ich habe wieder futter.

Bei mir erscheint aber beim allerersten auftrag richtigerweise: cih hab das futter des auftrags, aber beim zweiten mal - wenn man nur mehr 1 lernpunkt bekommen soll, die auswahl zwischen: ende, ich habe das futter des auftrages UND ich habe wieder futter und wenn man auf die auswahl: ich habe das futter des auftrages klickt, bekommt man wieder die 5 lp.
ich denke, wenn ich das mit der " &! int_variable" in der bedingung des ersten auftrages hinbekomme (also nach dem auftrag sowas wie : int_variable=FALSE (die Syntax für diesen fall kenne ich leider nicht) hinschreibe, stellt sich das problem mit der "wiederholung" des ersten auftrages gar nicht.

Nun, nach dem Gelabber endlich die Kurzversion der Fragen :-)
1) Ist dieser gedankengang richtig?
2) was genau muss ich mit der int_variable nach dem erledigten auftrag machen, damit er kein zweites mal mehr erscheint?

danke und dschau
21.04.2003, 16:20 #2
Auron_X
Beiträge: 929

Also ich kenne zwar &! nicht, aber schreibe mal einfach && !int_variable == 1, dass heißt dann und NICHT Int_variable == 1
21.04.2003, 16:26 #3
Mud-Hunter
Beiträge: 32

hi auronx

schon der zweite der "rückkehr", der mir hilft! darkwing hat bisher im icq schon unglaubliches "an mir" geleistet :-)

also das &! müsste eigentlich bedeuten, dass das folgende NICHT sein darf, es also die variable int_gotfood (in diesem fall) nicht gibt oder dass sie FALSE oder was immer ist.

jetzt möchte ich wissen, was ich tun muss - genaue syntax bitte - dass die bedingung " &! int_gotfood" FALSCH wird und damit die ganze bedinung falsch und damit dieser dialog nie mehr vorkommen dürfte

danke und dschau
21.04.2003, 16:55 #4
HornOx
Beiträge: 1.458

quote:
d) Boolesche Operatoren

bool-op:
! nicht
&& und
|| oder


e) Bitweise Operatoren

bit-op:
& and
| or

beispiele:
4 & 4=4
4 & 1=0
4 & 6=4
4 && 4=true
4 && 1=true
4 && 6=true
wenn ich ich richtig verstanden habe willst du sowas:
code\:

bedinung1 && !bedinung2
21.04.2003, 17:05 #5
Mud-Hunter
Beiträge: 32

danke hornox!
hätte ein bisschen probieren sollen, ehe ich groß frage :-)
habs einfach mal mit int_gotfood = TRUE;
probiert - nach der übergabe - und siehe da :-) der dialog kommt nicht mehr, weil ja in der bedingung: &! also UND NICHT steht.
ich nehme an, dass dann das bedeutet: eine bedingung soll sein, dass int_gotfood NICHT ist (oder eben den wert false hat) und wenn ich dann auf TRUE setze ist diese bedingung nicht erfüllt.
eh ganz einfach :-)

@hornox: kann ich das mit beliebigen (zuvor in global.d) definierten variablen machen, dass ich sie auf TRUE oder FALSE setze und dann so abfrage?
gibt es da elegantere lösungen, mit denen man ein "abgeschlossenes" ereignis so markieren kann, dass es bei anderen als bedingung gesetzt werden kann und wie würde da in etwas die syntax aussehen.
gemeint ist "dia-übergreifend" also nicht in der gleichen dialogdatei, sondern etwa:
NPC 1 hat einen auftrag gegeben, den hat man erfüllt und erst dann kann man zum NPC 2 gehen und reden, oder so ähnlich.
Bzw. sind die in global.d definierten variablen (wie der namen "global" sagt) in ALLEN Dia_irgendwer "abrufbar" bez. kann man sie in jedem dialog als bedingung verwenden?

danke und dschau

danke und dschau
21.04.2003, 17:54 #6
HornOx
Beiträge: 1.458

quote:
[...]der dialog kommt nicht mehr, weil ja in der bedingung: &! also UND NICHT steht.[...]
pass wirklich mit dem bitweisem UND "&" auf, so wie ich dich verstehe meinst du immer das logische UND "&&". wenn du die beiden verwechselst bekommst du probleme.
quote:
kann ich das mit beliebigen (zuvor in global.d) definierten variablen machen, dass ich sie auf TRUE oder FALSE setze und dann so abfrage? [...]Bzw. sind die in global.d definierten variablen (wie der namen "global" sagt) in ALLEN Dia_irgendwer "abrufbar" bez. kann man sie in jedem dialog als bedingung verwenden?
ja und ja
quote:
NPC 1 hat einen auftrag gegeben, den hat man erfüllt und erst dann kann man zum NPC 2 gehen und reden, oder so ähnlich.
Hängt davon ab als wann du den auftrag als erfüllt betrachtest. Meist gibt es einen abschließenden Dialog bei NPC1 und ob der gesprochen wurde kannst du so abfragen
quote:
FUNC INT Npc_KnowsInfo (VAR C_NPC self, VAR INT infoInstance) { return 0; };
// Liefert TRUE, wenn der angegebene Spieler die Info schon einmal erhalten hat.
// VORSICHT: auch wenn eine permanente Info schon einmal dem Spieler erzählt wurde, so gibt diese Funktion trotzdem FALSE zurück!
Les dir am besten mal ein paar orginaldialogscripte durch...
21.04.2003, 20:40 #7
Mud-Hunter
Beiträge: 32

hai miteinander und vor allem @hornox!
danke mal für deine ausführliche antwort. vielleicht war ich bei meinen fragen ein bisserl ungenau.
ich meinte natürlich && und &! und zwar im sinne von - und aus verständnisgründen verwende ich die ausdrücke - AND und NOT.
das trifft es - glaub ich - am besten

danke und dschau.

hat übrigens alles gefunzt mit dem TRUE und FALSE bzw. && und &!
21.04.2003, 21:06 #8
HornOx
Beiträge: 1.458

Ich behaupte weiterhin das du &&! (oder besser lesbar && !) anstatt &! für deine Zwecken verwenden solltest.
22.04.2003, 03:52 #9
Mud-Hunter
Beiträge: 32

danke für den tipp. werde es machen. habe es ja aus der "vorlage" des none_999_gunther des tutorials übernommen und dachte, dass da die syntax stimmen müsste :-)
dschau
Seite 1 von 1  1