找回密码
 点一下
查看: 4520|回复: 12

合金弹头的僵尸喷血怎么做,有图,谢了

[复制链接]
发表于 2009-5-24 16:25:54 | 显示全部楼层 |阅读模式
我有个JASS版本的看不懂,哪个高手告诉我怎么做呀


好了,我终于弄成T的了
1.gif

僵尸喷吐.rar

20 KB, 下载次数: 135

这个是原版

僵尸喷吐〓『T』〓版.rar

39 KB, 下载次数: 612

成果啊

评分

参与人数 1威望 -15 收起 理由
hydralisk -15 收费

查看全部评分

 楼主| 发表于 2009-5-24 19:00:10 | 显示全部楼层
帮个忙都不行吗
回复

使用道具 举报

发表于 2009-5-24 19:23:05 | 显示全部楼层
哎。。还没人看。。
一会给你贴出来
回复

使用道具 举报

发表于 2009-5-24 19:37:02 | 显示全部楼层
先从最后一个函数开始解释,前面跟后面相同的省略
[jass]function H2I takes handle h returns integer
    return h
    return 0
endfunction
function H2S takes handle h returns string
    return I2S(H2I(h))
endfunction
function I2U takes integer i returns unit
    return i
    return null
endfunction
//Return Bug函数,不用说了

function jinengloop takes nothing returns nothing
local timer tt=GetExpiredTimer()
local real cx =GetStoredReal(udg_GC,H2S(tt),"cx")
local real cy=GetStoredReal(udg_GC,H2S(tt),"cy")
local real angle=GetStoredReal(udg_GC,H2S(tt),"angle")
local real x
local real y
local real z
local real dd=GetStoredReal(udg_GC,H2S(tt),"dd")//读取储存的信息
local unit array danwei
local real array x1
local real array y1
local real array z1
local real array z2
local integer i
    set x=dd*Cos(angle)+cx
    set y=dd*Sin(angle)+cy//取得一个新的坐标值,让每个单位都向前移动100,以下做跟jineng函数相同的事情
  if dd<800 then
    set dd=dd+50
    call StoreReal(udg_GC,H2S(tt),"dd",dd)
    call DestroyEffect( AddSpecialEffect("Abilities\\\\Spells\\\\Undead\\\\AnimateDead\\\\AnimateDeadTarget.mdl", x, y) )
   set i=1
   loop
   exitwhen i>50
     set x1=(x*i+cx*(50-i))/50
     set y1=(y*i+cy*(50-i))/50
     set z1=(60*(50-i))/50
    set danwei=I2U(GetStoredInteger(udg_GC,H2S(tt),"danwei"+I2S(i)))
    call SetUnitX(danwei,x1)
    call SetUnitY(danwei,y1)
    call SetUnitFlyHeight(danwei,z1,0)
    set i=i+1
    endloop
    else
        if dd<880 then
          set dd=dd+4
          call StoreReal(udg_GC,H2S(tt),"dd",dd)
          set i=1
          loop
            exitwhen i>50
             set z2=-(i-30)*(i-30)/2+450
             set z1=(80*(50-i))/50
             set i=i+1
          endloop
            set i=1
            loop
             exitwhen i>50
               set z=(z1*(880-dd)+z2*(dd-800))/80
               set danwei=I2U(GetStoredInteger(udg_GC,H2S(tt),"danwei"+I2S(i)))
               call SetUnitFlyHeight(danwei,z,0)
               set i=i+1
            endloop
        else
              call DestroyTimer(tt)
              call FlushStoredReal(udg_GC,H2S(tt),"anlge")
              call FlushStoredReal(udg_GC,H2S(tt),"cx")
              call FlushStoredReal(udg_GC,H2S(tt),"cy")
              call FlushStoredReal(udg_GC,H2S(tt),"dd")
              call FlushStoredInteger(udg_GC,H2S(tt),"int")
              set i=1
            loop
             exitwhen i>50
                set danwei=I2U(GetStoredInteger(udg_GC,H2S(tt),"danwei"+I2S(i)))
                call SetUnitTimeScale(danwei,5)
                call KillUnit(danwei)
                call FlushStoredInteger(udg_GC,H2S(tt),"danwei"+I2S(i))
                set i=i+1
            endloop
        endif
    endif
    //return
endfunction
//
function jineng takes nothing returns nothing
local unit u=GetTriggerUnit()
local timer tt=CreateTimer()
local real cx
local real cy
local real angle
local real x
local real y
local real dd=100
local unit array danwei
local real array x1
local real array y1
local real array z1
local integer i
  set cx=GetUnitX(u)
  set cy=GetUnitY(u)//坐标
  set angle=GetUnitFacing(u)
  set angle=angle*Atan(1)/45 //取得单位面向角度的弧度值
  set x=dd*Cos(angle)+cx
  set y=dd*Sin(angle)+cy//单位面向角度所在方向距离100的坐标
   set i=1
   loop
   exitwhen i>50
     set x1=(x*i+cx*(50-i))/50
     set y1=(y*i+cy*(50-i))/50//这个是将(cx,cy)和(x,y)分成51份,去分点坐标
     set z1=(60*(50-i))/50//抛物线高度...
    set danwei=CreateUnit(GetOwningPlayer(u),'e003',x1,y1,angle)//在每个分点创建一个单位
    call SetUnitFlyHeight(danwei,z1,0)//设置单位高度,让他们排成抛物线形状
    call SetUnitTimeScale(danwei,0.01)//让单位几乎静止
    call StoreInteger(udg_GC,H2S(tt),"danwei"+I2S(i),H2I(danwei))//GameCache储存单位
    set i=i+1
   endloop
   call StoreReal(udg_GC,H2S(tt),"angle",angle)
   call StoreReal(udg_GC,H2S(tt),"cx",cx)
   call StoreReal(udg_GC,H2S(tt),"cy",cy)
   call StoreReal(udg_GC,H2S(tt),"dd",dd)//储存信息
     //
    call TimerStart(tt,0.05,true,function jinengloop)//开启计时器,0.05秒周期做动作
    set u=null
    //return
endfunction[/jass]
修改了一下,这技能作者用了这么多的空行。。
在最后一个触发器中调用jineng()函数
回复

使用道具 举报

发表于 2009-5-24 19:49:34 | 显示全部楼层
截图的效果好2啊
回复

使用道具 举报

发表于 2009-5-24 19:57:54 | 显示全部楼层
LZ下次连代码一起发出来,关闭,打开,关闭,打开,浪费时间
回复

使用道具 举报

 楼主| 发表于 2009-5-24 20:05:12 | 显示全部楼层
强大啊谢谢了
回复

使用道具 举报

发表于 2009-5-24 22:38:01 | 显示全部楼层
技能效果很棒的说
回复

使用道具 举报

发表于 2009-5-24 22:43:24 | 显示全部楼层
卡机流
回复

使用道具 举报

 楼主| 发表于 2009-5-28 09:09:22 | 显示全部楼层
hydralisk你有没有搞错,我在这里发个提问帖都要扣分,你是不是对歧视我们新人,
回复

使用道具 举报

 楼主| 发表于 2009-5-28 09:10:02 | 显示全部楼层
尽管扣吧,我可不在乎
回复

使用道具 举报

发表于 2009-5-28 11:30:59 | 显示全部楼层
路过
说话注意点
回复

使用道具 举报

发表于 2009-5-28 11:53:37 | 显示全部楼层
被扣分,谁都会发牢骚
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-28 04:31 , Processed in 0.033074 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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