• 🏆 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!

[JASS] Why Doesn't this Work?

Status
Not open for further replies.
Level 2
Joined
May 17, 2009
Messages
12
I'm working on a map and I'm changing all of the script to Jass cause I find GUI does a poor job of effective processing by adding more crap than need making the file size and strain of processors greater, but when I went to do my Dialog Jass and tested it, the Dialog never appeared, and yes I did tell it to display.

These are called by the Initialization function. I tested and they are called.
JASS:
function ButtonInit takes nothing returns nothing
    //Gender
    set udg_BMale = DialogAddButton(udg_Gender,"Male",0)
    set udg_BFemale = DialogAddButton(udg_Gender,"Female",0)
    //Model (Male)                       
    set udg_ModBloodElfDemonhunter = DialogAddButton(udg_Male1,"Blood Elf Demon Hunter",0)
    set udg_ModYouu = DialogAddButton(udg_Male1,"Youu",0)
    set udg_ModPrinceofPersia = DialogAddButton(udg_Male1,"Prince of Persia",0)
    set udg_NextMale = DialogAddButton(udg_Male1,"Next",0)
    set udg_BackMale = DialogAddButton(udg_Male2,"Back",0)
    //Model (Female)
    set udg_ModAqua = DialogAddButton(udg_Female1,"Aqua",0)
    set udg_ModDarkMiku = DialogAddButton(udg_Female1,"Dark Miku",0)
    set udg_ModAssassin = DialogAddButton(udg_Female1,"Assassin",0) 
    set udg_NextFemale = DialogAddButton(udg_Female1,"Next",0)
    set udg_BackFemale = DialogAddButton(udg_Female2,"Back",0)
    //Age
    set udg_B14 = DialogAddButton(udg_Age,"14",0)
    set udg_B15 = DialogAddButton(udg_Age,"15",0)
    set udg_B16 = DialogAddButton(udg_Age,"16",0)
    set udg_B17 = DialogAddButton(udg_Age,"17",0)
    set udg_B18 = DialogAddButton(udg_Age,"18",0)
    //Spells
        //Auras   
    set udg_ABBrillianceAura = DialogAddButton(udg_AuraAb,"Brilliance Aura",0)
    set udg_ABCommandAura = DialogAddButton(udg_AuraAb,"Command Aura",0)  
    set udg_ABDefensiveAura = DialogAddButton(udg_AuraAb,"Defensive Aura",0)
    set udg_ABDevotionAura = DialogAddButton(udg_AuraAb,"Devotion Aura",0)
    set udg_ABUnholyAura = DialogAddButton(udg_AuraAb,"Unholy Aura",0)
        //Passive 
    set udg_ABAttributeBonus = DialogAddButton(udg_PassiveAb,"Attribute Bonus",0)
    set udg_ABBash = DialogAddButton(udg_PassiveAb,"Bash",0)
    set udg_ABCriticalStrike = DialogAddButton(udg_PassiveAb,"Critical Strike",0)
    set udg_ABEvasion = DialogAddButton(udg_PassiveAb,"Evasion",0)
    set udg_ABSlowPoison = DialogAddButton(udg_PassiveAb,"Slow Poison",0)
        //Fire
    set udg_ABBreathofFire = DialogAddButton(udg_FireAb,"Breath of Fire",0)
    set udg_ABFireBolt = DialogAddButton(udg_FireAb,"Firebolt",0)
        //Ice             
    set udg_ABBreathofFrost = DialogAddButton(udg_IceAb,"Breath of Frost",0)
    set udg_ABFrostBolt = DialogAddButton(udg_IceAb,"Frost Bolt",0)
        //Arcane
    set udg_ABTeleport = DialogAddButton(udg_ArcaneAb,"Teleport",0)
        //Ultimate
    set udg_ABAbsoluteZero = DialogAddButton(udg_UltimateAb,"Absolute Zero",0)
    set udg_ABOverheat = DialogAddButton(udg_UltimateAb,"Overheat",0)
        //Misc
    set udg_ABAcidBomb = DialogAddButton(udg_MiscAb,"Acid Bomb",0)
endfunction

