找回密码
 点一下
查看: 4042|回复: 23

怎样把你的技能变成无泄漏、无BUG的好技能的几个小技巧

  [复制链接]
发表于 2008-8-25 14:03:46 | 显示全部楼层 |阅读模式
恩恩,最近做了个Super技能,发现有些技能的难度真的比系统还要难。
总结了几个小技巧,跟大家分享一下。
一.【无Handle泄漏】:
不会JASS的:
首先,在你使用触发器的功能时,多留意框下面的介绍,如果有这样的字样:
PIC1.JPG
就请先声明一个全局变量,类型就是“会创建XX。”的“XX。”
然后使用【设置变量】
PIC2.JPG
来储存他。
到了你认为可以了的时候,就用:
PIC3.JPG
诸如此类的功能清除它。
(Red_Wolf的触发器补丁(或被称作UI)才会有下方的提示,请在论坛的工具区下载一个)

会JASS的(是指可以使用ReturnBug+GameCache的):
1.不管是什么Handle全都清空。
2.绝对要记得
[codes=jass]FlushStoredMission
FlushStoredBoolean
FlushStoredInteger
FlushStoredReal
FlushStoredString
FlushStoredUnit[/codes]
这几个函数,并使用它们。
3.不要使用Loop+"Integer"+I2S(i)来储存数据,尽量使用Group或其他的,否则会有String泄漏。

二.【无BUG】:
不会JASS的:
多试,并更改错误,想尽一切的办法阻止BUG的发生,就足够了。
(做到这一点,你在触发器上的技巧就圆满了,学习JASS吧,要不然你将停滞不前,毕竟触发器的功能还是很有限制性的)

会JASS的:
绝对要把数据绑定在每一次释放技能时就创建的Handle上。
而绝对不是释放单位或目标单位(马甲单位可绑定)
比如:
[codes=jass]
function A takes unit Spell_unit returns nothing
local timer ti = CreateTimer()
call StoreInteger(udg_GC,I2S(H2I(ti)),“TheUnit”,H2I(Spell_unit))
上面为正确
call StoreInteger(udg_GC,I2S(H2I(Spell_unit)),“TheTimer”,H2I(ti))
上面为错误!!!
endfunction
[/codes]
如果你认为绑定在释放单位和目标单位的数据不会有BUG,那你就错了!
绑定数据到释放单位和目标单位身上,那就是99.9%有BUG。
举个例子,你技能的函数在目标单位身上绑定了一个数据(假设为释放技能的等级),15秒以后清空,这其中每过1秒,就需要这个数据进行单位的伤害计算。如果绑定了这个数据之后,7.5秒后(假设)另外一个单位对同一个目标单位使用了同一个技能,那么再一次在目标单位身上绑定了一个数据(假设还是为释放技能的等级),而且Store的String路径也是一样的,那么后来绑定的数据就覆盖了之前的数据。那么假设之前的数据为1,后来绑定的数据为100,对单位的伤害是技能等级*20 。那么按照你的本意,单位获得的总伤害应该是1(之前绑定的数据)*20+100(后来绑定的数据)*20=2020 。但是事实是怎样的呢?100(实际读取的数据)*20+100(实际读取的数据)*20=4000。这只是举个例子,其实问题要多很多,就算是你认为绑定到释放单位或目标单位非常安全,但请谨记这句话:
绑定数据到释放单位和目标单位身上,那就是99.9%有BUG。
当然马甲单位因为是每释放一次技能就创建一次,所以绑定到他们身上无所谓。

剩下的就是一些特殊函数的特殊情况(比如SetUnitX+SetUnitY)、和你技能的所需了。

好了先说这么多,其实编 好 技能很苦的,在我们GA院的技能区里,很少有极为复杂而没有BUG的技能,出现的比例大约是10个技能才出现1个好技能。
所以说大家都很辛苦啊~~~~~
(包括我……………………居然写了2500字……………………简直就是把假期作文全部重写一遍啊!!!!)

评分

参与人数 1威望 +27 收起 理由
天凌逸涉 + 27

查看全部评分

