Autor |
|
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9269
 |
|
von der performance her sicher eine gute ide mit dem cellchanged... allerdings hat cellchanged eine kleine Macke: Selbsternannte "profispieler" bewegen sich nur noch mit coc über die insel - und bei verwendung dieses Konsolentransports wird cellchangen nicht ausgelöst.... muss jeder selber wissen, ob er beim pluginentwickeln rücksicht auf cheater nimmt - ich hab es an manchen stellen nicht getan 
__________________ drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen 
|
|
04.07.2003, 22:18 |
|
Lizard King
Crusader
  

Dabei seit: April 2003
Geschlecht: 
Herkunft: bw
Beiträge: 482
 |
|
Ich konnte es noch nicht testen, aber vielleich kann ich mir das auch sparen. Hier meine Vorstellung von den Scripten:
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" 10)
..."Arko"->enable
..endif
endif
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" 60)
..."Arko"->disable
..endif
endif
@Garak
Diese 'Profis' haben dann sicher auch kein Problem damit sich den Ring (um den es im PlugIn geht) herbeizucheaten. Also was soll's
__________________
|
|
04.07.2003, 22:45 |
|
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9269
 |
|
schön - jetzt müssen wir erst mal klären, wo das script liegen soll - offensichtlich nicht auf dem npc, wenn du ihn mit "->" addressierst - also global oder auf einem gegenstand? Ich würde hier zu global raten - sonst ist nicht klar, in welchem zustand der Npc ist, wenn Du seine Zelle bertittst und Du einen anderen journalstand als 10 oder 60 hast...andernfalls solltest Du auf Journalwerte 10 <= journalindex <= 59 testen um zu enablen - dazu brauchtr du übrigens zwei geschachtelte ifs...
__________________ drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen 
|
|
04.07.2003, 22:55 |
|
Hephaistos
Verschollen


Dabei seit: Februar 2003
Geschlecht: 
Herkunft: Wien
Beiträge: 2102
 |
|
Zitat: von der performance her sicher eine gute ide mit dem cellchanged... allerdings hat cellchanged eine kleine Macke: Selbsternannte "profispieler" bewegen sich nur noch mit coc über die insel - und bei verwendung dieses Konsolentransports wird cellchangen nicht ausgelöst.... muss jeder selber wissen, ob er beim pluginentwickeln rücksicht auf cheater nimmt - ich hab es an manchen stellen nicht getan
Ich kenn das Problem, aber um ganz ehrlich zu sein interessiert es mich nicht wirklich. Wer sich soviel Mühe gibt das Spiel auszutricksen, der muß auch mit den Konsequenzen leben. Ist vielleicht nicht besonders "User-freundlich" aber ich kann mich schließlich nicht um alles kümmern.
@Jerec
Sieht gut aus allerdings hast du bei GetJournalindex vergessen anzugeben ob es ==, <, >, >= oder <= sein soll. Ich würde nicht mit == arbeiten, da damit nur die Einträge 10 und 60 abgedeckt wären und die anderen mehr oder weniger undefiniert blieben.
EDIT:
Schon wieder zu spät.
@ Garak: Ich würde das Script schon auf den NPC legen ist schließlich am einfachsten, oder?
__________________
Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein
Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach
Dieser Beitrag wurde von Hephaistos am 04.07.2003, 23:05 Uhr editiert.
|
|
04.07.2003, 23:02 |
|
Lizard King
Crusader
  

Dabei seit: April 2003
Geschlecht: 
Herkunft: bw
Beiträge: 482
 |
|
Global klingt ganz gut. Bisher lagen die Scripts auf den NPCs und einer Kiste und einem Fass.
Wo müssen sie hin, wenn sie als global gelten sollen? Wie würde das aussehen?
Thx im voraus.
Aber wenn's mit den NPCs am einfachsten ist werde ich 's mal mit dem = versuchen.
__________________
|
|
04.07.2003, 23:09 |
|
Hephaistos
Verschollen


Dabei seit: Februar 2003
Geschlecht: 
Herkunft: Wien
Beiträge: 2102
 |
|
Zitat: Aber wenn's mit den NPCs am einfachsten ist werde ich 's mal mit dem = versuchen.
Wie gesagt ich würde nicht == nehmen, aber ich verstehe nicht warum du den NPC bei 60 wieder disablen willst. Das ist doch der NPC den du töten willst, das heißt er ist nach der ersten Begegnung sowieso tod und die leiche kann ja ruhig herum liegen.
__________________
Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein
Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach
|
|
04.07.2003, 23:14 |
|
Lizard King
Crusader
  

