|

楼主 |
发表于 2013-3-4 22:16:26
|
显示全部楼层
嘛,咱是不会放弃的,只是不希望被抛弃.....
想我花了整个高二在研究魔兽的作图,jass编程语言学了好久....后来给我同桌做了个英雄感觉很有趣(带我进入东方的某东方众),还记得当时做的是个妖梦..而且自认为做的很完美,其中用到了不少研究超过星期才发现的东西,比如暴击无视护甲(先造成1伤害,通过接受伤害事件获得实际伤害,比如0.34,然后通过这个伤害比还原输出的伤害.....再造成神圣伤害....很麻烦....),比如传染(以1单位为中心获取其范围内的所有单位,然后每个被传染到的继续传染.....这个函数花了我6个小时不断测试,当时看的满屏幕的代码头都大了)。
高三没那么多时间挥霍在这里了,于是只好找平时玩的开心的三国杀开刀,结果发现.....看来每一门都不能应付啊
...刚刚找出来当时传染的代码
//============================================================传染
function CR_action takes nothing returns nothing
local integer p = GetHandleId(GetExpiredTimer())
local unit u = LoadUnitHandle(XL_hash,p,1)
call YDWEGeneralBounsSystemUnitSetBonus( u, 2, 2, 0 )
call DestroyTimer(GetExpiredTimer())
call FlushChildHashtable(XL_hash,p)
set u = null
endfunction
function CR takes unit u returns nothing
local location l = GetUnitLoc(u)
local group g = CreateGroup()
local group a = GetUnitsInRangeOfLocAll(200.00, l)
local group f = CreateGroup()
local group s = CreateGroup()
local unit w
local real h
local timer t
local integer p
local integer j
if GetUnitAbilityLevel(u, 'A00Q') != 0 then
set h = GJQD(u) * (0.3 + 0.1 * GetPlayerState(GetOwningPlayer(u), PLAYER_STATE_RESOURCE_LUMBER) )
else
set h = GJQD(u) * 0.3
endif
call RemoveLocation(l)
loop
set w = FirstOfGroup(a)
exitwhen w == null
if Teki(w,u) == true and IsUnitInGroup(w,f) == false then
call GroupAddUnit(s,w)
set l = GetUnitLoc(w)
set g = GetUnitsInRangeOfLocAll(200.00, l)
call RemoveLocation(l)
loop
set w = FirstOfGroup(g)
exitwhen w == null
if Teki(w,u)==true and IsUnitInGroup(w,f) == false and IsUnitInGroup(w,s) == false then
call GroupAddUnit(a,w)
call GroupAddUnit(s,w)
else
call GroupAddUnit(f,w)
endif
call GroupRemoveUnit( g, w )
endloop
else
call GroupAddUnit(f,w)
endif
call GroupRemoveUnit(a,w)
endloop
call DestroyGroup(g)
call DestroyGroup(f)
call DestroyGroup(a)
loop
set w = FirstOfGroup(s)
exitwhen w == null
if GetUnitAbilityLevel(u, 'A00O') != 0 then
set j = R2I(YDWEGetUnitArmor(w, 'A00E'))
set t = CreateTimer()
set p = GetHandleId(t)
call TimerStart(t,1.5,true,function CR_action)
call SaveUnitHandle(XL_hash,p,1,w)
call YDWEGeneralBounsSystemUnitSetBonus( w, 2, 2, -j )
endif
call WLSH(u,w,h,false)
call GroupRemoveUnit( s, w )
endloop
set l = null
set g = null
set a = null
set f = null
set s = null
set w = null
set t = null
endfunction |
|