Need help with a few triggers

RodyisGod

New Member
Reaction score
5
Ye i know, me again. Theres for some reason always a little thing that i do wrong "S

1. This is a Very Long jass Trigger [ Custom Attributes ].
I have all the objects, and raw codes set good.
But it doesnt seem to work..

JASS:
globals  
//Config. Options\\     
    // Attribute(Attribute System) ability rawcode
    private constant integer AS_Abil = 'A00B'
    // Blank item rawcode 
    private constant integer AS_Blank = 'I003'
    // Cancel item rawcode
    private constant integer AS_Cancel = 'I004'
    // Number of stat points remaining item rawcode
    private constant integer AS_Att = 'I008'
    // Increment Strength item rawcode
    private constant integer AS_Str = 'I007'
    // Increment Agility item rawcode
    private constant integer AS_Agi = 'I006'
    // Increment Intelligence item rawcode
    private constant integer AS_Int = 'I005'   

//Do not touch past here unless you pain for death!!\\
    private item array AS_I0
    private item array AS_I1
    private item array AS_I2
    private item array AS_I3
    private item array AS_I4
    private item array AS_I5
    private item array AS_IAtt0
    private item array AS_IAtt1
    private item array AS_IAtt2
    private item array AS_IAtt3
    private item array AS_IAtt4
    private item array AS_IAtt5
    
    private integer array AS_PointsPerLevel
    private integer array AS_LastLevel
    private integer array AS_Points
    private boolean array AS_Enabled    
    private boolean array AS_On
    
    private unit AS_Hero
endglobals


//**Library of functions**\\

//Enable system for hero
function AS_Enable takes unit u, integer i returns nothing
    local integer id = GetPlayerId(GetOwningPlayer(u))
    
    if AS_Enabled[id] then
        call BJDebugMsg("Error: "+GetPlayerName(GetOwningPlayer(u))+" already has the system running.")
        return
    endif
    
    set AS_I0[id] = CreateItem(AS_Str,0,0)
    call SetItemVisible(AS_I0[id],false)
    
    set AS_I1[id] = CreateItem(AS_Att,0,0)
    call SetItemVisible(AS_I1[id],false)
    
    set AS_I2[id] = CreateItem(AS_Agi,0,0)
    call SetItemVisible(AS_I2[id],false)
    
    set AS_I3[id] = CreateItem(AS_Blank,0,0)
    call SetItemVisible(AS_I3[id],false)
    
    set AS_I4[id] = CreateItem(AS_Int,0,0)
    call SetItemVisible(AS_I4[id],false)
    
    set AS_I5[id] = CreateItem(AS_Cancel,0,0)
    call SetItemVisible(AS_I5[id],false)
    call SetItemDroppable(AS_I5[id],false)
    
    set AS_LastLevel[id] = GetHeroLevel(u)
    set AS_Enabled[id] = true
    set AS_PointsPerLevel[id] = 7
endfunction

//When the hero levels up
private function AS_Level takes unit u returns nothing
    local integer points
    local integer id = GetPlayerId(GetOwningPlayer(u))
    
    if AS_Enabled[id]==true then
        set points = ((GetHeroLevel(u)-AS_LastLevel[id])*AS_PointsPerLevel[id])+AS_Points[id]
        set AS_LastLevel[id] = GetHeroLevel(u)
        if GetUnitAbilityLevel(u,AS_Abil)<1 and AS_On[id]==false then
            call UnitAddAbility(u,AS_Abil) 
            call UnitMakeAbilityPermanent(u,true,AS_Abil)
        endif
        if AS_On[id]==true then
            call SetItemCharges(AS_I1[id],points)
        endif
        set AS_Points[id] = points
        call IssueImmediateOrder(u,"replenishon") 
    endif  
endfunction

