• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Mercenary System

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Like
Reactions: deepstrasz
A fullscreen version of a mercenery system I made a few years back.
I have no intention of updating it, but I hope someone can find it useful in the non-approved section.

  • Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set click_trigger = Click <gen>
      • Set hover_trigger = Hover <gen>
      • Visibility - Disable fog of war
      • Visibility - Disable black mask
      • Camera - Set the camera bounds for Player 1 (Red) to MAP <gen>
      • Set mercs[1] = Paladin
      • Set mercs[2] = Peasant
      • Set mercs[3] = Footman
      • Set mercs[4] = Spell Breaker
      • Set mercs[5] = Rifleman
      • Set mercs[6] = Knight
      • Set gold_cost[1] = 500
      • Set gold_cost[2] = 70
      • Set gold_cost[3] = 120
      • Set gold_cost[4] = 175
      • Set gold_cost[5] = 140
      • Set gold_cost[6] = 230
      • Set lumber_cost[1] = 100
      • Set lumber_cost[2] = 0
      • Set lumber_cost[3] = 0
      • Set lumber_cost[4] = 30
      • Set lumber_cost[5] = 25
      • Set lumber_cost[6] = 55
      • Set merc_regions[1] = Region 038 <gen>
      • Set merc_regions[2] = Region 038 Copy <gen>
      • Set merc_regions[3] = Region 038 Copy 2 <gen>
      • Set merc_regions[4] = Region 038 Copy 3 <gen>
      • Set merc_regions[5] = Region 038 Copy 4 <gen>
      • Set merc_regions[6] = Region 038 Copy 5 <gen>
      • Set click_sound = BigButtonClick <gen>
      • Set pay_sound = ReceiveGold <gen>
      • Custom script: call FullscreenQuest.Init()
JASS:
struct FullscreenQuest
    static trackable accept
    static trackable reject
    static trackable array plus
    static trackable array minus
    static location array l
    static location array display
    static location array goldLoc
    static location array lumberLoc
    static location totalGoldLoc
    static location totalLumberLoc
    static integer array number
    static integer goldCount = 0
    static integer lumberCount = 0
    static string model = "war3mapImported\\4x4Trackable.mdl"
    static texttag array tag
    static texttag array goldTag
    static texttag array lumberTag
    static texttag totalGold
    static texttag totalLumber
    static integer counter = 0
    static integer max = 6
 
    static method Init takes nothing returns nothing
        local integer i = 1
        //
        set totalGoldLoc = GetRectCenter(gg_rct_Gold_Loc)
        set totalLumberLoc = GetRectCenter(gg_rct_Lumber_Loc)
        //
        set l[1] = GetRectCenter(gg_rct_Region_001)
        set l[2] = GetRectCenter(gg_rct_Region_000)
        //
        set l[3] = GetRectCenter(gg_rct_Region_002)
        set l[4] = GetRectCenter(gg_rct_Region_003)
        set l[5] = GetRectCenter(gg_rct_Region_004)
        set l[6] = GetRectCenter(gg_rct_Region_005)
        set l[7] = GetRectCenter(gg_rct_Region_006)
        set l[8] = GetRectCenter(gg_rct_Region_007)
        set l[9] = GetRectCenter(gg_rct_Region_008)
        set l[10] = GetRectCenter(gg_rct_Region_009)
        set l[11] = GetRectCenter(gg_rct_Region_010)
        set l[12] = GetRectCenter(gg_rct_Region_011)
        set l[13] = GetRectCenter(gg_rct_Region_012)
        set l[14] = GetRectCenter(gg_rct_Region_013)
        //
        set goldLoc[1] = GetRectCenter(gg_rct_Gold_01)
        set goldLoc[2] = GetRectCenter(gg_rct_Gold_02)
        set goldLoc[3] = GetRectCenter(gg_rct_Gold_03)
        set goldLoc[4] = GetRectCenter(gg_rct_Gold_04)
        set goldLoc[5] = GetRectCenter(gg_rct_Gold_05)
        set goldLoc[6] = GetRectCenter(gg_rct_Gold_06)
        //
        set lumberLoc[1] = GetRectCenter(gg_rct_Lumber_01)
        set lumberLoc[2] = GetRectCenter(gg_rct_Lumber_02)
        set lumberLoc[3] = GetRectCenter(gg_rct_Lumber_03)
        set lumberLoc[4] = GetRectCenter(gg_rct_Lumber_04)
        set lumberLoc[5] = GetRectCenter(gg_rct_Lumber_05)
        set lumberLoc[6] = GetRectCenter(gg_rct_Lumber_06)
        //
        set display[1] = GetRectCenter(gg_rct_Start_01)
        set display[2] = GetRectCenter(gg_rct_Start_02)
        set display[3] = GetRectCenter(gg_rct_Start_03)
        set display[4] = GetRectCenter(gg_rct_Start_04)
        set display[5] = GetRectCenter(gg_rct_Start_05)
        set display[6] = GetRectCenter(gg_rct_Start_06)
        //
        set accept = newTrackable()
        set reject = newTrackable()
        //
        loop
            exitwhen i > max
                set minus[i] = newTrackable()
                set plus[i] = newTrackable()
                set number[i] = 0
                set tag[i] = CreateTextTagLocBJ(I2S(number[i]), display[i], 0, 12, 255,255,255,255)
                set goldTag[i] = CreateTextTagLocBJ(I2S(udg_gold_cost[i]), goldLoc[i], 0, 12, 255,255, 0, 255)
                set lumberTag[i] = CreateTextTagLocBJ(I2S(udg_lumber_cost[i]), lumberLoc[i], 0, 12, 0, 255, 0,255)
            set i = i + 1
        endloop
        set totalGold = CreateTextTagLocBJ(I2S(goldCount), totalGoldLoc, 0, 12, 255,255,255,255)
        set totalLumber = CreateTextTagLocBJ(I2S(lumberCount), totalLumberLoc, 0, 12, 255,255,255,255)
    endmethod
 
    static method newTrackable takes nothing returns trackable
        local destructable d
        local trackable t
        local real x
        local real y
        set counter = counter + 1
        set x = GetLocationX(l[counter])
        set y = GetLocationY(l[counter])
        set d = CreateDestructableZ( 'OTip', x, y, 0, 0.00, 1, 0 )
        set t = CreateTrackable(model, x, y, 270)
        call RemoveDestructable(d)
        call TriggerRegisterTrackableHitEvent(udg_click_trigger, t)
        call TriggerRegisterTrackableTrackEvent(udg_hover_trigger, t)
        return t
    endmethod
 
    static method onInit takes nothing returns nothing
   
    endmethod
 
    static method create takes nothing returns thistype
        local thistype this = thistype.allocate()

        return this
    endmethod
 
    method Update takes nothing returns nothing
   
    endmethod
