Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
03.01.2001, 20:56
apfelkorn



Ich habe diesmal ein schönes Problemchen: Für den Mod Operation:Red Falcon soll ich einen Fahrbahren und schiessbaren Panzer bauen. Jetzt stehe ich am ersten Schritt (erstmal den Fahrzeugcode erstellen) und habe absolut keine Ahnung, wie ich das bewerkstelligen soll!

Jetzt muss ich überlegen, worauf ich alles achten soll:
1. Wie kann ich die Höhe und Breite des Fahrzeuges errechnen?
2. Wie kann ich feststellen, wann jetzt ein Teil des Panzers mit einer Wand in Berührung kommt?
3. Wie kann ich, wenn ich also feststelle, das ein Teil des Panzers mit der Wand in Berührung kommt, den Panzer stoppen oder entsprechend drehen?
4. Wie kann ich den Panzer bewegen?

Meine Ideen:
zu 1.: Origin-Brush in die Mitte des Fahrzeuges und dann den Boden, die oberste Stelle am Fahrzeug und die beiden Seiten errechnen (Width / 2 und Height / 2 + pev->origin o. ä.)
zu 2.: Hilfe?
zu 3.: Ich schätze mal pev->angels.y +- 10 (o. ä., hängt mit 2 zusammen)
zu 4.: Ich denke mal mit den Normalen Train-Controls und dann IN_STRAFE_LEFT und IN_STRAFE_RIGHT (o. ä.)

Ich würde mich über jede, wirklich jede Hilfe freuen, und wenn ich das ganze auch schaffe, werd ichs hier veröffentlichen...

--

zum Seitenanfang zum Seitenende Profil || Suche
001
03.01.2001, 21:02
BloodyHarry



Ich habe mal ein Vehicle Code gesehen weiss aber nich in wiefern der nützlich ist für dich hier der link:

Hier ist das kleine tut von dem ich redete

--

--< BloodyHarry >--

zum Seitenanfang zum Seitenende Profil || Suche
002
03.01.2001, 23:08
Zeeke



Hier ist ein Tut, sogar von einem deutschem Coder :)
Es ist von Rockefeller.

http://clanhosting1.counter-strike.de/~topclan/sit/vehicles/steering.html

Dieses Tut ist schon weiter als das von BloodyHarry genannte...

Am besten du guckst mal in das Coding-Forum von www.planethalflife.com/wavelength

Eigentlich ist das ganze doch leichter, wenn man den Panzer wie bei Gunman als Model macht, dann ist es doch sogar viel einfacher, oder?

Ciao

--

zum Seitenanfang zum Seitenende Profil || Suche
003
03.01.2001, 23:48
Hellfire



Ich würde auch mal denken, dass es mit models einfacher wäre. Für die normalen Playermodels existiert ja bereits eine Kollisionsabfrage. Man müsste halt einen neuen Movetype erstellen...
Außerdem verwenden die beim HL-Rally team auch Models.

--

zum Seitenanfang zum Seitenende Profil || Suche
004
04.01.2001, 04:01
Another1



jo, mit models is das einfacher und leichter, nur das dann die mapper nit mehr so viel machen könnten, oder , naja, man könnte si ja auch das model auswählen lassen =) mhh, naja, für "erweiterte hilfe" würd ich auch immer mal im wavelength coding forum nachschauen, da geht mehr ab =)

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
005
04.01.2001, 08:47
apfelkorn



gut, aber das Problem ist immer noch, das der Spieler das Fahrzeug drinnen sitzend steuern soll

--

zum Seitenanfang zum Seitenende Profil || Suche
006
04.01.2001, 18:14
feigling



@ Apfelkorn,
also ich kann dir jetzt kein Programmcode geben oder irgendwelche Variabelnamen, da ich selber gerade erst anfange, C++ zu lernen.
Ich versuche, dir mal meine Ideen zu schreiben, wie ich das anfangen würde. Wenn nicht stimmt, sorry.
Also :
Wenn du Gunman hast, kannst du dir ja mal in WorldCraft angucken, wie die das ins Level gebracht habe (ist glaube ich auch ein Prefab hier auf thewall). Die haben das so gemacht, dass die playermodel gegen das Panzermodell ausgetauscht wird. So hat man dann schonmal optisch einen Panzer.

Zu Frage 1:
Vielleicht könnte man die Größe des Panzers in WorldCraft (in jedem Level) immer gleich lassen, so dass man nicht die Größe berechnen muss, sondern gleich die Größe den Variabeln zuweisen kann. In WorldCraft messen und den Variabeln zuweisen. So das man immer eine feste Größe hat, die dann nicht immer für den Aufprall oder ähnlichem berechnet werden müsste.

