找回密码
 点一下
查看: 1849|回复: 11

写的一段jass,全局变量的对话框````有问题

[复制链接]
发表于 2008-4-3 23:23:13 | 显示全部楼层 |阅读模式
[codes=jass]
    function Trig_LearnSkill_Actions takes nothing returns nothing
    local unit UniLearn=I2U(GetStoredInteger(udg_GC,I2S(H2I(GetTriggerPlayer())),"UniForget"))
    local integer Skill=GetStoredInteger(udg_GC,I2S(H2I(UniLearn)),"SkiLearn")
    local integer SkillA=GetStoredInteger(udg_GC,I2S(H2I(UniLearn)),"Skill1")
    local integer SkillB=GetStoredInteger(udg_GC,I2S(H2I(UniLearn)),"Skill2")
    local integer SkillC=GetStoredInteger(udg_GC,I2S(H2I(UniLearn)),"Skill3")
    local integer SkillD=GetStoredInteger(udg_GC,I2S(H2I(UniLearn)),"Skill4")
    if udg_ByeOrNotS[1]== GetClickedButtonBJ() then
       call UnitRemoveAbility(UniLearn,SkillA)
       call UnitAddAbility(UniLearn,Skill)
       call StoreInteger(udg_GC,I2S(H2I(UniLearn)),"Skill1", Skill)
    elseif udg_ByeOrNotS[2]== GetClickedButtonBJ() then
       call UnitRemoveAbility(UniLearn,SkillB)
       call UnitAddAbility(UniLearn,Skill)
       call StoreInteger(udg_GC,I2S(H2I(UniLearn)),"Skill1", Skill)
    elseif udg_ByeOrNotS[3]== GetClickedButtonBJ() then
       call UnitRemoveAbility(UniLearn,SkillC)
       call UnitAddAbility(UniLearn,Skill)
       call StoreInteger(udg_GC,I2S(H2I(UniLearn)),"Skill1", Skill)
    elseif udg_ByeOrNotS[4]== GetClickedButtonBJ() then
       call UnitRemoveAbility(UniLearn,SkillD)
       call UnitAddAbility(UniLearn,Skill)
       call StoreInteger(udg_GC,I2S(H2I(UniLearn)),"Skill1", Skill)
    else
    endif
    set UniLearn= null
endfunction[/codes]

以上函数事件是对话框udg_SkillFull被点击
udg_SkillFull是对话框变量,在之前的函数中call DialogDisplayBJ( true, udg_SkillFull, GetTriggerPlayer() )
 楼主| 发表于 2008-4-3 23:24:26 | 显示全部楼层
问题是`在if之后的语句无法执行,似乎判断条件时出了什么问题
回复

使用道具 举报

发表于 2008-4-4 07:50:17 | 显示全部楼层
在函数的一开始就用一个变量来保存GetClickedButtonBJ() 吧~~

你的缓存操作耗费cpu时间太多了~~ GetClickedButtonBJ()可能已经失效~~
回复

使用道具 举报

 楼主| 发表于 2008-4-4 08:17:00 | 显示全部楼层
貌似保存了也无效呢```
回复

使用道具 举报

 楼主| 发表于 2008-4-4 21:20:17 | 显示全部楼层
新发现``````````=.=把函数改成这样子以后:
[codes=jass]
function Trig_LearnSkill_Actions takes nothing returns nothing
    if udg_ByeOrNotS[1]== GetClickedButtonBJ() then
      call DisplayTextToPlayer( GetTriggerPlayer(), 0, 0, "A" )
    elseif udg_ByeOrNotS[2]== GetClickedButtonBJ() then
      call DisplayTextToPlayer( GetTriggerPlayer(), 0, 0, "B" )
    elseif udg_ByeOrNotS[3]== GetClickedButtonBJ() then
      call DisplayTextToPlayer( GetTriggerPlayer(), 0, 0, "C" )
    elseif udg_ByeOrNotS[4]== GetClickedButtonBJ() then
      call DisplayTextToPlayer( GetTriggerPlayer(), 0, 0, "D" )
    else
      call DisplayTextToPlayer( GetTriggerPlayer(), 0, 0, "E" )
    endif
endfunction

//===========================================================================
function InitTrig_LearnSkill takes nothing returns nothing
    local trigger InitLearnSkill = CreateTrigger(  )
    call TriggerRegisterDialogEventBJ( InitLearnSkill, udg_SkillFull )
    call TriggerAddAction( InitLearnSkill, function Trig_LearnSkill_Actions )
    set InitLearnSkill= null
endfunction
[/codes]

在游戏中不管点击哪个按钮都显示E
回复

使用道具 举报

发表于 2008-4-4 22:18:26 | 显示全部楼层
你的JASS没问题,全局变量数组个数几个,要大于等于实际的
回复

使用道具 举报

 楼主| 发表于 2008-4-4 22:42:52 | 显示全部楼层
5个 ·这个应该没问题`
回复

使用道具 举报

发表于 2008-4-4 22:48:42 | 显示全部楼层
发上来?
回复

使用道具 举报

发表于 2008-4-4 23:12:16 | 显示全部楼层
能不能将所有与这个对话框相关的触发的代码都发上来看下呢??
回复

使用道具 举报

 楼主| 发表于 2008-4-4 23:15:47 | 显示全部楼层
。。。已解决了,谢谢大家
回复

使用道具 举报

发表于 2008-4-4 23:36:17 | 显示全部楼层
猪头当坂主恭喜啊,怎么解决的?
回复

使用道具 举报

发表于 2008-4-4 23:49:09 | 显示全部楼层
呵呵,谢谢呀~~
或许是lz发现了什么地方疏忽了吧,解决就好,恩~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-23 23:34 , Processed in 0.045367 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表