| 02-17-2007, 05:11 AM | #1 |
Okay, getting down to the main point, every time I make an AoS-based map, everybody disconnects after the first 7 seconds or so. Why? I'm not sure. Basically, everyone loads fine, and then starts fine, until 7 seconds, where everyone disconnects except me. LAN does not work, either. I think the problem is the fact that I use an Attack-Move trigger (ex. issue attack-move to location). I've tried many ways to bend away around it: I've tried using Unit Groups, not using Unit Groups (and using Last Created Unit instead), using Patrol instead of Attack-Move, and many others... Do you have to do these triggers in JASS and remove some things? If so, what to remove? If I need to post the triggers/map, then I will if it's necessary. Also, sorry if this was answered somewhere before. And one more thing, I'm not good with JASS. If you say the answer through JASS... you might just want to simplify it for me. |
| 02-17-2007, 05:26 AM | #2 |
Are you sure it's these triggers? Did you test it by disabling these triggers? There are a lot of things that can cause Desyncs. You say that you know some JASS. Are you using GetLocalPlayer() at any point? There are many things that can go wrong when using GLP. Post some of your code and maybe we can troubleshoot. |
| 02-17-2007, 05:33 AM | #3 |
Here are all of my triggers... there aren't too many triggers for a map (v.0.2., and more importantly, just a test map to FIND this disconnection bug). JASS:function Trig_Melee_Initialization_Func005A takes nothing returns nothing call SetPlayerStateBJ( GetEnumPlayer(), PLAYER_STATE_RESOURCE_GOLD, 1000 ) call SetPlayerStateBJ( GetEnumPlayer(), PLAYER_STATE_RESOURCE_LUMBER, 1 ) endfunction function Trig_Melee_Initialization_Actions takes nothing returns nothing call MeleeStartingVisibility( ) call SetPlayerFlagBJ( PLAYER_STATE_GIVES_BOUNTY, true, Player(0) ) call SetPlayerFlagBJ( PLAYER_STATE_GIVES_BOUNTY, true, Player(6) ) call ForForce( GetPlayersAll(), function Trig_Melee_Initialization_Func005A ) endfunction //=========================================================================== function InitTrig_Melee_Initialization takes nothing returns nothing set gg_trg_Melee_Initialization = CreateTrigger( ) call TriggerAddAction( gg_trg_Melee_Initialization, function Trig_Melee_Initialization_Actions ) endfunction That was trigger 1... JASS:function Trig_Second_Initilization_Actions takes nothing returns nothing call PlaySoundBJ( gg_snd_205_Bloody_Excrement ) endfunction //=========================================================================== function InitTrig_Second_Initilization takes nothing returns nothing set gg_trg_Second_Initilization = CreateTrigger( ) call TriggerRegisterTimerEventSingle( gg_trg_Second_Initilization, 1.00 ) call TriggerAddAction( gg_trg_Second_Initilization, function Trig_Second_Initilization_Actions ) endfunction Trigger 3 coming up... JASS:function Trig_Wave_Start_Actions takes nothing returns nothing call EnableTrigger( gg_trg_Wave_Send ) endfunction //=========================================================================== function InitTrig_Wave_Start takes nothing returns nothing set gg_trg_Wave_Start = CreateTrigger( ) call TriggerRegisterTimerEventSingle( gg_trg_Wave_Start, 60.00 ) call TriggerAddAction( gg_trg_Wave_Start, function Trig_Wave_Start_Actions ) endfunction Meh. JASS:function Trig_Wave_Send_Func002C takes nothing returns boolean if ( not ( IsUnitAliveBJ(gg_unit_h000_0001) == true ) ) then return false endif return true endfunction function Trig_Wave_Send_Func003C takes nothing returns boolean if ( not ( IsUnitAliveBJ(gg_unit_h001_0004) == true ) ) then return false endif return true endfunction function Trig_Wave_Send_Func005C takes nothing returns boolean if ( not ( IsUnitAliveBJ(gg_unit_h000_0002) == true ) ) then return false endif return true endfunction function Trig_Wave_Send_Func006C takes nothing returns boolean if ( not ( IsUnitAliveBJ(gg_unit_h001_0003) == true ) ) then return false endif return true endfunction function Trig_Wave_Send_Func008C takes nothing returns boolean if ( not ( IsUnitAliveBJ(gg_unit_h000_0000) == true ) ) then return false endif return true endfunction function Trig_Wave_Send_Func009C takes nothing returns boolean if ( not ( IsUnitAliveBJ(gg_unit_h001_0005) == true ) ) then return false endif return true endfunction function Trig_Wave_Send_Actions takes nothing returns nothing // Top Wave if ( Trig_Wave_Send_Func002C() ) then call CreateNUnitsAtLoc( 1, 'n000', Player(0), GetUnitLoc(gg_unit_h000_0001), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Top_Center) ) call CreateNUnitsAtLoc( 1, 'n000', Player(0), GetUnitLoc(gg_unit_h000_0001), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Top_Center) ) call CreateNUnitsAtLoc( 1, 'n001', Player(0), GetUnitLoc(gg_unit_h000_0001), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Top_Center) ) call CreateNUnitsAtLoc( 1, 'n001', Player(0), GetUnitLoc(gg_unit_h000_0001), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Top_Center) ) else call DoNothing( ) endif if ( Trig_Wave_Send_Func003C() ) then call CreateNUnitsAtLoc( 1, 'n000', Player(6), GetUnitLoc(gg_unit_h001_0004), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Top_Center) ) call CreateNUnitsAtLoc( 1, 'n000', Player(6), GetUnitLoc(gg_unit_h001_0004), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Top_Center) ) call CreateNUnitsAtLoc( 1, 'n001', Player(6), GetUnitLoc(gg_unit_h001_0004), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Top_Center) ) call CreateNUnitsAtLoc( 1, 'n001', Player(6), GetUnitLoc(gg_unit_h001_0004), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Top_Center) ) else call DoNothing( ) endif // Middle Wave if ( Trig_Wave_Send_Func005C() ) then call CreateNUnitsAtLoc( 1, 'n000', Player(0), GetUnitLoc(gg_unit_h000_0002), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetUnitLoc(gg_unit_h002_0048) ) call CreateNUnitsAtLoc( 1, 'n000', Player(0), GetUnitLoc(gg_unit_h000_0002), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetUnitLoc(gg_unit_h002_0048) ) call CreateNUnitsAtLoc( 1, 'n001', Player(0), GetUnitLoc(gg_unit_h000_0002), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetUnitLoc(gg_unit_h002_0048) ) call CreateNUnitsAtLoc( 1, 'n001', Player(0), GetUnitLoc(gg_unit_h000_0002), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetUnitLoc(gg_unit_h002_0048) ) else call DoNothing( ) endif if ( Trig_Wave_Send_Func006C() ) then call CreateNUnitsAtLoc( 1, 'n000', Player(6), GetUnitLoc(gg_unit_h001_0003), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetUnitLoc(gg_unit_h002_0049) ) call CreateNUnitsAtLoc( 1, 'n000', Player(6), GetUnitLoc(gg_unit_h001_0003), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetUnitLoc(gg_unit_h002_0049) ) call CreateNUnitsAtLoc( 1, 'n001', Player(6), GetUnitLoc(gg_unit_h001_0003), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetUnitLoc(gg_unit_h002_0049) ) call CreateNUnitsAtLoc( 1, 'n001', Player(6), GetUnitLoc(gg_unit_h001_0003), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetUnitLoc(gg_unit_h002_0049) ) else call DoNothing( ) endif // Bottom Wave if ( Trig_Wave_Send_Func008C() ) then call CreateNUnitsAtLoc( 1, 'n000', Player(0), GetUnitLoc(gg_unit_h000_0000), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Bottom_Center) ) call CreateNUnitsAtLoc( 1, 'n000', Player(0), GetUnitLoc(gg_unit_h000_0000), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Bottom_Center) ) call CreateNUnitsAtLoc( 1, 'n001', Player(0), GetUnitLoc(gg_unit_h000_0000), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Bottom_Center) ) call CreateNUnitsAtLoc( 1, 'n001', Player(0), GetUnitLoc(gg_unit_h000_0000), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Bottom_Center) ) else call DoNothing( ) endif if ( Trig_Wave_Send_Func009C() ) then call CreateNUnitsAtLoc( 1, 'n000', Player(6), GetUnitLoc(gg_unit_h001_0005), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Bottom_Center) ) call CreateNUnitsAtLoc( 1, 'n000', Player(6), GetUnitLoc(gg_unit_h001_0005), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Bottom_Center) ) call CreateNUnitsAtLoc( 1, 'n001', Player(6), GetUnitLoc(gg_unit_h001_0005), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Bottom_Center) ) call CreateNUnitsAtLoc( 1, 'n001', Player(6), GetUnitLoc(gg_unit_h001_0005), bj_UNIT_FACING ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "attack", GetRectCenter(gg_rct_Bottom_Center) ) else call DoNothing( ) endif endfunction //=========================================================================== function InitTrig_Wave_Send takes nothing returns nothing set gg_trg_Wave_Send = CreateTrigger( ) call DisableTrigger( gg_trg_Wave_Send ) call TriggerRegisterTimerEventPeriodic( gg_trg_Wave_Send, 25.00 ) call TriggerAddAction( gg_trg_Wave_Send, function Trig_Wave_Send_Actions ) endfunction Ok. JASS:function Trig_TopBottom_Resend_Func001C takes nothing returns boolean if ( ( GetOwningPlayer(GetEnteringUnit()) == Player(0) ) ) then return true endif if ( ( GetOwningPlayer(GetEnteringUnit()) == Player(6) ) ) then return true endif return false endfunction function Trig_TopBottom_Resend_Conditions takes nothing returns boolean if ( not Trig_TopBottom_Resend_Func001C() ) then return false endif return true endfunction function Trig_TopBottom_Resend_Func002C takes nothing returns boolean if ( not ( GetOwningPlayer(GetEnteringUnit()) == Player(0) ) ) then return false endif return true endfunction function Trig_TopBottom_Resend_Func003C takes nothing returns boolean if ( not ( GetOwningPlayer(GetEnteringUnit()) == Player(6) ) ) then return false endif return true endfunction function Trig_TopBottom_Resend_Actions takes nothing returns nothing if ( Trig_TopBottom_Resend_Func002C() ) then call IssuePointOrderLocBJ( GetEnteringUnit(), "attack", GetUnitLoc(gg_unit_h002_0048) ) else call DoNothing( ) endif if ( Trig_TopBottom_Resend_Func003C() ) then call IssuePointOrderLocBJ( GetEnteringUnit(), "attack", GetUnitLoc(gg_unit_h002_0049) ) else call DoNothing( ) endif endfunction //=========================================================================== function InitTrig_TopBottom_Resend takes nothing returns nothing set gg_trg_TopBottom_Resend = CreateTrigger( ) call TriggerRegisterEnterRectSimple( gg_trg_TopBottom_Resend, gg_rct_Top_Center ) call TriggerRegisterEnterRectSimple( gg_trg_TopBottom_Resend, gg_rct_Bottom_Center ) call TriggerAddCondition( gg_trg_TopBottom_Resend, Condition( function Trig_TopBottom_Resend_Conditions ) ) call TriggerAddAction( gg_trg_TopBottom_Resend, function Trig_TopBottom_Resend_Actions ) endfunction I thought it was better to post all the triggers in one, to get it over with. JASS:function Trig_VictoryDefeat_Trigger_Func004C takes nothing returns boolean if ( not ( IsUnitType(gg_unit_h002_0049, UNIT_TYPE_DEAD) == true ) ) then return false endif return true endfunction function Trig_VictoryDefeat_Trigger_Func005C takes nothing returns boolean if ( not ( IsUnitType(gg_unit_h002_0048, UNIT_TYPE_DEAD) == true ) ) then return false endif return true endfunction function Trig_VictoryDefeat_Trigger_Actions takes nothing returns nothing call DisableTrigger( GetTriggeringTrigger() ) call PauseAllUnitsBJ( false ) call PauseAllUnitsBJ( true ) if ( Trig_VictoryDefeat_Trigger_Func004C() ) then call StopSoundBJ( gg_snd_205_Bloody_Excrement, true ) call TriggerSleepAction( 2 ) call PlaySoundBJ( gg_snd_GameFinished ) call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_146" ) else call DoNothing( ) endif if ( Trig_VictoryDefeat_Trigger_Func005C() ) then call StopSoundBJ( gg_snd_205_Bloody_Excrement, true ) call TriggerSleepAction( 2 ) call PlaySoundBJ( gg_snd_GameFinished ) call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_145" ) else call DoNothing( ) endif endfunction //=========================================================================== function InitTrig_VictoryDefeat_Trigger takes nothing returns nothing set gg_trg_VictoryDefeat_Trigger = CreateTrigger( ) call TriggerRegisterUnitEvent( gg_trg_VictoryDefeat_Trigger, gg_unit_h002_0049, EVENT_UNIT_DEATH ) call TriggerRegisterUnitEvent( gg_trg_VictoryDefeat_Trigger, gg_unit_h002_0048, EVENT_UNIT_DEATH ) call TriggerAddAction( gg_trg_VictoryDefeat_Trigger, function Trig_VictoryDefeat_Trigger_Actions ) endfunction JASS:function Trig_Hero_Hired_Func001A takes nothing returns nothing call SetPlayerTechMaxAllowedSwap( GetUnitTypeId(GetSoldUnit()), 0, GetEnumPlayer() ) endfunction function Trig_Hero_Hired_Func002Func004C takes nothing returns boolean if ( ( GetOwningPlayer(GetSoldUnit()) == Player(1) ) ) then return true endif if ( ( GetOwningPlayer(GetSoldUnit()) == Player(2) ) ) then return true endif if ( ( GetOwningPlayer(GetSoldUnit()) == Player(3) ) ) then return true endif if ( ( GetOwningPlayer(GetSoldUnit()) == Player(4) ) ) then return true endif if ( ( GetOwningPlayer(GetSoldUnit()) == Player(5) ) ) then return true endif return false endfunction function Trig_Hero_Hired_Func002C takes nothing returns boolean if ( not Trig_Hero_Hired_Func002Func004C() ) then return false endif return true endfunction function Trig_Hero_Hired_Func003Func004C takes nothing returns boolean if ( ( GetOwningPlayer(GetSoldUnit()) == Player(7) ) ) then return true endif if ( ( GetOwningPlayer(GetSoldUnit()) == Player(8) ) ) then return true endif if ( ( GetOwningPlayer(GetSoldUnit()) == Player(9) ) ) then return true endif if ( ( GetOwningPlayer(GetSoldUnit()) == Player(10) ) ) then return true endif if ( ( GetOwningPlayer(GetSoldUnit()) == Player(11) ) ) then return true endif return false endfunction function Trig_Hero_Hired_Func003C takes nothing returns boolean if ( not Trig_Hero_Hired_Func003Func004C() ) then return false endif return true endfunction function Trig_Hero_Hired_Actions takes nothing returns nothing call ForForce( GetPlayersAll(), function Trig_Hero_Hired_Func001A ) if ( Trig_Hero_Hired_Func002C() ) then call SetUnitPositionLoc( GetSoldUnit(), GetUnitLoc(gg_unit_h002_0049) ) call SmartCameraPanBJ( GetOwningPlayer(GetSoldUnit()), GetUnitLoc(gg_unit_h002_0049), 0.5 ) else call DoNothing( ) endif if ( Trig_Hero_Hired_Func003C() ) then call SetUnitPositionLoc( GetSoldUnit(), GetUnitLoc(gg_unit_h002_0048) ) call SmartCameraPanBJ( GetOwningPlayer(GetSoldUnit()), GetUnitLoc(gg_unit_h002_0048), 0.5 ) else call DoNothing( ) endif endfunction //=========================================================================== function InitTrig_Hero_Hired takes nothing returns nothing set gg_trg_Hero_Hired = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Hero_Hired, EVENT_PLAYER_UNIT_SELL ) call TriggerAddAction( gg_trg_Hero_Hired, function Trig_Hero_Hired_Actions ) endfunction JASS:function Trig_Battery_Omega_Trigger_Conditions takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'A00A' ) ) then return false endif return true endfunction function Trig_Battery_Omega_Trigger_Actions takes nothing returns nothing call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 0.00, 200.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 100.00, 100.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 200.00, 0.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 100.00, -100.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 0.00, -200.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), -100.00, -100.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), -200.00, 0.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), -100.00, 100.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) // Divider call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 0.00, 200.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 100.00, 100.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 200.00, 0.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 100.00, -100.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 0.00, -200.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), -100.00, -100.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), -200.00, 0.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), -100.00, 100.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) // Divider call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 0.00, 200.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 100.00, 100.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 200.00, 0.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 100.00, -100.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), 0.00, -200.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), -100.00, -100.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), -200.00, 0.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) call TriggerSleepAction( 0.10 ) call AddSpecialEffectLocBJ( OffsetLocation(GetUnitLoc(GetSpellAbilityUnit()), -100.00, 100.00), "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" ) // Divider endfunction //=========================================================================== function InitTrig_Battery_Omega_Trigger takes nothing returns nothing set gg_trg_Battery_Omega_Trigger = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Battery_Omega_Trigger, EVENT_PLAYER_UNIT_SPELL_CAST ) call TriggerAddCondition( gg_trg_Battery_Omega_Trigger, Condition( function Trig_Battery_Omega_Trigger_Conditions ) ) call TriggerAddAction( gg_trg_Battery_Omega_Trigger, function Trig_Battery_Omega_Trigger_Actions ) endfunction |
| 02-17-2007, 11:42 AM | #4 |
alright, i'll check it. Give me some time. The first 3 trigger look ok 4 and so on have almost always the same problem. 1. You can change the conditions from JASS:function ... if <Condition> then return true endif return false endfunction JASS:function ... return <Condition> endfunction You're leaking locations. And now to the last trigger, you use a wait command and want to refer to the target unit of an ability, that won't work also you leak a location here too, but i don't find anything what could cause a desync atm, i've to take a close look i'll tell you if i find something. |
| 02-17-2007, 12:00 PM | #5 |
What are the stats of your spawned units. Do they have unusually high life/damage dice numbers? |
| 02-17-2007, 01:24 PM | #6 |
I bet he converted his GUI triggers to JASS so he doesn't get "OMG GUI NOOB" comments |
| 02-17-2007, 01:39 PM | #7 |
Make sure you don't have any "Visibility" triggers...especially / disable enable black mask/fog of war. They cause desyncs nearly every time. |
| 02-17-2007, 05:36 PM | #8 | |
Quote:
I use them in many maps too and they never caused a desync till now. Maybe it's just my comp. |
| 02-17-2007, 05:45 PM | #9 |
Thank you guys. And yes, I did transfer them to Custom Text. But I don't care if that makes me a noob or not. Hah. I've heard of leaks but never were quite sure what they were. I completely removed the last trigger, too. Mind telling me how I'm leaking locations? (I'm a complete noob at this stuff. I admit.) The only reason why I transfered them to Custom Text was because I thought it would be simpler to see the leaks... things... desyncs... And no, the units do not have high hit points/high damage. The fighters deal 29-30, 800 HP, and the rangers deal 6-11, 250 HP. |
| 02-17-2007, 06:08 PM | #10 |
look under tutorial for a complete explanation, but in this case using JASS:local loction l JASS:call RemoveLocation(l) set l = null JASS:call RemoveLocation(udg_temp_point) JASS:function LocationLeak takes nothing returns nothing local location l set l = GetUnitLoc(gg_unit_h000_0001) call CreateNUnitsAtLoc(1,'hpea',Player(0),l,bj_UNIT_FACING) call RemoveLocation(l) set l = null endfunction |
| 02-17-2007, 06:12 PM | #11 | |
Quote:
|
| 02-18-2007, 07:34 AM | #12 |
erm...yes? Unless the faerie gods just happen to bless past works of mine with desyncs until I disabled / removed the "Visibility - Disable Black Mask" and "Visibility - Disable Fog of War" events trigger. Its a relatively safe bet to say they cause isolated desyncs. |
