actboy168
actboy168
关注数: 4
粉丝数: 840
发帖数: 24,296
关注贴吧数: 22
这不得更新个版本来庆祝下 这不得更新个版本来庆祝下
天亮了 天亮了
求教飞船自动化 按帮助里说的,设置了飞船发射信号,速度信号和目的地信号。飞船会自动发射到太空,但却不会自动启动引擎。我是有哪里没做对吗?
据我得到的小道消息,重铸版编辑器会用YDWE的汉化文本 YDWE的文本虽然也很多问题,不过也确实是比官方的机翻文本好一亿倍。 不过比较搞笑的是,YDWE的文本有大量对原版WE的bug吐槽,据说也一字不漏地被搬了过去。作为官方的文本到处在吐槽自己的bug,而不是把它改了,看起来也挺奇怪的。 还有就是这些吐槽在英文版显然是不存在的,中文版特供
ydwe 1.32.13 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fpan.baidu.com%2Fs%2F13StT9NilsiuuKV-W8WcGDA&urlrefer=769e31132c680ca91bab10ac5a929f58 [Fix]配置程序崩溃的问题 [Fix]修正w3x2lni的bug(六个) 久违的更新,提前祝大家2019年新年快乐
风暴要火 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fnews.blizzard.com%2Fen-us%2Fblizzard%2F22833558%2Fheroes-of-the-storm-news&urlrefer=545b2afb0ddb81e367bcff0e141c69f8 简单来说就是,明年的比赛全部取消,大部分开发人员转到其它项目组。
不知不觉做lua调试器已经两年了 从更新一个版本增加的下载数推算,现在大概应该有5000的活跃用户,已经要比ydwe高不少。此前还有多年前的旧同事来问我,这是你做的吗;而ydwe更像是你在家偷偷看的动漫,而现实生活的朋友并不懂你那是什么玩意。 blz只会闭门造车,魔兽这个舞台终究还是太小了。就像以前我劝你们学lua一样,人总有一天还是要登上更大的舞台的,而你在魔兽里所做的努力,并不会对你有一丝的帮助。这算是我的亲身经历的一点感悟,与君分享。
实锤暴雪眼里没有RPG http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fw.163.com%2F18%2F1104%2F02%2FDVO23JOO0031986H.html&urlrefer=09bc4e11fd5146181ae0b2f9b2e70e9d Q:魔兽争霸的自定义地图是非常受欢迎的,以后有没有计划出一些官方地图或者队作者进行更大的支持? A:我们之前与地图作者们进行过交流并且得出了一个很长的清单。目前已经更新了很多老地图,地图池方面也在扩充。
今天公布财报之后,暴雪盘后跌10%受嘉年华失望情绪的影响,此 今天公布财报之后,暴雪盘后跌10% 受嘉年华失望情绪的影响,此前暴雪股价已经累计跌8%。但由于暴雪近期会公布财报,所以失望情绪尚未得到充分释放。今天财报,暴雪表现接近预期,无功无过。但受此前嘉年华的影响,股价依然跌10%,自嘉年华之后累计跌18%。 受美国中期选举的影响,这周纳指涨约3%。不然暴雪还会跌更多。
【科普】YDWE自定义值的原理 YDWE的自定义值的本质是哈希表(在120下是GC,不过120应该快灭绝了吧),相信很多人都知道。但他又不单单是哈希表这么简单。 先看一个例子 local unit u = GetTriggerUnit() call YDUserDataSet(unit, u, "力量", integer, 100) 这是在转为自定义代码里看到的效果,但当你实际保存之后,你会发现代码会变成这样 call SaveInteger(YDHT, GetHandleId(u), 0x30FA192C, 100) 如果用哈希表写,应该怎样写呢,大概应该有三种写法吧 call SaveInteger(YDHT, GetHandleId(u), StringHash("力量"), 100) call SaveInteger(YDHT, GetHandleId(u), 1, 100) call SaveInteger(YDHT, GetHandleId(u), '+str', 100) 第一种写法,StringHash有运行时的性能消耗,而且还会让字符串池增加了一个字符串,是性能很差的写法。 第二种写法,性能和自定义值相同,但是可读性较差,你只能通过注释或者自己的记忆来记住这是什么东西。 第三种写法,性能和自定义值相同,可读性也不错,在你英文还行的前提下,不过限定4个英文字母,所以表达能力有限。 总的来说,YDWE的自定义值和用Jass裸写哈希表比,性能一致或更好,可读性应该是最好的。 不过YDWE自定义值并非是为写Jass的人准备的,如果是用Jass来写YDWE自定义值,还可以简化一些。 比如描述u的类型unit,实则只需要关心u是不是handle(因为所有的handle都是用GetHandleId来转为整数),所以是可以省略的。 YDWE自定义值的缺点? YDWE自定义值的局限性在于第三个参数(也就是“力量”)必须是常量,这样YDWE才可以在编译时简化掉字符串。加这个限制也正是为了性能的考虑。所以我也正在考虑加一个变量版的自定义值,这样功能就和哈希表完全一致了,同时使用变量版的自定义值,你就需要考虑上面三种哈希表写法所面临的问题。
暴雪不再懂玩家了 不是我说的,暗黑2的制作人说的。但我觉得说得很对,不单是猪场的手游这事。 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.vgtime.com%2Ftopic%2F1040779.jhtml&urlrefer=466315eca1875834002c36a9df77bf08
重制版不过是1.31收费补丁 一个有意思的细节是,这次的重制英文名是reforged,一般重制的英文应该是remastered(比如星际一重制就是这个)。为了方便描述,下面称即将推出的“重制版”为高清版,重制依然为通常的含义。 blz有提到高清版只是替换了高清模型,并没有修改引擎,比如还可以和非高清版联机。非高清版编辑器做出来的图也可以在高清版上使用。但不知道在高清版出来之后,非高清版就会不会获得更新,从可以联机来看,应该是会获得更新的。(也许会持续一段时间?)对于对战玩家,这挺不错,但对RPG玩家就坑爹了。(RPG玩家一贯三等公民)首先但看高清版,自带的模型是高清了,但跟自定义模型又没有半毛钱关系。如果你的图全用自定义模型,那高清版和非高清版没有任何区别。如果你的图自定义模型和自带模型皆有,那么风格差别极大的模型混在一起,看起来一定十分诡异。总之用了自定义模型的图,高清版并没有那么美好。 也许你可以重新做一套和高清版风格匹配的模型,但是也存在两个问题。首先,高清版的模型制作成本和制作门槛一定大幅度上升,况且因为引擎根本没换,高清版能做的事情,现在就能做,那么为什么不现在做呢,因为不需要不值得。其次,请记住高清版是可以和非高清版一起玩的,那么你的图是打算支持两个版本吗?blz的模型是在游戏里的,所以高清版看到的是高清模型,非高清版看到的是非高清模型;但是自定义地图如果用了高清自定义模型,非高清版看起来就会很奇怪,反之亦然。 另一个细节是,在英文版的官网上只有一个“预售”的按钮,而中文版上是“立刻预约”+“了解官方对战平台”两个按钮。预售就是买游戏,预约只是留个手机号(以便给你推送网易游戏的广告),而网易对战平台压根没出现任何与之相关的消息。所以我只能推测,高清版依然和之前一样,中文玩家无法购买正版,只能使用网易提供的盗版。不知道在英文官网购买的版本会不会提供中文,已经还会不会锁区。 不过官网有提到会假如现代BN的特性,现代BN应该指的就是BN2.0吧。英文版应该会登录BN2.0,这应该没什么疑问,但中文版会如何处理?因为网易对战平台和BN2.0本质是冲突的。首先先考虑英文版,BN2.0提供的IM系统,语音聊天之类的接入很简单,应该没问题。但BN2.0依然缺乏了匹配、房间、积分等概念,所以英文版可能会沿用非高清版内置BN的东西。这对英文版来说这并不是什么好消息,因为魔兽的内置BN从现在的角度看实则是太垃圾了。有没有可能内置BN大幅度重做?我觉得不太可能,毕竟你还要跟非高清版联机。而中文版,匹配、房间、积分这些东西在网易对战平台里已经解决了,反倒不会成为问题;只是加入“现代BN功能”这句话只是在骗人了。 最后说说兼容非高清版编辑器的事。自从blz恢复更新以来,每个版本都在加入破坏性改动,也许高清版不会像重制那样完全不兼容旧版,但他顶多就像1.30对1.29,1.29对1.28,1.28对1.27那样,你想直接升级?不存在的。而且只要BLZ对RPG的态度不变,这种版本的兼容性就会一直持续下去。顺便我说一个从宣传片看到的不兼容的地方,高清版把技能UI改了,从三行变成两行,我们都知道,技能位置是按坐标来指定的,还有一些非常tricky的不按坐标的做法,那么这些东西会在新UI里变成什么样,真的能兼容? 总的来说,我没看到任何对RPG利好的东西,暴雪依然是那个眼里只有对战的暴雪。不过也不完全是负面的,一是暴雪这次收到钱了,后续也许会投入更多的资源进去(就算全投到对战里,RPG说不定也能舔到点残羹剩饭);二是做个高清版也可以吸引一波新人;三是幸好不是出了个网易出品的魔兽3手游。
其实YDWE的开源协议已经是GPL了 YDWE从1.31.2起加入w3x2lni来实现写物编的功能,而w3x2lni的开源协议是GPL。所以YDWE也应该是GPL。 所以我打算近期内把YDWE更正为GPL。 此外,我有计划将通用且和YDWE无关的代码移到一个独立的项目里去,可能会使用其它的开源协议。包括ydbase、filesystem、process、thread、registry等模块。顺便也会把部分库重写,这些库已经为YDWE服务了很多年,我对很多库的设计已经不太满意,是时候做出改变了。
【科普+预告】泄漏检测 YDWE已经历经了三个版本的泄漏检测 第一个版本就是搬运了老外的jass库,原理是利用vjass的钩子来钩一些常用的函数。不过问题很多,vjass的钩子本身就很多毛病,加上原理上来说这个库只会告诉你当前已经存在哪些handle,实际上并不能告诉你哪些handle是泄漏了,哪些是正常的handle。 第二个版本是我写的。原理和老外的相同,只是从vjass的钩子改成理论YDWE的预处理来实现,并且利用YDWE的代码生成让泄漏检测库获得了获取当前触发器的触发器名的功能,以便可以更好地定位泄漏的handle的位置。不过由于原理相同,和第一个版本比只是bug变少了,其他问题依然存在。 第三个版本就是现在YDWE里的泄漏检测插件,泄漏检测插件包含两个功能,一个是第二个版本的C++移植版,使用C++做钩子速度上比Jass快了很多,但原理相同所以遇到的问题也相同;另一个是一个遍历所有handle以及列出它们的信息的功能,通过手动分析,可以解决大多数的泄漏问题。这种方式我认为是最有效和合理的泄漏检测,不过当初加这个,只是因为自用,对我而言,手动分析就足够了,但可能大多数人并搞不懂这个功能。 最近我对这个新的泄漏检测方式做了大量的优化,以便让更多的人可以使用它。同时旧的方式应该也可以退役了。那么我就来简单的说下原理。 魔兽的handle(准确地说是agent)都是由引用计数来管理,当引用计数变为0时,handle就会被释放。假如一个handle的引用计数永远也无法变为0,那么我们就可以认为这个handle已经(有)泄漏了,这就是这个泄漏检测的原理。 为了找到引用计数永远也无法变为0的handle,我们得先找到引用这个handle的地方有几处,每有一处则意味着当此处的引用被释放后,引用计数就会减一,所以问题变成了找到 “引用计数大于引用handle的数量”的handle。 对于魔兽而言,引用handle的有三种对象、变量和哈希表。所以你会看到这样的报告 handle: 0x0010005A 引用: 5 类型: trigger 对象: +trg 引用它的变量: | gg_trg_____________u | TEST!trg 引用它的哈希表: | handle:0x00100048 [1][1] 这个handle有1个对象、2个变量、1个哈希表引用它,但引用计数是5,所以这个handle就有泄漏。 不过这里还有一种情况,假如0x00100048这个哈希表已经对象泄漏(也就是没有任何变量或哈希表引用者它),则意味着你永远无法把0x00100048里的东西释放掉,这实则也是泄漏了,即使这个handle的引用计数正确。暂时我认为这种情况还是你自己手动分析比较好。 以上这种被称为handle泄漏,handle泄漏是写Jass的人最容易犯的错误,因为魔兽有个坑爹的bug,函数参数的handle不会自己释放引用。即使是暴雪自己写的代码(blizzard.j)也包含着大量的泄漏,就是因为这个原因。不过YDWE不会去用原版的blizzard.j,所以写T的人很少会遇到这个问题,但写J就很常见了。 还有一种泄漏是对象泄漏,如果一个handle没有被任何变量和哈希表引用,但被对象引用,这个就是对象泄漏。但并不是所有的对象泄漏都是泄漏,有些对象泄漏是正常的。对象泄漏的实际含义是,我们无法通过变量或者哈希表的手段来获取这个对象。但是有可能我们还有别的手段获取它,比如1.20时代的gamecache,还有像单位我们虽然没有变量记录者它,但我们依然可以用选取的方式来找到这个单位,在这种情况下,它并不算泄漏。 最后一种情况是,泄漏但实则无所谓的。例如player,在魔兽里player总是固定的16个,这16个handle引用或者不引用,其实都是无所谓的。
对不起,我不喜欢麦克莫汉的暴雪 我只是转 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fwww.huxiu.com%2Farticle%2F267581.html&urlrefer=7f233bb8f4f5966cb6124cd213b29101
到底要多菜才可以加入暴雪娱乐,在线等急 jass里的hashtable的桶竟然是固定的4个,这种实现和单向链表有什么区别
一个微妙的bug 在全局变量初始化时创建的handle,不会被这个全局变量引用 globals timer t1 = CreateTimer() endglobals local timer t2 call DestroyTimer(t1) // t1没有引用,所以handle这时就被回收了 set t2 = CreateTimer() // t2 == t1
魔兽的翻译真是辣鸡 // Blending Methods WESTRING_BLENDMODE_NONE="无混合物" WESTRING_BLENDMODE_BLEND="普通混合物" WESTRING_BLENDMODE_ADDITIVE="附加的混合物" WESTRING_BLENDMODE_MODULATE="调整的混合物" WESTRING_BLENDMODE_MODULATE_2X="调整的2倍混合物" WESTRING_BLENDMODE_KEYALPHA="关键的Alpha混合物" 顺便征集下其它辣鸡翻译
墙裂支持暴雪爸爸严惩盗版 听说由于正版魔兽(暴雪)更新了支持差量更新的技术,导致盗版魔兽(网易)每次更新都必须完整更新。希望爸爸下次更新可以继续增加更严厉的反盗版措施。
一个新的想法,自定义事件 之前做了一个逆天运行触发器,不知道有多少人在用。自定义事件可以说是运行触发升级版。 先看运行触发器(摘自ydwe的演示) pick 事件 单位 - 任意单位 获得物品 条件 动作 [逆天] - 运行 display <预设>, 无视条件 参数 [逆天] - [单位] loc_单位 = (触发单位) [逆天] - [物品] loc_物品 = (**作物品) display 事件 条件 动作 游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (((loc_单位) 的名字) + 拾取了 + ((loc_物品) 的名字)) 运行触发器是1:1,而自定义事件则是1:n,也就是说你可以写多个display的触发器,只有它们用相同的字符串关联起来。 pick 事件 单位 - 任意单位 获得物品 条件 动作 [逆天] - 发布 获得物品 事件, 无视条件 参数 [逆天] - [单位] loc_单位 = (触发单位) [逆天] - [物品] loc_物品 = (**作物品) display1 事件 逆天 - 获得物品 事件 条件 动作 游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (((loc_单位) 的名字) + 拾取了 + ((loc_物品) 的名字)) display2 事件 逆天 - 获得物品 事件 条件 动作 游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (((loc_单位) 的名字) + 拾取了 + ((loc_物品) 的名字)) 一些尚未完善的细节: 1. 参数 可以让数据从pick触发器传递到display触发器,但没有display触发器没有办法把数据传给pick触发器。(逆天运行触发器也有同样问题) 2. 动态触发器(逆天触发器)使用自定义事件时,需要回收资源。(不建议在动态触发器中用自定义事件,不过也许也应该提供一个回收自定义事件的UI) 3. 考虑到会被白嫖,所以我就是随便说说
JAPI拾遗 YDWE里包含了很多JAPI,大多数都做成了UI还有演示图。所以理解和使用上不会有太多的困难。但也有一部分并没有加到UI里的“隐藏”函数,它们大多数都是因为适用面不够宽广亦或者使用起来门槛太高。 今天我就来介绍其中一个隐藏函数,它的定义如何下 native EXBlendButtonIcon takes string a, string b, string c returns boolean 它的用处可以看两年前小汐大婶发的图 https://tieba.baidu.com/p/4494204428 简单来说这函数可以动态合成一个新的图标,a,b是两张输入的图标路径,c是输出的图标路径。 上面那个不停在动的图标实际上就是不停地在切换技能图标。理论上你可以不借助这个函数,而把图标全部做好放到地图里,也可以达到同样的效果。但这个函数可以让事情变得更简单。 为了做到上图的效果,你需要准备0~9数字10张blp,还有转圈动画blp8张,原图标+转圈图标+数字图标就是实际看到的样子。 当然这个api还有很多其它用法,请发挥你的脑洞
猪场日常操作 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fm.huxiu.com%2Farticle%2F263366.html&urlrefer=29764db81a5b470a6262735b9540d9c8
时隔五年TESH2终于开源了 五年前,我请求作者开源,作者说等他做好就会开源 什么时候网易编辑器可以集成下,好让我白嫖。
使用YDWE的人越来越多,但这并不是我想要的 今天看了下YDWE的同时在线人数,已经接近700人了,相比一年前还有所增长。然而放眼整个魔兽社区,情况则正好相反,论坛基本上已经死光,贴吧的活跃度也每况愈下。种种迹象看起来,魔兽社区正在萎缩。为什么会有截然不同的两种情况呢。 过去我曾经说过,用WE的有两种人,一种是做地图的人,一种是玩编辑器的人。而我认为现在可以分为三种人,玩编辑的人、为爱做图的人、为钱做图的人。所以很明显了,现在前两种人已经大幅度减少,第三种人正在急剧增加。 过去的社区基本都是靠前两种尤其是第一种人在支撑。而现在大家都太功利了,没人愿意分享自己的东西,因为别人可能是你的商业竞争对手亦或者是你的潜在客户。所以我觉得魔兽社区已经差不多gameover了,就算是还有点人的贴吧,也就是有钱钱纠纷时会热闹一下。然而这并没有任何意义。 过去的几十年,人类科技树发展最快的计算机硬件和软件。十年前的汽车和现在的汽车几乎你找不出有什么区别,而十年前你甚至还在用翻盖手机,而现在的手机已经完全不是一个物种了。触屏手机软件更是在这十年内从无到有,成为每个人生活种不可或缺的一部分。计算机技术的高速发展,我认为很大一部分功劳归功于开源文化的盛行。计算机技术的每个分支的最顶级或者次顶级都有开源的实现,几乎不存在所谓的独家秘方。即使闭源的项目,内部也一定用了大量的开源技术作为基石。很多顶级公司也认为开源自己的技术会给自己带来更高的收益,从而形成良性的循环。计算机行业发展到现在的高度,我已经很难想象没有开源会是什么样子,也许会退到十年前,甚至更久之前。 很早以前,我也曾经希望魔兽社区也可以效仿计算机技术,借助开源的力量来高速发展。所以我一直都认为地图加密技术是对社区发展有害的东西,不过幸好魔兽地图是无法真正意义的加密的。当我听到暴雪打算让银河编辑器可以真正的加密地图时,我觉得暴雪它想错,而且是严重的错误。不过一切终究也只是想想,一个人的力量很难改变什么。即使在计算机行业里,开源盛行也只是在国外,并不包括中国。
Jass字节码 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.ydwe.net%2F2018%2F09%2Fjass-bytecode%2F&urlrefer=a20394179f1df17d08731e156bfd1a20 前文 https://tieba.baidu.com/p/5862971867
hive上多了很多正版魔兽的受害者 blz在1.30里彻底移除了mpq格式,导致许多依赖mpq的工具都无法使用。当他们升级到1.30发现被坑之后,想退回1.29?爸爸说:没门。 如果你需要1.27之前的版本,你可以先安装原始的war3光盘镜像,然后去blz的ftp下载对应版本的升级补丁。但blz在1.27之后彻底改变了升级的机制,127之后的版本并不存在升级补丁,你只能连接战网更新。 当然盗版的方法还是有的,只是不太适合正版用户
搞了个jass的反汇编器 把jass的字节码转为了可读文本,效果可以看这里 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fpan.baidu.com%2Fs%2F1aHr1JHgh-fHKItbOzPDkyw&urlrefer=9e355b8b48f2476614100c8d68f349a5 想深入了解jass的可以学习下。 说句题外话,从这字节码的设计可以看出,blz的人真是菜得扣脚,这也是为什么jass的效率会这么低的原因吧
都散了吧 看戏也看够了,水也水够了
再次暴跌7%,跟半年前的高点比已经快打对折了
升米恩 斗米仇 有人说我不更新ydwe,称为自私。 如果我自私,网易甚至没有耍流氓的机会。我的YDWE免费下载使用,甚至源代码也全部开源,在遵守开源协议的前提下任何人也可以免费、随意修改和使用。外面有很多破铜烂铁随便就卖几百几千的,而YDWE以及我的制作的其它工具,代码全部免费使用。我还没从中收过任何人一分钱(包括11平台说赞助,目前我还没收到钱)。 国内还活着的三个平台,无一不在使用YDWE的技术和代码。有人说lua引擎没用,我告诉你09平台的所有地图都是基于lua引擎制作的,甚至lua的底层也是基于英萌的底层库;lua引擎是09平台存在的基石这话并不过份,当然我没拿到过一毛好处。网易平台就不用说了,从平台内嵌的lua引擎/japi乃至整个ydwe都被他搬走,我唯一的收获是网易拥簇者的诋毁和谩骂。如果我自私,我不知道这些平台会变成什么样。 我讨厌网易,你们这些网易拥簇者真是功不可没。
ydwe1.32.11 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fpan.baidu.com%2Fs%2F11Kpsv_-ZmIS8w_X7wM8voQ&urlrefer=8c398fd7d1c04c764b42574f3fb680f9 [Fix]修正Lua加载模块错误的信息是乱码的问题 [Fix]修正Lua引擎slk库在中文路径下加载失败的问题 [Fix]修正slk优化不支持8进制整数的问题 [Fix]修正地图打包会受到lua环境变量影响的问题 [Fix]修正Lni地图同时存在新旧版本的触发文件时错误的问题
笑
虽然不知道为什么,但我竟然排在第六
ydwe 1.32.10 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fpan.baidu.com%2Fs%2F10U-RwwQvZt0g88fGiJJgmg&urlrefer=3e0eee80859b07d7c7d3e6a0f99cab81 [Chg]升级Lua到5.3.5 [Chg]带索引的数据写入非table的值时,会写入第一级 [Fix]修正打开的Lni地图中的数组变量变成常量的BUG [Fix]修正导入外部文件错误的问题 [Fix]修正UI`发布'全部卸载'命令`不对的问题 [Fix]修正UI`判断触发的事件`无法判断对话框被点击的问题 [Fix]修正slk时公式计算的误差问题
Jass的符号信息 ydwe在jass抛运行时错误时,会弹框告诉你错误的位置。大概格式为 函数名A:123 函数名B:321 … 很多人不理解函数名后的数字是什么,它的意思是出错位置离函数开始相隔的字节码数量。 这可能仍然不好理解,因为大家一般都是用行数来定位一个位置的。但在运行时魔兽并没有保留行数和实际位置的映射关系,也就是说没有这个位置是第几行的信息。 自己编译一遍jass来获取行数信息,也许是解决这个问题的办法。 更进一步,函数名很多时候也不是很直观。因为we生成的中文触发器的函数名是一大堆下划线。这个问题本质上和前面的问题一致,触发器编译为jass时没有保留符号信息,幸好触发器编译jass目前是ydwe自己做的,保留一份符号信息并不难。 不过考虑到会被白嫖,所以我只是随便说说而已。
看起来lua5.4已经快要出正式版了 不过5.4几乎没有任何变更和修改,只有性能上的优化,升级起来会比较简单。虽然考虑到会被网易白嫖,但YDWE应该还是会在第一时间跟进。
是时候加自定义血条的japi了,毕竟129都自带显蓝了 不过考虑到被网易白嫖,还是算了
等飞机无聊,想了一个极好的功能 但是做在ydwe里等于便宜了网易。做好送给11,虽然网易会费劲些,但最终也还是会被网易抄去。所以想想还是算了。
现在我有了“下三滥”的想法 最近发生了很多事,我是指我个人的事情,而非网易和YDWE的事,所以接下来的时间我可能会很忙了。很多东西也在发生改变,本来我就有停止更新YDWE的想法了,加之网易最近的所作所为,更加坚定了我的想法。不过后来11说要赞助我,希望我继续更新,送上门的钱我自然不会拒绝。11想做什么,我心里自然清楚。不过我个人的看法,我使劲更新YDWE其实对11没啥好处,反而是便宜了网易。此外最近网易的所作所为让我也意识到原来网易的人这么恨我,网易大概也想让我赶紧消失。 所以至少让我休息一段时间吧。四年前离开11的时候,我说过要停更YDWE了的,但最后又因种种原因又回来了。这次应该还是会回来的,毕竟我是收了钱的。正如我一开始所说,我接下来一段时间会比较忙,报告bug最好使用github或邮箱的方式。我们有缘再相见吧。
ydwe 1.32.9 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fpan.baidu.com%2Fs%2F1NLoVr_uvHUyA01sq1STcwQ&urlrefer=3ca56d11c3dd884fbc74e7570ea01f1e 更新说明略
ydwe 1.32.9 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fpan.baidu.com%2Fs%2F1NLoVr_uvHUyA01sq1STcwQ&urlrefer=3ca56d11c3dd884fbc74e7570ea01f1e [Chg]简化UI`获取自定义值`的文本 [Chg]保存地图时会调用地图插件 [Fix]修正测试前slk优化有处理得不对的问题 [Fix]修正Lni地图测试时会打包两遍的问题 [Fix]修正打开Lni地图会导入无用文件的问题
ydwe 1.32.9 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fpan.baidu.com%2Fs%2F1NLoVr_uvHUyA01sq1STcwQ&urlrefer=3ca56d11c3dd884fbc74e7570ea01f1e [Chg]简化UI`获取自定义值`的文本 [Chg]保存地图时会调用地图插件 [Fix]修正测试前slk优化有处理得不对的问题 [Fix]修正Lni地图测试时会打包两遍的问题 [Fix]修正打开Lni地图会导入无用文件的问题 [Fix]修正测试前Slk地图插件声明的引用失效的问题
ydwe 1.32.9 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fpan.baidu.com%2Fs%2F1NLoVr_uvHUyA01sq1STcwQ&urlrefer=3ca56d11c3dd884fbc74e7570ea01f1e [Chg]简化UI`获取自定义值`的文本 [Chg]保存地图时会调用地图插件 [Fix]修正测试前slk优化有处理得不对的问题 [Fix]修正Lni地图测试时会打包两遍的问题 [Fix]修正打开Lni地图会导入无用文件的问题 [Fix]修正测试前Slk地图插件声明的引用失效的问题 补充一点,ydwe1.32内置的w3x2lni的版本是2.4.x。为了确保兼容,ydwe1.32制作的地图最好也是使用w3x2lni 2.4.x。为此,w3x2lni 2.4会是第一个长期维护的版本,直到ydwe1.33正式版发布。 今后,w3x2lni的版本策略也会遵循此规则。
网易的人一边骂我一边偷我的东西 为啥会这么无耻呢
ydwe 1.32.8 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fpan.baidu.com%2Fs%2F195t4ghuH-utyQFd-rVlckA&urlrefer=6c4b258c856ede72d0c7d2243123c8e8 [New]写物编支持新的api`permanent`可以永久保留生成的对象 [New]UI新增`单位到点的距离`和`单位到点的角度` [Chg]测试Lni地图可以直接slk,不再需要分为两步 [Chg]UI`夜天自定义代码`加入`不推荐使用`分类 [Chg]UI`夜天运行计时器`加入`不推荐使用`分类 [Chg]UI`[AI]`分类已经并入`[系统]`分类 [Chg]调整逆天UI显示文本 [Chg]调整创建单位和点相关的UI显示文件以及位置 [Fix]修正Lua引擎slk库get_id函数丢失的问题 这是1.32的第一个稳定版本。1.32的主要更新有 1. 支持新的地图格式,Lni地图 2. 支持打开未知的UI的地图(但无法正确保存) 3. 支持测试地图前,自动slk优化 4. 物编生成自动刷新,不再需要重启 5. 游戏数据支持“最新”的选项(实际效果为1.28.5的数据版本) 6. 移除了CJass编译器 7. 大量的细节优化以及Bug修复 此外,这是1.33可能会加入的功能,欢迎提供建议 https://tieba.baidu.com/p/5755531781 https://tieba.baidu.com/p/5757403444 https://tieba.baidu.com/p/5627292822
自动排泄 考虑这样的代码,目前转为Jass是 call CreateNUnitsAtLoc(1, 'hfoo', Player(0), GetRectCenter(GetPlayableMapRect()), AngleBetweenPoints(GetUnitLoc(GetTriggerUnit()), GetOrderPointLoc())) 以后会变成 function AngleBetweenPoints_0LL takes location locA, location locB returns real local real r = AngleBetweenPoints(locA, locB) call RemoveLocation(locA) call RemoveLocation(locB) return r endfunction function CreateNUnitsAtLoc_V000L0 takes integer count, integer unitId, player whichPlayer, location loc, real face returns nothing call CreateNUnitsAtLoc(count, unitId, whichPlayer, loc, face) call RemoveLocation(loc) endfunction call CreateNUnitsAtLoc_V000L0(1, 'hfoo', Player(0), GetRectCenter(GetPlayableMapRect()), AngleBetweenPoints_0LL(GetUnitLoc(GetTriggerUnit()), GetOrderPointLoc()))
画个饼。暂定的方案,按英萌的运动器接口实现。欢迎提供建议以及想法。
ydwe 1.32.7 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fpan.baidu.com%2Fs%2F1zTobyXTfriycoByPEgjOqQ&urlrefer=c08f61acd26a1197c66f5c467b83c8be [New]重写UI`创建永久性尸体`的实现 [New]新的致谢GUI [Chg]优化泄漏检测报告的输出内容 [Chg]Lua引擎runtime库的version现在是ydwe版本的字符串 [Fix]修正w3m和w3n文件无法保存的问题 [Fix]修正某些情况下无法打包地图的问题 [Fix]修正slk库读取空值会提示读取错误数据的BUG [Fix]修正物编读写有运行期错误时会影响下一次保存到问题 [Fix]修正UI`等待条件成立`生成的代码不对的问题 [Fix]修正启动局域网测试时有死循环的问题 [Fix]修正局域网测试时,名字有空格或者|导致无法加入游戏的问题
改进编辑器? 最近一年blz也好,网易也好,多次提到了改进编辑器这个字眼。而实际上呢?blz加了若干新api,提高了若干东西的上限;网易也加了若干新api。然后就这么多了。固然这些改动拿来吹牛忽悠普通人还挺有用的。 不过我想说的是,we有成吨的bug,一个都没改,单ydwe就改了非常多的bug,还有些是我知道但不好改的。那些说ydwe是插件合集的人,你们懂we吗? 最近做了个英文版的w2l,为了给原版we用,做了非常多的额外工作。因为之前w2l的目标we都是ydwe,而原版we有大量的bug,需要w2l能适配这些bug。 我也不知道blz是没能力改了呢(或者是没能力知道),还是现在的开发被运营指导,只做有噱头的功能。网易就算了,网易别说懂we的人了,就连懂war3的人估计都没有。 要我说,要ydwe支持129还不如去让blz来抄ydwe。
坑爹的“创建永久性尸体” 这个UI的背后是BJ函数CreatePermanentCorpseLocBJ,尽管YDWE有替换有泄漏BJ函数的功能,但却无法对它生效。因为这个函数本身没有泄漏,但这个函数会开启一个计时器,泄漏在计时器函数的内部。而这个计时器的初始化又在InitBlizzard里。所以看起来改起来相当的麻烦。 另外,有谁能讲解下这个函数有什么功能?我没看懂blz为啥把这个函数写得这么复杂,难道是因为blz不会用逆天变量的原因?
YDWE泄漏检测 在适当的地方添加这一行即可,call GetLocalizedHotkey("yd_leak_monitor::create_report")。或者你可以看YDWE附带的演示。 所谓的泄漏检测,实际上只是告诉你当前存活的handle有哪些,有些可能是正常的handle,有些则是真的泄漏了,这需要你自行分辨。 我只做了6种handle的检测,大多数的临时handle都是这6种类型,应该够用了。包括点(location),特效(effect),单位组(group),不规则区域(region),矩形区域(rect),玩家组(force)。 生成的报告如下: 引用:一个handle引用数为0就会被释放,换句话说handle之所以没被释放就是因为引用数不为0。一般来说每存放在一个全局变量、局部变量中引用就会+1,局部变量最后没有set null会导致引用永久+1(大多数泄漏的来源),还有各种魔兽坑爹的潜规则。 创建位置:只有上述6种handle会有创建位置,方便你定位泄漏的根源。 类型:这个是魔兽内部的类型名,我没转换为jass里对应的类型名。 handle:和GetHandleId获得的值一致 引用它的全局变量:一般来说被全局变量引用的handle我们不认为它是泄漏。 --------------------------------------- 泄漏检测详细报告 --------------------------------------- 点(location): 0 特效(effect): 0 单位组(group): 3 不规则区域(region): 0 矩形区域(rect): 2 玩家组(force): 17 --------------------------------------- 当前handle总数:93 --------------------------------------- handle: 0x00100001 引用: 1 类型: +tmr 引用它的全局变量: | bj_volumeGroupsTimer handle: 0x00100002 引用: 1 类型: +tmr 引用它的全局变量: | bj_queuedExecTimeoutTimer handle: 0x00100003 引用: 1 类型: +grp 创建位置: <init>, 1912 引用它的全局变量: | bj_suspendDecayFleshGroup handle: 0x00100004 引用: 1 类型: +grp 创建位置: <init>, 1915 引用它的全局变量: | bj_suspendDecayBoneGroup handle: 0x00100005 引用: 1 类型: +tmr 引用它的全局变量: | bj_delayedSuspendDecayTimer handle: 0x00100006 引用: 1 类型: +grp 创建位置: <init>, 1950 引用它的全局变量: | bj_lastCreatedGroup handle: 0x00100007 引用: 1 类型: +tmr 引用它的全局变量: | bj_lastStartedTimer handle: 0x00100008 引用: 5 类型: +ply handle: 0x00100009 引用: 2 类型: +snd 引用它的全局变量: | bj_dayAmbientSound handle: 0x0010000A 引用: 2 类型: +snd 引用它的全局变量: | bj_nightAmbientSound handle: 0x0010000B 引用: 2 类型: +ply handle: 0x0010000C 引用: 1 类型: +ply handle: 0x0010000D 引用: 1 类型: +ply handle: 0x0010000E 引用: 1 类型: +ply handle: 0x0010000F 引用: 1 类型: +ply handle: 0x00100010 引用: 1 类型: +ply handle: 0x00100011 引用: 1 类型: +ply handle: 0x00100012 引用: 1 类型: +ply handle: 0x00100013 引用: 1 类型: +ply handle: 0x00100014 引用: 1 类型: +ply handle: 0x00100015 引用: 1 类型: +ply handle: 0x00100016 引用: 1 类型: +ply handle: 0x00100017 引用: 2 类型: +ply handle: 0x00100018 引用: 2 类型: +flt 引用它的全局变量: | filterIssueHauntOrderAtLocBJ handle: 0x00100019 引用: 2 类型: +flt 引用它的全局变量: | filterEnumDestructablesInCircleBJ handle: 0x0010001A 引用: 2 类型: +flt 引用它的全局变量: | filterGetUnitsInRectOfPlayer handle: 0x0010001B 引用: 2 类型: +flt 引用它的全局变量: | filterGetUnitsOfTypeIdAll handle: 0x0010001C 引用: 2 类型: +flt 引用它的全局变量: | filterGetUnitsOfPlayerAndTypeId handle: 0x0010001D 引用: 2 类型: +flt 引用它的全局变量: | filterMeleeTrainedUnitIsHeroBJ handle: 0x0010001E 引用: 2 类型: +flt 引用它的全局变量: | filterLivingPlayerUnitsOfTypeId handle: 0x0010001F 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[0] handle: 0x00100020 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[1] handle: 0x00100021 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[2] handle: 0x00100022 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[3] handle: 0x00100023 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[4] handle: 0x00100024 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[5] handle: 0x00100025 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[6] handle: 0x00100026 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[7] handle: 0x00100027 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[8] handle: 0x00100028 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[9] handle: 0x00100029 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[10] handle: 0x0010002A 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[11] handle: 0x0010002B 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[12] handle: 0x0010002C 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[13] handle: 0x0010002D 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[14] handle: 0x0010002E 引用: 1 类型: +ply handle: 0x0010002F 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 43 引用它的全局变量: | bj_FORCE_PLAYER[15] handle: 0x00100030 引用: 1 类型: +ply handle: 0x00100031 引用: 2 类型: +frc 创建位置: InitBlizzardGlobals, 62 引用它的全局变量: | bj_FORCE_ALL_PLAYERS handle: 0x00100032 引用: 2 类型: +snd 引用它的全局变量: | bj_rescueSound handle: 0x00100033 引用: 2 类型: +snd 引用它的全局变量: | bj_questDiscoveredSound handle: 0x00100034 引用: 2 类型: +snd 引用它的全局变量: | bj_questUpdatedSound handle: 0x00100035 引用: 2 类型: +snd 引用它的全局变量: | bj_questCompletedSound handle: 0x00100036 引用: 2 类型: +snd 引用它的全局变量: | bj_questFailedSound handle: 0x00100037 引用: 2 类型: +snd 引用它的全局变量: | bj_questHintSound handle: 0x00100038 引用: 2 类型: +snd 引用它的全局变量: | bj_questSecretSound handle: 0x00100039 引用: 2 类型: +snd 引用它的全局变量: | bj_questItemAcquiredSound handle: 0x0010003A 引用: 2 类型: +snd 引用它的全局变量: | bj_questWarningSound handle: 0x0010003B 引用: 2 类型: +snd 引用它的全局变量: | bj_victoryDialogSound handle: 0x0010003C 引用: 2 类型: +snd 引用它的全局变量: | bj_defeatDialogSound handle: 0x0010003D 引用: 2 类型: +trg 引用它的全局变量: | bj_delayedSuspendDecayTrig handle: 0x0010003E 引用: 1 类型: tmet handle: 0x0010003F 引用: 1 类型: +tac handle: 0x00100040 引用: 2 类型: +trg 引用它的全局变量: | bj_queuedExecTimeout handle: 0x00100041 引用: 1 类型: tmet handle: 0x00100042 引用: 1 类型: +tac handle: 0x00100043 引用: 2 类型: +snd 引用它的全局变量: | bj_dawnSound handle: 0x00100044 引用: 2 类型: +snd 引用它的全局变量: | bj_duskSound handle: 0x00100045 引用: 2 类型: +trg 引用它的全局变量: | bj_dncSoundsDawn handle: 0x00100046 引用: 1 类型: gfvt handle: 0x00100047 引用: 1 类型: +tac handle: 0x00100048 引用: 2 类型: +trg 引用它的全局变量: | bj_dncSoundsDusk handle: 0x00100049 引用: 1 类型: gfvt handle: 0x0010004A 引用: 1 类型: +tac handle: 0x0010004B 引用: 2 类型: +trg 引用它的全局变量: | bj_dncSoundsDay handle: 0x0010004C 引用: 1 类型: gfvt handle: 0x0010004D 引用: 1 类型: gfvt handle: 0x0010004E 引用: 1 类型: +tac handle: 0x0010004F 引用: 2 类型: +trg 引用它的全局变量: | bj_dncSoundsNight handle: 0x00100050 引用: 1 类型: gfvt handle: 0x00100051 引用: 1 类型: gfvt handle: 0x00100052 引用: 1 类型: +tac handle: 0x00100053 引用: 2 类型: +rct 创建位置: InitMapRects, 33 引用它的全局变量: | bj_mapInitialPlayableArea handle: 0x00100054 引用: 2 类型: +rct 创建位置: GetCurrentCameraBoundsMapRectBJ, 9 引用它的全局变量: | bj_mapInitialCameraBounds handle: 0x00100055 引用: 2 类型: +tmr 引用它的全局变量: | bj_stockUpdateTimer handle: 0x00100056 引用: 2 类型: +trg 引用它的全局变量: | bj_stockItemPurchased handle: 0x00100057 引用: 1 类型: pevt handle: 0x00100058 引用: 1 类型: +tac handle: 0x00100059 引用: 1 引用它的全局变量: | bj_gameStartedTimer handle: 0x0010005A 引用: 5 类型: +trg 引用它的全局变量: | gg_trg_____________u handle: 0x0010005B 引用: 4 类型: pevt handle: 0x0010005C 引用: 1 类型: +tac handle: 0x0010005D 引用: 4 类型: pecd
网易水军三板斧 你不支持1.29 你应该维持无偿更新YDWE的形象 你接手后YDWE后什么都没做,YDWE应该是XXX的 就算全对,但这也不是你们盗用YDWE的理由吧??
看了最新一集 我的英雄学院 我感觉我现在就和欧尔麦特一样。救人、打坏蛋、维持形象,每个都得做。还是做AFO比较简单。
YDWE三年回顾 正好是1.29~1.32四个版本。 [New] Lua引擎,新增键盘鼠标消息库 [New] Lua引擎,新增发布本地命令库 [New] Lua引擎,新增大数库 [New] Lua引擎,新增日志库 [New] Lua引擎,新增jass.debug库 [New] Lua引擎,新增jass.ai库,包含了所有的native ai函数(但不保证一定可用,就如在jass里一样) [New] Lua引擎,jass.debug库新增函数current_pos,可以获取当前Jass的运行的位置 [New] Lua引擎,jass.hook库现在可以访问到hook函数 [New] Lua引擎,jass.slk库增加misc表 [New] Lua引擎,jass.slk库重写,修正了大量的错误并且现在能返回正确的类型。 [New] Lua引擎,jass.japi库,新增添加japi函数的功能。 [New] Lua引擎,支持技能的鼠标事件 [New] Lua引擎,支持读取技能按钮数据 [New] Lua引擎,支持中文路径 [New] Lua引擎,从5.2.1升级到5.3.4 [New] Lua引擎,现在支持使用vscode进行调试 [New] Lua引擎,现在会默认加载入口文件script/war3map.lua,当使用新的加载方式时,旧的加载方式(使用Cheat)将不可用。 [New] Lua引擎,支持在config里使用 [New] Lua引擎,支持utf8库和io库的部分函数 [New] Lua引擎,部分标准库api支持,package.searchers/package.preload/package.searchpath。 [New] Lua引擎,增加handle的引用api [New] Lua引擎,现在支持支持任意table和userdata的排序次序(不再是随机) [New] 新增Japi读写Buff数据 [New] 新增Japi读写Item数据 [New] 新的Japi,图标融合 [New] 新的Japi,单位晕眩 [New] 新的Japi,单位变身 [New] Japi支持读写开关技能的图标 [New] Japi现在可以自动帮你计算暗图标 [New] 读写物品字符串支持提示和说明。 [New] 支持打开和保存为Lni地图 [New] 支持打开未知的UI的地图(但无法正确保存)。 [New] 测试地图时,支持自动将地图slk化 [New] 局域网测试增加多人模式 [New] 局域网测试支持 [New] 去掉地图大小限制 [New] 新增自动适应当前分辨率的选项(和固定窗口比例互斥) [New] 全新的pjass语法检查器,支持更多的语法错误检查。 [New] 重写了`新建物体指定ID`的UI [New] 新增智能施法演示 [New] 编译地图现在总是使用w3x2lni来打包地图 [New] 物编读取重写,并增加物编写入功能 [New] 使用stormlib替换JassHelper中sfmpq,提高读写地图的成功率 [New] 补丁包支持加载storm.dll [New] UI文件内置多语言的支持。 [New] 新的逆天UI,运行触发器 [New] 新的逆天UI,局部变量数组 [New] 新的逆天UI,收纳盒 [New] 新的UI,'发布中介命令'现在支持用技能ID来发布命令 [New] 新的UI,现在命令ID可以转换为无目标、单位目标、点目标命令等 [New] 新的UI,增加了一个昏迷的命令ID [New] 新的UI,'算术运算Lv3'和'连接字符串 Lv3' [New] 新增jass.debug的演示 [New] 新增创建计时器窗口的UI [New] 新增11平台的RPG积分UI [New] 新增11平台的RPG计费UI [New] 重写逆天UI的生成代码,现在局部变量和其他数据在不同的数据表中 [New] 替换了WE读取物编数据的流程,以解决War3和WE读取物编数据的不一致行为 [New] 第一次启动时会默认关闭刷子表和不创建新地图 [New] 自动转换不正确的物编数据类型 [New] "能提高护甲的物品"的防御奖励的类型从整数改为实数 [New] 增加了五个隐藏buff在编辑器的显示,分别是Bsta、Bdbb、BIpb、BIpd、Btlf [New] UTF8编码的中文路径文件不再会在保存后被丢弃 [New] 物品分类增加一个“混杂*真”,以解决原版WE“混杂”分类有错误的bug
11平台即将成为YDWE的赞助商 没有排他性的要求,只是给他们一些技术支持和加个鸣谢。 不过我会继续dis网易,只是和11赞助无关。
ydwe 1.32.6 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fpan.baidu.com%2Fs%2F1xo0-OpZ1v-YfxR46MkV_Ww&urlrefer=03c5056556037d0c9342a04101b11b34 [New]编译地图现在总是使用w3x2lni来打包地图 [New]现在会检测不支持的魔兽版本 [Chg]UI 简化if-then的显示文本 [Chg]UI 收纳盒现在会生成正确的注释 [Chg]移除配置中的兼容模式编译地图(总是被启用) [Chg]移除了CJass编译器 [Fix]修正include路径计算错误的问题 [Fix]修正几个代码生成的错误 [Fix]修正Lni地图无法测试的问题 [Fix]修正Lni地图不支持tga文件的问题
新企划 新的编译为Jass的语言 没什么别的意思就是做来玩玩而已,目前只是简单的构思阶段,做不做甚至都还不确定。以下是目前构思的特性 1. 类Lua语法。因为Lua比较熟悉,虽然也有部分语法不喜欢,但大部分都还行。 -- if if a == 1 then end -- loop for i = 1, 3 do end while a == 1 do end 2. 静态类型。因为Jass本身就是静态类型的。语法为 local x:int = 1 local y:string = "2" local z:string = 3.0 -- 语法错误 function foo(a:int, b:int):string return I2S(a + b) end 3. 类型推导。在类型可以推断出来的地方,类型定义可以省略,例如下面都是合法的语法。 local x = 1 -- x的类型是int local y = "2" -- y的类型是string local z = 3.0 -- z的类型是float local w = y -- w的类型是string 4. 数组 local a:int[] for i = 1, 3 do a[i] = i end 5. 两种定义函数的方法。 function foo(a:int, b:int):string return I2S(a + b) end foo(a:int, b:int):string => return I2S(a + b) end 6. 匿名函数。 -- 由于类型推导,匿名函数定义里的类型都可以省略 TimerStart(t, 1.0, true, function() DoNothing() end) TimerStart(t, 1.0, true, () => DoNothing() end) 7. 类型继承。 typedef handle unit 8. 内置类型 int 等同于jass里的integer float 等同于jass里的real string 等同于jass里的string bool 等同于jass里的boolean void 等同于jass里的nothing 不可被继承 function 等同于jass里的code 不可被继承,类型需要指明参数和返回值的类型,例如 local foo:(int,int):int -- 语法错误 foo = (a:int):int => return a end foo = (a:int, b:int):int => return a + b end 9. 模块化 -- ModuleA文件 -- 局部变量模块外不可见 local a = 1 -- 使用export让模块外可见 export b = 2 -- ModuleB文件 local A = import 'ModuleA' local a = A.a -- 语法错误 local b = A.b 10. 对象 -- Calc文件 local a = 1 export b = 2 export function init(c:int):void b = a + c end -- Main文件 local Calc = class 'Calc' local a = Calc(10) 11. 函数重载 function add(a:int, b:int):int return a + b end function add(a:string, b:string):string return a + b end local x = add(1, 2) -- 3 local y = add("1", "2") -- "12"
ydwe 1.32.5 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fpan.baidu.com%2Fs%2F1zvF7ayd0qcG_rNaWqRm5LQ&urlrefer=b856a38608c0c55c6b492fafa5ce77f4 [New]支持打开和保存为Lni地图 [New]UTF8编码的中文路径文件不再会在保存后被丢弃 [New]优化部分生成的Jass代码 [Chg]逆天触发器/智能导入/预处理器不再会因为开启CJass而被禁用 [Chg]删除了`开启逆天触发器`的配置(总是开启,不能关闭) [Chg]物编读写现在会显示更多的错误信息 [Fix]修正中心计时器在1.20下无法保存的问题 [Fix]修正中心计时器有些函数没有智能导入的问题 [Fix]修正逆天数组变量的在逆天运行触发器使用无法保存的问题 [Fix]修正逆天变量的在逆天运行触发器某些特殊情形下生成的代码不对的问题 [Fix]修正Lua引擎日志库处理超长日志时会抛错误的问题
你现在是用什么工具/方法来制作载入图的? 很久不做图了,也很少见人讨论,所以特地来收集下。 我说说几年前做英萌时,我用的方法。当时应该很多人是用“离不开电脑”做的载入图制作工具。但这个工具生成的载入图分辨率太低只有1024*768. 所以后来我手动裁剪载入图和转换blp,只用“离不开电脑”工具生成的mdx,也就是把工具自动生成的4张图的分辨率从512*512,512*256改成1024*1024,1024*512,这样就将分辨率提高到了2048*1536. 不过实际上使用的分辨率一般时1920*1080,所以2048*1536浪费了很多,且每次手动裁剪4张图还是挺累的。所以后来我把mdx也重新做了一个,只有两张1024*1024拼起来。这样分辨率是2048*1024,在1080p下的效果还算可以。 这就是我在英萌中使用的方法,不过我好像没看到有工具做这样的事情。
在YDWE中移除cjass支持? 我不知道有多少人在用这坑爹玩意,cjass在ydwe一直是强烈不推荐的功能,之所以还有它只是历史遗漏问题。cjass的问题有: 1.和YDWE的预处理器冲突 2.YDWE的逆天触发需要依赖预处理器,所以也和逆天触发冲突 3.YDWE的智能导入需要依赖预处理器,所以也和智能导入冲突 4.cjass的代码质量很差bug很多,且早已不再维护。即使在蜂巢这种很多都是使用脚本的论坛,cjass也是禁止讨论的,因为cjass实在太烂了。 由于cjass和逆天冲突,所以在ydwe中逆天一直是以插件的形式存在的,因为需要在激活cjass时,禁用逆天的所有功能。这严重影响了逆天的开发,这也是我为什么想移除cjass的原因。 所以我计划分两步移除,第一步逆天和智能导入不再会因为激活cjass而关闭,这会导致如果你使用了cjass可能有会些问题,这时你仍然可以通过修过有冲突语法来继续使用。第二步将会彻底从ydwe中移除cjass。
1
下一页