Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
21.10.2007, 13:44
Nudelsalat



Hi,

Ich hab hier im Forum nur was gefunden wie man mit mehreren Knöpfen auf verscheidene Kameras wechselt. Das ist ja auch einfach. Für jeden Knopf eine Kamera.

Ich brauche einen Knopf der in der gleichen Reihenfolge zwischen 5 Kameras hin und her schaltet.

Also:
Bildschirm steht auf Kamera 1 - Knopfdruck - Bildschirm steht auf Kamera 2 - Knopf... - Bildschirm steht auf Kamera 5 - Knopfdruck - Bildschirm steht auf Kamera 1

Ich habe mir überlegt einen math_counter immer von 1 - 5 zählen zu lassen. Ist ja einfach zu machen.

Jetzt wollte ich bei jedem Wertwechsel den Wert nacheinander durch 5 logic_compares schicken. Um zu überprüfen welche Kamera aktiviert werden muss.

So jetzt die Frage:
Mit dem OutValue reagiere ich beim math_counter und mit dem SetValueCompare kann ich ja bei nem logic_compare den Wert einstellen. Wie komme ich jetzt an den aktuellen Wert vom math_counter?

Falls jemand eine andere Idee wie man das ganze realisieren kann wäre natürlich auch ok. Oder wenn jemand im Forum nen thread gefunden hat den ich übersehen habe.

mfg
Nudelsalat

--

zum Seitenanfang zum Seitenende Profil || Suche
001
21.10.2007, 16:28
killing_dragon



Guck dir mal Richmans Testmaps an, da ist glaub ich so etwas dabei =)
http://www.richmans-maps.ch.vu/

--

www.4allrecords.de


Dieser Beitrag wurde am 21.10.2007 um 16:30 von killing_dragon bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
21.10.2007, 16:46
equivocator



Ich würd eher ein logic_case verwenden statt den logic_compare.
Den aktuellen Counter-Wert erhältst du mit OutValue

Zitat:
Aus dem Valve Developer Wiki
* OutValue <integer>

Simply sends out the math_counter's value as though it were typed into the the parameter overide field. Useful in conjunction with logic_case or func_movelinear. The change is outputed each time the value changes unless the SetValueNoFire is used.

--

zum Seitenanfang zum Seitenende Profil || Suche
003
21.10.2007, 18:38
Nudelsalat



Danke,

bei den richmans maps war was passendes dabei.

Nochmal für alle zum mitschreiben:

Man braucht:
(1) func_button
(1) func_monitor
(beliebige anzahl) point_camera
(für jedes point_camera) math_counter

--------------------------------------------
point_camera
name = camera1
-------------------------------------------
point_camera
name = camera2
-------------------------------------------
point_camera
name = camera3
-------------------------------------------
point_camera
name = camera4
-------------------------------------------
point_camera
name = camera5
--------------------------------------------
func_monitor
name = camera_monitor
Camera name = camera1
--------------------------------------------
math_counter
name = counter1
Initial Value = 0
Minimum Legal Value = 0
Maximum Legal Value = 5

Outputs:
OnHitMax camera_monitor SetCamera camera1
OnHitMax counter1 SetValueNoFire 0
-------------------------------------------
math_counter
name = counter2
Initial Value = 4
Minimum Legal Value = 0
Maximum Legal Value = 5

Outputs:
OnHitMax camera_monitor SetCamera camera2
OnHitMax counter2 SetValueNoFire 0
-------------------------------------------
math_counter
name = counter3
Initial Value = 3
Minimum Legal Value = 0
Maximum Legal Value = 5

Outputs:
OnHitMax camera_monitor SetCamera camera3
OnHitMax counter3 SetValueNoFire 0
-------------------------------------------
math_counter
name = counter4
Initial Value = 2
Minimum Legal Value = 0
Maximum Legal Value = 5

Outputs:
OnHitMax camera_monitor SetCamera camera4
OnHitMax counter4 SetValueNoFire 0
-------------------------------------------
math_counter
name = counter5
Initial Value = 1
Minimum Legal Value = 0
Maximum Legal Value = 5

