PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Flowgraph im Multiplayer



FHG
15.12.2008, 14:03
Ich suche nach einigen Lösungen per FG oder Scripte für eine MP-Modifikation (basierend auf Modus Power Struggle):

1. Panzerfahrzeuge sollen nach dem Verlassen nicht automatisch zerstört werden.
2. Fährt ein beschädigtes Panzerfahrzeug zur Reparatur (ausgelöst per Trigger), dann sollen Damage und Ammo neu gesetzt werden.
3. Gibt es ausser mit 'Start' noch die Möglichkeit bei 'OnInit' (z.B. beim Respawn) per FG Aktionen zu steuern?
4. Wie deaktiviere/aktiviere ich ein 'Advanced Door' per FG?

:?:

Sensman
15.12.2008, 14:07
Bei den Advanced doors kannst du doch einfach "locked" einstellen oder nicht?:-)

FHG
15.12.2008, 14:09
Ne, das bleibt dann so und geht nicht (funtzt nur im Editor).

Blue
15.12.2008, 16:12
Ich suche nach einigen Lösungen per FG oder Scripte für eine MP-Modifikation (basierend auf Modus Power Struggle):

1. Panzerfahrzeuge sollen nach dem Verlassen nicht automatisch zerstört werden.
Hi du, habe bisher nur mit dem sdk gebastelt, daher kann ich dir nicht mit sicherheit sagen das ich mit der LUA Info richtig liege, aber wenn ich hier unter:


\Electronic Arts\Crytek\Crysis\Game\Scripts\GameRulesin die Datei: PowerStruggle.lua

gehe, findet man zu Anfang diesen eintrag:



PowerStruggle.VEHICLE_CLAIM_TIME = 90; -- seconds to claim a bought vehicle
Wenn ich mir dann noch die Methode UpdateUnclaimedVehicles angucke, findet sich dort ein Eintrag der das entfernen von unbesetzten Fahrzeugen "verursacht" (böse böse das ;) ).
Ich schätze also das man mit ner erhöhung der ClaimTime die Fahrzeuge länger im Spiel hält. Ist halt von Nachteil das ich bisher noch nie Online gespielt habe und somit nicht weiß ob sich die Fahrzeuge automatisch in die Luft sprengen wenn du aussteigst. ^_^



Habe hier mal in der Methode die drei Teile markiert mit denen man Quick & Dirty dafür sorgen könnte das die Fahrzeuge garnicht mehr entfernt werden.




function PowerStruggle:UpdateUnclaimedVehicles(frameTime)
for id,v in pairs(self.unclaimedVehicle) do
v.time=v.time-frameTime;
if (v.time<=0) then
-- inform the player
self.game:SendTextMessage(TextMessageInfo, "@mp_UnclaimedVehicle", TextMessageToClient, v.ownerId, g_gameRules:GetItemName(v.name));
-- refund
local price=self:GetPrice(v.name);
if (price and price>0) then
self:AwardPPCount(v.ownerId, math.floor(self.ppList.VEHICLE_REFUND_MULT*price+0 .5));
end

System.RemoveEntity(id);

self.unclaimedVehicle[id]=nil;
end
end
end


1) Hier könnte man einfach dafür sorgen das die Zeit nicht abläuft...

v.time=v.time-frameTime;2) Ohne Remove, kein Fahrzeugschwund. Wenn man also diese beiden hier deaktivieren würde... ;)

System.RemoveEntity(id);

self.unclaimedVehicle[id]=nil;
Korrigiert mich wenn das so nicht geht oder Falsch ist, lerne gerne was dazu.


gruß Blue

Pat21
15.12.2008, 16:17
Ich dachte, "Advanced Doors" gehen nicht im MP ?

Roberi
15.12.2008, 16:18
Schau mal hier:

http://www.crymod.com/thread.php?threadid=13887