//Swap the inventory
private function AS_SwapInv takes unit u, integer whichway returns nothing
    local integer id = GetPlayerId(GetOwningPlayer(u))
    local item it
    
    if whichway==1 then
        set AS_IAtt0[id] = UnitRemoveItemFromSlot(u,0)
        call SetItemVisible(AS_IAtt0[id],false)
        call SetItemVisible(AS_I0[id],true)
        call UnitAddItem(u,AS_I0[id])
        
        set AS_IAtt1[id] = UnitRemoveItemFromSlot(u,1)
        call SetItemVisible(AS_IAtt1[id],false)
        call SetItemCharges(AS_I1[id],AS_Points[id])
        call SetItemVisible(AS_I1[id],true)
        call UnitAddItem(u,AS_I1[id])
        
        set AS_IAtt2[id] = UnitRemoveItemFromSlot(u,2)
        call SetItemVisible(AS_IAtt2[id],false)
        call SetItemVisible(AS_I2[id],true)
        call UnitAddItem(u,AS_I2[id])
        
        set AS_IAtt3[id] = UnitRemoveItemFromSlot(u,3)
        call SetItemVisible(AS_IAtt3[id],false)
        call SetItemVisible(AS_I3[id],true)
        call UnitAddItem(u,AS_I3[id])
        
        set AS_IAtt4[id] = UnitRemoveItemFromSlot(u,4)
        call SetItemVisible(AS_IAtt4[id],false)
        call SetItemVisible(AS_I4[id],true)
        call UnitAddItem(u,AS_I4[id])
        
        set AS_IAtt5[id] = UnitRemoveItemFromSlot(u,5)
        call SetItemVisible(AS_IAtt5[id],false)
        call SetItemVisible(AS_I5[id],true)
        call UnitAddItem(u,AS_I5[id])
        
        set AS_On[id] = true
    else
        set it = UnitRemoveItemFromSlot(u,0)
        call SetItemVisible(it,false)
        call SetItemVisible(AS_IAtt0[id],true)
        call UnitAddItem(u,AS_IAtt0[id])
        
        set it = UnitRemoveItemFromSlot(u,1)
        call SetItemVisible(it,false)
        call SetItemVisible(AS_IAtt1[id],true)
        call UnitAddItem(u,AS_IAtt1[id])
        
        set it = UnitRemoveItemFromSlot(u,2)
        call SetItemVisible(it,false)
        call SetItemVisible(AS_IAtt2[id],true)
        call UnitAddItem(u,AS_IAtt2[id])
        
        set it = UnitRemoveItemFromSlot(u,3)
        call SetItemVisible(it,false)
        call SetItemVisible(AS_IAtt3[id],true)
        call UnitAddItem(u,AS_IAtt3[id])
        
        set it = UnitRemoveItemFromSlot(u,4)
        call SetItemVisible(it,false)
        call SetItemVisible(AS_IAtt4[id],true)
        call UnitAddItem(u,AS_IAtt4[id])
        
        set it = UnitRemoveItemFromSlot(u,5)
        call SetItemVisible(it,false)
        call SetItemVisible(AS_IAtt5[id],true)
        call UnitAddItem(u,AS_IAtt5[id])
        
        set AS_On[id] = false
    endif    
    
    set it = null
endfunction

//Returns what slot the item is in
private function AS_GetItemSlot takes unit hero, item it returns integer
    local integer i = 0
	
    loop
        exitwhen i==6
        if UnitItemInSlot(hero,i)==it then
            return i
        endif
        set i = i + 1
    endloop
	
    return -1
endfunction

//**Working Functions**\\

//Add attribute option when the hero levels
private function AS_level_Actions takes nothing returns nothing
    call AS_Level(GetTriggerUnit())
endfunction

//Swap inventory for the hero when needed
private function AS_TRO_Child takes nothing returns nothing
    call IssueImmediateOrder(AS_Hero,"replenishon")
    call IssueImmediateOrder(AS_Hero,"replenishlifeoff")
    
    call ReleaseTimer(GetExpiredTimer() )