function DialogInit takes nothing returns nothing
    set udg_Gender = DialogCreate()
        call DialogSetMessage(udg_Gender,"Choose Gender")
    set udg_Male1 = DialogCreate()
        call DialogSetMessage(udg_Male1,"Male Models (1/2)")
    set udg_Male2 = DialogCreate()
        call DialogSetMessage(udg_Male2,"Male Models (2/2)")
    set udg_Female1 = DialogCreate()
        call DialogSetMessage(udg_Female1,"Female Models (1/2)")
    set udg_Female2 = DialogCreate()
        call DialogSetMessage(udg_Female2,"Female Models (2/2)")
    set udg_Age = DialogCreate()
        call DialogSetMessage(udg_Age,"Choose Age")     
    set udg_AbilitiesType = DialogCreate()
        call DialogSetMessage(udg_AbilitiesType,"Ability Types")
    set udg_DarkAb = DialogCreate()        
        call DialogSetMessage(udg_DarkAb,"Dark Abilities")
    set udg_LightAb = DialogCreate()      
        call DialogSetMessage(udg_LightAb,"Light Abilities")
    set udg_ArcaneAb = DialogCreate()     
        call DialogSetMessage(udg_Arcane,"Arcane Abilities")
    set udg_FireAb = DialogCreate()         
        call DialogSetMessage(udg_Gender,"Fire Abilities")
    set udg_IceAb = DialogCreate()        
        call DialogSetMessage(udg_Gender,"Ice Abilities")
    set udg_NatureAb = DialogCreate()      
        call DialogSetMessage(udg_Gender,"Nature Abilities")
    set udg_EarthAb = DialogCreate()      
        call DialogSetMessage(udg_Gender,"Earth Abilities")
    set udg_CombatAb = DialogCreate()      
        call DialogSetMessage(udg_Gender,"Combat Abilities")
    set udg_LightningAb = DialogCreate()    
        call DialogSetMessage(udg_Gender,"Lightning Abilities")
    set udg_WindAb = DialogCreate()      
        call DialogSetMessage(udg_Gender,"Wind Abilities")
    set udg_PassiveAb = DialogCreate()    
        call DialogSetMessage(udg_Gender,"Passive Abilities")
    set udg_AuraAb = DialogCreate()              
        call DialogSetMessage(udg_Gender,"Aura Abilities")
    set udg_MiscAb = DialogCreate()           
        call DialogSetMessage(udg_Gender,"Misc Abilities")
    set udg_UltimateAb = DialogCreate()      
        call DialogSetMessage(udg_Gender,"Ultimate Abilities")
endfunction

This code is the code called when the first Dialog is to be formed. This dialog is to start the creation of a new hero by removing all the old items except the ones not suppose to be removed.

JASS:
function EnumNewRemove takes nothing returns nothing
    if(ExceptionUnits(GetEnumUnit()) != true)then
        call RemoveUnit(GetEnumUnit())
    endif
endfunction

function Act_NewHero takes nothing returns nothing
    call ForGroup(GetUnitsOfPlayerAll(GetTriggerPlayer()),function EnumNewRemove)
    call SetPlayerState(GetTriggerPlayer(),PLAYER_STATE_GOLD_GATHERED,0)
    call DialogDisplay(GetTriggerPlayer(),udg_Gender,true)
endfunction

function Events_NewHero takes nothing returns nothing
    local integer i = 0
    loop
        call TriggerRegisterPlayerChatEvent(gg_trg_NewHero,Player(i),"-new",true)
        call TriggerRegisterPlayerChatEvent(gg_trg_NewHero,Player(i),"-repick",true)
        set i = i + 1
        exitwhen i >= 11
    endloop
endfunction

//===========================================================================
function InitTrig_NewHero takes nothing returns nothing
    set gg_trg_NewHero = CreateTrigger()
    call Events_NewHero()
    call TriggerAddAction(gg_trg_NewHero,function Act_NewHero)
endfunction

Yes all the Triggers do exist and the ExceptionUnits function is Defined. I'm not sure why it isn't working. It goes into the "Dialog Mode," but doesn't show the dialog. When I tried Jasscraft Syntax Check it said everything was correct. Help Please?

I've attached the .j files I work in on Jasscraft if you pefer to look at the code there..
 