Da steht schonmal, was nicht geht. Advanced Doors scheinen auch nicht zu funktionieren :(

Pat21
15.12.2008, 17:19
@ Roberi
Ja, die Liste kenne ich. :D

@ FHG
FG im Multiplayer ist wirklich sehr eingeschränkt. Hoffe mal, dass
Crysis da etwas ändern wird und uns ein paar neue MP-Nodes
liefert. :D

FHG
15.12.2008, 19:03
@Blue, die Power Struggle LUA habe ich schon verändert. Die Fahrzeuge kann man damit länger am Leben halten aber sie werden nach Verlassen zerstört. Das ist im C++ Code geregelt und wenn keine FG-Schnittstellen dafür da ist, komme ich nicht daran.

Advanced Doors habe ich am Laufen, nur das Steuern auf aktiv/inaktiv geht nicht. Genauso benutze ich Proximity Trigger (z.B. für verminte Bereiche und Steuerungen), die gehen unter Crysis aber nicht unter Wars.

Hallo Crytek! .. bin ja schon still.

Roberi
15.12.2008, 19:46
Hast du deine FG Konstellation auch mal auf einem Dedicated Server ausprobiert? Denn da funktioniert fast kein FG, bei Selbsterstellten funktioniert noch ein Großteil.

FHG
15.12.2008, 19:57
Das weiß ich Roberi.

Mein Projekt ist für LAN ausgerichtet.
Vielleicht wird es einmal die Basis für "das Mögliche".

Vier Jahre gute Erfahrung mit Crytek läßt die Hoffnung nicht sterben, denn die Vergangenheit war wirklich sehr positiv - sonst wäre ich nicht mehr dabei.

Gekleckert wird nicht, alles oder nichts!

Blue
15.12.2008, 20:23
@Blue, die Power Struggle LUA habe ich schon verändert. Die Fahrzeuge kann man damit länger am Leben halten aber sie werden nach Verlassen zerstört. Das ist im C++ Code geregelt und wenn keine FG-Schnittstellen dafür da ist, komme ich nicht daran. Ok danke für die Info, das ist gut zu wissen. Die gehn also in die Luft wenn man aussteigt? Das muss ich mir bei Gelegenheit mal angucken wenn ich wieder im Code rumschmökere. ... So mal reingeguckt, bereits in der VehicleBase gibts ne Release Methode mit ner Delete Anweisung. Hab mal ein wenig drum rum geguckt, das könnte es sein (wird aber zigfach vererbt bzw. es gibt massig gleichnamige Methoden -_- ). Wenn ich die Woche mal zeit habe guck ich noch mal genauer rein, vieleicht ist es ja garnit so schwer zu lösen.

Was die Advanced Doors angeht, hast du die speziell Modifiziert oder wie hast du die lauffähig gemacht? Hab da vorhin mal reingeguckt und es scheint als wären in den lua Files nur die Serverseitigen Events geregelt, kann es sein das die nur den Client Part vergessen haben? Oder müssen die noch fürs Netzwerk speziell in C++ Serialisiert werden?
Hab mich in Netzwerksachen für MP Anwendungen bisher noch nicht wirklich eingearbeitet da ich meine Zeit mit anderen Sachen verbracht hab... aber wenn jemand Ahnung hat, warum ihm nicht ein paar fragen stellen? ;)

gruß Blue

FHG
20.12.2008, 10:04
@Blue, lass Dich nicht verwirren.
Was in den Scripten steht ist nicht zuverlässig und wird oft überhaupt nicht verwendet (Files aus 2004).
Ein lustiges Beispiel hier:

http://www.abload.de/thumb/scriptswl1d.png (http://www.abload.de/image.php?img=scriptswl1d.png)


Egal, das Modding für Crysis MP macht mir langsam keinen Spaß mehr. Es gibt nur Einschränkungen und keine Möglichkeiten, ganz einfache Anforderungen zu realisieren.

... oder sehe ich langsam den Wald vor lauter Bäumen nicht mehr?

Beispiel:
Ich benötige die Entity-ID des Fahrzeugs, dass in einen Shape fährt.

