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

[Dota 技能] 波浪形态 Zinc练手版

[复制链接]
发表于 2011-12-15 07:12:20 | 显示全部楼层 |阅读模式
第一个Zinc技能 有点小激动
AAAA.gif
[jass]

//! zinc
library Shuiren requires TimerUtils{
    constant integer INT_DS = 40;   //距离
    constant integer TIME = 90;     //时间
    constant integer SPELL_ID = 'A000' ; //技能ID
    constant string EFFECT_STRING = "Objects\\Spawnmodels\\Naga\\NagaDeath\\NagaDeath.mdl" ;
   
    private struct Bolang
    {
        unit Hero;
        timer  t;
        real x,y,dx,dy;
        integer i;
        
         method destroy() {
            ReleaseTimer(this.t);
            this.t = null;
            this.Hero = null;
            this.deallocate();
        }
        
        private static method Timer() {
            real x,y,Ds;
            Bolang data = Bolang(GetTimerData(GetExpiredTimer()));
            x = GetUnitX(data.Hero)+data.x;
            y = GetUnitY(data.Hero)+data.y;
            Ds = SquareRoot((data.dx-GetUnitX(data.Hero))*(data.dx-GetUnitX(data.Hero))+(data.dy-GetUnitY(data.Hero))*(data.y-GetUnitY(data.Hero)));
            SetUnitX(data.Hero,x);
            SetUnitY(data.Hero,y);
            DestroyEffect(AddSpecialEffect(EFFECT_STRING,x,y));
            data.i -= 1;
            if(data.i<0||Ds<=20){
                SetUnitVertexColor( data.Hero, 255, 255, 255,255 );
                data.destroy();
            }
            
        }
        
        private static method create(unit u,real x,real y ) -> Bolang {
            Bolang data = Bolang.allocate();
            real angle = Atan2(y-GetUnitY(u),x-GetUnitX(u));
            data.x = INT_DS*Cos(angle);
            data.y = INT_DS*Sin(angle);
            data.dx = x;
            data.dy = y;
            data.Hero = u;
            data.t = NewTimer();
            data.i = TIME;
            SetTimerData(data.t,integer(data));
            SetUnitVertexColor( u, 255, 255, 255,0 );
            TimerStart(data.t,0.02,true,function Bolang.Timer );
            return data;
        }
        
        private static method Start() -> boolean {
            if (GetSpellAbilityId() == SPELL_ID) {
                Bolang.create(GetTriggerUnit(),GetSpellTargetX(),GetSpellTargetY());
            }
            return false;
        }
        
        private static method onInit(){
            trigger t = CreateTrigger();
            TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT);
            TriggerAddCondition(t, Condition(function Bolang.Start));
            t = null;
        }
    }
}

//! endzinc
[/jass]

[通魔作坊]仿dota技能 - 波浪形态.w3x (187 KB, 下载次数: 101)
发表于 2011-12-15 10:17:04 | 显示全部楼层
楼主ID刺眼 话说Zinc是什么意思呢
回复

使用道具 举报

发表于 2011-12-15 10:23:35 | 显示全部楼层
破喉咙:楼主ID刺眼 话说Zinc是什么意思呢 (2011-12-15 10:17)
简单点理解就是。。能用部分C语言的写法来写的JASS……
回复

使用道具 举报

发表于 2011-12-15 12:55:57 | 显示全部楼层
连伤害都没给..
回复

使用道具 举报

 楼主| 发表于 2011-12-15 15:57:41 | 显示全部楼层

回 1楼(破喉咙) 的帖子

破喉咙:楼主ID刺眼 话说Zinc是什么意思呢 (2011-12-15 10:17)
其实就是Vjass的进阶写法。
可以用类似C++的写法 比Vjass写的代码更简洁 不过编译出来的代码比较差
包含了Vjass的模拟面向对象式
不过ZINC跟VJ和CJ有一些不同之处
更高深一点的还没接触到
目前刚学
回复

使用道具 举报

发表于 2011-12-15 17:15:53 | 显示全部楼层
用了结构的说..好吧.表示我学会以后.除了写了个复活和什么多人之后.我做图发现自己没用上过...
只能写小系统的人无语的说.
回复

使用道具 举报

发表于 2011-12-16 17:03:14 | 显示全部楼层
只用原始形态的飘过。
回复

使用道具 举报

发表于 2011-12-16 18:32:27 | 显示全部楼层

回 5楼(4133789) 的帖子

4133789:用了结构的说..好吧.表示我学会以后.除了写了个复活和什么多人之后.我做图发现自己没用上过...
只能写小系统的人无语的说.&#160;(2011-12-15 17:15)&#160;
我是专门来鄙视你的说
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-21 12:36 , Processed in 0.047355 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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