• 0

    posted a message on I am getting "Variant definitions could not be validated".
    Quote from SkrowFunk: Go

    There's some configurations that are off in your variants. It's easy to fix.

    Do a search for this problem in the forum and you will find some solutions. In fact I recommend doing a search before you post any questions. There's so much info sitting in here now that I rarely need to post a new question.

    Good luck!

    You are a wannabe - comedian, right? I have stumbled upon the same problem. But here in this forum, there was no (none - zero) solution available ... so far ...

    I have found with the help of a friend who knows almost everything a solution at the hiveworkshop in this post :

    Quote:

    I think it only failes when you set Races in BOTH variants and player properties, but I am not sure of that. (It's a pretty annoying bug, because if you set races in variants only, they won't be applied when you test the map)

    @slejeivw: Go I hope, this helps you.

    Posted in: Miscellaneous Development
  • 0

    posted a message on Problems with a base sending mechanism

    @illidans911: Go

    I don't know, if this is working, you have to try it out:

    • There is function that calculated the pathing costs ("Pathing cost between p<sub>1</sub> and p<sub>2</sub>")
      • If this function is considering blocking buildings and
      • you make the trigger especially designing for this special map

    you can do the following

    • If the function returns a value that exceeds a threshold (or returns 0 or -1 or soemthing like that)
    • you know that the way is blocked
    • than you could change the order to a different one to gather at a different position / attack at a different position / ... something like that.

    If the function does not work for your problem ... I remember to have read about a TD map making problem with the creator try to prevent players to wall in. I can't find the thread now. But the "solution" was to creat a dummy unit that checks the path by trying to run from p<sub>1</sub> and p<sub>2</sub> with speed of light. If the dummy can't find a way, then there was no way: And the last created tower was removed to cancel the wall in.

    Posted in: Triggers
  • 0

    posted a message on Howto destroy ammo stored in a unit?

    @DrSuperEvil: Go @Photoloss: Go @Eiviyn: Go

    I am using an Arm Magazin Ability because the upgrading needs some time. In fact, it takes more time to upgrade the Twilight Mothership than to warp it in at the Nexus. The intention is that you can already use this kind of Mothership on its maiden trip while there are this Protoss worker installing components. If you move the Mothership with your army (or without the army as a belated support unit) your Twilight Mothership is getting stronger. Especially funny / nice is the effect if you upgrade the engines for speed ... while it is moving: It's really like the lame / lazy Protoss found the button to turn on the boosters.

    The refund of Device Points is only needed if you reset the Mothership's abilities or (if I get it to work) if ypu want to uninstall a particular device. If the Mothership is hit by the disarming weapon from what ever unit it will get, there is no refund needed and not intended: Some things are beyond repair. Refunding minerals or gas is also not planned: A device should not be able to be salvaged: You can only "jettison" it to make room for a different device.

    Outsourcing units' abilities to triggers is something I did not want to do. The units and their behaviors should stayed bundled within the mod. I am make triggers only for player-player interaction depending on the map.


    I will experiment a bit. Don't know, how long it takes to find a working solution o.O

    Many thanks for the brainstorming. You folks are great :)

    Posted in: Data
  • 0

    posted a message on Howto destroy ammo stored in a unit?

    @DrSuperEvil: Go stepping a large step back (sorry for the now following long reply)

    I have made a modify version of the Protoss Mothership:

    Twilight Mothership

    The most stats are the same as the normal Mothership.

    Quote:

    Sister of the Mothership. Comes with almost no special abilities but can be upgraded and customized to use
    - Cloaking Field
    - Vortex
    - Mass Recall
    - Detection
    - Power Charging
    - Temporal Rift Shield
    - Teleport & Fleet Teleport
    - Quantum Disrupter

    Creates power for nearby structures.

    Enables:
    - Probes - The other Gateway units can be warped in, too

    Can attack ground and air units.

    You can build up to two Motherships of any kind in total - 2 normal OR 2 twilight OR 1+1

    The "almost no special abilities" means, that it only has the "Power Source" abilty after it is created at the Nexus. For all other abilities and for improving the slightly weaker stats to an almost overpower vehicle, you have to spend additional time and resources to upgrade it. All upgrades are individual. If you create a second Twilight Mothership instead of a regular one, this second one is also delivered with alomst no special abilities. If an upgraded Twilight Mothership is destroyed ... all its upgrades are gone.

    This I have made with the arm magazine ability and and 11 dummy units. These dummies represent the installed devices and the number every of these installed device stands for how much a special ability or stat is improved. E.g.

    • You can install the Quantum Disrupter Beam (A much weaker version of the Planet Cracker) twice. This switches from not installed to a very weak version to a weak version of the Cracker.
    • You can install the (not above listed) "Micro Black Hole Reactor" three times to improve the energy capacity of the ship in three steps.

    Every device as its own cost of time, resources and "Device Points" (see below) additionaly depending on the grade of the improvement. E.g.

    • Micro Black Hole Reactor Level 1 - 10 sec, 10 min, 10 gas, 1 device point
    • Micro Black Hole Reactor Level 2 - 20 sec, 20 min, 20 gas, 2 device point
    • Micro Black Hole Reactor Level 3 - 30 sec, 30 min, 30 gas, 4 device point

    After warp-in of a Twilight Mothership at the Nexus, it has a prebuild fixed amount of these "Device Points" of 40. If you would upgrade a Twilight Mothership completely, you would need 99 Device Points. Device Points are a charge used by all upgrades of this Arm Magazin ability.


    So far no problems here ...


    Now while testing it and playing around to balance it (adjusting effects and/or costs), a friend of mine has mis-clicked (?) and order a wrong upgrade wasting not only time and resources but also a number of these device points. He could not install the wanted configuration of device in this particular Twilight Mothership anymore.

    I would like to have an ability to reset the installed devices to "factory" status (and/or to install a single device) for the owner of the mothership. To top this, I would like to have an ability for another unit (e.g. a specialized Battlecruiser or only as an additional effect for the Yamato) to destroy one randomly chosen device of the Twilight Mothership. If you know "Master Of Orion 2", there was a ship component called "Achilles Targeting Unit". This unit helped to destroy enemy ships' internal component - effectively disarming them piece by piece.

    Posted in: Data
  • 0

    posted a message on Howto destroy ammo stored in a unit?

    @DrSuperEvil: Go

    There can be two of these specialized units per player.

    I was thinking of firing the dummy units that represents the installed devices like the carrier is firing its interceptors ... plus adding a timed life behavior then to the free / invisible dummy units with a period of almost 0.

    If this is working, I could add a weapon for the specialized unit that only fires at a very special missile of the counter unit. This would consume slowly but surely the specialization, if the counter unit fires its designed missiles.

    Posted in: Data
  • 0

    posted a message on Problems with a base sending mechanism

    I have not taken a closer look to your code. Quote: "[...] its pretty messy [...] I am afraid to agree to you at this point. But from the error message(s), I guess ...

    1. the point is not initialized or
    2. the point is set to "no point"
    3. the region checks breaks because of 1. or 2.

    To track down the bug

    1. insert a few debug routines to print the coords of the points before you are using them.
    2. include a fail back in the debug routine for the cause of "no point"
    Posted in: Triggers
  • 0

    posted a message on Does anyone know a (nice) 15 ppl FFA map?

    SC2 does not support more than 15 players (+1 neutral) in a game. So far I am using Tempest (8ppl) with additional start locations. But this leads to one empty start point and the start locations on the low ground (fomerly extension) are in a weaker position.

    I would like to make a 3-3-3-3-3 map from this 15 FFA map, but ...

    • I am not skilled ...
    • ... and not talented to make a new map from the scratch.
    • And I would like to spend my time more in editing data and triggers. There I am of more use.
    Posted in: Map Suggestions/Requests
  • 0

    posted a message on Arbiter Model

    @TheDyingTitan: Go

    There is already an Arbiter made/transfered from BW ... take a look here: TL: SC1BW

    Posted in: Map Suggestions/Requests
  • 0

    posted a message on Howto destroy ammo stored in a unit?

    @DrSuperEvil: Go

    That could work. I will try it. Do you know a way to destroy internal ammo triggered from another unit. I am think of a enemy counter unit that can disarm teh specialized unit.

    Posted in: Data
  • 0

    posted a message on Transfer Unit

    @illidans911: Go

    • The game can not handle too many mods that contains custom data.
    • If you only need a small fraction of a mod (especially of a mod with custom assets) it is better to copy&paste the needed parts. Or you will risk long needless loading times.
    Posted in: Data
  • 0

    posted a message on Transfer Unit

    @DarcZaFire: Go

    LOL .. I have just answered THIS in our team forum.

    Quote from JanChris:

    Hi DarcZaFire,

    if you copy all linked data elements between two uses of the save button (autosave disabled!), there is no certain order for copying the elements from one map/mod to another. You can do this best(?) in xml view ... but do not copy a too large amount of data at once: The clipboard can only handle up to 65K characters at once.

    I have learned this the hard way o.O

    I forgot to add: Do not use the undo function during this process either or you will stumble upon another glitch of the editor: the undo function uses the clipboard limit too. More than 65K undo characters will corrupt you work.

    Posted in: Data
  • 0

    posted a message on Howto destroy ammo stored in a unit?

    As suggested here, I am using an "Arm Magazine" ability to specialize a unit. That means every new learned ability / upgraded stat is represented by a special kind of ammo.

    Now I would like to add an ability to reset the unit to its "brand new" status. In case the player wants a different specialization later or he accidently ordered a wrong type of specialization, an ability to reset this unit back to its factory status would be helpful.

    How can an ability set the amount of stored ammunition units back to zero ?

    Posted in: Data
  • 0

    posted a message on Ability Functions not working

    @illidans911: Go

    I don't know, what you might have done wrong ... Here is a step by step how to find a funtion with the return value type "Ability Command"

    • Make a new function
    • set return value to "Ability Command" ... If you want only a specific sub type, you can choose it here, too (e.g. Target Type: Point)
    • add an action to the new function : return <value> choose for this test a preset value, like "Any Ability Command"
    • add a a different function, action or trigger routine a new variable of the type "Ability Command" with the same sub type or "All"
    • add a new action to this routine : Set Variable <your new variable> = ...
    • ... choose your new function from the categorie "- General"

    voila!

    Posted in: Triggers
  • 0

    posted a message on (SOLVED) A "small" problem by teaching the AI new tricks

    EDIT: I found another usefull built-in function:

    Set Variable
        Variable: iResearchIndex
        Value: Arithmetic (Integer)
            Value 1: Index Of Ability Command
                Ability Command: abilcmdResearchOrder
            Operator: +
            Value 2: 1
    

    This returns the correct Index.

    Preset definition

    ENUM Research Status
        Value Type: Integer
        Values
            ERROR - Upgrade mismatch research index
            No reserach structure
            Not enough resources
            No idle research structure
            Queued or in progress
            Research delayed (Queue full or requirements are not fulfilled)
            Completed
    

    Trigger

    Advanced Zerg Tech
        Events
            Timer - Every 10.0 seconds of Game Time
        Local Variables
            iZergPlayer = 15 <Integer>
            eResearchResult <ENUM Research Status>
        Conditions
        Actions
            Variable - Set eResearchResult = (Check Zerg - EnhanceCreepTumor1 and if needed order Spawning Pool - Zerg - Creep Tumor Enhancements 1  for player iZergPlayer at any Spawning Pool keep at least 0 and 0 and Don't Wait for an idle unit )
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    Or
                        Conditions
                            eResearchResult == No Reserach Structure
                            eResearchResult == Not enough resources
                Then
                    General - Skip remaining actions
                Else
            ------- Next "build order" can follow
    

    Function

    Check and Order Research
        Options: Function
        Return Type: ENUM Research Status
        Parameters
            Upgrade = No Game Link <Game Link - Upgrade>
            Research Order = No Ability Command <Ability Command - No Target>
            Research Unit = No Game Link <Game Link - Unit>
            Player = 1 <Integer>
            Minerals = 0 <Integer>
            Vespene = 0 <Integer>
            Wait / Don't Wait = Wait <Wait Option>
        Grammar Text: Check Upgrade and if needed order Research Order  for player Player at any Research Unit keep at least Minerals and Vespene and Wait / Don't Wait for an idle unit 
        Hint Text: (None)
        Custom Script Code
        Local Variables
            glUpgrade = Upgrade <Game Link - Upgrade>
            abilcmdResearchOrder = Research Order <Ability Command>
            utResearchStructrureType = Research Unit <Game Link - Unit>
            uResearchStructrure = No Unit <Unit>
            iPlayer = Player <Integer>
            iResourceReserveMinerals = Minerals <Integer>
            iResourceReserveVespene = Vespene <Integer>
            eWaitOption = Wait / Don't Wait <Wait Option>
            ------- 
            iResearchIndex = 0 <Integer>
            glResearchAbility <Game Link - Ability>
            ugAllResearchStructures = (Empty unit group) <Unit Group>
            iResourceAmount = 0 <Integer>
        Actions
            Variable - Set glResearchAbility = (Ability of abilcmdResearchOrder)
            Variable - Set iResearchIndex = ((Index of abilcmdResearchOrder) + 1)
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    (glUpgrade count for player iPlayer, counting Complete) > 0
                Then
                    Debug - Debug - Print String("Status", "completed")
                    General - Return Completed
                Else
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    Or
                        Conditions
                            (glUpgrade count for player iPlayer, counting In Progress) > 0
                            (glUpgrade count for player iPlayer, counting Queued) > 0
                Then
                    Debug - Debug - Print String("Status", "queued or better")
                    General - Return Queued or in progress
                Else
            Variable - Set uResearchStructrure = (Random Living unit from (utResearchStructrureType units in (Entire map) owned by player iPlayer matching Excluded: Missile, Under Construction, Dead, Hidden, with at most Any Amount))
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    uResearchStructrure == No Unit
                Then
                    Debug - Debug - Print String("Status", "no reserach structure")
                    General - Return No reserach structure
                Else
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    Or
                        Conditions
                            (Player iPlayer Minerals) < (iResourceReserveMinerals + (Value of Abilities (String(glResearchAbility)) ("InfoArray[Research%1].Resource[Minerals]" with up to All "%1" replaced by (String(iResearchIndex)) (Sensitive to case)) for player Any Player as an integer))
                            (Player iPlayer Vespene) < (iResourceReserveVespene + (Value of Abilities (String(glResearchAbility)) ("InfoArray[Research%1].Resource[Vespene]" with up to All "%1" replaced by (String(iResearchIndex)) (Sensitive to case)) for player Any Player as an integer))
                Then
                    Debug - Debug - Print String("Status", "not enough resources")
                    General - Return Not enough resources
                Else
            Unit Group - Add all units in (utResearchStructrureType units in (Entire map) owned by player iPlayer matching Excluded: Missile, Under Construction, Dead, Hidden, with at most Any Amount) to ugAllResearchStructures
            Unit Group - Remove all units in (Idle Units for player iPlayer) from ugAllResearchStructures
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    (Number of Any units in ugAllResearchStructures) == 0
                    eWaitOption == Wait
                Then
                    Debug - Debug - Print String("Status", "no idle research structure")
                    General - Return No idle research structure
                Else
            Variable - Set uResearchStructrure = (Random Any unit from ugAllResearchStructures)
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    uResearchStructrure == No Unit
                Then
                    Variable - Set uResearchStructrure = (Random Living unit from (utResearchStructrureType units in (Entire map) owned by player iPlayer matching Excluded: Missile, Under Construction, Dead, Hidden, with at most Any Amount))
                Else
            Variable - Set iResourceAmount = ((Player iPlayer Minerals) + (Player iPlayer Vespene))
            Unit - Order uResearchStructrure to (abilcmdResearchOrder) (After Existing Orders)
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    iResourceAmount == ((Player iPlayer Minerals) + (Player iPlayer Vespene))
                Then
                    Debug - Debug - Print String("Research delayed", (String(glUpgrade)))
                    General - Return Research delayed (Queue full or requirements are not fulfilled)
                Else
            Debug - Debug - Print String("New research started", (String(glUpgrade)))
            General - Return Queued or in progress
    
    Posted in: Triggers
  • 0

    posted a message on (SOLVED) A "small" problem by teaching the AI new tricks

    @JanChris: Go
    ( Talking to myself, but maybe some else can get a bit of useful information out of it later ... in case he/she stumbles upon the same problem )

    What I have found out so far:


    String( <Game Link - Ability> )
    > ID of ability ... e.g. "SpawningPoolResearch"

    • Value: Convert Game Link To String
      • Value: <Game Link - Ability> ... "Spawning Pool - Research (Spawning Pool)"

    String( <Game Link - Upgrade> )
    > ID of upgrade ... e.g. "zerglingmovementspeed" for "Metabolic Boost"

    • Value: Convert Game Link To String
      • Value: <Game Link - Upgrade> ... "Zergling - Metabolic Boost"

    Value of <Catalog Type> (String((Ability of <Ability Command>))) <string> for player <integer>)
    > ID of upgrade "zerglingmovementspeed", too

    • Value: Catalog Field Value Get
      • Catalog: Abilities
      • Entry: Convert Game Link To String
        • Value: <Game Link - Ability> ... "Spawning Pool - Research (Spawning Pool)"
      • Field Path: <string> ... "InfoArray[Research2].Upgrade" ...
        but I could ask here for other research topics, depends on this index
      • Player: <integer> ... 1

    There seems to be no way to get from an upgrade to its costs. There is only a one way direction link and not a bi-directional link.
    Judging it from a more distant, detached vantage point: This is logical !

    • upgrade costs are stored in the abilities. These bundle upgrades.
      • An upgrade could be used multiple times by abilities offering a research at different costs
        • This could be used to offer a normal speed research with normal costs
        • and a fast speed research with higher resource costs.
      • Or an upgrade is "lost" if the research building is destroyed.
      • but you can recover it by researching the same topic again with reduced time / resource costs

    To get the costs of a research order, I can use this:

    • Value: Catalog Field Value Get
      • Catalog: Abilities
      • Entry: Convert Game Link To String
        • Value: <Game Link - Ability> ... "Spawning Pool - Research (Spawning Pool)"
      • Field Path: <string> ... "InfoArray[Research2].Resource[Vespene]"
      • Player: <integer> ... 1

        or Resource[Minerals] respectively

    For my function means that, I need to know the <Ability Command> of the research ability and the index of the research topic within this research ability.

    Posted in: Triggers
  • To post a comment, please or register a new account.