endfunction
private function AS_TRO takes unit hero returns nothing
    set AS_Hero = hero
    call TimerStart(NewTimer(),0.,false,function AS_TRO_Child)
endfunction 
private function AS_inven_Actions takes nothing returns nothing
    local unit hero = GetTriggerUnit()
    local integer order = GetIssuedOrderId()
    local integer temp = 0
    
    if not IsUnitType(hero,UNIT_TYPE_HERO) then
        set hero = null
        return
    endif
    if order==OrderId("replenish") then
        call UnitRemoveAbility(hero,AS_Abil)
        call AS_SwapInv(hero,1)
    elseif order==OrderId("replenishoff") then
        call AS_TRO(hero)
    endif 
	
    set hero = null
endfunction

//Add attributes when selected
private function AS_att_Actions takes nothing returns nothing
    local unit hero = GetManipulatingUnit()
    local item used = GetManipulatedItem()
    local integer id = GetPlayerId(GetOwningPlayer(hero))
    local integer array temp
	
    if not AS_On[id] then
        set hero = null
        set used = null
        return
    endif
    set temp[0] = AS_GetItemSlot(hero,used)
    set temp[1] = AS_Points[id]-1
    if temp[0]!=5 or temp[1]<0 then
        call ModifyHeroStat( temp[0]/2,hero,bj_MODIFYMETHOD_ADD,1)
        set AS_Points[id] = temp[1]
        call SetItemCharges(AS_I1[id],temp[1])
        if temp[1]==0 then
            call AS_SwapInv(hero,0)
        endif
    elseif temp[1]>=0 then
        call AS_SwapInv(hero,0)
        call UnitAddAbility(hero,AS_Abil)
        call UnitMakeAbilityPermanent(hero,true,AS_Abil)
        call IssueImmediateOrder(hero,"replenishon")
    else
        call AS_SwapInv(hero,0)
    endif
	
    set hero = null
    set used = null
endfunction

//===========================================================================
private function Init_AttributeSystem takes nothing returns nothing
    local trigger level = CreateTrigger() 
    local trigger inven = CreateTrigger() 
    local trigger att = CreateTrigger()     
    
    call TriggerRegisterAnyUnitEventBJ(level, EVENT_PLAYER_HERO_LEVEL )
    call TriggerAddAction( level, function AS_level_Actions )
    
    call TriggerRegisterAnyUnitEventBJ( inven, EVENT_PLAYER_UNIT_ISSUED_ORDER )
    call TriggerRegisterAnyUnitEventBJ( inven, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER )
    call TriggerRegisterAnyUnitEventBJ( inven, EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER )
    call TriggerAddAction( inven, function AS_inven_Actions )
    
    call TriggerRegisterAnyUnitEventBJ( att, EVENT_PLAYER_UNIT_USE_ITEM )
    call TriggerAddAction( att, function AS_att_Actions )
endfunction   

endlibrary


2. This Random Weather system lags every 60 seconds it changes weather.
Anyway too fix the lag?