Dabei seit: April 2003
Geschlecht: 
Herkunft: bw
Beiträge: 482
 |
|
Nun, das ist etwas Storyabhängiges, was ich im Notfall auch rauslassen kann => einer der toten soll nämlich nach der Story "geborgen" werden und beerdigt, etc.
Etwas Rührseligkeit eben.
Da ich sicher gehen wollte das die Leiche bleibt, falls der Spieler das Quest erst später (also auch lange Zeit nach der Auftragsannahme) spielt, habe ich bei dem Toten auf corpses persist eingeschaltet, da er ja den Story wichtigen Gegenstand hat.
Ob der andere NPC (=Gegner) bleibt oder nicht ist egal.
__________________
|
|
04.07.2003, 23:23 |
|
Hephaistos
Verschollen


Dabei seit: Februar 2003
Geschlecht: 
Herkunft: Wien
Beiträge: 2102
 |
|
In dem Fall würde ich das Script auf den NPC selber legen und mit größer-/kleinergleich arbeiten.
z.B.:
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" >= 10)
....if (Getjournalindex "RingderReise" < 60)
......"Arko"->enable
....endif
..endif
endif
__________________
Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein
Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach
|
|
05.07.2003, 00:13 |
|
Lizard King
Crusader
  

Dabei seit: April 2003
Geschlecht: 
Herkunft: bw
Beiträge: 482
 |
|
Wenn ich jetzt, ohne den Auftrag angenommen zu haben, mit diesem Script auf beiden NPCs, die Zelle betrete, kommen zwei "EXPRESSION" und wezi "Left eval" Fehler. Die beiden NPCs sind auch da.
Ich habe es auch mal so versucht
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" >= 10)
....if (Getjournalindex "RingderReise" < 60)
......enable
....endif
..endif
endif
Keine Veränderung. Müssen vielleicht "" des Topics weg, also:
if (cellchanged == 1)
..if (Getjournalindex RingderReise >= 10)
....if (Getjournalindex RingderReise < 60)
......enable
....endif
..endif
endif
?
__________________
|
|
05.07.2003, 12:10 |
|
Hephaistos
Verschollen


Dabei seit: Februar 2003
Geschlecht: 
Herkunft: Wien
Beiträge: 2102
 |
|
Zitat: Wenn ich jetzt, ohne den Auftrag angenommen zu haben, mit diesem Script auf beiden NPCs, die Zelle betrete, kommen zwei "EXPRESSION" und wezi "Left eval" Fehler. Die beiden NPCs sind auch da.
Zwei NPC's? ich dachte das sollte nur einer sein? Egal. Du mußt natürlich auch eine if-Abfrage erstellen, mit der der NPC disabled wird, wenn er nicht erscheinen soll.
z.B.:
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" >= 10)
....if (Getjournalindex "RingderReise" < 60)
......enable
....endif
..endif
endif
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" < 10)
....disable
..endif
endif
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" >= 60)
....disable
..endif
endif
Garak würde wahrscheinlich den besseren Weg mit if/else empfehlen, aber ich mach es immer so, weil ich es so übersichtlicher finde (ist aber mehr Schreibarbeit)
Die "" beim Topic sind in diesen Fall egal, wirklich notwendig sind sie nur, wenn der Topic ein Leerzeichen enthält, ansonsten machen sie soweit ich weiß keinen Unterschied.
__________________
Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein
Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach
|
|
06.07.2003, 13:20 |
|
Lizard King
Crusader
  

Dabei seit: April 2003
Geschlecht: 
Herkunft: bw
Beiträge: 482
 |
|
Zitat:
Der Spieler begibt sich also in Kanalisation, wird dort von dem Mörder angesprochen und muss ihn töten. => Journaleintrag. Dann entdeckt man die Leiche des Vermissten [2. NPC] und nimmt seine Gegenstände mit (anbei gibt es noch ein bisschen was zu plündern). => weitere Journaleintrag.
=> 2 NPCs 
Es kommen immmernoch die gleichen Fehlermeldungen (Left eval, Expression).
Kann man dieses Script auch auf Conatainer legen?
__________________
|
|
06.07.2003, 15:43 |
|
Hephaistos
Verschollen


Dabei seit: Februar 2003
Geschlecht: 
Herkunft: Wien
Beiträge: 2102
 |
