• 🏆 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!
  • 🏆 Hive's 6th HD Modeling Contest: Mechanical is now open! Design and model a mechanical creature, mechanized animal, a futuristic robotic being, or anything else your imagination can tinker with! 📅 Submissions close on June 30, 2024. Don't miss this opportunity to let your creativity shine! Enter now and show us your mechanical masterpiece! 🔗 Click here to enter!

Stats System [1.05b]

  • Like
Reactions: Almia
What does this system do?

When a hero up a level , he is take 5(configurable) points. If he click on a book, one point is lost and he take a selected attribute.
Those system fully MPI.

To import this system you should:

1)Copy unit from object editor.
2)Create a region in you map(like in test map)
3) Copy all triggers
4) Configurate "Stats INI" trigger
5)Look on the "Example" trigger and copy part of them to your trigger of creation a hero.
6) Give credits, if you want.

Changelog:
1.00 - Improved some comments and make configurations more easy to use, now you can just put 2 lines after creation a hero instead of large block of code.
1.00 - 1.03E - improving some trigger things
1.04 - there are no repeating things in a triggers(like Triggering unit etc.)
Added "Dead stats" so player can learn stats for his hero, while hero is dead.
Improved some documentation and configurations.
1.05 - Now i`m using GetLocalPlayer() function; system contains about 12 floating texts only.
1.05b - SFX now are creating on a books. Fixed crash. English name of a "books". Fixed indexing bug. Updated a screen-shot.

Keywords:
System , Stats , Strength , Agility , intelligence , click , button, book, local, player
Contents

Stats system 1.05b (Map)

Reviews
Stats System v1.04 | Reviewed by Maker | 24th May 2013 Approved The system works and doesn't leak The system is only MPI, not MUI You create a lot of floating texts, there can only be 100 in a map GetLocalPlayer...

Moderator

M

Moderator


Stats System v1.04 | Reviewed by Maker | 24th May 2013
Approved


126248-albums6177-picture66521.png


  • The system works and doesn't leak
126248-albums6177-picture66523.png


  • The system is only MPI, not MUI
  • You create a lot of floating texts, there can only be 100 in a map
    GetLocalPlayer would help
  • Trackables could be smoother than selecting a unit
[tr]


September 19 2012
Magtheridon96:

I have shortened my last review to only include the things I still think should be done.

I would totally recommend storing things into variables instead of repeating them again and again and again. (You know, like (Triggering player), (Player number of ...), (Triggering unit), (Last created unit), etc...).



Reviewed by Maker, Stats System [1.03b], 5th May 2012

The wait in Item obtainig or dropping makes the system not MPI.
If the system should be MPI, then there's no need for a loop in that trigger.
Just use player number.

Reviewed by Maker, Stats System v1.02, 24th Apr 2012

Required changes
  • Leaks player group:
    • Floating Text - Show (Last created floating text) for (Player group(...)
Suggested changes
  • You could restore the selection group for triggering player
    after spending a point
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • And - All (Conditions) are true
          • Conditions
            • ((Triggering unit) is A structure) Equal to True
            • ((Triggering unit) is A structure) Equal to True
    ->
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • ((Triggering unit) is A structure) Equal to True
        • ((Triggering unit) is A structure) Equal to True
  • Why create new floating text instead of chaging the text of the old one?
  • Use Skip Remaining actions after detecting correct selected unit
 
Level 28
Joined
Oct 28, 2011
Messages
4,759
Man this is amazing for RPG's, haven't try this on multiplayer, but I guess this is MPI. 5/5

211785-albums5481-picture56886.jpg


And also I posted your trigger :D(next time post it with the description)

This trigger is updated

  • Stats INI
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- 12 in dota --------
      • Set MaxPlayersCount = 3
      • -------- - --------
      • Set Stats_UnitType = Бонус
      • -------- count of unspent points when lvlup --------
      • Set UP_Number = 5
      • For each (Integer Index) from 1 to MaxPlayersCount, do (Actions)
        • Loop - Actions
          • Set UnsuspentSP[Index] = UP_Number
      • Set Stats_Text[1] = |c00FF0000Strength|r :
      • Set Stats_Text[2] = |c0017CB33Agility|r :
      • Set Stats_Text[3] = |c001407A6intelligence|r :
      • -------- size of strength, agility and intelligence --------
      • Set Stats_Size = 10.00
      • -------- size of unspent number of points --------
      • Set UnspentSize = 17.00
      • -------- SFX --------
      • Set StrSP = Abilities\Spells\Items\AIlm\AIlmTarget.mdl
      • Set AgSP = Abilities\Spells\Items\AIam\AIamTarget.mdl
      • Set IntSP = Abilities\Spells\Items\AIim\AIimTarget.mdl
      • Set ExtraStrColor = |c0000FF33
      • Set ExtraIntColor = |c0000FF33
      • Set ExtraAgColor = |c0000FF33
      • Set PointSP = chest
      • -------- unspent stat points offsted : --------
      • Set OffsetX = 325.00
      • Set OffsetY = 325.00
      • Set Floating_Text_Offset = 100.00
      • -------- distance between books --------
      • Set UnitYOffset = 325.00
      • -------- distance between books and text --------
      • Set UnitLeftOffset = 200.00
      • -------- distance between stats and extra stats --------
      • Set ExtraDistance = 80.00
      • Set Rect_for_center = StatsZone <gen>
      • Set Centerly_Point = (Center of Rect_for_center)
      • Set OffsetedPoint = (Centerly_Point offset by (OffsetX, OffsetY))
      • Custom script: call RemoveRect(udg_Rect_for_center)
  • Stats Board Creation
    • Events
      • Time - Elapsed game time is 0.75 seconds
    • Conditions
    • Actions
      • For each (Integer Index) from 1 to 3, do (Actions)
        • Loop - Actions
          • Set Stats_Array_Point[Index] = (Centerly_Point offset by ((-1.00 x UnitLeftOffset), ((UnitYOffset x 2.00) - (UnitYOffset x (Real(Index))))))
          • Set Floating_Text_Array_Point[Index] = (Stats_Array_Point[Index] offset by Floating_Text_Offset towards 0.00 degrees)
          • Set Floating_Text_Array_Stats[Index] = (Floating_Text_Array_Point[Index] offset by 225.00 towards 0.00 degrees)
          • Set ExtraPoint[Index] = (Floating_Text_Array_Stats[Index] offset by ExtraDistance towards 0.00 degrees)
          • Floating Text - Create floating text that reads Stats_Text[Index] at Floating_Text_Array_Point[Index] with Z offset 0.00, using font size Stats_Size, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
          • Unit - Create 1 Stats_UnitType for Neutral Passive at Stats_Array_Point[Index] facing Default building facing degrees
          • Set Bonus_Unit_Array[Index] = (Last created unit)
          • Custom script: call RemoveLocation(udg_Stats_Array_Point[udg_Index])
      • -------- - --------
      • For each (Integer Index) from 1 to MaxPlayersCount, do (Actions)
        • Loop - Actions
          • Set TempPlayerGroup = (Player group((Player(Index))))
          • Floating Text - Create floating text that reads (String(HeroStr[Index])) at Floating_Text_Array_Stats[1] with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
          • Floating Text - Hide (Last created floating text) for (All players)
          • Floating Text - Show (Last created floating text) for TempPlayerGroup
          • Set Str_Floating_Text[Index] = (Last created floating text)
          • -------- - --------
          • Floating Text - Create floating text that reads (String(HeroAg[Index])) at Floating_Text_Array_Stats[2] with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
          • Floating Text - Hide (Last created floating text) for (All players)
          • Floating Text - Show (Last created floating text) for TempPlayerGroup
          • Set Ag_Floating_Text[Index] = (Last created floating text)
          • -------- - --------
          • Floating Text - Create floating text that reads (String(HeroInt[Index])) at Floating_Text_Array_Stats[3] with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
          • Floating Text - Hide (Last created floating text) for (All players)
          • Floating Text - Show (Last created floating text) for TempPlayerGroup
          • Set Int_Floating_Text[Index] = (Last created floating text)
          • -------- - --------
          • Floating Text - Create floating text that reads (String(UnsuspentSP[Index])) at OffsetedPoint with Z offset 0.00, using font size UnspentSize, color (0.00%, 100.00%, 100.00%), and 0.00% transparency
          • Floating Text - Hide (Last created floating text) for (All players)
          • Floating Text - Show (Last created floating text) for TempPlayerGroup
          • Set Floating_Text_Array_Unsuspent[Index] = (Last created floating text)
          • -------- - --------
          • Floating Text - Create floating text that reads ((+ + (((ExtraStrColor + ((String(StrExtra[Index])) + |r)) + <Empty String>) + ))) at ExtraPoint[1] with Z offset 0.00, using font size Stats_Size, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
          • Floating Text - Hide (Last created floating text) for (All players)
          • Floating Text - Show (Last created floating text) for TempPlayerGroup
          • Set Extra_Floating_Text_Str[Index] = (Last created floating text)
          • -------- - --------
          • Floating Text - Create floating text that reads ((+ + (((ExtraAgColor + ((String(AgExtra[Index])) + |r)) + <Empty String>) + ))) at ExtraPoint[2] with Z offset 0.00, using font size Stats_Size, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
          • Floating Text - Hide (Last created floating text) for (All players)
          • Floating Text - Show (Last created floating text) for TempPlayerGroup
          • Set Extra_Floating_Text_Ag[Index] = (Last created floating text)
          • -------- - --------
          • Floating Text - Create floating text that reads ((+ + (((ExtraIntColor + ((String(IntExtra[Index])) + |r)) + <Empty String>) + ))) at ExtraPoint[3] with Z offset 0.00, using font size Stats_Size, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
          • Floating Text - Hide (Last created floating text) for (All players)
          • Floating Text - Show (Last created floating text) for TempPlayerGroup
          • Set Extra_Floating_Text_Int[Index] = (Last created floating text)
          • Custom script: call DestroyForce(udg_TempPlayerGroup)
          • -------- - --------
  • Selection Clearing
    • Events
      • Player - Player 1 (Red) Selects a unit
      • Player - Player 2 (Blue) Selects a unit
      • Player - Player 3 (Teal) Selects a unit
      • Player - Player 4 (Purple) Selects a unit
      • Player - Player 5 (Yellow) Selects a unit
      • Player - Player 6 (Orange) Selects a unit
      • Player - Player 7 (Green) Selects a unit
      • Player - Player 8 (Pink) Selects a unit
      • Player - Player 9 (Gray) Selects a unit
      • Player - Player 10 (Light Blue) Selects a unit
      • Player - Player 11 (Dark Green) Selects a unit
      • Player - Player 12 (Brown) Selects a unit
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Stats_UnitType
    • Actions
      • Selection - Clear selection for (Triggering player)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • UnsuspentSP[(Player number of (Triggering player))] Greater than 0
          • Stats_Hero[(Player number of (Triggering player))] Not equal to No unit
          • (Stats_Hero[(Player number of (Triggering player))] is alive) Equal to True
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Triggering unit) Equal to Bonus_Unit_Array[1]
            • Then - Actions
              • Set HeroStr[(Player number of (Triggering player))] = ((Strength of Stats_Hero[(Player number of (Triggering player))] (Exclude bonuses)) + 1)
              • Floating Text - Change text of Str_Floating_Text[(Player number of (Triggering player))] to (String(HeroStr[(Player number of (Triggering player))])) using font size Stats_Size
              • -------- - --------
              • Hero - Modify Strength of Stats_Hero[(Player number of (Triggering player))]: Add 1
              • Special Effect - Create a special effect attached to the PointSP of Stats_Hero[(Player number of (Triggering player))] using StrSP
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Triggering unit) Equal to Bonus_Unit_Array[2]
            • Then - Actions
              • Set HeroAg[(Player number of (Triggering player))] = ((Agility of Stats_Hero[(Player number of (Triggering player))] (Exclude bonuses)) + 1)
              • Floating Text - Change text of Ag_Floating_Text[(Player number of (Triggering player))] to (String(HeroAg[(Player number of (Triggering player))])) using font size Stats_Size
              • -------- - --------
              • Hero - Modify Agility of Stats_Hero[(Player number of (Triggering player))]: Add 1
              • Special Effect - Create a special effect attached to the PointSP of Stats_Hero[(Player number of (Triggering player))] using AgSP
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Triggering unit) Equal to Bonus_Unit_Array[3]
            • Then - Actions
              • Set HeroInt[(Player number of (Triggering player))] = ((Intelligence of Stats_Hero[(Player number of (Triggering player))] (Exclude bonuses)) + 1)
              • Floating Text - Change text of Int_Floating_Text[(Player number of (Triggering player))] to (String(HeroInt[(Player number of (Triggering player))])) using font size Stats_Size
              • -------- - --------
              • Hero - Modify Intelligence of Stats_Hero[(Player number of (Triggering player))]: Add 1
              • Special Effect - Create a special effect attached to the PointSP of Stats_Hero[(Player number of (Triggering player))] using IntSP
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
          • Set UnsuspentSP[(Player number of (Triggering player))] = (UnsuspentSP[(Player number of (Triggering player))] - 1)
          • Floating Text - Change text of Floating_Text_Array_Unsuspent[(Player number of (Triggering player))] to (String(UnsuspentSP[(Player number of (Triggering player))])) using font size UnspentSize
          • -------- - --------
          • Skip remaining actions
        • Else - Actions
      • Selection - Select Stats_Hero[(Player number of (Triggering player))] for (Triggering player)
  • Suspent SP
    • Events
      • Unit - A unit Gains a level
    • Conditions
      • ((Triggering unit) is A Hero) Equal to True
    • Actions
      • Set TempPlayerGroup = (Player group((Player((Player number of (Triggering player))))))
      • For each (Integer Index) from 1 to MaxPlayersCount, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Triggering unit) Equal to Stats_Hero[Index]
            • Then - Actions
              • Set UnsuspentSP[Index] = (UnsuspentSP[Index] + UP_Number)
              • Floating Text - Change text of Floating_Text_Array_Unsuspent[Index] to (String(UnsuspentSP[Index])) using font size UnspentSize
            • Else - Actions
      • Set HeroStr[(Player number of (Triggering player))] = (Strength of Stats_Hero[(Player number of (Triggering player))] (Exclude bonuses))
      • Set HeroInt[(Player number of (Triggering player))] = (Intelligence of Stats_Hero[(Player number of (Triggering player))] (Exclude bonuses))
      • Set HeroAg[(Player number of (Triggering player))] = (Agility of Stats_Hero[(Player number of (Triggering player))] (Exclude bonuses))
      • -------- - --------
      • Floating Text - Destroy Str_Floating_Text[(Player number of (Triggering player))]
      • Floating Text - Create floating text that reads (String(HeroStr[(Player number of (Triggering player))])) at Floating_Text_Array_Stats[1] with Z offset 0.00, using font size Stats_Size, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
      • Floating Text - Hide (Last created floating text) for (All players)
      • Floating Text - Show (Last created floating text) for TempPlayerGroup
      • Floating Text - Change text of Floating_Text_Array_Unsuspent[Index] to (String(UnsuspentSP[Index])) using font size UnspentSize
      • -------- --------
      • Floating Text - Destroy Ag_Floating_Text[(Player number of (Triggering player))]
      • Floating Text - Create floating text that reads (String(HeroAg[(Player number of (Triggering player))])) at Floating_Text_Array_Stats[2] with Z offset 0.00, using font size Stats_Size, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
      • Floating Text - Hide (Last created floating text) for (All players)
      • Floating Text - Show (Last created floating text) for TempPlayerGroup
      • -------- --------
      • Floating Text - Destroy Int_Floating_Text[(Player number of (Triggering player))]
      • Floating Text - Create floating text that reads (String(HeroInt[(Player number of (Triggering player))])) at Floating_Text_Array_Stats[3] with Z offset 0.00, using font size Stats_Size, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
      • Floating Text - Hide (Last created floating text) for (All players)
      • Floating Text - Show (Last created floating text) for TempPlayerGroup
      • Custom script: call DestroyForce(udg_TempPlayerGroup)
  • Item obtainig or dropping
    • Events
      • Unit - A unit Acquires an item
      • Unit - A unit Loses an item
      • Unit - A unit Learns a skill
    • Conditions
    • Actions
      • For each (Integer Index) from 1 to MaxPlayersCount, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Triggering unit) Equal to Stats_Hero[Index]
            • Then - Actions
              • Set HeroStr[Index] = (Strength of Stats_Hero[Index] (Exclude bonuses))
              • Set HeroInt[Index] = (Intelligence of Stats_Hero[Index] (Exclude bonuses))
              • Set HeroAg[Index] = (Agility of Stats_Hero[Index] (Exclude bonuses))
              • -------- - --------
              • Floating Text - Change text of Str_Floating_Text[Index] to (String(HeroStr[Index])) using font size Stats_Size
              • -------- --------
              • Floating Text - Change text of Ag_Floating_Text[Index] to (String(HeroAg[Index])) using font size Stats_Size
              • -------- --------
              • Floating Text - Change text of Int_Floating_Text[Index] to (String(HeroInt[Index])) using font size Stats_Size
              • Wait 0.01 seconds
              • Set StrExtra[Index] = ((Strength of Stats_Hero[Index] (Include bonuses)) - (Strength of Stats_Hero[Index] (Exclude bonuses)))
              • Set IntExtra[Index] = ((Intelligence of Stats_Hero[Index] (Include bonuses)) - (Intelligence of Stats_Hero[Index] (Exclude bonuses)))
              • Set AgExtra[Index] = ((Agility of Stats_Hero[Index] (Include bonuses)) - (Agility of Stats_Hero[Index] (Exclude bonuses)))
              • -------- - --------
              • Floating Text - Change text of Extra_Floating_Text_Str[Index] to ((+ + (ExtraStrColor + ((String(StrExtra[Index])) + |r)))) using font size Stats_Size
              • -------- - --------
              • Floating Text - Change text of Extra_Floating_Text_Int[Index] to ((+ + (ExtraIntColor + ((String(IntExtra[Index])) + |r)))) using font size Stats_Size
              • -------- - --------
              • Floating Text - Change text of Extra_Floating_Text_Ag[Index] to ((+ + (ExtraAgColor + ((String(AgExtra[Index])) + |r)))) using font size Stats_Size
            • Else - Actions
  • example
    • Events
      • Time - Elapsed game time is 1.00 seconds
    • Conditions
    • Actions
      • Set Temp_Loc = (Player 1 (Red) start location)
      • Unit - Create 1 Mountain King for Player 1 (Red) at Temp_Loc facing Default building facing degrees
      • Custom script: call RemoveLocation(udg_Temp_Loc)
      • -------- --------
      • -------- AFTER CREATING YOUR HERO --------
      • -------- --------
      • Set Player_Number_Index = (Player number of (Owner of (Last created unit)))
      • Set Stats_Hero[Player_Number_Index] = (Last created unit)
      • Set HeroStr[Player_Number_Index] = (Strength of Stats_Hero[Player_Number_Index] (Exclude bonuses))
      • Set HeroInt[Player_Number_Index] = (Intelligence of Stats_Hero[Player_Number_Index] (Exclude bonuses))
      • Set HeroAg[Player_Number_Index] = (Agility of Stats_Hero[Player_Number_Index] (Exclude bonuses))
      • Set StrExtra[Player_Number_Index] = ((Strength of Stats_Hero[Player_Number_Index] (Include bonuses)) - (Strength of Stats_Hero[Player_Number_Index] (Exclude bonuses)))
      • Set IntExtra[Player_Number_Index] = ((Intelligence of Stats_Hero[Player_Number_Index] (Include bonuses)) - (Intelligence of Stats_Hero[Player_Number_Index] (Exclude bonuses)))
      • Set AgExtra[Player_Number_Index] = ((Agility of Stats_Hero[Player_Number_Index] (Include bonuses)) - (Agility of Stats_Hero[Player_Number_Index] (Exclude bonuses)))
      • Set TempPlayerGroup = (Player group((Player(Player_Number_Index))))
      • Floating Text - Destroy Floating_Text_Array_Unsuspent[Player_Number_Index]
      • Floating Text - Create floating text that reads (String(UnsuspentSP[Player_Number_Index])) at OffsetedPoint with Z offset 0.00, using font size 18.00, color (0.00%, 100.00%, 100.00%), and 0.00% transparency
      • Floating Text - Hide (Last created floating text) for (All players)
      • Floating Text - Show (Last created floating text) for TempPlayerGroup
      • Set Floating_Text_Array_Unsuspent[Player_Number_Index] = (Last created floating text)
      • -------- - --------
      • Floating Text - Destroy Str_Floating_Text[Player_Number_Index]
      • Floating Text - Create floating text that reads (String(HeroStr[Player_Number_Index])) at Floating_Text_Array_Stats[1] with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
      • Floating Text - Hide (Last created floating text) for (All players)
      • Floating Text - Show (Last created floating text) for TempPlayerGroup
      • -------- --------
      • Floating Text - Destroy Ag_Floating_Text[Player_Number_Index]
      • Floating Text - Create floating text that reads (String(HeroAg[Player_Number_Index])) at Floating_Text_Array_Stats[2] with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
      • Floating Text - Hide (Last created floating text) for (All players)
      • Floating Text - Show (Last created floating text) for TempPlayerGroup
      • -------- --------
      • Floating Text - Destroy Int_Floating_Text[Player_Number_Index]
      • Floating Text - Create floating text that reads (String(HeroInt[Player_Number_Index])) at Floating_Text_Array_Stats[3] with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
      • Floating Text - Hide (Last created floating text) for (All players)
      • Floating Text - Show (Last created floating text) for TempPlayerGroup
      • Custom script: call DestroyForce(udg_TempPlayerGroup)
      • -------- --------
      • -------- END --------
      • -------- --------
 
Last edited:
Level 8
Joined
May 9, 2010
Messages
266
Thank you for posting the triggers and comment :D
I had been tested this system with my friend. So, He have been seen hes values, I've been seen my values.

The Idea from Diablo II , by the way :D

(I apologize for my bad English)
 
Making it MUI wouldn't just be a good idea - it's practically a necessary change, I don't know about you but I haven't come across many maps where only one hero is assigned to a player other than AoS maps. And there's a matter of addressing the problem of if one person leaves (thus sharing control of their units) how would the other players be able to increase the stats of the player's shared hero?
 
Level 28
Joined
Oct 28, 2011
Messages
4,759
Making it MUI wouldn't just be a good idea - it's practically a necessary change, I don't know about you but I haven't come across many maps where only one hero is assigned to a player other than AoS maps. And there's a matter of addressing the problem of if one person leaves (thus sharing control of their units) how would the other players be able to increase the stats of the player's shared hero?

You have a point there, but me as a modder only do SRPG maps and AoS, so I have no kind of experience on other things. But as a player making that a mui is a must just like what TC said about leavers.
 
Well that could cause a balance issue if that were the case:
I'll give you an example:

(Ingame player)
Lvl 20: 40 Str, 30 Int, 25 Agi

(Leaver)
Lvl 1: 1 Str, 1 Int, 1 Agi

I'd be easier to lvl up the leaver say to lvl 10, than it would be to level up the lvl 20 once, thus you could do this as a tactic:

(Leaver)
Lvl 10: 1 Str, 1 Int, 1 Agi

(Ingame player)
Lvl 20: 60 Str, 50 Int, 75 Agi

Of course these are no where near exact numbers, but you get the idea

Edit: Also removing the players hero would also result in imbalance as teams would no longer match up
 
Level 8
Joined
May 9, 2010
Messages
266
Yes, I agree with imbalance... But I cannot make adding leavers hero stats, because so, I need to create another table for leaver and show it to another players. So if we have a lot of leavers it create much problems, as I think.
 
Honestly, this may just be me, but I am more of a fan of the idea of adding a spellbook to a unit when it levels up - which as the three abilities "Increase Str, Increase Init, Increase Agi" or whatever and having a variable applied to each unit of how many "points" they have left, then a message displaying how many points are left when a point is spent, then removing the spell book again when it hits 0, (ofc using each ability reduces the amount once and increases the hero's stat by 1)

But like I said - that's just my preferred method to go about this because it's easily Mui and takes up no space on the map
 
Level 8
Joined
May 9, 2010
Messages
266
I've been updated a system and now it works with items.

About leavers: I think I don't need to do this, it cause many problems... This is players problems that they have a leaver, because system was created in the first place for RPG maps or Hero Defence , so all players are allied...
 
Level 8
Joined
May 9, 2010
Messages
266
I agree with tank, though I'm not fond of removing the book when the points are zero... but this system can be useful for those who needs it and is willing to allocate some map space for it (obviously not tank and me)... :)

I think it takes not much space, in addition it is configurable.

TC you offer next:
When player have no points left, the books are hided to him?
If so, it may be a good idea:)
I'm sorry for my bad English :(
 
I would like to say
JASS:
GetHeroStr/Agi/Int(unit,true/false)
Makes this system utterly useless. You don't need to initialize the stat gain, and you don't need to update the texts every level. Just update them when the player views that area. In all honesty, besides good practice this has no other use.
Also, systems that have the ability to be MUI must MUI. Those are the rules. You don't need these variables, just a single hashtable would due for a system like this.
 

S11

S11

Level 3
Joined
Apr 29, 2012
Messages
41
How do i add this to my rpg..., i edited the example part and iam trying to make it so the stat system makes its so When i select a hero it selects the last created hero but im not sure how to do that could you help me?
 
Level 8
Joined
May 9, 2010
Messages
266
You should copy part from example trigger and past it to your hero creation trigger. And you cant edit example part, just past it to your trigger. All configurables is in another trigger. If you still have any problems, PM me or type here.
 

S11

S11

Level 3
Joined
Apr 29, 2012
Messages
41
so you have a glitch, i put this in my map and got it to work, placed it under my hero selection trigger,

1st it showed to everyone that selected a hero

but the problem is when you lvled like 5 times, the thing whole stat editor disapeared gone vanished non existant, happened to everyone whole thing just went blank
 

S11

S11

Level 3
Joined
Apr 29, 2012
Messages
41
Could you make a screen-shot?

Edit:
I have tested system about MPI, created a hero and was giving him a books. It works normal for me.

idk if i can recreate the scenario, but i can explain what happend

me and two friends tested rpg and then leveled up atleast 4 times each so we where all lvl 5, but when i look over to the bottom right corner where i placed the stat system, it disappeared and there where no stats to be placed

Yeah i found the glitch, When Ever you lvl to fast or instantly it destroys the stat system, or that seems to be happening to me

i fixed it
 
Last edited:
Level 8
Joined
May 9, 2010
Messages
266
It is bugged when hero instantly lvlup a few lvls?

Edit: Yes, you are right, when a hero ups more then one lvl it adds only 5 unspent points.
But I don`t know how I can improve that. I`ll be thinking about that.

+rep
 
Level 8
Joined
May 9, 2010
Messages
266
Thanks Adiktuz, +rep
I have updated system to 1.03b version.
removed lvlup bug(when hero ups more than one lvl instantly). Also, added MPI test( a hero owned by 2nd player is creating and he picks up a book and gains experience)

Edit:
In version 1.03c I have used a local integer variable in items trigger, as Maker said.

Edit 2:
Updated to 1.04 look at changes in description of system!
Still feel free to comment and rate!
 
Last edited:
Top