发表于 2008-8-25 14:12:25 | 显示全部楼层
绑定数据的话
要看具体情况的
绑定到单位的情况一般是持续效果的技能
比如 你要做个持续加血 但是效果不能重叠 的话
就需要邦定到单位
因为第二次使用技能的时候 你可以用这个来获取邦定信息

并不是lz说的这么绝对的
写法思路还是比较灵活的
不要 说这么多能或者不能
回复

使用道具 举报

 楼主| 发表于 2008-8-25 14:16:58 | 显示全部楼层
(被自己忍无可忍的和谐掉了)
回复

使用道具 举报

发表于 2008-8-25 14:22:30 | 显示全部楼层
说说观点罢了
LZ 上半篇关于T的
对于新人还是很好的
回复

使用道具 举报

发表于 2008-8-25 14:28:28 | 显示全部楼层
话说LZ最近很积极啊
论坛的教学和开发板块技能都是你霸了
回复

使用道具 举报

 楼主| 发表于 2008-8-25 14:38:43 | 显示全部楼层
(被自己忍无可忍的和谐掉了)
回复

使用道具 举报

发表于 2008-8-25 14:39:46 | 显示全部楼层
绑定数据还是很有效的
出现BUG是人为问题,跟绑定数据无关吧
回复

使用道具 举报

发表于 2008-8-25 14:40:12 | 显示全部楼层
我认为楼主很多时候都是把简单为题复杂化了~~~~
回复

使用道具 举报

发表于 2008-8-25 14:40:52 | 显示全部楼层
虽然楼主很复杂
不过还是有一定借鉴意义的
回复

使用道具 举报

发表于 2008-8-25 14:42:55 | 显示全部楼层
楼主说「技能区的技能十个只有一个好技能」,那依楼主之见,怎么样的技能才是好技能呢?
回复

使用道具 举报

发表于 2008-8-25 14:44:32 | 显示全部楼层
反正现在的技能很多
做图时直接COPY才是王道
适合地图的技能都是好技能
回复

使用道具 举报

发表于 2008-8-25 14:59:09 | 显示全部楼层
lz找时间发个。
回复

使用道具 举报

 楼主| 发表于 2008-8-25 15:29:06 | 显示全部楼层
(被自己忍无可忍的和谐掉了)
回复

使用道具 举报

 楼主| 发表于 2008-8-25 15:30:09 | 显示全部楼层
(被自己忍无可忍的和谐掉了)
回复

使用道具 举报

发表于 2008-8-25 17:51:51 | 显示全部楼层
好吧,大家说得都挺有道理的
学习了
回复

使用道具 举报

发表于 2008-8-25 18:06:25 | 显示全部楼层
......

T才是王道...


弱弱的吼叫...
回复

使用道具 举报

发表于 2008-8-25 20:18:39 | 显示全部楼层
楼主在13楼的举例我很赞同.你所发表的观点我也不反对.
在技能区,大部分是纯T的技能,每个发贴者的「实力」都不同,不说纯T编写的逻辑性,代码方面的熟练也不一定能同长老级人物相比,能做到大部分排泄,BUG减到最少已经很好了.对我自己而言:这里的每一个技能的发布,我看到的只有发贴者的灵感或创意,而没有好坏的分别.
BUG无所不在,只有尽量减少.纯T没有绝对无BUG的存在,也没有绝对的无泄漏.
以上为只用纯T的WEer而讲.
回复

使用道具 举报

发表于 2008-8-25 21:13:43 | 显示全部楼层
楼主是好人,楼主很有心,沉默支持你.

〔因为读起来很连贯所以就打出来了. 见怪不怪会习惯的.〕
回复

使用道具 举报

 楼主| 发表于 2008-8-28 13:53:48 | 显示全部楼层
(被自己忍无可忍的和谐掉了)
回复

使用道具 举报

发表于 2008-8-28 14:04:12 | 显示全部楼层
该顶的帖子。。

写出来就好,楼主很热心。

人和人的水平不一,简单复杂是相对的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 01:59 , Processed in 0.237431 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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