找回密码
 点一下
查看: 918|回复: 7

我在别人的J演示里,发现了以下东东.不知何谓.

[复制链接]
发表于 2008-7-31 17:09:46 | 显示全部楼层 |阅读模式
我正在企图做1个英雄复活系统.但我发现其他人写的东西不大一样,在某某里面发现.
//call TriggerRegisterAnyUnitEventBJ(I2TR(t),EVENT_PLAYER_UNIT_SPELL_CAST)中的EVENT_PLAYER_UNIT_SPELL_CAST这句子是什么意思?在J培训班的电子书里没有找到是什么意思.

//call StoreInteger(udg_GG,"revive",I2S(h2i(t)),h2i(u))此句子是什么虾米?

function i2l takes integer i returns location
return i
return null
endfunction

为什么要存点?我在那个演示里找不到(清除点)的代码.难道是用坐标点了?貌似坐标点很神奇的样子,那干嘛我在某某J跳跃演示里发现有(清除点)的代码喽?用坐标点起不更好?
发表于 2008-7-31 17:22:13 | 显示全部楼层
问题1  玩家单位开始施放技能事件


问题2 找篇 gamecache和retrun bug的jass教程来看看就知道了,说起来内容挺多的

问题3 可能写那个代码的人没清点,可能压根没创建有点,又或可能你没看清楚,没看过代码,我也不知道
回复

使用道具 举报

 楼主| 发表于 2008-7-31 17:37:50 | 显示全部楼层
function h2i takes handle h returns integer
return h
return 0
endfunction

function i2u takes integer i returns unit
return i
return null
endfunction

function i2l takes integer i returns location
return i
return null
endfunction

function i2td takes integer i returns timerdialog
return i
return null
endfunction
//复活
function re takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local unit u = i2u(GetStoredInteger(udg_GG,"revive",I2S(h2i(t))))
    if IsPlayerAlly(GetOwningPlayer(u), Player(5)) then
call ReviveHero(u,-813.5,-2079.4,true) //这个是玩家6的盟友,玩家5索引必须减掉1,玩家1红色,就是0,玩家6的盟友英雄复活在-813.5 -2079.4
else
call ReviveHero(u,-813.5,-2079.4,true) //这个是玩家12的盟友,玩家12的盟友英雄复活在-813.5 -2079.4
endif
    call DestroyTimerDialog(i2td(GetStoredInteger(udg_GG,"td",I2S(h2i(t)))))
    call FlushStoredInteger(udg_GG,"revive",I2S(h2i(t)))
    call FlushStoredInteger(udg_GG,"td",I2S(h2i(t)))
    call DestroyTimer(t)
    set t = null
    set u = null
endfunction

下面是触发器函数
事件:任意单位死亡
条件:(触发单位)是(英雄)=TUER
动作:
local unit u = GetTriggerUnit()
local timer t = CreateTimer()
local real r = (4*I2R(GetUnitLevel(u)))
local timerdialog td = CreateTimerDialogBJ( t, GetUnitName(u) )
call StoreInteger(udg_GG,"revive",I2S(h2i(t)),h2i(u))
call StoreInteger(udg_GG,"td",I2S(h2i(t)),h2i(td))
call TimerStart(t,r,false,function re)
set u = null
set t = null
回复

使用道具 举报

发表于 2008-7-31 17:43:38 | 显示全部楼层
这个代码和点根本没扯上关系,当然就没清除点了


我觉得这样写比较好

[codes=jass]
call StoreInteger(udg_GG,I2S(h2i(t)),"td",h2i(td))
[/codes]

这样清除时一个函数就可以了,还不会漏清理了某个东西
回复

使用道具 举报

 楼主| 发表于 2008-7-31 18:04:26 | 显示全部楼层
引用第3楼actboy168于2008-07-31 17:43发表的  :
这个代码和点根本没扯上关系,当然就没清除点了


我觉得这样写比较好

.......




function i2l takes integer i returns location
return i
return null
endfunction
和点没扯上关系?location是点的意思喔,我在J教程里看到的.那上面此东西不就是废的?
回复

使用道具 举报

发表于 2008-7-31 18:08:07 | 显示全部楼层
用J的话 不推荐用点..这个变量类型
第一 是效率问题
传递的时候
要转换...
用的时候..最后其实也是转换成坐标
第二
点的话...还要自己清除

这个很多次一举

所以用坐标最好
因为real不用自己清楚
直接用坐标效率也比点高
回复

使用道具 举报

发表于 2008-7-31 18:08:36 | 显示全部楼层
你把这个函数删掉,你的代码依然能运行  
回复

使用道具 举报

发表于 2008-8-2 09:15:25 | 显示全部楼层
有几个地方必须用点的。。。
获取技能施放点,获取某点的Z坐标,获取单位的集结点
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-21 02:37 , Processed in 0.034039 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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