游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4184|回复: 3

[讨论] 魔兽争霸III的技能系统介绍(上)

[复制链接]

41

主题

305

帖子

413

积分

中级会员

Rank: 3Rank: 3

积分
413
QQ
发表于 2007-6-24 14:04:00 | 显示全部楼层 |阅读模式
BLOG文章地址:http://mosq.blog.sohu.com/52144704.html



玩家自制魔兽3技能(模仿奇迹的地狱火)

    魔兽3中无论是基础的攻击,还是拾取物品,扔掉物品等,甚至包括英雄本身,也是一个技能(Ability),这些技能都可以通过游戏的脚本进行控制。你可以使用UnitRemoveAbility这个指令删除任何一个在技能数据表中的技能,当你删除了单位的“攻击”技能后,单位就会无法攻击;当你删除了商店的“出售物品”技能后,商店就失去了卖东西的功能;当你删除英雄的“英雄”技能后,英雄可能就会变为普通的单位。

    [B]魔兽3的技能数据表下载:[/B] http://rair.cn/wenziding/WarCraftIII_AbilityData.xls

    * ability是一种数据类型,在脚本中可以存在这种类型的变量。申明局部变量的格式一般是:local 数据类型 变量名,例子:local integer a ,也可以:local integer a = 1,在申明变量的同时给变量赋值。
    * unit也是一种数据类型,unit代表着游戏中所有的单位,包括建筑、英雄等等。注意:unit是单位在游戏中的ID,两个相同类型的单位,ID不一样,unit则是这个ID的指向。


控制技能的脚本API函数主要功能一览:

    * 将字符串形式的技能的ID转换为数值型ID。

AbilityId takes string abilityIdString returns integer

    * 和上面相反。

AbilityId2String takes integer abilityId returns string

    * 获取某个技能的效果effect,技能效果指的是持续性的效果或是短暂性的技能效果。

GetAbilityEffect takes string abilityString,effecttype t,integer index returns string
GetAbilityEffectById takes integer abilityId,effecttype t,integer index returns string

    * 获取某个技能的名称。

GetObjectName takes integer objectId returns string //这个函数比较奇怪,可以获得很多种实体的名称。

本地函数:
function GetAbilityName takes integer abilcode returns string
    return GetObjectName(abilcode)
endfunction

    * 获取某个技能的声音文件路径。

GetAbilitySound takes string abilityString,soundtype t returns string

    * 当触发器是与技能有关时,获取正在触发的技能或技能ID。

GetSpellAbility takes nothing returns ability

GetSpellAbilityId takes nothing returns integer

    * 当触发器是与单位施放技能有关时,获取正在施放技能的单位。

GetSpellAbilityUnit takes nothing returns unit

    * 获得某个单位的某个技能的技能等级。

GetUnitAbilityLevel takes unit whichUnit,integer abilcode returns integer

    * 设置某个单位的某个技能可以使用或不可以使用。注:当设置为不可使用时,该技能依然存在于单位身上,技能等级和技能的冷却时间在恢复后,都会保持正常。只是技能在不可用时,在UI是看不到技能的图标的。这个和删除技能有一定的区别。

SetPlayerAbilityAvailable takes player whichPlayer,integer abilid,boolean avail returns nothing

    * 设置某个单位的某个技能的等级。

SetUnitAbilityLevel takes unit whichUnit,integer abilcode,integer level returns integer

    * 给某个单位增加某个技能技能。

UnitAddAbility takes unit whichUnit,integer abilityId returns boolean

    * 删除某个单位的某个技能。

UnitRemoveAbility takes unit whichUnit,integer abilityId returns boolean

    * 增加某个单位的某个技能的等级。

IncUnitAbilityLevel takes unit whichUnit,integer abilcode returns integer

    * 减少某个单位的某个技能的等级。

DecUnitAbilityLevel takes unit whichUnit,integer abilcode returns integer

    * 激活或关闭某个单位的某个技能。相对于那些能够自动释放的技能所设定的函数。

UnitMakeAbilityPermanent takes unit whichUnit,boolean permanent,integer abilityId returns boolean

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2007-6-24 14:38:00 | 显示全部楼层

Re:魔兽争霸III的技能系统介绍(上)

[API] takes [type param] returns [type] 这种格式注解不错

41

主题

305

帖子

413

积分

中级会员

Rank: 3Rank: 3

积分
413
QQ
 楼主| 发表于 2007-6-24 16:38:00 | 显示全部楼层

Re: Re:魔兽争霸III的技能系统介绍(上)

shengkz: Re:魔兽争霸III的技能系统介绍(上)

[API] takes [type param] returns [type] 这种格式注解不错


楼上是程序员还是脚本策划啊?

16

主题

821

帖子

840

积分

高级会员

Rank: 4

积分
840
发表于 2007-6-24 19:51:00 | 显示全部楼层

Re:魔兽争霸III的技能系统介绍(上)

呵呵,通过MPQ工具解压MPQ文件,得到的xls文件进行分析,我当年做了太多这样的工作。
填写这样的表,真是体力活,还好我们是由数值策划去填
BLZ是system designer填的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-7-17 10:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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