|
Ich hab vorher glaub ich was übersehen.
Wenn beide NPC in der selben Cell liegen, mach doch einfach ein einziges Script, da sowieso beide bei den gleichen Bedingungen erscheinen sollen.
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" >= 10)
....if (Getjournalindex "RingderReise" < 60)
......"ID_NPC1" -> enable
......"ID_NPC2" -> enable
....endif
..endif
endif
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" < 10)
...."ID_NPC1" -> disable
...."ID_NPC2" -> disable
..endif
endif
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" >= 60)
...."ID_NPC1" -> disable
...."ID_NPC2" -> disable
..endif
endif
Theoretisch kannst du das Script auch auf einen Container oder irgendeinen anderen Gegenstand legen, aber aus Gründen der Übersichtlichkeit würde ich es immer auf das Objekt legen, für das es gelten soll.
__________________
Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein
Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach
Dieser Beitrag wurde von Hephaistos am 06.07.2003, 21:44 Uhr editiert.
|
|
06.07.2003, 21:43 |
|
Lizard King
Crusader
  

Dabei seit: April 2003
Geschlecht: 
Herkunft: bw
Beiträge: 482
 |
|
Meine Frage war eigentlich, ob ich statt der ID eines NPCs auch die ID eines Containers nehmen könnte.
Es kommt immer noch dieser "EXPRESSION in arkoscript" und "Left eval" - Fehler (zwei Meldungen).
Hier das gesamte arkoscript:
begin arkoscript
short br_talk
short searchonce
if ( getdistance player <= 512 )
..if ( br_talk == 0 )
....forcegreeting
....set br_talk to 1
..endif
endif
if ( gethealth <= 0 )
....if ( searchonce ==0 )
......journal "ringderreise" 20
......set searchonce to 1
....endif
endif
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" >= 10)
....if (Getjournalindex "RingderReise" < 60)
......"sugarear"->enable
......"arko"->enable
....endif
..endif
endif
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" < 10)
......"sugarear"->enable
......"arko"->enable
..endif
endif
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" >= 60)
......"sugarear"->enable
......"arko"->enable
..endif
endif
End
Ich musste übrigens einige Leerzeichen entfernen, damit es überhaupt gespeichert werden konnte.
Thx im Voraus.
__________________
|
|
06.07.2003, 23:21 |
|
Hephaistos
Verschollen


Dabei seit: Februar 2003
Geschlecht: 
Herkunft: Wien
Beiträge: 2102
 |
|
Mal ne ganz dumme Frage: Schreibst du die Punkte (.....) eigentlich auch ins Script?
__________________
Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein
Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach
Dieser Beitrag wurde von Hephaistos am 07.07.2003, 07:37 Uhr editiert.
|
|
07.07.2003, 07:36 |
|
Lizard King
Crusader
  

Dabei seit: April 2003
Geschlecht: 
Herkunft: bw
Beiträge: 482
 |
|
Nun...ja. Hat bisher auch nie Probleme verursacht.
Ich habe jetzt diese Punkte durch Leerzeichen ersetzt, keine Veränderung.
__________________
|
|
07.07.2003, 12:44 |
|
Hephaistos
Verschollen


Dabei seit: Februar 2003
Geschlecht: 
Herkunft: Wien
Beiträge: 2102
 |
|
Wenn ich mich nur besser mit dem Scripten auskennen würde. Also gut, probier's so.
begin arkoscript
short br_talk
short searchonce
if ( player -> getdistance "ID_NPC" <= 512 )
..if ( br_talk == 0 )
....forcegreeting
....set br_talk to 1
..endif
endif
if ( "ID_NPC" -> gethealth <= 0 )
....if ( searchonce ==0 )
......journal "ringderreise" 20
......set searchonce to 1
....endif
endif
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" >= 10)
....if (Getjournalindex "RingderReise" < 60)
......"sugarear"->enable
......"arko"->enable
....endif
..endif
endif
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" < 10)
......"sugarear"->enable
......"arko"->enable
..endif
endif
if (cellchanged == 1)
..if (Getjournalindex "RingderReise" >= 60)
......"sugarear"->enable
......"arko"->enable
..endif
endif
End
Irgenwo gehört disable rein, oder.
Bis auf den Konflik mit enable/disable kann ich allerdings keinen Fehler finden. Diese Änderungen sollten normalerweise keinen Unterschied machen, aber wer weiß. Vielleicht weiß Garak mehr.
__________________
Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein
Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach
Dieser Beitrag wurde von Hephaistos am 07.07.2003, 15:36 Uhr editiert.
|
|
07.07.2003, 13:17 |
|
Lizard King
Crusader
  

