dota吧 关注:4,647,505贴子:155,339,520

诈尸钓鱼帖:龟速直播翻新光环指南

取消只看楼主收藏回复


诈尸一下不知道现在这个点还有多少人能记得我,虽然不抱太大期望
和很多贴吧老人的老生常谈一样,我也是觉得这里变水了。不过这是大势所趋,毅种循环。与其总是感慨贴吧水了云云,不如自己动手做点实事。就是这样。



IP属地:山东1楼2012-07-04 23:07回复
    另外一点废话,现在在听林肯的新砖。看起来确实是变电子金属的样子了。听交响金属,也听电子乐,DMC那个电子金属的OST也听。不过这个电子金属的风格略微蛋疼了一点,内容是尘归尘、土归土的一堆嗑药神棍风格的歌词,但总给人一种拉丁的即视感
    


    IP属地:山东4楼2012-07-04 23:12
    收起回复
      2026-02-27 03:49:49
      广告
      不感兴趣
      开通SVIP免广告
      地图:
      6.74c中文正式版,来自SG DotA
      工具:
      WAR3改图一条龙Ver2.32 - J语编辑器JassCraft
      Office 2007 Excel
      记事本


      IP属地:山东5楼2012-07-04 23:14
      回复
        简单来说,
        第一步,先用JassCraft把地图解压。这里大概说一下dota地图文件的构成。为了压缩大小、加密以及提高运行效率,IF发布的地图都是高度优化的,和直接用WE保存的地图有很大的区别。首先是一个独立的占地图体积30%的J文件,这个文件是完全用war3的J语言编写的,包含地形、地图上的初始物体(3C有很多,所以读取地图很慢,dota几乎没有)以及触发器性质的J代码,最后这个是dota的核心,大部分技能都是靠J模拟出来的。而除了J以外,单位、技能等硬编码信息被分成两种文件储存,一种是SLK表格,存储技能数值信息(在WE的物体编辑器中按Ctrl+D会发现基本都是诸如Cool1 : 0这种格式的代码信息),另一种是txt储存技能介绍之类的字符串信息。这次我主要弄的就是J、SLK和TXT
        第二步,在解压出来的TXT里用搜索功能找出来技能或buff的ID。
        第三步:在J和SLK里搜索刚才得到的ID,然后收集信息
        


        IP属地:山东9楼2012-07-04 23:26
        回复
          今天有点晚了,就稍微弄一点东西睡了。
          先是和主题无关但很重要的东西,dota护甲类型表(来自war3mapmisc.txt):
          DamageBonusMagic=1.25,0.75,2.00,0.35,1.00,0.75,0.05,1.00
          DamageBonusNormal=1.00,1.50,1.25,0.70,1.00,0.75,0.05,1.00
          DamageBonusPierce=2.00,0.75,0.75,0.35,1.00,0.50,0.05,1.50
          DamageBonusSiege=1.00,0.50,1.25,1.50,1.00,0.75,0.05,1.00
          注意第一个是魔法而不是法术,也就是遗忘法师的第二攻击。和以前人们说的不同,实际上在dota里魔法攻击打英雄的伤害是75%,比对战要高,和法术攻击相当。


          IP属地:山东14楼2012-07-04 23:29
          回复
            [A01N]
            Name=竭心光环
            code:AUau(邪恶光环)
            targs:air,enemies,ground,nonancient(空中,地面,敌人,非-古树)
            BuffID:B084


            IP属地:山东18楼2012-07-04 23:41
            回复
              J的内容明天补上吧


              IP属地:山东19楼2012-07-04 23:42
              回复
                刚才出了一点小问题,我突然发现在J里搜索不到技能的4位ID了71版本的J明明还可以来着。
                刚才在不如吧求问,结果是貌似是在J里把256进制的4位ID转成10进制的,这里有转换器:
                http://pan.baidu.com/netdisk/singlepublic?fid=536751_3067699022
                


                IP属地:山东22楼2012-07-05 16:34
                回复
                  2026-02-27 03:43:49
                  广告
                  不感兴趣
                  开通SVIP免广告
                  补竭心光环的J,其实现在这是一个纯模拟的光环了,邪恶光环只有1000范围的数值信息而已,没有其他数据在SLK里。
                  不过看起来这个J相当复杂啊~


                  IP属地:山东23楼2012-07-05 16:47
                  回复
                    function OL4 takes nothing returns boolean
                    if GetLearnedSkill()==1093677390 and IsUnitIllusion(GetTriggerUnit())==false and GetUnitAbilityLevel(GetTriggerUnit(),1093677390)==1 then
                    call OK4()
                    endif
                    return false
                    endfunction
                    这部分J在NEC学习1级竭心光环时call function OK4


                    IP属地:山东24楼2012-07-05 16:48
                    回复
                      补一句,竭心光环的10进制代码是1093677390
                      function OK4 takes nothing returns nothing
                      local trigger t=CreateTrigger()
                      call TriggerRegisterTimerEvent(t,0.5,true)
                      call TriggerAddCondition(t,Condition(function OJ4))
                      call SaveUnitHandle(HY,(GetHandleId(t)),(2),(GetTriggerUnit()))
                      set t=null
                      OK4函数会创建一个0.5秒游戏时间事件的触发器,也就是每0.5秒会触发一次。条件是函数OJ4
                      function OJ4 takes nothing returns boolean
                      local integer XII=GetHandleId(GetTriggeringTrigger())
                      local unit JTI=(LoadUnitHandle(HY,(XII),(2)))
                      local group g
                      if MNI(JTI)==false then
                      set g=WKI()
                      set IK=JTI
                      set DSI=JTI
                      set DTI=GetUnitAbilityLevel(JTI,1093677390)
                      call GroupEnumUnitsInRange(g,GetUnitX(JTI),GetUnitY(JTI),1025,Condition(function OY4))
                      call ForGroup(g,function OV4)
                      call WJI(g)
                      endif
                      set g=null
                      set JTI=null
                      return false
                      endfunction
                      这就开始实际运作了,创建一个本地单位组,选取满足条件单位,条件是函数OY4:
                      function OY4 takes nothing returns boolean
                      return(IsUnitEnemy(IK,GetOwningPlayer(GetFilterUnit()))and(GetUnitAbilityLevel(GetFilterUnit(),1093678162)==0 and IsUnitType(GetFilterUnit(),UNIT_TYPE_STRUCTURE)==false and MNI(GetFilterUnit())==false)and(IsUnitType(GetFilterUnit(),UNIT_TYPE_ANCIENT)==false or TUI(GetFilterUnit())))and GetUnitAbilityLevel(GetFilterUnit(),1110456372)>0
                      endfunction
                      这里的1110456372正是竭心光环的BuffID B084。经过一系列敌我判断,技能等级判断(按这个J来说竭心光环对其他学习了竭心光环的单位是无效的,希望玩过NEC 10人群P的童鞋验证),除去过滤单位(应该指的是小鸡之类免疫触发的单位),除去远古单位,选取【拥有竭心光环buff】的单位,竭心光环的目标终于全部选取。
                      动作是函数OV4:
                      function OV4 takes nothing returns nothing
                      local unit JRI=GetEnumUnit()
                      local unit JTI=DSI
                      local real BLO=GetUnitState(JRI,UNIT_STATE_LIFE)
                      local real OW4=GetUnitState(JRI,UNIT_STATE_MAX_LIFE)
                      local real OX4=((0.004+0.002*DTI)*OW4)/2
                      if BLO<OX4 then
                      call SetUnitState(JRI,UNIT_STATE_LIFE,1)
                      call JSI(JTI,JRI,3,100)
                      call JSI(JTI,JRI,1,100)
                      call JSI(JTI,JRI,2,100)
                      else
                      call SetUnitState(JRI,UNIT_STATE_LIFE,KUI(GetUnitState(JRI,UNIT_STATE_LIFE)-OX4,1))
                      endif
                      set JRI=null
                      set JTI=null
                      endfunction
                      简单来说不至死的话设置生命值降低,致死的话是设置成1点血之后让NEC对目标造成3次100点伤害,不过不才确实不知道函数里的3、1、2是什么东西,难道是设置好的攻击伤害类型?
                      


                      IP属地:山东25楼2012-07-05 17:11
                      收起回复
                        好不容易读完了一个技能,好累


                        IP属地:山东26楼2012-07-05 17:12
                        回复
                          月之祝福
                          A062/1093678642
                          function TP2 takes nothing returns boolean
                          if GetLearnedSkill()==1093678129 then
                          call SetPlayerTechResearched(GetOwningPlayer(GetTriggerUnit()),1382378855,GetUnitAbilityLevel(GetTriggerUnit(),1093678129))
                          以下为月骑部分
                          elseif GetLearnedSkill()==1093678642 then
                          call SetPlayerTechResearched(GetOwningPlayer(GetTriggerUnit()),1378889801,1)
                          endif
                          return false
                          endfunction
                          学习技能后把R00I等级设为1
                          1378889801/R00I为一个自定义科技升级
                          effect1 : rsig 视野范围奖励
                          base1 : 1000 基础奖励值1000
                          mod1 : 1000 增量奖励值1000
                          也就是说增加了1000的视野。然后有童鞋就要问了那为什么对白天没影响呢?答案是月骑白天本来就有1800的视野,已经是无飞行高度单位视野的极限了,所以升级了也没有影响。


                          IP属地:山东27楼2012-07-05 17:24
                          回复
                            看起来现在没什么人的样子,那就先闪人了


                            IP属地:山东28楼2012-07-05 17:25
                            回复
                              2026-02-27 03:37:49
                              广告
                              不感兴趣
                              开通SVIP免广告
                              临睡前再更点吧


                              IP属地:山东31楼2012-07-05 23:12
                              回复