Attachments

  • NewHero.j
    1.3 KB · Views: 49
  • DialogInit.j
    6.5 KB · Views: 51

Bribe

Code Moderator
Level 50
Joined
Sep 26, 2009
Messages
9,456
Also did you remember to call them a bit after map initialization?

Now that he's uploaded the code, I can see that this is what he did wrong. He uses the event "Map Initialization" to run the trigger. It should be a 0.1-second timer or so.

JASS:
function InitTrig_YourTrigger takes nothing returns nothing
    call TimerStart(CreateTimer(), 0.1, false, function InitYourDialogs)
endfunction
 
Level 2
Joined
May 17, 2009
Messages
12
I've fixed the Dialog problem. It was cause of the creation on initialization, but now I'm having a small problem with dialogs. Every time I try to reuse a dialog the dialog's title vanishes.

I've had a few adjustments to the code, so here is an update.

JASS:
function ButtonInit takes nothing returns nothing
    //Gender
    set udg_BMale = DialogAddButton(udg_Gender,"Male",0)
    set udg_BFemale = DialogAddButton(udg_Gender,"Female",0)
    //Model (Male)                       
    set udg_ModBloodElfDemonhunter = DialogAddButton(udg_Male1,"Blood Elf Demon Hunter",0)
    set udg_ModYouu = DialogAddButton(udg_Male1,"Youu",0)
    set udg_ModPrinceofPersia = DialogAddButton(udg_Male1,"Prince of Persia",0)
    set udg_NextMale = DialogAddButton(udg_Male1,"Next",0)
    set udg_BackMale = DialogAddButton(udg_Male2,"Back",0)
    //Model (Female)
    set udg_ModAqua = DialogAddButton(udg_Female1,"Aqua",0)
    set udg_ModDarkMiku = DialogAddButton(udg_Female1,"Dark Miku",0)
    set udg_ModAssassin = DialogAddButton(udg_Female1,"Assassin",0) 
    set udg_NextFemale = DialogAddButton(udg_Female1,"Next",0)
    set udg_BackFemale = DialogAddButton(udg_Female2,"Back",0)
    //Age
    set udg_B14 = DialogAddButton(udg_Age,"14",0)
    set udg_B15 = DialogAddButton(udg_Age,"15",0)
    set udg_B16 = DialogAddButton(udg_Age,"16",0)
    set udg_B17 = DialogAddButton(udg_Age,"17",0)
    set udg_B18 = DialogAddButton(udg_Age,"18",0)
    //Spells
        //Auras   
    set udg_ABBrillianceAura = DialogAddButton(udg_AuraAb,"Brilliance Aura",0)
    set udg_ABCommandAura = DialogAddButton(udg_AuraAb,"Command Aura",0)  
    set udg_ABDefensiveAura = DialogAddButton(udg_AuraAb,"Defensive Aura",0)
    set udg_ABDevotionAura = DialogAddButton(udg_AuraAb,"Devotion Aura",0)
    set udg_ABUnholyAura = DialogAddButton(udg_AuraAb,"Unholy Aura",0)
        //Passive 
    set udg_ABAttributeBonus = DialogAddButton(udg_PassiveAb,"Attribute Bonus",0)
    set udg_ABBash = DialogAddButton(udg_PassiveAb,"Bash",0)
    set udg_ABCriticalStrike = DialogAddButton(udg_PassiveAb,"Critical Strike",0)
    set udg_ABEvasion = DialogAddButton(udg_PassiveAb,"Evasion",0)
    set udg_ABSlowPoison = DialogAddButton(udg_PassiveAb,"Slow Poison",0)
        //Fire
    set udg_ABBreathofFire = DialogAddButton(udg_FireAb,"Breath of Fire",0)
    set udg_ABFireBolt = DialogAddButton(udg_FireAb,"Firebolt",0)
        //Ice             
    set udg_ABBreathofFrost = DialogAddButton(udg_IceAb,"Breath of Frost",0)
    set udg_ABFrostBolt = DialogAddButton(udg_IceAb,"Frost Bolt",0)
        //Arcane
    set udg_ABTeleport = DialogAddButton(udg_ArcaneAb,"Teleport",0)
        //Ultimate
    set udg_ABAbsoluteZero = DialogAddButton(udg_UltimateAb,"Absolute Zero",0)
    set udg_ABOverheat = DialogAddButton(udg_UltimateAb,"Overheat",0)
        //Misc
    set udg_ABAcidBomb = DialogAddButton(udg_MiscAb,"Acid Bomb",0)
endfunction

function DialogInit takes nothing returns nothing
    call DialogSetMessage(udg_Gender,"Choose Gender")
    call DialogSetMessage(udg_Male1,"Male Models (1/2)")
    call DialogSetMessage(udg_Male2,"Male Models (2/2)")
    call DialogSetMessage(udg_Female1,"Female Models (1/2)")
    call DialogSetMessage(udg_Female2,"Female Models (2/2)")
    call DialogSetMessage(udg_Age,"Choose Age")     
    call DialogSetMessage(udg_AbilitiesType,"Ability Types")
    call DialogSetMessage(udg_DarkAb,"Dark Abilities")
    call DialogSetMessage(udg_LightAb,"Light Abilities")
    call DialogSetMessage(udg_ArcaneAb,"Arcane Abilities")
    call DialogSetMessage(udg_FireAb,"Fire Abilities")
    call DialogSetMessage(udg_IceAb,"Ice Abilities")
    call DialogSetMessage(udg_NatureAb,"Nature Abilities")
    call DialogSetMessage(udg_EarthAb,"Earth Abilities")
    call DialogSetMessage(udg_CombatAb,"Combat Abilities")
    call DialogSetMessage(udg_LightningAb,"Lightning Abilities")
    call DialogSetMessage(udg_WindAb,"Wind Abilities")
    call DialogSetMessage(udg_PassiveAb,"Passive Abilities")
    call DialogSetMessage(udg_AuraAb,"Aura Abilities")
    call DialogSetMessage(udg_MiscAb,"Misc Abilities")
    call DialogSetMessage(udg_UltimateAb,"Ultimate Abilities")
endfunction

Here is the code for the function which will be taking care of Dialog Input.