Outputs:
OnHitMax camera_monitor SetCamera camera5
OnHitMax counter5 SetValueNoFire 0
-------------------------------------------
func_button

Outputs:
OnPressed counter1 Add 1
OnPressed counter2 Add 1
OnPressed counter3 Add 1
OnPressed counter4 Add 1
OnPressed counter5 Add 1
-------------------------------------------

Erklärung:
Das func_monitor zeigt zuerst "camera1" an. Beim drücken des func_button werden alle counter um 1 erhöht. Da alle counter verscheidene Startwerte (Initial Value) haben, haben nie mehere counter den selben Wert. Sobald jetzt einer der Counter nach der Erhöhung an den Maximalwert (Maximum Legal Value) erreicht hat, der für alle counter gleich ist, werden zwei Outputs ausgelöst.

1.) Der auslösende counter wird über "SetValueNoFire" wieder auf 0 gesetzt.
2.) Der func_monitor erhält über "SetCamera" den neuen Cameranamen.

Jetzt wird die point_camera auf dem func_monitor angezeigt.

Beim nächsten drücken des func_buttons erreicht ein anderer counter den Maximalwert und die camera die im Output dieses counters angegeben wurde wird angezeigt.
Das ganze geht läuft immer weiter, da die counter wieder auf 0 gesetzt werden und so erreichen diese irgendwann auch wieder den Maximalwert und werden angezeigt.

Der Maximalwert ist logischer weise gleich der Anzahl der point_cameras (wenn man die counter immer von 0 bis 5 zählen lässt).

Ich hoffe das war verständlich.

mfg Nudelsalat

--

zum Seitenanfang zum Seitenende Profil || Suche
004
21.10.2007, 18:51
equivocator



Ist das nicht ziemlich umständlich? Ich hab jetz keinen Hammer da, um das exakt formulieren zu können, aber hier mein "Plan" dazu:

1 math_counter:
initial: 0
min: 0
max: 5 (=Anzahl Kameras)

1 func_monitor:
wie oben

1 func_button:
OnPressed: counter 1 hinzufügen (triggert automatisch den outvalue, womit ich den logic_compare triggern würde)
OnHitMax: Wert wieder auf 0 setzen (auch mit outvalue triggern)

1 logic_case:
case "0" func_monitor auf camera1 setzen
case "1" func_monitor auf camera2 setzen
usw..

5 point_cameras:
wie oben

Ist zwar mehr eine gedankliche Skizze als eine wirkliche Anleitung, sollte aber funktionieren. Ich hoffe, ich hab mich nicht allzu undeutlich ausgedrückt ^^

edit: ich mein natürlich logic_case und nicht logic_compare :)

--


Dieser Beitrag wurde am 21.10.2007 um 18:55 von equivocator bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
21.10.2007, 23:29
Night Wolf



Das wird nicht so einfach funktionieren, weil ein math_counter seinen aktuellen Wert nicht per Output übertragen kann. Du bräuchtest dann wieder 5 math_counter, welche jeweils den dazugehörigen Case triggern, was dann wieder rum aufs selbe hinauslaufen würde und obendrein noch mehr Entities hätte (1x logic_case).

--

Muh sag ich da!
----------------------
All das ist thewall: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |


Dieser Beitrag wurde am 21.10.2007 um 23:31 von Night Wolf bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
22.10.2007, 00:02
equivocator



Zitat:
Aus dem Valve Developer Wiki
* OutValue <integer>

Simply sends out the math_counter's value as though it were typed into the the parameter overide field. Useful in conjunction with logic_case or func_movelinear. The change is outputed each time the value changes unless the SetValueNoFire is used.

Ich zitier mich ja ungern selber, aber laut Valve Developer Wiki tut dieser OutValue Output von dem math_counter doch genau das (seinen aktuellen Wert ausgeben).
Also einfach math_counter -> OutValue -> logic_case via Input InValue.
Und das passiert automatisch jedes Mal wenn der Wert des math_counter geändert wird. Wie gesagt, alles nur aus dem Valve Developer Wiki, da ich es im Moment ned ausprobieren kann.
Also entweder ich steh aufm Schlauch oder auf der Seite steht Scheiß. (Quelle zum Nachlesen)