Zu Frage 2:
Man könnte ein Entity machen, dass den Kern des Panzers darstellt( wie Origin), also dass man in WC aus Blöcken den Panzer baut, den zu einem Entity macht und den Block dann im Spiel überdeckt mit dem Panzermodell, so dass man von dem Entity nichts mehr sieht.
Diesem Entity fügt man dann den func_train Code hinzu und verändert ihn. Das Panzermodell wird genau über das Panzerentity gelegt , so dass es immer an der gleichen stelle ist. Wenn man dann in den Panzer einsteigt, dann wird von der Egoperspektive in die Perspektive gewechselt, bei der man das Panzermodell von hinten gut sehen kann.

zu 3 und 4:
Den Panzer mit dem Code von func_train steuern, aber dort die path-Verweise löschen und mit Code überschreiben, der überprüft, ob der Benutzer eine Taste drückt -> müsste auch im func_train code stehen, da man den Zug ja auch schneller machen kann. So könnte man vielleicht das Vorwärts und Rückwärtsfahren bewerkstelligen. Das mit dem Lenken vielleciht, indem man den Code kopiert, der dafür zuständig ist, dass sich der Player bewegt und ihn verändert, dass es mit der Panzerperspektive stimmt, also dass der Panzer sich nicht total nach rechts oder links dreht sondern vielleicht zwei nach vorne und einen nach rechts oder links.
Man könnte den Panzer mit dem Befehl stoppen, der auch den func_train stoppt. Dann deaktiviert man den Button( Pfeiltaste nach vorne ), mit dem man den Panzer weiter in die Wand fahren würde und aktiviert ihn erst, wenn das Panzerentity eine bestimmte Weite von der Wand entfernt ist.

Also ich hoffe, ich habe dir ein bisschen geholfen und dir ein paar Ideen gegeben, aber es tut mir leid, wenn ich nicht mit Programmcode dienen kann, da ich selber versuche, den Programmcode von Half-life zu verstehen.
Also ich hoffe, du bekommst das hin mit dem Panzer.
Viel Spaß noch !

--

zum Seitenanfang zum Seitenende Profil || Suche
007
04.01.2001, 18:40
Another1



manöooooo, warum hört hier keiner auf mich!!! schaut mal ins wavelength coding forum (link weiter oben im letzten post!) da is schon ne fette diskussion im laufen, und Krazy Rockefeller hat auch schon ein tutorial über "einfach nur vehicles, die man steuern kann", Krazy wird ein tutorial rausbringen, was darauf basiert!, da kann man dann auch richtig gegn wände fahren, und das auto kann kippen und viel mehr cooles zeugs. Ich weiß, selbst überlegen macht fun, aber naja, ihr müsst das tut ja nicht benutzen, hilft euch eben nur weiter!

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
008
04.01.2001, 20:07
apfelkorn



@feigling: Das sind viele gute ideen... echt...
@another1: ich beobachte schon die ganze zeit was da abgeht...

--

zum Seitenanfang zum Seitenende Profil || Suche
009
04.01.2001, 20:30
Another1



Naja, hab noch nie nen post von dir g'sehn =) (Nickname?)

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
010
05.01.2001, 00:05
feigling



Jetzt echt, die sind gut ? Ich habe mich gestern extra hingesetzt und mal überlegt, wie man sowas machen könnte. Idee bracht man halt, um zu coden.
Nur bei mir mangelts am Coden, da C++ nicht gerade leicht zu lernen ist.
Ich hoffe, die Ideen können dir wenigstens helfen.

--

zum Seitenanfang zum Seitenende Profil || Suche
011
05.01.2001, 00:47
apfelkorn



@feigling: Deine Idee zu Punkt 1 habe ich direkt eingebaut und damit das Kollisionsdetectionssystem erstellt (zumindest die Grundlage) bei Punkt zwei wäre das wahrscheinlich ein sehr großer Aufwand und nur kompliziert zu realisieren. Das mit 3 und 4 habe ich teilweise eingebaut. Ich habe auf jeden Fall als Grundlage dafür den Steuerungscode für func_tracktrain benutzt und kopiert und umgeschrieben.

Das Kollisionssystem werde ich aber noch verfeinern, nur mein Problem bleibt, wie ich den Panzer (soll später einer werden) in der Schräglage an die Grundfläche anpasse (Prefect??? Hilfe?)

@another1: ich bin ein stiller Beobachter!

--

zum Seitenanfang zum Seitenende Profil || Suche
012
05.01.2001, 13:04
DarKnight



Hi!

Hmmm.... Ich finde aber damit ist es noch lang nicht getan. Ihr wollt doch wohl nicht so eigenartige Fahrzeuge wie in CS? Also muss da noch ein Physiksystem extra für die Fahrzeuge rein. Vielleicht kann man ja mal den Macher des Turbo MODs rfragen. Der hat da wirklich ein beinahe perfektes Physiksystem gebastelt. Allerdings verstehe ich selbst auch nichts so viel von Gravitation und Bremswirkung usw. Ich würde dann die komplette Bewegungsfunktion mit Physik ausstatten. Das wär viel realistischer.

Das wars auch schon.

--

void CHudSayText :: EnsureTextFitsInOneLineAndWrapIfHaveTo( int line ) -- Aja?

