Armed-Assault.de Twitter


Editing The world is a Script - write it!

Antwort
 
Themen-Optionen Ansicht
Alt 07.10.2008, 19:44   #1 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard Dialog (zw. NPC und Spieler)

Ich hab vor eine kleine Mission zu machen in der man sich mit anderen Söldnern unterhalten kann und dabei mehrer Auswahlmöglichkeiten hat.

So schaut mein Skript aus:
Code:
; ****************************************************************
; Script file for Armed Assault
; Created by: Cyborg11
; ****************************************************************

~4

#Start
? (weiter==0) : goto "dialog";
? (weiter==1) : goto "dialog1";

;Startdialog
#dialog
titletext ["Was willst du?! Ich gebe dir 10 Sekunden um zu antworten!", "plain"];
~2
auf = player addaction ["Ich bin wegen einem Auftrag hier.", "dialog.sqs"];
~3
goto "weiter";

#weiter
goto "dialog1";

#dialog1
player removeaction auf;
titletext ["Wir haben keinen Auftrag für dich und jetzt verzieh dich!","plain"];
Nur es funktioniert nicht so wie ich will =( Ich will nicht mehrere Skripte benutzen nur um einen Dialog zwischen einem NPC und dem Spieler zu erstellen, deshalb wird bei der addaction auch nochmal das Dialog.sqs Skript aufgerufen.

Problem: Wenn ich meine Aktion anklicke, dann kommt wieder der Anfangstext mit "Was willst du?!" und nicht der Text beim Abschnitt #dialog1. Obwohl ich ja mit den goto's und den Stoppzeiten das eigentlich ausgleichen müsste ..

Wüsste jemand wie ich so einen Dialog mit Auswahlantwortmöglichkeiten des Spielers erstellen kann ohne dass ich mehrere Skripte brauche? Wenn es doch nicht mit einem Skript geht, dann muss ich mir etwas einfallen lassen, weil bei mir werden es dann wieder nur übelst viele Skripte ^^

Ich hoffe, ihr wisst was ich meine und ich hoffe auch, dass ihr mir helfen könnt

Bedanke mich schonmal im Voraus
Cyborg11 ist offline   Mit Zitat antworten
Alt 07.10.2008, 20:06   #2 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 78
Beiträge: 6.547
Standard

Ersetze

Code:
auf = player addaction ["Ich bin wegen einem Auftrag hier.", "dialog.sqs"];
mit

Code:
auf = player addaction ["Ich bin wegen einem Auftrag hier.", "dialog.sqs", 1];
(Beachte die zusätzliche 1 hinter "dialog.sqs".)

Und am Anfang des Scripts:

weiter = _this select 3;

Aufruf des Scripts beim ersten mal z.B. mit:
Code:
auf = player addaction ["Ich bin wegen einem Auftrag hier.", "dialog.sqs", 0];
Es ist bei addAction möglich, mehrere Parameter zu übergeben, also nicht nur den Action Menü Eintrag und das Script.

Siehe auch hier:

Category:Scripting Commands - Bohemia Interactive Community

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.
Xeno ist offline   Mit Zitat antworten
Alt 07.10.2008, 20:50   #3 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Ich will aber das der Spieler die Action erst nach dem "Was willst du?!"-Text kommt ^^ Muss dann 0 oder 1 hin? Und was bringen die Argumente? Müsste dort nicht eigentlich weiter = 1 oder sowas stehen? Der erste Skriptstart wird durch einen Auslöser ausgelöst, dann kommt der Text, den der Söldneranführer plappert (z.Z. "Was willst du?! ...") und dann soll der Spiel die Auswahlmöglichkeit haben (z.Z. nur eine Möglichkeit).

Warum eigentlich weiter = _this select 3 ? Skript wird ja per Auslöser gestartet und in der init ist die Variabel weiter mit 0 definiert


Ah! Jetzt verstehe ich! Wenn ich also weiter = _this select 3 nehme, dann nimmt weiter den Wert an, den man als Argument dort gesetzt hat. Das Problem ist halt nur, dass es per Auslöser ausgelöst wird

Hab mal was neues probiert:
Code:
~4

#Start
? (weiter==0) : goto "dialog";
? (weiter==1) : goto "dialog1";

#dialog
titletext ["Was willst du?! Ich gebe dir 10 Sekunden um zu antworten!", "plain"];
~2
auf = player addaction ["Ich bin wegen einem Auftrag hier.", "dialog.sqs"];
~3
goto "weiter";

#weiter
weiter = 1;
goto "Start";

#dialog1
player removeaction auf;
titletext ["Wir haben keinen Auftrag fuer dich und jetzt verzieh dich!","plain"];
Problem: Nun wird der Abschnitt dialog1 2x ausgeführt, also ich kriege 2x die Meldung, dass die keinen Auftrag für mich haben. Was ist denn jetzt wieder falsch? =(
Cyborg11 ist offline   Mit Zitat antworten
Alt 08.10.2008, 14:02   #4 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Neues probiert:

Auslöseraktivierung:
Code:
auf2 = player addaction ["Hey!", "dialog.sqs",0,0];
dialog.sqs
Code:
#Start
~2
weiter = _this select 3;
varexit = _this select 4;
hint format ["weiter: %1\nvarexit: %2", weiter, varexit];
player removeaction auf2;
? (weiter==0) : goto "dialog";
? (weiter==1) : goto "dialog1";

#dialog
titletext ["Was willst du?! Ich gebe dir 10 Sekunden um zu antworten!", "plain"];
~2
auf = player addaction ["Ich bin wegen einem Auftrag hier.", "dialog.sqs",1,1];
hint format ["weiter: %1\nvarexit: %2", weiter, varexit];
? (varexit == 1) then {exit};
goto "Start";

#dialog1
player removeaction auf;
titletext ["Wir haben keinen Auftrag für dich und jetzt verzieh dich!","plain"];
Funzt auch nicht = (
1. Wird kein Wert bei varexit angezeigt (<null> wird angezeigt)
2. Das Skript fängt immer wieder von ganz vorne an, anstatt den wert von weiter auf 1 zu setzen um zum 2. Dialog zu kommen <.<
Cyborg11 ist offline   Mit Zitat antworten
Alt 08.10.2008, 15:10   #5 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 78
Beiträge: 6.547
Standard

Du denkst falsch

Number = Unit addAction ["title", "filename", arguments, priority, showWindow, hideOnUse, "shortcut"]

arguments kann entweder ein Wert sein oder wenn Du mehrere Werte übergeben möchtest, dann als Array. Sprich, die arguments sind immer nur _this select 3. Wenn Du zwei Werte übergeben möchtest, dann [0,1] und das _this select 3 ist in diesem Fall ein Array welches auch wieder mit select x ausgelesen werden muss.

Der vierte Parameter den Du übergibst, ist bereits die priority mit der die action im Menü eingefügt wird.

Lange Rede, kurzer Sinn... So sollte es gehen...

In den Auslöser folgendes rein:
Code:
auf = player addaction ["Hey!", "dialog.sqs",0];
dialog.sqs:
Code:
~2
_weiter = _this select 3;
player removeaction auf;
? (_weiter==0) : goto "dialog";
? (_weiter==1) : goto "dialog1";

#dialog
titletext ["Was willst du?! Ich gebe dir 10 Sekunden um zu antworten!", "plain"];
~2
auf = player addaction ["Ich bin wegen einem Auftrag hier.", "dialog.sqs",1];
exit

#dialog1
titletext ["Wir haben keinen Auftrag für dich und jetzt verzieh dich!","plain"];
Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.
Xeno ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Nur ein Spieler darf das DirtyHarryTPC Editing 3 23.09.2008 10:39
Spieler suchen Spieler ic3dog Die Litfaßsäule 2 09.08.2008 17:33
Spieler im Mp und Mods? Sgt.Price Community 4 08.07.2008 19:42
Respawn Dialog anpassen Hannibal Editing 2 24.06.2008 05:03
Probleme mit Dialog Oberflächen FireBlade Editing 8 21.03.2003 13:19


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116