Dabei seit: April 2003
Geschlecht: 
Herkunft: bw
Beiträge: 482
 |
|
Die beiden ersten Scriptteile funktionieren ja perfekt. Ich habe ja schon getestet, ob es daran liegt. Außerdem soll das Greeting und der Journaleintrag bei Tod ja nur bei dem einem NPC kommen. Auf diesem habe ich eben noch die enable - disable - Scriptteile gelegt.
=> Es muss an den drei unteren liegen.
Bist du dir sicher, dass es diese Befehle so auch gibt? "Vertragen" diese sich vielleicht nicht mit den anderen?
Ich werde das mal ausprobieren. Danke.
EDIT
Keine Wirkung.
Ich werde jetzt noch mal die Journaleinträge durchgehen, und schauen ob da wirklich alles in Ordnung ist.
Kann es vielleicht sein, dass der Fehler durch eine bestimmte Einstellung der Zelle oder der NPCs hervorgerufen wird?
__________________
Dieser Beitrag wurde von Lizard King am 07.07.2003, 16:10 Uhr editiert.
|
|
07.07.2003, 13:37 |
|
chris_tm
Bard
  
Dabei seit: Februar 2003
Geschlecht: 
Herkunft: München
Beiträge: 37
 |
|
Hab mich auch gerade gefragt, wo die NPCs eigentlich disabled werden. Oder machst Du das in einem anderen Script ?
Ansonsten würde ich ganz unten das dazuschreiben :
if ( doonce == 1 )
.. .. Return
elseif ( doonce != 1 )
.. .. "sugarear"-> Disable
.. .. "arko"-> Disable
.. .. set doonce to 1
endif
End
und oben natürlich die neue Variable definieren :
short doonce
Wegen den EXPRESSION Fehlermeldungen :
Da sieht die Zeile ....if ( searchonce ==0 ) sehr verdächtig aus, weil die 0 am == klebt. Das sollte mit ziemlicher Sicherheit eine der Fehlermeldungen auslösen.
Ausserdem läßt Du weiter unten im Script auch keine Leerzeichen zwischen den Klammern und dem Inhalt. Bei mir führt das auch regelmäßig zu EXPRESSION Fehlern.
Bsp:
if (Getjournalindex "RingderReise" >= 10)
würde ich so schreiben :
if ( Getjournalindex "RingderReise" >= 10 )
Hoffe das hilft
__________________
Meine Site
|
|
07.07.2003, 18:40 |
|
Lizard King
Crusader
  

Dabei seit: April 2003
Geschlecht: 
Herkunft: bw
Beiträge: 482
 |
|
Ich muss das irgendwie beim kopieren verpeilt haben. Die beiden unteren sind natürlich disable, nicht auch noch enable.
Ich habe die Leerzeichen rein, hat leider nicht geholfen, also was kann ich gegen das "== 0" unternehmen? Müsste es beim "br_talk == 0" nicht genauso sein? Außerdem habe ich bei dem anderen NPC ein Script in dem ebenfalls ein "variable == 0" vorkommt, es kommt aber nur eine EXPRESSION-Fehlermeldung?
__________________
|
|
07.07.2003, 18:59 |
|
chris_tm
Bard
  
Dabei seit: Februar 2003
Geschlecht: 
Herkunft: München
Beiträge: 37
 |
|
Sorry, anscheinend hatte ich mich unklar ausgedrückt.
Bei dem == und der 0 muss man an der Stelle einfach ein Leerzeichen machen.
Also statt:
if ( searchonce ==0 )
so:
if ( searchonce == 0 )
Ansonsten fällt mir nur auf, daß Du in den Funktionen nicht auf Groß- und Kleinschreibung achtest. Bsp:
cellchanged
statt
CellChanged
Getjournalindex
statt
GetJournalIndex
gethealth
statt
GetHealth
und
getdistance
satt
GetDistance
Ich hab aber keine Ahnung, ob sowas zu EXPRESSION-fehlern führen kann, wenn die Funktionen sonst richtig geschrieben sind.
Steht bei den Fehlermeldungen die Zeile nicht dabei ?
Das hilft normalerweise gerade bei diesem Fehlertyp enorm. (Leerzeilen werden mitgezählt)
__________________
Meine Site
|
|
07.07.2003, 20:17 |
|
|