zum Seitenanfang zum Seitenende Profil || Suche
013
05.01.2001, 15:47
Another1



naja, mit der an grundfläche anpassen is nit SO schwer, du kriegst die normale der fläche mit ner traceline nach unten, und dann einfach nur noch das vehicle anpassen!

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
014
05.01.2001, 16:16
feigling



So schnell hast du die Ideen gecodet ?
Wow, ich hatte mir das mit dem Coden schwieriger vorgestellt und das man dafür einige Wochen braucht. Nicht schlecht. Mach weiter so.
Mit dem Schießen habe ich noch eine Idee.
Wenn der Panzer schießen soll, da mach das doch so :
Du hast ja schon die Größe vom Panzer in WorldCraft. Ich denke mal du hast auch ein Origin-Objekt für den Mittelpunkt drin. Mess einfach die Weite vom Origin zum Ende des Panzerlaufes. Dann hast du den Punkt, wo Munition rauskommen soll. Kopier doch dann in deinen Code den Code vom func_tank und verändere ihn. Da du ja die Größe vom Panzer hast, kannst man doch sicher auch programmieren, dass wenn man auf die Feuertaste drückt, dass dann an einer bestimmten Position (hier Lauf von Geschützturm) ein Modell von Munition dargestellt wird, dass dann wegfliegt.

So wird die Munition vor dem Lauf gespawnt und dann in die richtige Richtung geschickt und man hat schonmal optisch einen schießenden Panzer. Und ich denke mal, es wird nicht so schwierig sein, das zu programmieren, dass das Model am Endpunkt weggeht und dafür eine Explosion gemacht wird. (siehe Granate von MP5)
Ich hoffe, diese Idee bringt dir auch irgendwas.
Probier es einfach mal. Ist ein Versuch wert.

--

zum Seitenanfang zum Seitenende Profil || Suche
015
06.01.2001, 00:13
apfelkorn



@another1: genau das ist mein problem: ich sitze am anpassen an die grundfläche hier schon 2 Tage lang dran... Kanns du mir nicht dabei irgendwie helfen???

@feigling: schiessender Panzer: jein! Ich habe mir das so vorgestellt, das wenn der Spieler auf dem Panzer sitzend Feuer drückt, dass dann auf der Höhe des Spielers je nachdem wohin er schaut dann am Ende, wo er hinsieht eine Explosion erstellt, denn solche geschosse sind ja relativ schnell

--

zum Seitenanfang zum Seitenende Profil || Suche
016
06.01.2001, 00:36
Another1



naja, mach ne

UTIL_TraceLine von vehicle origin 256 units nach unten (pev->origin TO pev->origin + Vector(0,0,-128); und dann schau ob tr.flFraction < 1 is und dann mach einfach tr.planeNormal (oder wie das heist, such einfach mal ein wenig =)) und rechne dann mit der plane normal irgendwie die neue ausrichtung aus =)

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
017
06.01.2001, 10:18
apfelkorn



ja ne, schon klar, aber genau da bin ich hängen geblieben... wie kann ich jetzt den Winkel, den ich durch tr.planeNormal (oderwieauchimmer) auf das Fahrzeug übertragen...

--

zum Seitenanfang zum Seitenende Profil || Suche
018
06.01.2001, 20:03
Prefect



Ein bißchen OT, aber mir ist gerade wieder was von vor 5 Monaten eingefallen. Eigentlich ist das courtesy of Masterstroke mit Hilfe von Valve, aber:

Model A zu Model B-Kollisionen gehen normalerweise nach den BBoxes der Entities. Es gibt aber anscheinend einen Trick mit dem von Model B (also dem unbeweglichen Model) nicht die BBox, sondern die eigentlich Polygone für die Kollision verwendet werden. Dafür muß beim Kompilieren des Models die Zeile

$flags 768

in die .sc-Datei des Models eingefügt werden.

Und noch einen guten Rat: Exakte BSP-zu-BSP Kollisionen sind unmöglich. Was auch immer ihr mit euren Autoles treibt, es wird immer imperfekt sein *g*

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
019
06.01.2001, 20:53
TheTinySteini



Naja, solange das Auto nur ein Quader oder so ist, kann man zumindest theoretisch ein ziemlich gutes Kollisionsmodell machen. Das Problem ist nur, wenn man zum Beispiel ein Auto hat, was mit der Motorhaube und so gerade so unter einer Schranke hindurchpasst, aber spätestens an der Windschutzscheibe hängen bleiben würde. Da kriegt man ne realistische Kollisionsabfrage sicher nich hin (also zumindest dann nicht, wenn das Auto vom Mapper gestaltet werden kann)

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
020
06.01.2001, 21:02
Another1



Naja, das mit den autos is echt ein problem, aber ich habe ne idee wie man das auto auf na surface ausrichten könnte: einfach traceline nach unten von jedem rad aus, und dann solagne die angles ausgleichen, bis ungefähr alle gleich lang sind, dann hat man gleich noch sone art "rad-modell" dabei!

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche