Autor |
|
Coxaqha
Bard
  

Dabei seit: Juli 2005
Geschlecht: 
Herkunft: Schilda
Beiträge: 45
 |
|
Wow, da komm ich mal ein paar Stunden nicht ins Netz...
Vielen Dank für die ausführlichen Erklärungen, seehr hilfreich. In der Zwischenzeit hab ich mir ein paar Gedanken gemacht, wobei die Euphorie von vorhin durchaus geholfen hat. Auf einige Dinge bin gerade selbst gekommen (ich schwör's), und da mein Provider heute mal wieder einen seiner (vielen) Tage hat, das schon mal offline verfaßt.
.......
So, da nun mein erster NPC zu 100% so funzt, wie ich es mir gedacht habe, würde ich ihr auch gerne einen ordentlichen Abgang verschaffen, damit sie nicht wie so viele andere wie Falschgeld in der Gegend rumsteht. Dafür könnte ich natürlich 'if CellChanged + Disable' benutzen, aber elegant finde ich das nicht. Viel lieber wäre mir, sie würde Richtung zweite Brücke gehen und dann verschwinden, sobald der PC nicht mehr zu sehen ist. Leider fällt mir nicht ein NPC ein, der das tut (weggehen), kann es also nirgends abschreiben.
Desweiteren möchte ich sie gern im Domizil antreffen, wenn ich denn erstmal angekommen bin, und zwar umgezogen! Da NPCs sich aber nunmal nicht umziehen, muß dafür wohl 'Anna v2' herhalten. Und da hatte ich eine Inspiration in der 'Startup', wo sämtliche Leute disabled sind, die erst durch Quests gespawnt werden. Wie wäre es, wenn ich in Anna's Script "Anna2"-> Disable vor die Variablen setze (damit dies auf jeden Fall geschieht). Sobald sie weggeht und sich selbst disabled wird Anna2 enabled (mit frischen Klamotten).
...........
Tja, eigentlich sind praktisch alle Fragen in der Zwischenzeit beantwortet, außer wie man einen NPC weggehen läßt. Also werde ich mal das Script auf perfekt schrumpfen und dann stückweise erweitern.
Vielen herzlichen Dank für Eure Hilfe, ich würde soo gerne einen ausgeben...
Cox
|
|
27.07.2005, 14:29 |
|
F.I.M.
Acid Monk
  

Dabei seit: März 2004
Geschlecht: 
Herkunft: 127.0.0.1
Beiträge: 2058
 |
|
mit NPCs laufen lassen, da steht noch "viel" im scripting for dummies!
__________________
|
|
27.07.2005, 17:10 |
 |
Coxaqha
Bard
  

Dabei seit: Juli 2005
Geschlecht: 
Herkunft: Schilda
Beiträge: 45
 |
|
Da seh dann gleich mal rein, so langsam verstehe ich ja auch gelesenes immer besser. Hier nochmal mein aktueller Stand der Dinge:
Hm, klappt noch nicht so ganz. Der obere Teil scheint mir perfekt zu sein, dank Eurer Hilfe. Der untere Teil soll sie weggehen lassen, und sich disablen, wenn der PC die Map verläßt. Seht selbst:
begin BoteCC_talkerEnable
Short NoLore
short done
"_CoxNPC_Wirt"-> Disable ;umgezogen im Domizil
if ( done == 0 )
if ( GetJournalIndex A1_1_FindSpymaster >= 14 ) ;mindestens Dokumente abgegeben + unterschrieben
if ( GetDistance Player <= 250 )
forcegreeting
set done to 1
endif
endif
endif
if ( done == 1 )
AITravel -15437, -15479, 571 ;Tür des letzten Hauses, selbe Straße
"_CoxNPC_Wirt"-> Enable
endif
if ( CellChanged == 1 )
Disable
endif
End
Aitravel scheint gar nicht zu funzen, wenn es im Script steht. Wenn ich die Koords unter AI eintrage, ist sie unterwegs, wenn ich aus dem Haus komme, und ignoriert mich, wahrscheinlich wg. dem geringen Radius. Bei Radius 750 mit/ohne AITravel erscheint beim Mapchange sofort der Dialog, sehr unangenehm. Aber egal, so wie's da steht disabled sie sich sofort bei Knopfdruck, vollkommen inakzeptabel.
- warum geht sie nicht?
- warum wartet sie nicht auf meinen MC?
EDIT:
So, jetzt funzt es und bleibt wohl auch vorerst so. Kann ich vielleicht später noch perfektionieren:
begin BoteCC_talkerEnable
Short NoLore
Short Done
Short do_once
if ( done == 0 )
if ( GetJournalIndex A1_1_FindSpymaster >= 14 ) ;mindestens Dokumente abgegeben + unterschrieben
if ( GetDistance Player <= 250 )
forcegreeting
set done to 1
SetHello 0
endif
endif
endif
if ( done == 1 )
If (do_once==0)
AiTravel, -16110, -15311, 346 ;Treppe
Set do_once to 1
endif
endif
if ( GetAIPackageDone == 1 )
Disable
endif
End
Das an+ausschalten ihres Ersatzes hab ich rausgeschmissen, weil's nicht mehr funzte, sobald sie tatsächlich ging. Und weil's völlig unnötig ist, man kann nicht dort ankommen, bevor sie weg ist. Sie latscht jetzt bis auf die Treppe zum Südwall und disabled sich, nicht elegant, aber noch auf derselben Karte...
Dieser Beitrag wurde von Coxaqha am 27.07.2005, 19:59 Uhr editiert.
|
|
27.07.2005, 17:32 |
|
HenryEX
Healer
   

Dabei seit: Juni 2005
Geschlecht: keine Angabe
Herkunft: A melancholy Town where we never smile
Beiträge: 63
 |
|
Zitat: Original von Coxaqha
Desweiteren möchte ich sie gern im Domizil antreffen, wenn ich denn erstmal angekommen bin, und zwar umgezogen! Da NPCs sich aber nunmal nicht umziehen, muß dafür wohl 'Anna v2' herhalten. Und da hatte ich eine Inspiration in der 'Startup', wo sämtliche Leute disabled sind, die erst durch Quests gespawnt werden. Wie wäre es, wenn ich in Anna's Script "Anna2"-> Disable vor die Variablen setze (damit dies auf jeden Fall geschieht). Sobald sie weggeht und sich selbst disabled wird Anna2 enabled (mit frischen Klamotten).
Das geht einwandfrei, solange es NICHT möglich ist, "Anna2" zu treffen, bevor man bei "Anna" war....
Zitat: Original von Coxaqha
code:
begin BoteCC_talkerEnable
(...)
if ( done == 1 )
AITravel -15437, -15479, 571 ;Tür des letzten Hauses, selbe Straße
"_CoxNPC_Wirt"-> Enable
endif
if ( CellChanged == 1 )
Disable
endif
Weisst du, wo der Fehler da ist? Ich vermute, beim "CellChanged". Du musst wissen, das bezieht sich IMMER auf den Spieler, egal wo du es benutzt. Nicht auf den NPC, auch wenn's in seinem Sript steht.
Aber anscheinend hast du ja eine ganz nette Möglichkeit gefunden.
|
|
27.07.2005, 20:06 |
|
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9269
 |
|
Zitat: Original von Hephaistos
Meine Erfahrungen mit dem CS beschränken sich auf eine kleine Mod (siehe Link in der Signatur).
Lüge 
noch n tip zu Aitravel: wenn es über zellgrenzen (exterior) gehen soll, dann darf die Strecke kaum 200 einheiten weit sein, sonst findet die engine den weg nicht - also an die grenze treten, drüber und weiter -> drei Aitravel-pakete.
noch was zum disablen: wenn der spieler es nicht sehen soll, wenn sie disabled wird, könnte eine GetLOS player - Abfrage helfen - getLOS steht für Get Line of sight, prüft also auf eine direkte Sichtlinie zwischen aufrufendem objekt und angegebenen Ziel
__________________ 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 
|
|
27.07.2005, 22:11 |
|
Coxaqha
Bard
  

Dabei seit: Juli 2005
Geschlecht: 
Herkunft: Schilda
Beiträge: 45
 |
|
GetLOS
Genau danach hab ich mir die Augen wund gesucht. Danke, werde ich auf jeden Fall noch einbauen. Für'n Moment war's ganz hilfreich, ihr beim disablen zuzusehen. Selten so viel an einem Nachmittag gelernt, wie bei diesem Script.
AITravel
Das hab ich wohl gemerkt, daß das Ding mit Vorsicht zu genießen, und nur mit Hello=0, sonst stehen sie da rum und glotzen einen an... Mit CC's Haus hab ich aber auch ne blöde Ecke erwischt, weil's eigentlich keine Koords gibt, die außerhalb des Blickwinkels und in der selben Zelle liegen. Ich glaub, ich werde sie letztends in die Kneipe gehen lassen, oder durch ne verschlossene Tür, Hauptsache der Char kommt nicht dahinter(her).
@ Henry
Das hat sich erledigt, weil es definitiv nicht möglich ist, v2 vorher zu sehen. Wichtig war letztends nur, das v1 sich in Balmora disabled, und das tut sie. Jetzt zählt nur noch der Stil (s.o.).
Ich bin grad bei meinem zweiten Boten/Führer angefangen, und hab erstmal den Schwierigkeitsgrad erhöht: er soll mich über 4-5 Zellen eskortieren (von Tel Aruhn nach Indoranyon). Und wenn das klappt gibt's noch nen kleinen CT-Überfall auf ner leeren Karte.
Gibt's eigentlich eine Möglichkeit, das der Eskorter den PC tatsächlich 'führt', also den Weg kennt und vorausgeht?
|
|
27.07.2005, 23:54 |
|
F.I.M.
Acid Monk
  

Dabei seit: März 2004
Geschlecht: 
Herkunft: 127.0.0.1
Beiträge: 2058
 |
|
Zitat: Ich glaub, ich werde sie letztends in die Kneipe gehen lassen, oder durch ne verschlossene Tür, Hauptsache der Char kommt nicht dahinter(her).
ich bin mir nicht mehr ganz sicher, aber teleport tueren koennen NPCs glaub nur in interiors durch quaeren...
Zitat: Ich bin grad bei meinem zweiten Boten/Führer angefangen, und hab erstmal den Schwierigkeitsgrad erhöht: er soll mich über 4-5 Zellen eskortieren (von Tel Aruhn nach Indoranyon). Und wenn das klappt gibt's noch nen kleinen CT-Überfall auf ner leeren Karte.
AIFallow
Zitat: Gibt's eigentlich eine Möglichkeit, das der Eskorter den PC tatsächlich 'führt', also den Weg kennt und vorausgeht?
noch nie gesehen oder von gehoehrt, wenns geht dann nur mit nem grossen script wie garak schrieb is das das AItravel ja begrentz... also ich wuerd das mit AIfallow machen, is einfacher...
__________________
Dieser Beitrag wurde von F.I.M. am 28.07.2005, 00:06 Uhr editiert.
|
|
28.07.2005, 00:05 |
 |
HenryEX
Healer
   

Dabei seit: Juni 2005
Geschlecht: keine Angabe
Herkunft: A melancholy Town where we never smile
Beiträge: 63
 |
|
Schau dir mal das "whiteguarScript" an, das macht in etwa sowas.
An einem bestimmten Punkt in einer Quest wird der enablet, wenn der Spieler nahe kommt, läuft er in Richtung Ziel los, wenn der Spieler zu weit zurück bleibt, bleibt er stehen.
|
|
28.07.2005, 00:19 |
|
F.I.M.
Acid Monk
  

Dabei seit: März 2004
Geschlecht: 
Herkunft: 127.0.0.1
Beiträge: 2058
 |
|
Zitat: Original von HenryEX
An einem bestimmten Punkt in einer Quest wird der enablet, wenn der Spieler nahe kommt, läuft er in Richtung Ziel los, wenn der Spieler zu weit zurück bleibt, bleibt er stehen.
stimmt, ganz vergessen, aber der laeuft ja nicht so weit, und wie garak schrieb muesste man da echt was zusammen schreiben das ein NPC ueber mehrere zellen laeuft...
__________________
|
|
28.07.2005, 00:25 |
 |
HenryEX
Healer
   

Dabei seit: Juni 2005
Geschlecht: keine Angabe
Herkunft: A melancholy Town where we never smile
Beiträge: 63
 |
|
Stimmt, aber das ist mal das Grundgerüst - damit der 'ne ganze Ecke weiter läuft, braucht's halt noch ne Menge Arbeit und Anpassung.
Aber nicht ich will die Mod schreiben, der Junge kann ja auch mal was tun. Is ja nicht sonderlich anspruchsvolle Arbeit, sondern recht viel, wenn man mal ein Grundgerüst hat.
|
|
28.07.2005, 00:48 |
|
Coxaqha
Bard
  

Dabei seit: Juli 2005
Geschlecht: 
Herkunft: Schilda
Beiträge: 45
 |
|
Stimmt (zum dritten)
1. White Guar ist der perfekte Ansatzpunkt (und geht auch über Zellen-Grenzen hinaus)
2. Will ich das ja bauen...
...man muß da wohl ein ziemlich enges Grid platzieren, und wär auch ganz nett, wenn ich den Mann am kämpfen halten könnte (man sollte schon so um Stufe fünf da ankommen, muß aber nicht; hab ihn jedenfalls einigermaßen stark gemacht).
Apropos 'nicht sonderlich anspruchsvolle Arbeit': Hat jemand einen Tip, wie mit dem Grid umzugehen ist? Bisher finde ich das Ding ziemlich enttäuschend, wenn man wirklich sein Grid nicht speichern und weiterbearbeiten kann.
|
|
28.07.2005, 01:16 |
|
Coxaqha
Bard
  

Dabei seit: Juli 2005
Geschlecht: 
Herkunft: Schilda
Beiträge: 45
 |
|
if ( guarfollow == 0 )
AiEscort Player 0 70685 126106 835 0
Das ist eine 'Funktion' nehm ich mal an? Autsch!
Und die Zahlen würde ich für Koords halten, dann müßten die beiden Nullen Parameter sein.
Aber solange keiner weiß, was 'guarfollow' so tut (warten ja schon mal nicht), werde ich vorerst die Finger von lassen. Schade, dann braucht mein Führer mehr Text, wenn er schon nicht voraus geht, muß der Char wissen wo's lang geht.
'guarfollow' bei Gooogle: 'meinten Sie...'; in drei anderen Bastler-Foren: null. Scheint noch nicht viel diskutiert worden zu sein.
|
|
28.07.2005, 09:25 |
|
F.I.M.
Acid Monk
  

Dabei seit: März 2004
Geschlecht: 
Herkunft: 127.0.0.1
Beiträge: 2058
 |
|
guarfallow ist vielleicht was wie "done" "doOnce" usw...
__________________
|
|
28.07.2005, 11:57 |
 |
HenryEX
Healer
   

Dabei seit: Juni 2005
Geschlecht: keine Angabe
Herkunft: A melancholy Town where we never smile
Beiträge: 63
 |
|
Schau dir doch mal den Anfang des Scripts an. Da steht:
code: short guarfollow
"guarfollow" ist ganz einfach eine lokale Variable. So in etwa das gleiche wie "doOnce" oder "state". Die Dinger (also lokalen Variablen) kann man ja nennen wie man will.
Okay, wenn du das Script grade vor dir liegen hast: Die Variable wird mit Wert 0 deklariert. Das Ding checkt also, ob "guarfollow" noch 0 ist, wie zu Anfang. Wenn der entsprechende Befehl also durchgelaufen ist (AIEscort und Journal Eintrag) wird diese Variable auf einen beliebigen anderen Wert gesetzt, in diesem Falle -1. Ist eigentlich egal, welchen Wert, hauptsache nicht 0, damit der Befehl nicht nochmal ausgeführt wird.
Eigentlich ganz simpel, denk ich, du hast da in bissl zuviel hineininterpretiert. 
[Edit] Jaja, ie's scheint, post ich zuviel... grml, Zwischenposter[/edit]
Dieser Beitrag wurde von HenryEX am 28.07.2005, 11:59 Uhr editiert.
|
|
28.07.2005, 11:58 |
|
Coxaqha
Bard
  

Dabei seit: Juli 2005
Geschlecht: 
Herkunft: Schilda
Beiträge: 45
 |
|
Zitat
[Edit] Jaja, wie's scheint, post ich zuviel... grml, Zwischenposter[/edit]
[/QUOTE]
Zitat-Ende
Nö, definitiv nicht. Auch damit hast Du mir geholfen, etwas mehr zu verstehen.
Also ist guarfollow genau das, was im Script steht? Nichts geheimnisvolles, sondern der geht da einfach hin, ohne auf den Char zu warten oder sonstwas. Und das Ziel ist wohl doch in derselben Zelle, sonst stünde da was von FollowCell oder so.
Jetzt steht mein armer Führer in einer Interior-Zelle in Tel Mora, allein das AI-scripting aus dem TelV-Dorf raus wäre der Wahnsinn für einen Neuling wie mich. Das muß ich wohl neu überdenken, wer immer zuviel will kriegt am Ende gar nichts...
|
|
28.07.2005, 13:22 |
|
F.I.M.
Acid Monk
  

Dabei seit: März 2004
Geschlecht: 
Herkunft: 127.0.0.1
Beiträge: 2058
 |
|
Zitat: Original von Coxaqha
Also ist guarfollow genau das, was im Script steht? Nichts geheimnisvolles, sondern der geht da einfach hin, ohne auf den Char zu warten oder sonstwas. Und das Ziel ist wohl doch in derselben Zelle, sonst stünde da was von FollowCell oder so.
nein guarfollow hat nicht wirklich was damit zu tun, man koennte auch stat guarflollow done, doonce oder sonst was nehmen... was den guar zum laufen bringt wird AItravel sein...
__________________
|
|
28.07.2005, 13:37 |
 |
Coxaqha
Bard
  

Dabei seit: Juli 2005
Geschlecht: 
Herkunft: Schilda
Beiträge: 45
 |
|
Genauso hatte ich's auch gemeint: Die Variable heißt wie sie will, alle Geheimnisse stehen unten im Script (natürlich als Frage). Ich wußte bis eben nicht, daß man Variablen jedweden Namen geben kann, deswegen dachte ich, hinter der guarfollow-Variblen könnte festverdrahteter Code stecken, jetzt hab ich's geschnallt...
Was bedeuten dann short und long?
Und, pardon: was bedeuten (z.B. im guar-Script) die beiden Nullen vor und nach den Koordinaten?
|
|
28.07.2005, 13:44 |
|
Hephaistos
Verschollen


Dabei seit: Februar 2003
Geschlecht: 
Herkunft: Wien
Beiträge: 2102
 |
|
Zitat: Original von Coxaqha
Genauso hatte ich's auch gemeint: Die Variable heißt wie sie will, alle Geheimnisse stehen unten im Script (natürlich als Frage). Ich wußte bis eben nicht, daß man Variablen jedweden Namen geben kann, deswegen dachte ich, hinter der guarfollow-Variblen könnte festverdrahteter Code stecken, jetzt hab ich's geschnallt...
Was bedeuten dann short und long?
Und, pardon: was bedeuten (z.B. im guar-Script) die beiden Nullen vor und nach den Koordinaten?
Natürlich kann man Variabeln benennen wie man will, ich würde sowieso jeder neuen Variabel einen neuen Namen geben um zu verhindern, daß es, bei gleichen Namen, zu Problemen mit anderen Scripts kommt. Deswegen würde ich zum Beispiel nie DoOnce, done, oder ähnliches verwenden.
Short und long definieren einfach um was für einen Typen Variabel es sich handelt. Wenn du mehr zu den einzelnen Befehlen erfahren willst, empfehle ich - nochmals - die Hilfe des CS.
__________________
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
|
|
28.07.2005, 15:47 |
|
HenryEX
Healer
   

Dabei seit: Juni 2005
Geschlecht: keine Angabe
Herkunft: A melancholy Town where we never smile
Beiträge: 63
 |
|
Nu, da ich momentan sonst nix zu tun habe...
Variablen, die du per Script deklarierst, werden nur in diesem Script benutzt. Oder sollten sie. Da man allerdings durch Dialog auch auf lokale Variablen prüfen kann, sollte man möglichst einzigartige verwenden, wie Heph sagt.
Achja, man kann Variablen als einen von 3 Typen deklarieren: short, long oder float. Je nachdem haben die Variablen dann unterschiedlichen Speicherumfang, d.h. du kannst ihre Werte unterschiedlich hoch setzen.
short -32,768 to 32,767
long -2,147,483,648 to 2,147,483,647
float 3.4E +/- 38 (7 Ziffern)
float ist die einzige, die Kommazahlen speichern kann.
AiEscort hat mehrere Parameter. So sind die aufgebaut:
code: AiEscort "[Zielperson-ID]" [Dauer] [X-Coord Ziel] [Y-Coord Ziel] [Z-Coord Ziel] [Reset]
Also heisst folgender Befehl:
code: AiEscort Player 0 70685 126106 835 0
-> Eskortiere Player für Dauer 0 (das heisst, unbegrenzt) zum Ort 70685,126106,835.
Was diese Reset-Variable macht, hat meines Wissens bisher noch keiner rausgefunden. Lass sie einfach auf null. Dauer am besten auch, der soll ja nicht einfach irgendwann aufhören.
Alternativ kannst du auch 'AiEscortCell' benutzen, um den Spieler zu einer Bestimmten Zelle zu eskortieren. Nützlich, wenn die Reise in einem Interior enden soll. Syntax geht dann folgendermassen:
code: AiEscortCell "[Zielperson-ID]" "[Zellen-ID]" [Dauer] [X-Coord Ziel] [Y-Coord Ziel] [Z-Coord Ziel] [Reset]
Na viel Spass und Erfolg.
Dieser Beitrag wurde von HenryEX am 28.07.2005, 16:13 Uhr editiert.
|
|
28.07.2005, 16:12 |
|
EbolaV
Scout


Dabei seit: Juli 2005
Geschlecht: keine Angabe
Herkunft:
Beiträge: 1
 |
|
Puh kann es sein das man fürs modden ohne ende Programmier kenntnisse brauch? Also ich will mit modden jetzt demnächst anfangen mit eigenen Meshs und so aber wenn ich das sehe wird mir schlecht das pack ich ja nie.
|
|
28.07.2005, 19:18 |
|
|