Hilfen und Hinweise hier aus dem Forum (Danke Hamers) haben mich zum Flowgraph Plugin - Iterator1 geführt, was diese Information liefern soll. Hier mein Versuchsbeispiel (einfahren und Motor aus):

http://www.abload.de/thumb/idyvre.png (http://www.abload.de/image.php?img=idyvre.png)

Name: Iterator:GetEntitiesInArea

Purpose: Generates a list of entities contained in the defined shape.

In: Start - (Any) Call to generate the list and start iterating.
Next - (Any) Call to get the next entity in the list.
Limit - (Int) Limit how many entities are put in the list.
Immediate - (Bool) TRUE to iterate through immediately.
Type - (Enum) Specify which types of entities to gather.
Area - (String) Name of the shape.

Out: Entity - (EntityId) Next entity in the list.
Count - (Int) Current count of iteration.
Done - (Int) Called when last entity is returned, total count.

Remarks: Limit allows you to control how many entities are gathered into
the generated list. A limit of '0' means "give me all."

Immediate means you want to have all of the entities found to
be outputted right after you call Start. This is a shortcut to
avoid having to call Next each time you want to handle the next
entity in the list.

For the area, you can use either a Shape, AreaBox or AreaSphere.

------

Soweit die Beschreibung dazu.
Ich habe bereits alle möglichen Kombinationen der Parameter und andere Vergleichslogiken versucht. Da komme ich nicht weiter, der Motor läuft und läuft.
:-(

Der FG ist nur ein Ausschnitt!
Da werden alle Panzerfahrzeuge abgefragt (im Bild ist zufällig ein APC) - das ist nicht der Fehler.

Pat21
20.12.2008, 10:12
@ FHG
Wenn du aber mit der ID des Fahrzeuges doch schon arbeitest,
dann könntest du es doch auch so machen:
http://www.abload.de/img/qe3rsf.jpg (http://www.abload.de/image.php?img=qe3rsf.jpg)
Bei dem "ProximityTrigger" musst du in den Eigenschaften
noch die Eigenschatf "OnlyPlayer" auf "Flase" setzen. :D

FHG
20.12.2008, 11:18
@Pat21, ich weiß doch nicht welches der Fahrzeuge es gerade ist, dass in den Shape fährt.

Pat21
20.12.2008, 11:28
@ FHG
Ist schon klar.
Aber bei deinem FG überprüfst du ja auch mit einem "EntityID"
und einem "Math:Equal", ob die ID, die du von dem "Iterator" bekommst,
gleich ist mit der ID des Fahrzeuges. Genau das gleiche macht auch
mein FG. :D

Habe es mal mit dem Iterator gemacht:
http://www.abload.de/img/qeguer.jpg (http://www.abload.de/image.php?img=qeguer.jpg)
So wird jedes Fahrzeug, welches den Bereich befährt, ausgeschalten.

FHG
20.12.2008, 11:59
... die du von dem "Iterator" bekommst ...

:D da bekomme ich ja nix!

Habe Deinen letzten Vorschlag mal probiert - kommt auch nix.

Ich benötige die ID des Fahrzeugs um:

1. es aus zuschalten (ist nebensächlich).
2. zu reparieren.
3. die passende Munition nach zu laden.
4. und noch etwas mehr, sage ich jetzt aber nicht. :wink:

Die ID's sind beide vom Typ 'integer' und das sollte man vielleicht mal im HUD debuggen (umwandeln in einen String). Wenn es bei Dir funktioniert, habe ich einen Fehler in meiner Laufzeitumgebung - das wäre dann mal eine Spur.

Schon mal Danke, dass Du mitdenkst !!! :p
Alleine übersieht man schnell die einfache Macke,,,,

Pat21
20.12.2008, 12:12
@ FHG
Du brauchst die "ID" des Fahrzeuges, welches in das Shape fährt ??
Ja, das würde sogar mit einem "ProximityTrigger" gehen.
Könnte man so machen:
http://www.abload.de/img/qeuj56.jpg (http://www.abload.de/image.php?img=qeuj56.jpg)
(Geht aber nur, wenn nicht mehrere Fahrzeuge gleichzeitig in das Shape fahren.)


Der FG, den ich dir vorhin gepostet habe (den mit dem Iterator),
funzt bei mir einwandfrei. Kannst du mal deinen posten, vllt ist ja nur ne
Kleinigkeit falsch. :D

Cry|loud
20.12.2008, 12:47
Das wird alles nichts bringen, was Ihr hier versucht haben schon einige andere im Multiplayer versucht, man müsste die ganzen Scripts für den MP umcoden...
Irgendein MOD Team hatte doch mal vor dies zutun, gibts das noch ?

Vielleicht könntest du mit denen dann zusammenarbeiten falls das Team nicht schon längst aufgelöst ist

FHG
20.12.2008, 13:10
@Cry|loud, die DLL's --> wird Crytek noch machen (wenn alles tot ist).

@Pat21, Du hast mir jetzt auf das Pferd geholfen!

Ein Fahrzeug fährt ein (ich selektiere nur Vehicles!).

#784 ist der APC
#30583 das bin ich als Player (Ergebnis vom Iterator)

Der Vergleich ist 'false' :roll:
Bug in der Node. Bin doch kein Panzer:lol:

Cry|loud
20.12.2008, 14:27
Die sollen aber jetz funktionieren =)

