You must be logged in to post messages.
Please login or register

Scenario Design
Moderated by Yeebaagooon, nottud

Hop to:    
loginhomeregisterhelprules
Bottom
Topic Subject: Have a Question? Post it Here!
« Previous Page  1 ··· 10 ··· 20 ··· 30 ··· 40 ··· 50 ··· 60 ··· 67 68 69 70 71 ··· 80 ··· 90 ··· 100  Next Page »
posted 25 November 2011 10:36 PM EDT (US)   

Have any questions about creating scenarios ?
Ask them here !



So what is the purpose of this thread?
› Eliminate the clutter in this forum by, instead of creating new threads, asking any questions one may have about scenario design.
› To provide quick assistance and tips from the experts who are familiar with scenario design.
› To help you! This thread has an FAQ which you can relay back and forth to for those persistent and common questions that everyone asks.

Frequently Asked Questions (FAQ)


  • Where are all my files such as recorded games and scenario files located?
    You can find scenarios in the default location "My Documents\My Games\Age of Mythology\Scenario". Recorded games can be found in the "Savegame" folder. There are actually two "Age of Mythology" folders. The second one is "C:\Program Files\Microsoft Games\Age of Mythology". The folder in My Documents is for Titans, while the other one is for the game itself. When it comes to copying over downloaded scenarios and recorded games, use the "My Documents" one.

  • Upon playtesting a scenario in the editor, I lose within the first five seconds!
    Easy to fix. You have two options. For a quick, practical fix all you have to do is place a unit of yours somewhere on the map, and place an enemy unit somewhere else on the map as well. The other method is to simply click on the "Scenario" tab in the editor, click on "Scenario Data" and uncheck the check box next to "Use victory conditions".

  • Whenever I try and move my villagers in the editor, they always walk back to where they were!
    This is just a glitch. The best way to fix this is to simply select them, and right-click where you want them to go. They will walk to their destination.

  • How come it seems like some units are missing in the list of protounits on a trigger?
    To find out the proto name of a unit, have it selected in the editor and click on the "Cinematics" tab, then click "View animations." For a shortcut, just select the unit and press Alt+A.

  • How do I make units larger or smaller?
    This is for The Titans users only. To enlarge a unit, select it and hold "K" on your keyboard. To make the unit smaller, hold "Shift + K".

  • How can I change the stats for a unit?
    Easy. If you're a Titans user you can find the two triggers called "Modify Protounit" and "Set Tech Status". If you're running regular AoM, you will only have "Set Tech Status" available. You can set unit attributes with both these triggers.

  • I've seen people do these crazy camera angles that I can't seem to figure out how to do! Help!
    A common question. Your camera must be unlocked and working first. It should be already by default. If it's not, press "Shift + Alt + C" to unlock it. To change the pitch of the camera, press "A" and "Z" or "Ctrl + Up Arrow" and "Ctrl + Down Arrow" on your keyboard to go up and down.

  • The computer players aren't acting like computer players should!
    You need to set AI for them. In the editor, click the "Scenario" tab, then "Player Data". There will be a button all the way to the right of the player slot to set the AI. It is reccomended you choose one of the "default" ais such as aomdefaultai.xs for AoM Vanilla, or aomxdefaultai.xs for The Titans.

  • How can I have over 300 population?
    Use the Modify Protounit effect to make a protounit have a population cost of a very extremely high number, like 999999999.0 . Make sure that it is a protounit that you can't normally get in-game by yourself. Then just place two of them somewhere on the map, and they will make the population for that player go to a negative number, and be infinite.

  • My triggers have stopped working!
    Using Run immediately, quotations in chats, linking camera tracks, sound timers and decimals in conditions like timer and distance to unit affect this. If you are unsure about what the source is, outline what you did, and we can help.

  • How do I add sound and dialogs in a scenario?
    Like the dialogs in the campaigns, you can use the trigger effect "Play Dialog" to display text while on Cinematic Mode. You can type a text, include a sound, and a small image (portrait) "Sound filename" is a similar trigger effect, but not the main one used.

  • There are so many dialogs, and it's hard to find the one I'm looking for. Is there a list I can download that explains what each one says?
    Yes there is.

  • How can I give units animations like they do in the campaigns?
    Select the unit in the editor, click on the "Cinematics" tab, then click "View animations." In the "Type" tab, find and click "Cinematic". In the "Anim Path:" tab is a list of animations that you can view for sampling. When you find the one you want, you can use its name with the "Set animation" trigger effect and be able to use it in-game.

  • I can't see certain animations listed for a unit in the editor anymore! Where have they gone?
    You need to reset the animation for the unit that you were using last. In otherwords, if you deleted a unit that was in the process of an animation, you need to place it back on the map and click on "<normal>" in its animation box.

  • Practical Guides

  • Scenario Design Library Articles
  • Scenario Design Dictionary
  • Shuch_ya_mouf's Ultimate Trigger Guide
  • Making Quality Scenarios: Triggers
  • Making Quality Scenarios: Eyecandy
  • Nottud's Guide to the transform trigger


  • [This message has been edited by Thangbrand Aesirear (edited 04-23-2014 @ 00:06 AM).]

    Replies:
    posted 30 April 2014 11:45 PM EDT (US)     1701 / 2501  
    0.o Is it possible to detect the elevation of a unit?
    It's actually very easy to do
    And what are dummy units? Units that do nothing and can't influence the game?
    Yeah, pretty much. Units only used for a specific technical purpose - not for their normal use.
    Then Kill the fishing ship, you may want to block all sounds and maybe also deploy something like crab blood to cover the death of the fishing ship and the unit changing type.
    trUnitDestroy() instantly removes the unit from the game - eliminating the need for the extra unit. Just a thought ~ Milky

    <||=================================||>
    Proud Member of Forgotten Empires
    96Reviews KaS Dota2 Halo 5 Reach
    { "Work until your idols become your rivals" }
    ༼ つ ◕_◕ ༽つ trGetUnitScenarioName(); ༼ つ ◕_◕ ༽つ
    posted 01 May 2014 00:13 AM EDT (US)     1702 / 2501  
    Two questions:
    How do you change terrains via triggers Also does that affect the property of the terrain? or does it keep the old terrain properties.

    Is it possible to get the heading of a unit? Seems simple enough but I know there was a lot of confusion on how to do this is in the past ~ Milky

    <||=================================||>
    Proud Member of Forgotten Empires
    96Reviews KaS Dota2 Halo 5 Reach
    { "Work until your idols become your rivals" }
    ༼ つ ◕_◕ ༽つ trGetUnitScenarioName(); ༼ つ ◕_◕ ༽つ
    posted 01 May 2014 01:36 AM EDT (US)     1703 / 2501  
    @Zhaku Mu
    !!Make sure you re-download nottud's trigger file or check your grant resource per stat trigger. There was a tiny error in the file up until about a week ago. If you're trying to debug on to why your scenario is freezing, that is the trigger that's causing it. On one of the qv set/gets, there's some extra letters that don't belong that'll throw your game into infinite loop. Make sure you have the updated one.

    @Milkman Matty
    I found it! It was on page 22 from 2 years ago, but i found it!

    <Effect name="EL Unit Heading Into QV">
    <Param name="DstObject" dispName="Select Unit" varType="unit">default</Param>
    <Param name="qvname" dispName="QV name to store heading" varType="string">QV1</Param>
    <Command>trQuestVarSet("uhiq%DstObject%newx", xsVectorGetX(kbGetBlockPosition("%DstObject%")));</Command>
    <Command>if(trQuestVarGet("uhiq%DstObject%oldx") > trQuestVarGet("uhiq%DstObject%newx")) trQuestVarSet("%qvname%",360.0 - trUnitGetHeading("%DstObject%"));</Command>
    <Command>else if(trQuestVarGet("uhiq%DstObject%newx") > trQuestVarGet("uhiq%DstObject%oldx")) trQuestVarSet("%qvname%",trUnitGetHeading("%DstObject%"));</Command>
    <Command>trQuestVarSet("uhiq%DstObject%oldx",trQuestVarGet("uhiq%DstObject%newx"));</Command>
    </Effect>

    The way this one works is there's already a trUnitGetHeading(unit), however as it's commonly known it only goes from -180 to 180 and has no preference. Meaning, one day your unit could be facing 65 degrees and the next day, in the exact same situation, be facing -65 degrees. Problematic. The way this fixes it is when your unit moves along the x-axis, the problem-axis, the trigger determines which way you're going and appends the corresponding angle fix to your new qv.

    Couldn't tell you if there's been an improvement on this yet. Also... this could be made into a v-trigger if you were looking for something like that.

    As for the terrain, there's some in nottud's triggerpack. It's very "messymessymessy " (quoted from nottud). It works and has the properties of the new terrain (i originally was going to use it to make paths in mazes close up behind you). However it's.. messsymessymessy.

    The camera seems to jerk into some angle i've never seen before after every iteration. I slightly recall using a lot of camera tracks to normalize the screen and then camera cuts to return to original position. There will probably be other issues too, use with caution!

    <Effect name="zsPaint Terrain">
    <Param name="SrcObject3" dispName="Change Block" varType="unit">default</Param>
    <Param name="s1" dispName="BrushSizeX" varType="stringid">1</Param>
    <Param name="s2" dispName="BrushSizeZ" varType="stringid">1</Param>
    <Param name="t" dispName="New terrain" VarType="string">snowb</Param>
    <Param name="v2" dispName="Brush is square" varType="Bool">true</Param>
    <Param name="v" dispName="Trigger Name" varType="stringid">paint1</Param>
    <Param name="EventID" dispName="$$22362$$Trigger" varType="event">-1</Param>
    <Command>trQuestVarSet("zzzz", trQuestVarGet("zzzz") + 1);</Command>
    <Command>if(trQuestVarGet("zzzz") == 1){</Command>
    <Command>map("mouse2down","earthquake","");</Command>
    <Command>map("mouse1down","earthquake","");</Command>
    <Command>subModeEnter("Simulation", "Editor");</Command>
    <Command>modeEnter("pregame");</Command>
    <Command>modeEnter("Simulation");</Command>
    <Command>subModeEnter("Simulation", "Singleplayer");</Command>
    <Command>configToggle("cameraMovementLock");</Command>
    <Command>editMode("paint");</Command>
    <Command>if(%v2% == false)uiChangeBrushType("Circular");</Command>
    <Command>if(%v2% == true)uiChangeBrushType("Rectangular");</Command>
    <Command>uiChangeBrushSize(%s1%,%s2%,1,1);</Command>
    <Command>for(i = 0; > 1){}</Command>
    <Command>for(j = 0; > 1){}</Command>
    <Command>if("%t%" == "grassa"){i = 0; j = 0;}</Command>
    <Command>if("%t%" == "grassb"){i = 1; j = 0;}</Command>
    <Command>if("%t%" == "grassdirt25"){i = 2; j = 0;}</Command>
    <Command>if("%t%" == "grassdirt50"){i = 3; j = 0;}</Command>
    <Command>if("%t%" == "grassdirt75"){i = 4; j = 0;}</Command>
    <Command>if("%t%" == "cliffgreekb"){i = 5; j = 0;}</Command>
    <Command>if("%t%" == "greekroad burnt"){i = 6; j = 0;}</Command>
    <Command>if("%t%" == "greekroad burntb"){i = 7; j = 0;}</Command>
    <Command>if("%t%" == "gaiacreepa"){i = 8; j = 0;}</Command>
    <Command>if("%t%" == "gaiacreepasnow"){i = 9; j = 0;}</Command>
    <Command>if("%t%" == "gaiacreepasand"){i = 10; j = 0;}</Command>
    <Command>if("%t%" == "gaiacreepb"){i = 11; j = 0;}</Command>
    <Command>if("%t%" == "gaiacreepborder"){i = 12; j = 0;}</Command>
    <Command>if("%t%" == "gaiacreepbordersnow"){i = 13; j = 0;}</Command>
    <Command>if("%t%" == "gaiacreepbordersand"){i = 14; j = 0;}</Command>
    <Command>if("%t%" == "savannaha"){i = 15; j = 0;}</Command>
    <Command>if("%t%" == "savannahb"){i = 16; j = 0;}</Command>
    <Command>if("%t%" == "savannahc"){i = 17; j = 0;}</Command>
    <Command>if("%t%" == "savannahd"){i = 18; j = 0;}</Command>
    <Command>if("%t%" == "dirta"){i = 19; j = 0;}</Command>
    <Command>if("%t%" == "sanda"){i = 20; j = 0;}</Command>
    <Command>if("%t%" == "sandb"){i = 21; j = 0;}</Command>
    <Command>if("%t%" == "sandc"){i = 22; j = 0;}</Command>
    <Command>if("%t%" == "sandd"){i = 23; j = 0;}</Command>
    <Command>if("%t%" == "cliffegyptianb"){i = 24; j = 0;}</Command>
    <Command>if("%t%" == "sanddirt50"){i = 25; j = 0;}</Command>
    <Command>if("%t%" == "sanddirt50b"){i = 26; j = 0;}</Command>
    <Command>if("%t%" == "snowa"){i = 27; j = 0;}</Command>
    <Command>if("%t%" == "snowb"){i = 28; j = 0;}</Command>
    <Command>if("%t%" == "snowgrass25"){i = 29; j = 0;}</Command>
    <Command>if("%t%" == "snowgrass50"){i = 30; j = 0;}</Command>
    <Command>if("%t%" == "snowgrass75"){i = 31; j = 0;}</Command>
    <Command>if("%t%" == "snowsand25"){i = 32; j = 0;}</Command>
    <Command>if("%t%" == "snowsand50"){i = 33; j = 0;}</Command>
    <Command>if("%t%" == "snowsand75"){i = 34; j = 0;}</Command>
    <Command>if("%t%" == "cliffnorseb"){i = 35; j = 0;}</Command>
    <Command>if("%t%" == "olympusa"){i = 36; j = 0;}</Command>
    <Command>if("%t%" == "olympusb"){i = 37; j = 0;}</Command>
    <Command>if("%t%" == "olympusc"){i = 38; j = 0;}</Command>
    <Command>if("%t%" == "olympustile"){i = 39; j = 0;}</Command>
    <Command>if("%t%" == "tundragrassa"){i = 40; j = 0;}</Command>
    <Command>if("%t%" == "tundragrassb"){i = 41; j = 0;}</Command>
    <Command>if("%t%" == "tundrarocka"){i = 42; j = 0;}</Command>
    <Command>if("%t%" == "tundrarockb"){i = 43; j = 0;}</Command>
    <Command>if("%t%" == "marsha"){i = 44; j = 0;}</Command>
    <Command>if("%t%" == "marshb"){i = 45; j = 0;}</Command>
    <Command>if("%t%" == "marshc"){i = 46; j = 0;}</Command>
    <Command>if("%t%" == "marshd"){i = 47; j = 0;}</Command>
    <Command>if("%t%" == "marshe"){i = 48; j = 0;}</Command>
    <Command>if("%t%" == "marshf"){i = 49; j = 0;}</Command>
    <Command>if("%t%" == "egyptianroada"){i = 50; j = 0;}</Command>
    <Command>if("%t%" == "greekroada"){i = 51; j = 0;}</Command>
    <Command>if("%t%" == "norseroada"){i = 52; j = 0;}</Command>
    <Command>if("%t%" == "citytilea"){i = 53; j = 0;}</Command>
    <Command>if("%t%" == "citytileatlantis"){i = 54; j = 0;}</Command>
    <Command>if("%t%" == "citytileatlantiscoral"){i = 55; j = 0;}</Command>
    <Command>if("%t%" == "citytilewaterpool"){i = 56; j = 0;}</Command>
    <Command>if("%t%" == "citytilewateredgea"){i = 57; j = 0;}</Command>
    <Command>if("%t%" == "citytilewateredgeb"){i = 58; j = 0;}</Command>
    <Command>if("%t%" == "citytilewateredgeenda"){i = 59; j = 0;}</Command>
    <Command>if("%t%" == "citytilewateredgeendb"){i = 60; j = 0;}</Command>
    <Command>if("%t%" == "citytilewateredgeendc"){i = 61; j = 0;}</Command>
    <Command>if("%t%" == "citytilewateredgeendd"){i = 62; j = 0;}</Command>
    <Command>if("%t%" == "citytilewatercornera"){i = 63; j = 0;}</Command>
    <Command>if("%t%" == "citytilewatercornerb"){i = 64; j = 0;}</Command>
    <Command>if("%t%" == "citytilewatercornerc"){i = 65; j = 0;}</Command>
    <Command>if("%t%" == "citytilewatercornerd"){i = 66; j = 0;}</Command>
    <Command>if("%t%" == "hadesbuildable1"){i = 67; j = 0;}</Command>
    <Command>if("%t%" == "hadesbuildable2"){i = 68; j = 0;}</Command>
    <Command>if("%t%" == "forestfloorpalm"){i = 69; j = 0;}</Command>
    <Command>if("%t%" == "forestfloorpine"){i = 70; j = 0;}</Command>
    <Command>if("%t%" == "forestfloorpinesnow"){i = 71; j = 0;}</Command>
    <Command>if("%t%" == "forestflooroak"){i = 72; j = 0;}</Command>
    <Command>if("%t%" == "forestfloorgaia"){i = 73; j = 0;}</Command>
    <Command>if("%t%" == "forestfloorsavannah"){i = 74; j = 0;}</Command>
    <Command>if("%t%" == "forestfloordeadpine"){i = 75; j = 0;}</Command>
    <Command>if("%t%" == "forestfloortundra"){i = 76; j = 0;}</Command>
    <Command>if("%t%" == "forestfloormarsh"){i = 0; j = 1;}</Command>
    <Command>if("%t%" == "water"){i = 0; j = 2;}</Command>
    <Command>if("%t%" == "cliffa"){i = 1; j = 2;}</Command>
    <Command>if("%t%" == "cliffgreeka"){i = 2; j = 2;}</Command>
    <Command>if("%t%" == "cliffegyptiana"){i = 3; j = 2;}</Command>
    <Command>if("%t%" == "cliffnorsea"){i = 4; j = 2;}</Command>
    <Command>if("%t%" == "hades3"){i = 5; j = 2;}</Command>
    <Command>if("%t%" == "hades5"){i = 6; j = 2;}</Command>
    <Command>if("%t%" == "hades6"){i = 7; j = 2;}</Command>
    <Command>if("%t%" == "hades7"){i = 8; j = 2;}</Command>
    <Command>if("%t%" == "hadescliff"){i = 9; j = 2;}</Command>
    <Command>if("%t%" == "hades4"){i = 10; j = 2;}</Command>
    <Command>if("%t%" == "blackrock"){i = 11; j = 2;}</Command>
    <Command>if("%t%" == "underwaterrocka"){i = 0; j = 3;}</Command>
    <Command>if("%t%" == "underwaterrockb"){i = 1; j = 3;}</Command>
    <Command>if("%t%" == "underwaterrockc"){i = 2; j = 3;}</Command>
    <Command>if("%t%" == "underwaterrockd"){i = 3; j = 3;}</Command>
    <Command>if("%t%" == "underwaterrocke"){i = 4; j = 3;}</Command>
    <Command>if("%t%" == "underwaterrockf"){i = 5; j = 3;}</Command>
    <Command>if("%t%" == "underwatericea"){i = 6; j = 3;}</Command>
    <Command>if("%t%" == "underwatericeb"){i = 7; j = 3;}</Command>
    <Command>if("%t%" == "underwatericec"){i = 8; j = 3;}</Command>
    <Command>if("%t%" == "corala"){i = 9; j = 3;}</Command>
    <Command>if("%t%" == "coralb"){i = 10; j = 3;}</Command>
    <Command>if("%t%" == "coralc"){i = 11; j = 3;}</Command>
    <Command>if("%t%" == "coralc2"){i = 12; j = 3;}</Command>
    <Command>if("%t%" == "corald"){i = 13; j = 3;}</Command>
    <Command>if("%t%" == "corale"){i = 14; j = 3;}</Command>
    <Command>if("%t%" == "coralf"){i = 15; j = 3;}</Command>
    <Command>if("%t%" == "shorelinesanda"){i = 0; j = 4;}</Command>
    <Command>if("%t%" == "shorelineaegeana"){i = 1; j = 4;}</Command>
    <Command>if("%t%" == "shorelineaegeanb"){i = 2; j = 4;}</Command>
    <Command>if("%t%" == "shorelineaegeanc"){i = 3; j = 4;}</Command>
    <Command>if("%t%" == "shorelineredseaa"){i = 4; j = 4;}</Command>
    <Command>if("%t%" == "shorelineredseab"){i = 5; j = 4;}</Command>
    <Command>if("%t%" == "shorelineredseac"){i = 6; j = 4;}</Command>
    <Command>if("%t%" == "shorelinenorwegiana"){i = 7; j = 4;}</Command>
    <Command>if("%t%" == "shorelinenorwegianb"){i = 8; j = 4;}</Command>
    <Command>if("%t%" == "shorelinenorwegianc"){i = 9; j = 4;}</Command>
    <Command>if("%t%" == "shorelinemediterraneana"){i = 10; j = 4;}</Command>
    <Command>if("%t%" == "shorelinemediterraneanb"){i = 11; j = 4;}</Command>
    <Command>if("%t%" == "shorelinemediterraneanc"){i = 12; j = 4;}</Command>
    <Command>if("%t%" == "shorelinemediterraneand"){i = 13; j = 4;}</Command>
    <Command>if("%t%" == "shorelineatlantica"){i = 14; j = 4;}</Command>
    <Command>if("%t%" == "shorelineatlanticb"){i = 15; j = 4;}</Command>
    <Command>if("%t%" == "shorelineatlanticc"){i = 16; j = 4;}</Command>
    <Command>if("%t%" == "shorelinetundraa"){i = 17; j = 4;}</Command>
    <Command>if("%t%" == "shorelinetundrab"){i = 18; j = 4;}</Command>
    <Command>if("%t%" == "shorelinetundrac"){i = 19; j = 4;}</Command>
    <Command>if("%t%" == "shorelinetundrad"){i = 20; j = 4;}</Command>
    <Command>if("%t%" == "riversandya"){i = 21; j = 4;}</Command>
    <Command>if("%t%" == "riversandyb"){i = 22; j = 4;}</Command>
    <Command>if("%t%" == "riversandyc"){i = 23; j = 4;}</Command>
    <Command>if("%t%" == "riversandyshallowa"){i = 24; j = 4;}</Command>
    <Command>if("%t%" == "rivergrassya"){i = 25; j = 4;}</Command>
    <Command>if("%t%" == "rivergrassyb"){i = 26; j = 4;}</Command>
    <Command>if("%t%" == "rivergrassyc"){i = 27; j = 4;}</Command>
    <Command>if("%t%" == "rivericya"){i = 28; j = 4;}</Command>
    <Command>if("%t%" == "rivericyb"){i = 29; j = 4;}</Command>
    <Command>if("%t%" == "rivericyc"){i = 30; j = 4;}</Command>
    <Command>if("%t%" == "rivermarsha"){i = 31; j = 4;}</Command>
    <Command>if("%t%" == "rivermarshb"){i = 32; j = 4;}</Command>
    <Command>if("%t%" == "rivermarshc"){i = 33; j = 4;}</Command>
    <Command>if("%t%" == "icea"){i = 0; j = 5;}</Command>
    <Command>if("%t%" == "iceb"){i = 1; j = 5;}</Command>
    <Command>if("%t%" == "icec"){i = 2; j = 5;}</Command>
    <Command>if("%t%" == "miningground"){i = 3; j = 5;}</Command>
    <Command>if("%t%" == "black"){i = 4; j = 5;}</Command>
    <Command>if("%t%" == "hades1"){i = 5; j = 5;}</Command>
    <Command>if("%t%" == "hades2"){i = 6; j = 5;}</Command>
    <Command>if("%t%" == "hades4"){i = 7; j = 5;}</Command>
    <Command>if("%t%" == "hades8"){i = 8; j = 5;}</Command>
    <Command>if("%t%" == "hades9"){i = 9; j = 5;}</Command>
    <Command>terrainSetType(j);</Command>
    <Command>terrainSetSubtype(i);</Command>
    <Command>trackInsert();</Command>
    <Command>trackEditWaypoint();</Command>
    <Command>trackAddWaypoint();</Command>
    <Command>trackEditWaypoint();</Command>
    <Command>trQuestVarSet("zzzza",xsVectorGetX(kbGetBlockPosition("%SrcObject3%")));</Command>
    <Command>trQuestVarSet("zzzzb",xsVectorGetY(kbGetBlockPosition("%SrcObject3%")));</Command>
    <Command>trQuestVarSet("zzzzc",xsVectorGetZ(kbGetBlockPosition("%SrcObject3%")));</Command>
    <Command>trCameraCut(xsVectorSet(trQuestVarGet("zzzza"),trQuestVarGet("zzzzb"),trQuestVarGet("zzzzc")), vector(0.0,-1.0,-0.0), vector(0.0,-0.0,1.0), vector(1.0,0.0,0.0));</Command>
    <Command>uiPaintTerrainOverlay(0);</Command>
    <Command>trackInsert();</Command>
    <Command>trackEditWaypoint();</Command>
    <Command>trackAddWaypoint();</Command>
    <Command>trackEditWaypoint();</Command>
    <Command>trackPlay(10000,-1);</Command>
    <Command>}</Command>
    <Command>if(trQuestVarGet("zzzz") == 2){</Command>
    <Command>uiPaintTerrainOverlay(1);</Command>
    <Command>editMode("none");</Command>
    <Command>subModeLeave("Simulation", "Editor");</Command>
    <Command>trackRemove();</Command>
    <Command>trackPlay(1,-1);</Command>
    <Command>configToggle("cameraMovementLock");</Command>
    <Command>map("mouse2down","earthquake","editmode(\"none\")");</Command>
    <Command>map("mouse1down","earthquake","editmode(\"none\")");</Command>
    <Command>trQuestVarSet("zzzz",0);</Command>
    <Command>trEventFire(%EventID%);</Command>
    <Command>}</Command>
    <Command>if(trQuestVarGet("zzzz") != 0){</Command>
    <Command>trDelayedRuleActivation("_%v%");</Command>
    <Command>}</Command>
    </Effect>

    As i said, there's a bunch that mesh well together in nottud's latest trigger file

    [This message has been edited by Ghostoo (edited 05-01-2014 @ 01:44 AM).]

    posted 01 May 2014 02:16 AM EDT (US)     1704 / 2501  
    Awesome! Thanks for your help ~ Milky

    <||=================================||>
    Proud Member of Forgotten Empires
    96Reviews KaS Dota2 Halo 5 Reach
    { "Work until your idols become your rivals" }
    ༼ つ ◕_◕ ༽つ trGetUnitScenarioName(); ༼ つ ◕_◕ ༽つ
    posted 01 May 2014 02:46 AM EDT (US)     1705 / 2501  
    Is that trigger online compatible?

    We cannot rely on luck to be successful.
    posted 01 May 2014 02:58 AM EDT (US)     1706 / 2501  
    @WarriorMario: No, it shouldn't be. The name isn't zs for nothing, the s means singleplayer

    @Milkman Matty: I found a newer version of the trigger by Lewonas, page 35 (not even a year ago). It should fix the fact that if the unit stops moving when its actual heading is > 180 <= 359, the trUnitGetHeading("%DstObject%") command is wrongfully called which sets the heading to the wrong value.
    <Effect name="EL IN Unit Heading Into QV Accurate">
    <Param name="DstObject" dispName="Select Unit" varType="unit">default</Param>
    <Param name="qvname" dispName="QV name to store heading" varType="string">QV1</Param>
    <Command>trQuestVarSet("uhiq%DstObject%newx", xsVectorGetX(kbGetBlockPosition("%DstObject%")));</Command>
    <Command>if(trQuestVarGet("uhiq%DstObject%oldx") > trQuestVarGet("uhiq%DstObject%newx")) trQuestVarSet("uhiqdacheck", 1);</Command>
    <Command><![CDATA[if(trQuestVarGet("uhiq%DstObject%oldx") < trQuestVarGet("uhiq%DstObject%newx")) trQuestVarSet("uhiqdacheck", 0);]]></Command>
    <Command>if(trQuestVarGet("uhiqdacheck") == 1) trQuestVarSet("%qvname%",360.0 - trUnitGetHeading("%DstObject%"));</Command>
    <Command>else trQuestVarSet("%qvname%",trUnitGetHeading("%DstObject%"));</Command>
    <Command>trQuestVarSet("uhiq%DstObject%oldx",trQuestVarGet("uhiq%DstObject%newx"));</Command>
    </Effect>
    posted 01 May 2014 04:08 AM EDT (US)     1707 / 2501  
    Excellent! pity that the terrain change isn't online compatible thanks for your everyone ~ Milky

    <||=================================||>
    Proud Member of Forgotten Empires
    96Reviews KaS Dota2 Halo 5 Reach
    { "Work until your idols become your rivals" }
    ༼ つ ◕_◕ ༽つ trGetUnitScenarioName(); ༼ つ ◕_◕ ༽つ
    posted 01 May 2014 04:43 AM EDT (US)     1708 / 2501  
    Although terrain change is not online compatible - copy and paste terrain and make everywhere a terrain type IS online compatible. You might be able to achieve what you want with copy and paste if he terrain you want is elsewhere. If it not you could paint it. Then ingame when it starts copy it to the clipboard number and remove it by pasting some other terrain in its place. Later you can paste from the clipboard number where you want to paste.

    NOTE: Neither copy and paste or make everywhere a terrain type changes passability unless you call zRefresh terrain passability. (I think it is kinda of cool you can keep the old passability - you can have units going on cliff and other lava types. )

    EDIT: Talking about copy and paste I just remembered I created a zquick paste from clipboard number which was previously missing. I'll update the trigger file and superpack... I had never made it due to having problems regarding running out of parameters I could specify - but I came up with a solution. (A boolean parameter I specified by having 2 versions of the trigger - one with it on and the other with it off )

    EDIT2: Updated!

    [This message has been edited by nottud (edited 05-01-2014 @ 06:05 AM).]

    posted 01 May 2014 06:03 AM EDT (US)     1709 / 2501  
    Is it possible to get the age up process bar working for another tech than a minor god tech?

    We cannot rely on luck to be successful.
    posted 01 May 2014 06:59 AM EDT (US)     1710 / 2501  
    So my computer crashed while notepad++ had my custom trigger file open... It corrupted the whole file. I didn't make a back up because what are the chances that I'd need to backup an *.xml file.

    This is what my trigger file is now (feel free to download it for yourself ).

    Is there anyway that I could get them from my scenario? The only way I know is to either do it one by one via the trigertemp.xs and my XS to XML converter or via AoM Tools - but I think AoM Tools is also one by one? I don't want to be here all night (the trigger file contained over 250 triggers) ~ Milky

    EDIT: I just looked at what the AoM Tool 3,1 does and (not only could I not get it to work but) it doesn't do what I need anyway.

    <||=================================||>
    Proud Member of Forgotten Empires
    96Reviews KaS Dota2 Halo 5 Reach
    { "Work until your idols become your rivals" }
    ༼ つ ◕_◕ ༽つ trGetUnitScenarioName(); ༼ つ ◕_◕ ༽つ

    [This message has been edited by Milkman Matty (edited 05-01-2014 @ 07:12 AM).]

    posted 01 May 2014 07:49 AM EDT (US)     1711 / 2501  
    Is there a way to detect if a specific player has killed a specific unit?
    posted 01 May 2014 08:01 AM EDT (US)     1712 / 2501  
    Nope, at least not reliably ~ Milky

    <||=================================||>
    Proud Member of Forgotten Empires
    96Reviews KaS Dota2 Halo 5 Reach
    { "Work until your idols become your rivals" }
    ༼ つ ◕_◕ ༽つ trGetUnitScenarioName(); ༼ つ ◕_◕ ༽つ
    posted 01 May 2014 08:43 AM EDT (US)     1713 / 2501  
    @Milkman Matty: If the triggers are public you could redownload them?

    Trigtemp only contains the raw commands of the triggers which you cannot convert directly back - needs manual help to get the parameters.

    Scenarios themselves have the triggers completely - AOMED could extract non expansion scenarios but there might be some extractor that does expansion ones. The extract generates a trigger.xml that lists all the triggers and their parameters but has no implementation...

    [This message has been edited by nottud (edited 05-01-2014 @ 08:49 AM).]

    posted 01 May 2014 08:49 AM EDT (US)     1714 / 2501  
    I think you're the only one that could help me here nottud lol.

    I've still go the *.XMB file but it seems that AoMED doesn't like something when I try and convert it to the XML version.

    I get this: http://pastebin.com/wQXynf6d

    I'm almost sure it doesn't like the way that the TL is hacked in.

    As for extracting out of the scenarios (I have multiple back ups I can try) well they are all Titans for sure, so I'm not sure how much AoMED is gunna like that either.

    If only I knew Perl I could tweak AoMED to work for AoM:TT. This is most frustrating. In fact this may mean that I never finish my project - and if I do decide to continue then it will be at a much slower pace . Devastated ~ Milky

    <||=================================||>
    Proud Member of Forgotten Empires
    96Reviews KaS Dota2 Halo 5 Reach
    { "Work until your idols become your rivals" }
    ༼ つ ◕_◕ ༽つ trGetUnitScenarioName(); ༼ つ ◕_◕ ༽つ

    [This message has been edited by Milkman Matty (edited 05-01-2014 @ 08:58 AM).]

    posted 01 May 2014 08:49 AM EDT (US)     1715 / 2501  
    Is there a way to detect if a specific player has killed a specific unit?
    Possibly, you can detect when the unit dies and you can also detect when a players count of killed units cost changes. So if there are no other units being killed by the same player at the same time that unit is killed then yes you can detect it.

    Is the specific unit a specific unit or a protounit and does the player who's unit it is need to have a specific resource cost or is it redundant and not used for anything else.
    posted 01 May 2014 08:52 AM EDT (US)     1716 / 2501  
    Yeah I was thinking the same thing Scragins, you could also put in a check to see if it is the target of another unit owned by the player doing the killing - although this may not be helpful ~ Milky

    <||=================================||>
    Proud Member of Forgotten Empires
    96Reviews KaS Dota2 Halo 5 Reach
    { "Work until your idols become your rivals" }
    ༼ つ ◕_◕ ༽つ trGetUnitScenarioName(); ༼ つ ◕_◕ ༽つ
    posted 01 May 2014 09:15 AM EDT (US)     1717 / 2501  
    An example of what can be done is in a map I am sort of working on (the idea is good but it is fairly bland and jumpy when put into practice). Basically all units have their unit cost set to their protounit cost and then when a player kills a unit it detects the change respawns and converts the corpse of the killed unit and then changes all units that the player owns to the unit just killed. Play testing the map in single player it does occasionally count 2 deaths at the same time and add together their unit costs (Protounit ID's) meaning they change to an effectively random unit.

    That is a good point you raised Milky, what do you want defined as the player kills the unit. The method mentioned above will only count the player that deals the finishing blow where as you may want all players that had a unit near the unit killed to count as killing the unit.

    So another question is how many units will each player control and will they be trained in game, placed in the editor or spawned via triggers?

    [This message has been edited by scragins (edited 05-01-2014 @ 09:18 AM).]

    posted 01 May 2014 09:17 AM EDT (US)     1718 / 2501  
    invent00r was the one who knew but he taught lostrozzacavalli how to. I don't unfortunately know know of there being a public extractor program - though it does use zlib.net. If I had loads of time I could probably figure it out.

    http://aom.heavengames.com/downloads/showfile.php?fileid=9769

    It be something that could be useful to know though - I could see myself making an evlevation editor that ignored height limits if I knew the format.

    EDIT: Oooh you may be in luck - a tool which invent00r made to edit mother nature that can extract .scx scenarios has the source! (And it C# which I know)

    [This message has been edited by nottud (edited 05-01-2014 @ 09:30 AM).]

    posted 01 May 2014 09:34 AM EDT (US)     1719 / 2501  
    I have the source files of AoM Tool 3,1 but unfortunately I just don't know enough C# to understand it fully.

    I have spent a good amount of time trying to figure it out, and while some of the things is intuitive the more complex actions are impossible for me to understand. Even worse is that the start of it all (the extracting of scx file into its parts) is the hardest part to understand - which means I gave up after a day or two. Once I've done my C# course (not 'til December unfortunately ) then maybe I'll be able to make some sense of it... unless invent00r miraculously comes back with a lot of free time (I can't picture it happening).

    Elrich or Thangbrand Aesirear could you please change the title of "Scenario Announcement: Valhalla Xmas" to "Valhalla Xmas - Delayed Until Further Notice". That would be great .

    Thanks for all your help nottud, bummer that I can't move forward. Maybe in the mid-year break I'll learn C# for funsies to figure out how to get my scenario back ~ Milky

    EDIT: Wait a minute... you know C# ?

    <||=================================||>
    Proud Member of Forgotten Empires
    96Reviews KaS Dota2 Halo 5 Reach
    { "Work until your idols become your rivals" }
    ༼ つ ◕_◕ ༽つ trGetUnitScenarioName(); ༼ つ ◕_◕ ༽つ

    [This message has been edited by Milkman Matty (edited 05-01-2014 @ 09:38 AM).]

    posted 01 May 2014 09:40 AM EDT (US)     1720 / 2501  
    I would love to get hold of the source of that tool - Is it possible to upload it somewhere?

    @Milkman - maybe all more the reason - it should be trivial for me to alter the steal triggers so it does all of them - that's only an interface related issue.

    [This message has been edited by nottud (edited 05-01-2014 @ 09:52 AM).]

    posted 01 May 2014 09:50 AM EDT (US)     1721 / 2501  
    For sure! I'll add them on my website and send you the link via steam (I just added you) ~ Milky

    <||=================================||>
    Proud Member of Forgotten Empires
    96Reviews KaS Dota2 Halo 5 Reach
    { "Work until your idols become your rivals" }
    ༼ つ ◕_◕ ༽つ trGetUnitScenarioName(); ༼ つ ◕_◕ ༽つ
    posted 01 May 2014 09:53 AM EDT (US)     1722 / 2501  
    Thank you - just accepted your invite.
    posted 01 May 2014 09:58 AM EDT (US)     1723 / 2501  
    I've sent you the link, I uploaded the source files to both "AoM Mother Nature Editor" and "Scenario_Triggers_Editor_v10", everything should be inclusive.

    invent00r told me that my Java knowledge should be enough to understand C# - all lies! Either he's a genius (probably) or I'm just a slow learner (also probable) ~ Milky

    <||=================================||>
    Proud Member of Forgotten Empires
    96Reviews KaS Dota2 Halo 5 Reach
    { "Work until your idols become your rivals" }
    ༼ つ ◕_◕ ༽つ trGetUnitScenarioName(); ༼ つ ◕_◕ ༽つ
    posted 01 May 2014 10:00 AM EDT (US)     1724 / 2501  
    Thanks I got it.

    invent00r is right about C# helping you know C# as that is know I know some. The concepts and syntax is almost the same but perhaps differences in coding style may confuse...
    posted 01 May 2014 01:26 PM EDT (US)     1725 / 2501  
    I dunno what happened it says something about steam servers going down? and then I couldn't talk to you. I checked my e-mails but I couldn't see any from you. Any of my e-mails is fine, the one I told you I think I missed the ending "y" in "matt@milkmanmatty.com" so my bad ~ Milky

    <||=================================||>
    Proud Member of Forgotten Empires
    96Reviews KaS Dota2 Halo 5 Reach
    { "Work until your idols become your rivals" }
    ༼ つ ◕_◕ ༽つ trGetUnitScenarioName(); ༼ つ ◕_◕ ༽つ
    « Previous Page  1 ··· 10 ··· 20 ··· 30 ··· 40 ··· 50 ··· 60 ··· 67 68 69 70 71 ··· 80 ··· 90 ··· 100  Next Page »
    Age of Mythology Heaven » Forums » Scenario Design » Have a Question? Post it Here!
    Top
    You must be logged in to post messages.
    Please login or register
    Hop to:    
    Age of Mythology Heaven | HeavenGames