endstruct
  • Click
    • Events
    • Conditions
    • Actions
      • Custom script: local trackable tr = GetTriggeringTrackable()
      • Custom script: local integer i = 0
      • Custom script: if(tr == FullscreenQuest.accept) then
      • Sound - Play pay_sound
      • Set s = Your hired [gray]mercenaries[/gray] has arrived!
      • Custom script: set udg_s = ConvertString(udg_s)
      • Game - Display to (All players) the text: s
      • Custom script: set udg_count_check = FullscreenQuest.max
      • For each (Integer A) from 1 to count_check, do (Actions)
        • Loop - Actions
          • Custom script: set udg_number = FullscreenQuest.number[bj_forLoopAIndex]
          • For each (Integer B) from 1 to number, do (Actions)
            • Loop - Actions
              • Unit - Create 1 mercs[(Integer A)] for Player 1 (Red) at (Center of Spawn <gen>) facing Default building facing degrees
              • Unit - Order (Last created unit) to Attack-Move To (Center of Order <gen>)
      • Cinematic - Ping minimap for Player Group - Player 1 (Red) at (Center of Spawn <gen>) for 2.00 seconds
      • Custom script: endif
      • Custom script: if(tr == FullscreenQuest.reject) then
      • Sound - Stop (Last played sound) Immediately
      • Sound - Play click_sound
      • Cinematic - Fade out and back in over 1.00 seconds using texture Black Mask and color (0.00%, 0.00%, 0.00%) with 0.00% transparency
      • Wait 0.50 seconds
      • Camera - Set the camera bounds for Player 1 (Red) to MAP <gen>
      • Camera - Apply cam for Player 1 (Red) over 0.00 seconds
      • Custom script: endif
      • Custom script: loop
      • Custom script: exitwhen i >= FullscreenQuest.max
      • Custom script: set i = i + 1
      • Custom script: if(tr == FullscreenQuest.plus[i]) then
      • Sound - Play click_sound
      • Custom script: if udg_current_loc != i then
      • Special Effect - Destroy effect
      • Custom script: call AddSpecialEffectLocBJ(GetRectCenter(udg_merc_regions[i]), "selector.mdl" )
      • Set effect = (Last created special effect)
      • Custom script: set udg_current_loc = i
      • Custom script: endif
      • Custom script: set FullscreenQuest.number[i] = FullscreenQuest.number[i] + 1
      • Custom script: call SetTextTagTextBJ(FullscreenQuest.tag[i], I2S(FullscreenQuest.number[i]), 12)
      • Custom script: set FullscreenQuest.goldCount = FullscreenQuest.goldCount + udg_gold_cost[i]
      • Custom script: call SetTextTagTextBJ(FullscreenQuest.totalGold, I2S(FullscreenQuest.goldCount),12)
      • Custom script: set FullscreenQuest.lumberCount = FullscreenQuest.lumberCount + udg_lumber_cost[i]
      • Custom script: call SetTextTagTextBJ(FullscreenQuest.totalLumber, I2S(FullscreenQuest.lumberCount),12)
      • Custom script: endif
      • Custom script: if(tr == FullscreenQuest.minus[i]) then
      • Sound - Stop (Last played sound) Immediately
      • Sound - Play click_sound
      • Custom script: if udg_current_loc != i then
      • Special Effect - Destroy effect
      • Custom script: call AddSpecialEffectLocBJ(GetRectCenter(udg_merc_regions[i]), "selector.mdl" )
      • Set effect = (Last created special effect)
      • Custom script: set udg_current_loc = i
      • Custom script: endif
      • Custom script: if FullscreenQuest.number[i] > 0 then
      • Custom script: set FullscreenQuest.number[i] = FullscreenQuest.number[i] - 1
      • Custom script: call SetTextTagTextBJ(FullscreenQuest.tag[i], I2S(FullscreenQuest.number[i]), 10)
      • Custom script: set FullscreenQuest.goldCount = FullscreenQuest.goldCount - udg_gold_cost[i]
      • Custom script: call SetTextTagTextBJ(FullscreenQuest.totalGold, I2S(FullscreenQuest.goldCount),10)
      • Custom script: set FullscreenQuest.lumberCount = FullscreenQuest.lumberCount - udg_lumber_cost[i]
      • Custom script: call SetTextTagTextBJ(FullscreenQuest.totalLumber, I2S(FullscreenQuest.lumberCount),10)
      • Custom script: endif
      • Custom script: endif
      • Custom script: endloop
Contents

Merc System (Map)

Reviews
KILLCIDE
Welp that's enough for me :D just send me a message if you do want it to be officially reviewed.
Top