FHG
20.12.2008, 15:17
... Irgendein MOD Team hatte doch mal vor dies zutun, gibts das noch ?
Vielleicht könntest du mit denen dann zusammenarbeiten falls das Team nicht schon längst aufgelöst ist
Ja, da war unser Meister-Coder Ghost2000 mit seiner Entwicklung eXcaliTrone (http://farcry.crymod.com/thread.php?threadid=9330) für FarCry. Bei Crytek sollte er auch offiziell den MP-Mode verbessern! Leider hat er nicht nur unser Team verlassen, sondern seine Leistung in die eigene berufliche Karriere gesteckt - was im 'echten' Leben wichtiger ist. Nachwuchs braucht Zeit und da ist zur Zeit wenig zu finden. Unser LiVe sieht auch (richtiger Weise) seinen Schwerpunkt in dem Insani-Projekt (http://crysis.4thdimension.info/forum/showthread.php?t=9784). Somit muß bei uns jeder als Einzelkämpfer alle Bereiche abdecken.

... aber wir arbeiten ja alle nur aus Spaß an der Sache!

Eine Community-Mod ist nicht realisierbar, das weiß ich aus der Vergangenheit.
Das nötige, professionelle Management funktioniert nicht im 'Freizeitbereich'.

/FHG

P.S. Werde mir mal die letzte Version von 'Iterator' ziehen und schauen.

Pat21
20.12.2008, 15:19
@ FHG
Genau das selbe kommt bei mir auch. Erst die ID des
Fahrzeuges und dann meine. Aber irgendwie funktioniert das
bei mir trotzdem. :D

FHG
20.12.2008, 15:27
Ja klar, Du gehst von der anderen Seite auf die Suche:
- was macht mein bekanntes Fahrzeug?
- dann Aktion.

Meine Anforderung:
- wer ist in dem Bereich?
- wie ist die Zuordnung und welche Aktion ist gefordert.

_Juls_
11.03.2009, 14:06
da ich hier gelesen habe das der fg im mp stark eingeschränkt ist, frag ich hier mal nach bevor ich mir die ganze mühe mache.

ist es möglich für den mp etwas zu realisieren wie auf der map island (wenn man die map verlässt wird man ja von den schiffen aus abgeschossen), dass ein geschütz eine lenkrakete auf ein bestimmtes entity abfeuert?

gibt es ein node mit dem man geld/prestigepoints "abbuchen" kann, weil eine eigene waffe bauen, und diese ins kaufmenü einbinden is glaub ne nummer zu groß.

und ist der trackview auch eingeschränkt?

gruß juls

Blue
11.03.2009, 14:48
ist es möglich für den mp etwas zu realisieren wie auf der map island (wenn man die map verlässt wird man ja von den schiffen aus abgeschossen), dass ein geschütz eine lenkrakete auf ein bestimmtes entity abfeuert?glaube das ist mit forbbiden area gelößt. man kann auch auf bestimmte entitys "schießen lassen", aber das problem ist eher das du im mp das auslösende event auch auf den anderen clients ausgeben musst, sonst passiert nur auf einem pc was und beim rest tut sich nix. ohne modding wird da glaube ich nix drauß.


und ist der trackview auch eingeschränkt?eigentlich nicht, problematik ist halt die selbe wie oben beschrieben. ;)