Ich fände es jedenfalls reichlich bescheuert wenn das Entity diese Funktion nicht hätte...
Abgesehen davon interessiert mich das Thema jetz und ich werd ein paar Versuche dazu anstellen, sobald ich wieder n Source SDK installiert hab :)

€: Interessanten Teil hervorgehoben

--


Dieser Beitrag wurde am 22.10.2007 um 00:05 von equivocator bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
22.10.2007, 18:14
Night Wolf



Ich probiere damit gerade ein wenig rum und das Problem das ich dabei habe ist, dass ich keine Ahnung habe wie und wo man den Wert, bei der Output gefeuert wird angeben soll. Weil dort steht "OutValue <integer>" nahm ich eigentlich an, dass der Wert dahinter stehen muss. Aber egal wie ich ihn dahinter schreibe, es tut sich nichts. Interessiert mich nun auch mal, wie das ausschauen soll. ^^

--

Muh sag ich da!
----------------------
All das ist thewall: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |

zum Seitenanfang zum Seitenende Profil || Suche
008
22.10.2007, 21:04
Nudelsalat



Genau das war nämlich auch mein Problem. Ich hab ne Idee bin aber gerade nicht an nem PC mit dem Hammer Editor und komm auch erstmal nicht wieder dran. Was ist wenn man als Wert einfach mal den Namen aus dem Smart Edit angibt also für "Initial Value" (ka wie es jetzt genau heißt wie gesagt kein Hammer) "initalvalue" oder wie es eben heißt.

Ich weiß nur, dass man zum Beispiel wenn man nen trigger_teleport benutzt um z.B. Physics zu teleportieren kann man sagen OnTrigger !activator .... Vielleicht gibts ja sowas auch für den math_counter. z.B. "!value" oder so. habs halt noch nicht getestet, wäre super wenn das mal jemand ausprobiert...

--

zum Seitenanfang zum Seitenende Profil || Suche
009
23.10.2007, 19:28
Nudelsalat



Hab meine Ideen testen können, aber hat nicht geklappt...

--

zum Seitenanfang zum Seitenende Profil || Suche
010
23.10.2007, 21:19
Night Wolf



HEILIGE SCHEISSE!!! Ich hab mich heute noch einmal dran gesetzt und es FUNKTIONIERT. :D

Dabei ist es so verdammt einfach. Wie equivocator schon sagte, man braucht dazu lediglich:

1 x Trigger (ich habe einen func_button genommen)
1 x math_counter
1 x logic_case

Der func_button added nun bei jedem pressen +1 zum math_counter. Der math_counter hat folgende Outputs:

OutValue -> logic_case -> InValue
OnHitMax -> math_counter -> SetValueNoFire -> 0

An Einstellungen hat er als MaxHit noch die Anzahl, die es an verschiedenen Kameras gibt.

Beim logic_case gibts dann noch folgende Outputs:

OnCase01 -> func_monitor -> SetCamera -> point_camera
OnCase02 -> func_monitor -> SetCamera -> point_camera
.
.
.

Die Cases vom logic_case brauchen dann noch ganze Zahlen, welche dann dem aktuellen Zählwert des math_counter entsprechen, also wäre dann Case01 = 1; Case02 = 2 usw.

Und das wars dann auch schon. :)

-EDIT-

Noch eine Beispiel vmf, falls man mein Gebrabbel nicht kapiert. ^^

http://www.file-upload.net/download-459205/sdk_cameratest1.vmf.html

--

Muh sag ich da!
----------------------
All das ist thewall: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |


Dieser Beitrag wurde am 23.10.2007 um 23:13 von Night Wolf bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
011
23.10.2007, 22:41
equivocator



Aber erstmal "nee geht ned" jaja ;-)

--

zum Seitenanfang zum Seitenende Profil || Suche