Modding Union
Modderecke => Mapping => Thema gestartet von: Marci_99 am 24. Mai 2014, 10:25
-
Hallo, da ich in letzter Zeit eine Map entwerfe habe ich gleich 2 fragen
ist es möglich einen Flussübergang also wo Katapulte Einheiten etc.
drüber können so einzustellen das auch noch schiffe drüber können?
Wenn ja wie?
-
Du meinst eine Brücke? Ja ist möglich, nimm dafür eine der Brücken die im Straßentool ganz unten zu finden sind.
-
Habe ich gemacht
habe nun 2 probleme:
das Schiff kommt weder auf normal höhe noch auf - oder + Höhen durch
Die Brücken sind unsichtbar weil nur eine bestimmte strecke möglich ist
2. ist aber nicht so schlimm
-
Eigentlich sollten Schiffe unter einer solchen Brücke durchfahren können wenn das Wasser tief genug ist.
Eine andere Lösung die mir einfiele wäre das ändern dieser werte in der aidata.ini, dies sollte auch per map.ini möglich sein wenn die werte übertragen werden:
WadeWaterDepth = 5.0 ; How deep we can wade into water or cross fords.
DeepWaterDepth = 6.0 ; How deep water needs to be for ships & subs (non-shallow-water craft).
Der erste wert gibt an die Tief das Wasser maximal sein darf damit Einheiten noch durchgehen können (wichtig für Furten und Strände) und der zweite wert wie Tief das Wasser sein muss damit Schiffe durchfahren können. Ist der zweite wert nun niedriger als der erste sollten Schiffe durch Furten, auf denen auch Truppen laufen können, kommen können.
-
Leider klappt dies nicht ;(
Das mit den Truppen laufen ist kein Problem mehr
Brücke klappt nun auch aber in manchen Gebieten
hab ich den Boden nicht tief genug gesetzt und die Schiffe können
nicht weiterfahren kann ich das irgendwie alles niedriger machen?
-
Kann man in einer BSE farm mauer templates etc. verwenden?
Und falls ja könnte man auch ein Script machen um das Tor zu steuern?
-
Was würdest du dir von den Templates in der Base versprechen?
Ein Tor kann man im Prinzip über Scripts steuern. Man kann es immer unter bestimmten Voraussetzungen öffnen bzw. schließen lassen. Da die Scripts mit ausreichenden Englischkenntnissen relativ leicht nachzuvollziehen sind würde ich es einfach mal ausprobieren.
-
Gibt es kein Script zum Fragen ob eine Einheit existiert (Ringheld)
-
Ja, zu finden unter Unit.
Alternativ geht auch (falls man die Einheit nicht benennen will) zu fragen ob der Spieler eine Einheit des types besitzt, das script dafür ist unter Player- Owns
-
Das Script sieht nun so aus:
*** IF ***
Unit '<This Object>' is inside area 'Festung Gebiet'
*AND* Unit '<This Object>' has Object Status is 'HOLDING_THE_RING'
*AND* 'NoldorGilGaladVilya' has been built by Player 'PlyrNoldor'
*AND* True.
*** THEN ***
Null operation. (Does nothing.)
Unit '<This Object>' use Ability 'Command_SpecialAbilityGilGaladRingModeUpgradeButton' on nearest object of type 'NoldorGilGaladVilya'.
For unit Unit '<This Object>' set object status Object Status is 'HOLDING_THE_RING' to FALSE.
Habe das in der AI Base datei der Noldor, scheint aber keine Wirkung zu haben.
Hat jemand eine Idee wie man das verwirklichen kann?
Soll ich so etwas eher mal in der Festung's .bse Datei versuchen?
-
Also als erstes kannst du das
*AND* True, sowie Null operation (Does nothing.) weglassen. Ersteres wird nur für Scripts benutzt, die ohne bestimmte Voraussetzungen aktiv sein sollen und zweiteres macht, wie es der Name schon sagt, gar nichts.
Außerdem werden die Aktionen der KI nicht in den AI Bases festgelegt, sondern in der AI_Men Of The West.map. Ich habe mich zwar noch nicht intensiv mit dem Scritping auseinandergesetzt, aber ich hätte es möglicherweise so versucht. Aber ob das so funktioniert kann ich nicht sagen.
*** IF ***
Unit Unit '<This Object>' has entered the nearest base owned by player Player '<This Player>' entirely.
*AND* Unit '<This Object>' has Object Status is 'HOLDING_THE_RING'
*AND* Player '<This Player>' has Equal To 1 unit or structure of type 'NoldorGilGaladVilya'
*** THEN ***
Find 'NoldorGilGaladVilya' Owned by Player '<This Player>' nearest team Team '<This Team>' and reference as UnitRef 'GilGalad'
Give Unit Unit 'GilGalad' the upgrade Upgrade 'Upgrade_RingHero'.
For unit Unit '<This Object>' set object status Object Status is 'HOLDING_THE_RING' to FALSE.
-
Müssen die Einheiten
AND* Player '<This Player>' has Equal To 1 unit or structure of type 'NoldorGilGaladVilya'
Durch dies neben Gil Galad stehen oder wie ist das Gemeint, denn das bringt leider wenig wenn Gil-Galad gerade im Angriff mitwirkt :D
-
Diese Zeile ist lediglich eine Überprüfung, ob der Spieler Gil-Galad besitzt oder nicht, und hat überhaupt nichts mit sonstigen Einheiten zu tun.
-
Find 'NoldorGilGaladVilya' Owned by Player '<This Player>' nearest team Team '<This Team>' and reference as UnitRef 'GilGalad'
Wo finde ich diese Option?
-
Scripting => Reference => Set reference to object type of player nearest team.
-
Hab dafür gesorgt das die KI den Ring und den Ringhelden hatten aber leider kein erfolg ;(
Hier mal die .map datei https://www.dropbox.com/s/l21fj5u9b6pn4cl/ai_men%20of%20the%20west.map
Hier die ganze big:
https://www.dropbox.com/s/nwwt93bq2pp9ode/_____First_Age_Maps.big
Noch jemand ne idee?
-
Ich vermute, dass es einfach mit diesen Scripts nicht funktioniert. Das Edain-Team versucht immerhin schon seit Jahren die Ringhelden KI-tauglich zu machen und hatte bisher keinen Erfolg. Daher hätte es mich schon gewundert, wenn die Lösung so einfach wäre. Leider setzt uns SuM immer wieder Grenzen. Auch wenn die Scripts von der Logik her das richtige Ergebnis liefern müssten, heißt es leider nicht, dass sie auch zum Ziel führen.
An deiner Stelle würde ich mich erst einmal an anderer Stelle mit deiner Submod weitermachen.
-
Habe nun mal wieder eine Frage:
*** IF ***
Does Player '<This Player>' have 1 units that has upgrade Upgrade 'Upgrade_AllowBuildCreateAHero'
*** THEN ***
The world is shrouded for Player '<This Player>'.
Show military briefing Localized String: 'SCRIPT:NebelDesKrieges' for 8.00 seconds.
Hat jemand eine Ahnung warum dieses Script nicht klappt, es bleibt bei der Vorrausetzung hängen, lasse ich diese Weg funktioniert alles.
-
Does Player '<This Player>' have 1 units that has upgrade Upgrade
Steht doch bereits da:
Hast du eine Einheit mit diesem Upgrade im Spiel? Ich denke wohl eher nicht.^^ Ich bin jetzt zwar kein Scripter, alleine vom Context her sollte das aber eindeutig sein.
-
Sollte nicht jede Einheit also auch Baumeister etc. darüber verfügen so hab ich es jedoch von Radagast dem Musikalischen Verstanden.
Wenn nicht hast du evtl. eine Alternative?
-
Jein... die Einheit hat das Upgrade nicht direkt, weil es ein Player-Upgrade ist. Der Spieler hat es, womit es nur indirekt jedes Objekt des Spielers hat, sprich das Upgrade kann Voraussetzung für etwas bei dieser Einheit sein, aber sie selbst hat es nicht direkt... Bei den Scripts funktioniert das so anscheinend nicht...
Das Problem ist, dass das Upgrade 'Upgrade_AllowBuildCreate AHero' weder vom Spieler erforscht bzw. gekauft wird, noch einer bestimmten Einheit zugewiesen wird, weshalb weder Does Player '<This Player>' have ... units that has upgrade... , noch Player has built upgrade... funktionieren.
-
Eine Alternative Abfrage gibt es nicht oder einen Trick das mithilfe von Coding zu machen?
-
So auf Anhieb würde mir über Scripts keine andere Alternative mehr einfallen. Die einzigen Scripts, die mir in der Richtung einfallen sind tatsächlich:
1) Player ... built upgrade ...
2) Does Player ... have ... units that has upgrade ...
Der erste würde ich bei sowas zuerst ausprobieren, aber da du sagst, dass keiner von diesen funktioniert, wüsste ich keine andere Alternative. Du könntest es höchstens nochmal mit einem der folgenden Upgrades versuchen:
Upgrade_CreateAHeroGameMode
Upgrade_CreateAHeroMapMode
Das sind zwei weitere Upgrades, die irgendwie mit dem CreateAHeroMode zu tun haben, aber da ich mich damit nicht weiter auseinandergesetzt habe, kann ich dir nicht genau sagen wofür diese genau da sind, aber versuchen kostet ja nichts xD... (bis auf Zeit)
-
Scheint wohl nicht zu funktionieren :o
Gibt es evtl. einen Weg mit Coding kombiniert
-
Was mir gerade einfällt... Der Ringheld-Modus, sprich die Scripts, die für Gollums Auftauchen auf der Karte sorgen sind auch nicht per Upgrade gemacht, sondern mit einer Abfrage des "Game Modes"...
*** IF ***
Is String: 'ringheroes' game mode active
Wenn du das mal als Voraussetzung nimmst und statt ringheroes den String für die Eigenen Helden benutzt... ich weiß den jetzt grad nicht aus dem Kopf, aber müsste dann irgendwie customheroes oder so sein...