ansonsten frag mal pat21 - der ist hier sowas wie der flowgraph king - wenn dir hier jemand mit den "standardnodes" helfen kann, dann er. :grin:

gruß Blue

Pat21
11.03.2009, 15:14
@ _Juls_
zu 1. Im MP würde ich das mit "ForbiddenAreas" lösen.
zu 2. Es gibt kein Node, mit dem man Geld/Prestige abbuchen kann.
zu 3. Ähm...............Trackview im MP geht soweit ich weiß, überhaupt nicht, da du
die Sequence mit einem Flowgraph starten musst, welcher nicht geht.

Wenn du die ganzen Sachen umsetzten möchtest, dann müsstest du
ne Mod machen.

_Juls_
11.03.2009, 15:46
@ _Juls_
zu 1. Im MP würde ich das mit "ForbiddenAreas" lösen.
zu 2. Es gibt kein Node, mit dem man Geld/Prestige abbuchen kann.
zu 3. Ähm...............Trackview im MP geht soweit ich weiß, überhaupt nicht, da du
die Sequence mit einem Flowgraph starten musst, welcher nicht geht.

Wenn du die ganzen Sachen umsetzten möchtest, dann müsstest du
ne Mod machen.

argh -.- ....
wegen 1. das war nich so gemeint um zu verindern das wer das schlachtfeld verlässt, so is das auf der map island, ich wollte das für was anderes zweckentfremden, was ich aber nich verraten wollte.

hmm aber die sequenz könnte man doch auch einfach mit nem trigger starten. aber nagut wenn es kein node gibt zum geld abbuchen fällt das wohl eh alles ins wasser, wollte es eig so machen das man für geld nen funkspruch abschicken kann wodurch dann flugzeuge ins spielgeschehen eingreifen, oder ein heli für 45sek das schlachtfeld aufmischt ... denn so käme dann auch mal richtiges schlachtfeeling auf ohne das viele leute mitspeilen(32), weil wenn ich auf nen server geh wo viel los is hab ich nach na gespielten map derbe laggs, zb steht dann immer da du spawnst in 0 sek obwohl ich schon längst rumlaufen kann (aber noch keine waffen/geld hab ...)

Pat21
11.03.2009, 15:51
@ _Juls_
Sicher kannst du ne Sequence mit einem Trigger starten, aber das Node
"PlaySeuqence" geht, soweit ich weiß, nicht im MP und dieses brauchst
du, um eine Szene zu starten.

Wen du das alles umsetzten möchtest, dann musst du eine Mod daraus
machen. Das geht so nicht alles. :D

_Juls_
11.03.2009, 15:53
ja ne dann wird halt ne normale PS map draus, weil wenn ich da jetzt ne mod für anfang ... neee :D hab ja jetzt schon mehr bock die nächste map weiter zu machen. wobei die haupt ideen dafür auch somit ins wasser gefallen sin. naja trotzdem danke.

XcorpioN
11.03.2009, 16:24
@ _Juls_
Sicher kannst du ne Sequence mit einem Trigger starten, aber das Node
"PlaySeuqence" geht, soweit ich weiß, nicht im MP und dieses brauchst
du, um eine Szene zu starten.


Also wenn ich nen Trackview machen möchte ... dann muss der non stop laufen?
Also ich kenn ne Map, wo per Trackview ein Alienwarrior und andere Schiffe über einen Krater (in dem man kämpft) fliegen. Dass sah aus wie ne "loop" wenn ich mich nicht irre.

