找回密码
 点一下
查看: 1660|回复: 3

求大神帮忙提取 J文件的代码

[复制链接]
发表于 2012-6-14 05:10:46 | 显示全部楼层 |阅读模式
我想提取出这个脚本里的   “随即功能”相关的 脚本 出来,这个脚本是一张地图的,输入“-AR”就可以去全体英雄随即,我想提取出里面的 所有-AR相关的代码研究一下,但是内容很混乱,我分不出来 ,求 大神帮忙提取,谢谢了。

附上脚本。
求提取随即功能脚本.rar (675 KB, 下载次数: 28)
发表于 2012-6-14 05:42:04 | 显示全部楼层
先教你方法吧……
打开脚本后,ctrl+F搜索"-AR"(完全匹配),由于是玩家输入,所以找到的那段函数肯定是初始化触发器函数
然后看那段函数里的AddCondition和AddAction函数里的参数,用搜索去找对应的函数,当然一般不用搜索,初始化函数的上面就是条件和动作
如果条件函数和动作函数里出现了调用别的函数的情况,那么再去找对应的函数
   

话说这段J是从T做的地图里直接导出来的吧……到处都是可读性极差的T向函数名。。
另外输出文字也是T转J后的乱码……
[jass]function Trig_AR_Func005Func001Func004Func002A takes nothing returns nothing
call SetPlayerTechMaxAllowedSwap(udg_Hero[udg_ARshu[2]],0,GetEnumPlayer())
endfunction[/jass]
[jass]function Trig_AR_Func005Func001Func004Func004A takes nothing returns nothing
call SetPlayerTechMaxAllowedSwap(udg_Hero[udg_ARshu[2]],0,GetEnumPlayer())
endfunction[/jass]
[jass]function Trig_AR_Func005Func001Func004C takes nothing returns boolean
if(not(GetForLoopIndexA()<6))then
return false
endif
return true
endfunction[/jass]
[jass]function Trig_AR_Func005Func001C takes nothing returns boolean
if(not(GetPlayerSlotState(ConvertedPlayer(GetForLoopIndexA()))==PLAYER_SLOT_STATE_PLAYING))then
return false
endif
if(not(GetForLoopIndexA()!=6))then
return false
endif
return true
endfunction[/jass]

[jass]function Trig_AR_Actions takes nothing returns nothing
call DestroyTrigger(gg_trg_RD)
call DestroyTrigger(gg_trg_ld)
call DisplayTimedTextToForce(GetPlayersByMapControl(MAP_CONTROL_USER),5.00,"|cFFFF0000这里的字是乱码,发不上论坛,所以替换之")
set udg_ARshu[1]=64
set bj_forLoopAIndex=1
set bj_forLoopAIndexEnd=11
loop
exitwhen bj_forLoopAIndex>bj_forLoopAIndexEnd
if(Trig_AR_Func005Func001C())then
set udg_ARshu[2]=GetRandomInt(1,udg_ARshu[1])
if(Trig_AR_Func005Func001Func004C())then
call CreateNUnitsAtLoc(1,udg_Hero[udg_ARshu[2]],ConvertedPlayer(GetForLoopIndexA()),GetRectCenter(gg_rct_herostart01),bj_UNIT_FACING)
call ForForce(GetPlayersByMapControl(MAP_CONTROL_USER),function Trig_AR_Func005Func001Func004Func004A)
else
call CreateNUnitsAtLoc(1,udg_Hero[udg_ARshu[2]],ConvertedPlayer(GetForLoopIndexA()),GetRectCenter(gg_rct_herostart02),bj_UNIT_FACING)
call ForForce(GetPlayersByMapControl(MAP_CONTROL_USER),function Trig_AR_Func005Func001Func004Func002A)
endif
set udg_Heroar[1]=udg_Hero[udg_ARshu[1]]
set udg_Hero[udg_ARshu[2]]=udg_Hero[udg_ARshu[1]]
set udg_Hero[udg_ARshu[1]]=udg_Hero[udg_ARshu[2]]
set udg_ARshu[1]=(udg_ARshu[1]-1)
else
call DoNothing()
endif
set bj_forLoopAIndex=bj_forLoopAIndex+1
endloop
call DestroyTrigger(GetTriggeringTrigger())
endfunction[/jass]
[jass]function InitTrig_AR takes nothing returns nothing
set gg_trg_AR=CreateTrigger()
call TriggerRegisterPlayerChatEvent(gg_trg_AR,Player(0),"-AR",true)
call TriggerRegisterPlayerChatEvent(gg_trg_AR,Player(6),"-AR",true)
call TriggerAddAction(gg_trg_AR,function Trig_AR_Actions)
endfunction[/jass]
回复

使用道具 举报

 楼主| 发表于 2012-6-14 23:08:53 | 显示全部楼层

回 chyj4747 的帖子

chyj4747:先教你方法吧……
打开脚本后,ctrl+F搜索"-AR"(完全匹配),由于是玩家输入,所以找到的那段函数肯定是初始化触发器函数
然后看那段函数里的AddCondition和AddAction函数里的参数,用搜索去找对应的函数,当然一般不用搜索,初始化函数的上面就是条件和动作
如果条件函 .. (2012-06-14 05:42)
感谢提取出了 代码,可是这段代码没看出来是如何随即所有英雄 的?不是 应该有随即所有 英雄 ID  数组什么的 设置吗?这个 怎么什么都没有。。。
回复

使用道具 举报

发表于 2012-6-15 07:28:57 | 显示全部楼层
不是有循环和Hero这个单位数组吗……
英雄ID什么的当然是在初始化或游戏开始X秒时配置
当然我只是大致看了下,所以具体细节不清楚。。

LZ要是看不出来的话说明J功底不够扎实,看代码如果觉得眼花缭乱的话就把代码拆成小段一点点解析
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 16:01 , Processed in 0.081401 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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