JASS:
//===========================================================================
//DialogClicks
//===========================================================================
function Act_DialogClicks takes nothing returns nothing 
    local player p = GetTriggerPlayer()
    local integer i = GetPlayerId(p)
    //Gender Buttons
    if(GetClickedButton() == udg_BMale)then
        call DialogDisplay(p,udg_Male1,true)
        return
    endif
    if(GetClickedButton() == udg_BFemale)then 
        call DialogDisplay(p,udg_Female1,true)
        return
    endif
    //Male1 Buttons
    if(GetClickedButton() == udg_ModBloodElfDemonhunter)then
        if(udg_MainChars[i] != null)then
            return
        endif
        set udg_MainChars[i] = CreateUnitAtLoc(p,'H000',GetRectCenter(gg_rct_SpawnRect),270)
        set udg_HeroCode[i] = "MA"
        call DialogDisplay(p,udg_Age,true)
        return 
    endif
    if(GetClickedButton() == udg_ModYouu)then
        if(udg_MainChars[i] != null)then
            return
        endif
        set udg_MainChars[i] = CreateUnitAtLoc(p,'H005',GetRectCenter(gg_rct_SpawnRect),270)
        set udg_HeroCode[i] = "MB"
        call DialogDisplay(p,udg_Age,true)
        return 
    endif
    if(GetClickedButton() == udg_ModPrinceofPersia)then
        if(udg_MainChars[i] != null)then
            return
        endif
        set udg_MainChars[i] = CreateUnitAtLoc(p,'H004',GetRectCenter(gg_rct_SpawnRect),270)
        set udg_HeroCode[i] = "MC"
        call DialogDisplay(p,udg_Age,true)
        return 
    endif
    if(GetClickedButton() == udg_NextMale)then
        call DialogDisplay(p,udg_Male2,true)
        return 
    endif
    //Male2 Buttons
    if(GetClickedButton() == udg_BackMale)then
        call DialogDisplay(p,udg_Male1,true)
        return 
    endif
    //Females1  
    if(GetClickedButton() == udg_ModAqua)then
        if(udg_MainChars[i] != null)then
            return
        endif
        set udg_MainChars[i] = CreateUnitAtLoc(p,'H002',GetRectCenter(gg_rct_SpawnRect),270)
        set udg_HeroCode[i] = "FA"
        call DialogDisplay(p,udg_Age,true)
        return 
    endif
    if(GetClickedButton() == udg_ModDarkMiku)then
        if(udg_MainChars[i] != null)then
            return
        endif
        set udg_MainChars[i] = CreateUnitAtLoc(p,'H003',GetRectCenter(gg_rct_SpawnRect),270)
        set udg_HeroCode[i] = "FB"
        call DialogDisplay(p,udg_Age,true)
        return 
    endif
    if(GetClickedButton() == udg_ModAssassin)then
        if(udg_MainChars[i] != null)then
            return
        endif
        set udg_MainChars[i] = CreateUnitAtLoc(p,'H006',GetRectCenter(gg_rct_SpawnRect),270)
        set udg_HeroCode[i] = "FC"
        call DialogDisplay(p,udg_Age,true)
        return 
    endif   
    if(GetClickedButton() == udg_NextFemale)then
        call DialogDisplay(p,udg_Female2,true)
        return 
    endif
    //Female2   
    if(GetClickedButton() == udg_BackFemale)then
        call DialogDisplay(p,udg_Female1,true)
        return 
    endif
    //Age
    if(GetClickedButton() == udg_B14)then
        if(IsHeroUnitId(GetUnitTypeId(udg_MainChars[i])) == true)then
            call SetHeroLevel(udg_MainChars[i],14,false)
            set udg_HeroCode[i] = udg_HeroCode[i] + "14"
            set udg_Finished[i] = true
            return 
        endif
        return 
    endif
    if(GetClickedButton() == udg_B15)then
        if(IsHeroUnitId(GetUnitTypeId(udg_MainChars[i])) == true)then
            call SetHeroLevel(udg_MainChars[i],15,false)
            set udg_HeroCode[i] = udg_HeroCode[i] + "15"
            set udg_Finished[i] = true
            return 
        endif
        return 
    endif
    if(GetClickedButton() == udg_B16)then
        if(IsHeroUnitId(GetUnitTypeId(udg_MainChars[i])) == true)then
            call SetHeroLevel(udg_MainChars[i],16,false)
            set udg_HeroCode[i] = udg_HeroCode[i] + "16"
            set udg_Finished[i] = true
            return 
        endif
        return 
    endif
    if(GetClickedButton() == udg_B17)then
        if(IsHeroUnitId(GetUnitTypeId(udg_MainChars[i])) == true)then
            call SetHeroLevel(udg_MainChars[i],17,false)
            set udg_HeroCode[i] = udg_HeroCode[i] + "17"
            set udg_Finished[i] = true
            return 
        endif
        return 
    endif
    if(GetClickedButton() == udg_B18)then
        if(IsHeroUnitId(GetUnitTypeId(udg_MainChars[i])) == true)then
            call SetHeroLevel(udg_MainChars[i],18,false)
            call DialogDisplay(p,udg_Age,false)
            set udg_HeroCode[i] = udg_HeroCode[i] + "18"
            set udg_Finished[i] = true
            return 
        endif
        return 
    endif
    call DialogInit()
endfunction

function Events_DialogClicks takes nothing returns nothing
    call TriggerRegisterDialogEvent(udg_TDialogClicks, udg_Gender)
    call TriggerRegisterDialogEvent(udg_TDialogClicks, udg_Male1)
    call TriggerRegisterDialogEvent(udg_TDialogClicks, udg_Male2)
    call TriggerRegisterDialogEvent(udg_TDialogClicks, udg_Female1)
    call TriggerRegisterDialogEvent(udg_TDialogClicks, udg_Female2)
    call TriggerRegisterDialogEvent(udg_TDialogClicks, udg_Age)
endfunction

function InitTrig_DialogClicks takes nothing returns nothing
    set udg_TDialogClicks = CreateTrigger()
    call Events_DialogClicks()
    call TriggerAddAction(udg_TDialogClicks, function Act_DialogClicks)
endfunction

I'm not sure if it is the warcraft engine or not. All research I looked up kind of failed. If you need more information ask.
 
Status
Not open for further replies.
Top