Aber ich hab vor, dass man per Prox.Trigger einen TrackView auslöst.
Also kann ich mir abschminken?

Pat21
11.03.2009, 16:25
@ Prototype
Wie gesagt, soweit ich weiß, geht es nicht. Wie heißt denn die Map ??
Wenn die ne .cry hat, dann kannst du ja mal schauen, wie sie das
gemacht haben bzw ich schaue dann mal. :D

XcorpioN
11.03.2009, 16:29
@ Prototype
Wie gesagt, soweit ich weiß, geht es nicht. Wie heißt denn die Map ??
Wenn die ne .cry hat, dann kannst du ja mal schauen, wie sie das
gemacht haben bzw ich schaue dann mal. :D

Ne ich denke ist keine cry datei bei soweit ich mich entsinne. Wie gesagt die map war bloß ein Beispiel für mich, dass Track view im MP funktioniert - hatte ja nichts mit einem Start einer Sequence zu tun. Schade wenn mein Vorhaben scheitert!

Wie ist das denn mit ner mod? Wo könnte ich denn da etwas ändern, dass es klappen könnte oder meintest du was anderes?

Pat21
11.03.2009, 16:32
@ Prototype
Nun ja, wenn du ne Szene im MP gesehen hast, dann muss es
über den Trackview gelaufen sein. Bei Sachen über den MP
bin ich nicht so informiert, da ich kaum spiele bzw keine Maps
für diesen mache. ;)

Du müsstes, wenn es nicht geht, im Code von Crysis etwas ändern
-> Mod erstellen. ;)

XcorpioN
11.03.2009, 16:38
Ok dann lass ich mir lieber ne alternative einfallen... also ich hatte geplant, dass ein Player (egal welcher) über ein portal (welches geheim ist/zufällig entdeckt werden kann solange ich es nicht in der Bescheibung aufführe) außerhalb des Kampffeldes einen Auslöser betätigen kann und so zum Beispiel (ich verrate nur die Idee, nicht die genaue Planung) eine Rakete(Raketen) aslöst die per Trackview fliegen und im Kampffeld einschlagen und dort alles in die luft jagen (also auch mit Triggern und plötzlichen Schaden/echten Explosionen - weiß aber noch nicht wie ich DAS mit dem Schaden regeln kann) ... also das ist meine verwirrende idee, hört sich doof und mp-unfreundlich an, aber wartet es ab ^^

FHG
11.03.2009, 17:45
Trackview funktioniert im Multiplayer!

Ich benutze TV oft für Schranken und Tore im Crysis-Multiplayer.
Selbst ProximityTrigger gehen sauber.

Die Frage ist: Mit welchem Game?

Unter Crysis geht es schon, bei Wars gibt es mehr Einschränkungen.

/FHG

Edit by Pat21:
Oh.........gut zu wissen. Danke. ;)

_Juls_
11.03.2009, 19:18
hey ich hab grade auch ma auf meiner map nen jet lang sausen lassen un ihn ne bombe abwerfen lassen, naja was soll ich sagen einmal via proxi trigger und ein ... ehm mutli iwas trigger der mit nem shape verbunden war, beides ging, aber ka ob das andere spieler auch sehen un nich nur der server.

aber die idee die ich hatte das man luftangriffe kaufen kann und ein jet dann lenkraketen abfeuert muss ich mir glaube ich trotzdem abschminken.

Don Fabiano
05.04.2009, 22:06
Ich habe schon mehrfach gelesen, dass man mit Flowgraphs Objekte, oder ganze Teile von einer Map ausblenden kann.
Ich habe hier gepostet, weil das ganze nach Möglichkeit im MP laufen soll.

Ich würde gerne ein Decal ausblenden, sobalt man einen bestimmten Bereich betritt.
Den Bereich hab ich schon mit einem Shape (Area) markiert und einem AreaTrigger zugewiesen.

Falls Decals allgemein nicht gehen könnte auch ein Solid oder dergleichen vor dem Decal erscheinen, sobald man den Bereich betritt.