Trigger:
  • Weather
    • Events
      • Time - Every 60.00 seconds of game time
    • Conditions
    • Actions
      • Environment - Remove (Last created weather effect)
      • Wait 10.00 seconds
      • Set Random_Weather = (Random integer number between 1 and 7)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Random_Weather Equal to 1
        • Then - Actions
          • Environment - Create at (Playable map area) the weather effect Ashenvale Rain (Heavy)
          • Environment - Turn (Last created weather effect) On
          • Game - Display to (All players) the text: Random Weather is: ...
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Random_Weather Equal to 2
            • Then - Actions
              • Environment - Create at (Playable map area) the weather effect Ashenvale Rain (Light)
              • Environment - Turn (Last created weather effect) On
              • Game - Display to (All players) the text: Random Weather is: ...
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Random_Weather Equal to 3
                • Then - Actions
                  • Environment - Create at (Playable map area) the weather effect Northrend Blizzard
                  • Environment - Turn (Last created weather effect) On
                  • Game - Display to (All players) the text: Random Weather is: ...
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Random_Weather Equal to 4
                    • Then - Actions
                      • Environment - Create at (Playable map area) the weather effect Wind (Heavy)
                      • Environment - Turn (Last created weather effect) On
                      • Game - Display to (All players) the text: Random Weather is: ...
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Random_Weather Equal to 5
                        • Then - Actions
                          • Environment - Create at (Playable map area) the weather effect Rays Of Light
                          • Environment - Turn (Last created weather effect) On
                          • Game - Display to (All players) the text: Random Weather is: ...
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • Random_Weather Equal to 6
                            • Then - Actions
                              • Environment - Create at (Playable map area) the weather effect Northrend Snow (Heavy)
                              • Environment - Turn (Last created weather effect) On
                              • Game - Display to (All players) the text: Random Weather is: ...
                            • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • Random_Weather Equal to 7
                                • Then - Actions
                                  • Environment - Create at (Playable map area) the weather effect Northrend Snow (Light)
                                  • Environment - Turn (Last created weather effect) On
                                  • Game - Display to (All players) the text: Random Weather is: ...
                                • Else - Actions


3.This small Gui-Trigger doesnt stop players from attacking allies.
Trigger:
  • Block Friendly Attacking
    • Events
      • Unit - A unit owned by Player 1 (Red) Is attacked
      • Unit - A unit owned by Player 2 (Blue) Is attacked
      • Unit - A unit owned by Player 3 (Teal) Is attacked
      • Unit - A unit owned by Player 4 (Purple) Is attacked
      • Unit - A unit owned by Player 5 (Yellow) Is attacked
      • Unit - A unit owned by Player 6 (Orange) Is attacked
      • Unit - A unit owned by Player 7 (Green) Is attacked
      • Unit - A unit owned by Player 8 (Pink) Is attacked
      • Unit - A unit owned by Player 9 (Gray) Is attacked
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
      • ((Attacking unit) is in (Units owned by Player 1 (Red))) Equal to True
      • ((Attacking unit) is in (Units owned by Player 2 (Blue))) Equal to True
      • ((Attacking unit) is in (Units owned by Player 3 (Teal))) Equal to True
      • ((Attacking unit) is in (Units owned by Player 4 (Purple))) Equal to True
      • ((Attacking unit) is in (Units owned by Player 5 (Yellow))) Equal to True
      • ((Attacking unit) is in (Units owned by Player 6 (Orange))) Equal to True
      • ((Attacking unit) is in (Units owned by Player 7 (Green))) Equal to True
      • ((Attacking unit) is in (Units owned by Player 8 (Pink))) Equal to True
    • Actions
      • Unit - Order (Attacking unit) to Stop


4.Same for this one it doesnt stop attacking, Items.
Trigger:
  • Block Item Attacking
    • Events
      • Unit - A unit Is issued an order targeting an object
    • Conditions
      • (Issued order) Equal to (Order(Attack))
      • ((Target item of issued order) is in (Playable map area)) Equal to True
    • Actions
      • Game - Display to Player Group - Player 1 (Red) the text: Sad.. Trying to att...
      • Game - Display to Player Group - Player 2 (Blue) the text: Sad.. Trying to att...
      • Game - Display to Player Group - Player 3 (Teal) the text: Sad.. Trying to att...
      • Game - Display to Player Group - Player 4 (Purple) the text: Sad.. Trying to att...
      • Game - Display to Player Group - Player 5 (Yellow) the text: Sad.. Trying to att...
      • Game - Display to Player Group - Player 6 (Orange) the text: Sad.. Trying to att...
      • Game - Display to Player Group - Player 7 (Green) the text: Sad.. Trying to att...
      • Game - Display to Player Group - Player 8 (Pink) the text: Sad.. Trying to att...
      • Unit - Order (Attacking unit) to Stop


I KNOW this can be hard to do for a random person you dont know.
but uhmm.. Thanks ++, for the ones trying or giving me the fix.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top