jass制图的一些基础概念


以下内容的前提是,大家知道,如何在编辑器里面写jass, 方法就是任意新建一个T, 转换T为J文本,删除里面所有文本, 干干净净的开始我们自己的实用Jass旅程

大家请注意,我个人作为长期接触WE(World Editor.exe)的菜鸟,并不觉得不会Jass有什么困难,但是我希望大家了解一些Jass的最实用的东西,提高作图速度,加强作图效率,排除各种泄露,轻松作图. Jass是什么,是个巨人,我们只需要站在巨人的肩膀上,至于巨人长什么样子,构造是什么,我们无需了解,我会尽力让大家都能站到这个肩膀上,足矣



触发器:

  触发器, 就是在地图编辑器里面, 有个触发编辑器. 图标是个字母a的样子, 点开之后, 你可以在里面新建文件夹, 每个文件夹内, 可以新建触发器.
  触发器, 在正常情况下, 可以书写事件, 条件和动作, 这样的触发器, 我们叫做Trigger, 简称T. 因为这是暴雪提供的可视化界面
  触发器, 可以通过菜单栏的编辑- 转化为jass文本, 变成语言界面的编辑模式, 如果将一个空触发器转化成jass之后再删除内部全部文本, 这算做一个空的Jass触发器, 我们就可以写自己的代码了

  T转J是不可逆的过程, 原因? 学会了Jass就可以理解了. 当然, 你可以通过撤销命令返回转化之前的T


变量:

  变量, 分为全局变量和局部变量
全局变量, 在任何触发器, 任何函数里面都可以使用的, 如果使用触发编辑器界面提供的变量定义, 这是全局变量, 真实名称 = udg_前缀 加上 变量的名称. 在T转J之后你会看到这个前缀.
  还有一种定义方法是用globals和endglobals在jass里面定义, 这属于vjass的范畴, 下面会讲到.
  局部变量, 只能在函数内部使用的变量, 在外部无法调用. 局部变量的命名规则比较简易, 不同函数内部的局部变量可以重名.


函数:

  函数又叫function. 在T里面, 一个事件就是一个function的结构, 条件也是一个function, 动作也是.

  function的结构是 

function NAME takes xxx returns xxx 

然后用endfunction结束本段function. 具体会在下文中讲解.


变量类型, 数组

  变量有不同的类型, 比如单位, 比如计时器, 比如整数, 实数. 学习jass的话, 我们就还需要了解这些类型的英文对应写法.
   数组, 是为了扩展同一个变量的, 比如我们定义了单位变量A, A一次只能指代一个单位, 但是如果定义了数组, A[j], j 的取值范围是0到8191, 也就是说一个单位数组A最多可以表示8192个单位
  为什么要数组? 答案很简单, 一个是方便书写和调用, 一个是利于写循环. 比如


  循环数 j = 0

        当 j > 11 时 退出循环
        定义 A[j] = 创建给 玩家(j) 山丘之王 在坐标0, 0 面向角度默认
     设置 j = j + 1
  结束循环


  上述写法是基于jass的写法翻译, 大家要习惯, 我们这么写就是分别给玩家1~12创建了山丘之王, 并且定义A[0] 就是玩家1控制的山丘之王, 直到A[11]是玩家12控制的山丘之王


BJ函数? CJ函数? Jass高亮

在Jass中, 比如YDWE编辑器, 内附了Tesh插件可以让Jass文本高亮, 主要高亮一些关键词, 对不同关键词上色, 这样极大的方便了我们Jass的可视性和书写的方便.


  先介绍CJ, 这个CJ不是C语言的J, 而是我们能看到的Common.j函数, 里面都是比较原始的函数, 高亮时用淡紫色表示.

  BJ, 暴雪基于CJ转化的Blizzard.j函数, 高亮时用红色显示. BJ函数基本上就是T里面的函数, 和CJ的区别是: 一般来说BJ和CJ引用的变量的顺序有调换, 另一方面, BJ函数大都是


CJ函数的再处理, 有些BJ函数其实也很好用, 我们没必要去一定要倾向于CJ而忽略某些方便易行的BJ函数.


函数的再理解

函数和变量一样, 不能重名. 函数返回值叫做 returns xxx, 一般xxx是一个变量类型, 比如 returnsinteger返回一个整数, 如果一个函数是有返回值类型的, 那么我们可以将此函数理解为类似于一个变量的类型. 返回整数类型的函数, 就不妨理解为一个整数变量, 只不过这是一个在函数内部还有一系列动作和复杂过程的东西, 归根结底, 它就可以看作一个整数变量使用. 比如:


  已知有一个function RRR takes nothing returns integer.

  设置 整数变量 AA = RRR()
  或者有一个 function RRR takes integer i returns integer.
  设置 整数变量 AA = RRR(100)


这个函数的再理解, 我请大家看完下面的函数具体讲解之后再回来看看, 估计就有眉目了


巧用T转J

   因为很多命令和函数我们记不得, 比如触发单位对应的是什么函数? GetTriggerUnit(), 怎么知道的呢, 答案很简单, 新建一个触发器, 写一个动作或者条件, 包含有触发单位的. 然后T转J, 去找找相应的转化之后的词语.
   英文拆分, 比如这个触发单位, Get表示获取, Trigger表示触发, Unit表示单位, ()是啥意思呢, 不妨猜以下, GetTriggerUnit实际上就是CJ里面的一个函数而已, 我们再调用这个函数, 大家不难发现这个原函数是


  constant native GetTriggerUnittakesnothing returnsunit


   因为这个函数takes nothing, 所以我们()内啥也不写, 因为这个函数返回值是单位类型, 所以我们可以视这个函数就是一个单位类型的变量. 因此,GetTriggerUnit()就是触发单位.


索引号的区别

  刚才我们谈到数组, 大家可能奇怪, 为啥0 对应的是玩家1 呢, 这里我要澄清, 在T里面我们可能会用到一个函数叫做 玩家索引, 大家注意, T是为了方便作图用的, 也就是说这个玩家索引, 是一个BJ函数, 它的Jass内的原名是 GetConvertedPlayerId, 而CJ对应的函数是 GetPlayerId . 后者, 对于玩家1的序号是从0 开始的, 而前者, 是调用后者的函数得到的值再加上1, 也就是说, 玩家1在BJ的函数里面序号是1, 而本质的CJ函数序号是0, 我们来看看BJ函数的真面目


function GetConvertedPlayerId takes player whichPlayerreturnsinteger
    return

    return GetPlayerId(whichPlayer) + 1   //这里就是直接调用了CJ函数然后再加1
endfunction


大家如果习惯用CJ的0开始计数, 那么就请保持CJ的习惯, 不然, 就用BJ吧.... 这个完全和个人习惯有关, 不需要考虑太多到底哪个效率高, 实在不行, 你自己调用CJ再写+1也无妨

   类似大家要注意的是物品栏序号, 也是从0开始的, 到5结束, 对应单位物品栏1~6号物品.

    类似的还截取字符串, 这里CJ是SubString而BJ是SubStringBJ


原文: http://bbs.uuu9.com/thread-3999486-1-1.html

    类似的还截取字符串, 这里CJ是 SubString而BJ是 SubStringBJ
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
功能最强大的Jass编辑器更新 1.4.3.3 -> 1.4.3.4[!] 修正了当字符串或注释中存在括号时括号提示的显示错误问题;[!] plugin(插件)菜单不再可以使用任意热键;[!] 修正了Shortcut Manager的程序运行期间内存泄露问题;[!] 修正了打开某些地图文件时Global List中Triggers可能产生严重错误的问题;[+] 增加了提示无对应的括号的提示(该功能默认关闭);[+] 保存脚本文件到地图文件中时自动删除"(attributes)"文件;[+] 在config.exe中增加了关联地图类型文件(*.W3M, *.W3X)功能(使用该功能时请选择“否”,否则将覆盖掉原来使用WE打开的关联方式);[+] Shortcut Manager的热键选择列表中去除plugin菜单已使用的热键; 将UTF8<->ASC功能移动到Format All/Selected Text菜单下; 提高了文件较长时的一些相关功能的效率。文件说明JassShopPro.exe - 主程序config.exe - 设置程序。许多JSP有许多强大的功能需要调用该文件来设定MpqLib.dll - 用于直接读取地图中的jass文件的动态链接库(Thx to Soar)CHS.lng - 简体中文语言包。建议每次更新都覆盖掉default.tmt - 模板文件。这是一个文本文件,可以根据该文件内容(挺容易懂的)设计自定义的模板菜单,支持快捷键和一些控制命令。可以通过config.exe定义自己的模板菜单文件common.j, blizzard.j, common.ai - 目前为1.18的API文件,主程序至少需要common.j文件pjass.exe - 用于语法检查,无此文件,主程序中的语法检查将不可用jsp.ini - JassShopPro.exe会自动创建该文件,用于保存设置,无此文件时config.exe不可用。当首次运行JassShopPro的时候,如果没有找到这个文件,程序会自动搜索并提问是否使用语言包(语言包有特殊的设定,如果是某些英文版改的中文版xp的或者新加坡中文版之类,不会自动提问CHS.lng)功能 语法高亮 根据jass2语言定义了十几种字体,可以通过config.exe自己设定字体颜色、风格,以及高亮规则 智能大小写换 可自动换大小写,并能自动判断是否进行大小写换,例如输入 “location”,此时如果再输入“(”,程序将认为它是函数,自动换成“Location(”,否则认为是类型,不进行大小写换 快速函数搜索 可以方便快捷的查找API函数、常量、变量、类型。可以选择是否从名称第一个字母开始匹配,是否注意大小写,该函数的返回类型或变量、常量的类型。搜索按钮将自动在所有函数/变量常量/类型中查找。按回车或者空格会将当前词汇添加到下拉菜单中。单击其中条目,下面的代码框中将显示源代码,双击搜索列表中项目,将自动插入代码 标准的MDI(多文档界面)操作 Ctrl+F4关闭一个文档,Ctrl+Tab切换文档 功能强大的搜索功能 有丰富的选项,在主界面编辑时会智能填入搜索内容。如选中代码不含有换行符,搜索对话框中将自动填入选中的文本,超过一行则会自动将搜索范围变为 Selected Text (选中文本) 书签功能 每个编辑中的文本可以定义10个书签 当前代码结构 左侧的列表会显示全部的全局变量、函数、全局Trigger。红色的变量代表常量,红色的函数代表常函数,红色的Trigger代表缺乏全局变量声明的T。目前Trigger列表只是列出来,没有任何实际功能。对于变量和函数,左键单击在代码框中显示代码,右键单击跳到声明位置,双鞑迦耄孛旖菁麱2 )会在整个编辑文本中改名 强大的模板引擎 具体可以参照Default.tmt文件,可以自定义类别,自定义快捷键,做一些比较复杂的功能 语法检查 该功能需要pjass.exe文件。可以在检查结果中双击条目跳到出错位置 测试地图 现在程序已经支持直接打开地图文件中的war3map.j或者scripts\war3map.j文件,或者直接储存到地图文件中。如果正在编辑的是地图文件,可立刻使用WE的标准操作快捷键Ctrl+F9进行地图测试 插入颜色 可以直观的选择颜色,然后换成jass的颜色代码插入到文本中 强大的文本缩进 可通过config.exe设置tab键的宽度,编辑代码时也会根据关键词进行缩进。菜单中提供了缩进、去除缩进、增加缩进功能,自动根据是否选中文本对选中代码或者全文进行缩进处理,方便阅读 与WE通信 可以直接与WE的文本编辑框通信,相互复制代码 UTF-8 <-> ASC 人性化的操作 主程序支持参数,可以通过config.exe在注册表中注册文件类型,从而双击打开相关类型文件。如果已经有一个JassShopPro在运行中,再次双击注册为用JSP打开的类型的文件时,将在已启动的文档中打开文件。同样,支持拖放操作,可以直接将文件拖到窗口中打开 自动完成功能 输入“set ”,将自动显示本地变量与全部全局变量;输入“call ”,则会自动显示当前代码前面的全部函数。输入一个有效的函数名称并按“(”时,将显示该函数参数的提示(或者按F1) 丰富的快捷键 大多数有用的功能都提供了快捷键。 Ctrl+鼠标左键单击(F2):如果大小写不正确,会自动换大小写。如果被点中的是当前文档的全局变量、常量或者函数,则会自动跳到声明位置 双击:可在代码框中得到相关的源代码 压缩代码 可以进行一些简单的代码压缩处理,可以处理:去除注释,压缩全局变量、常量名称,压缩函数名称,去除无用回车,去除缩进等 自定义菜单快捷键 主程序中的Shortcut Manager可以方便帮助您设置菜单中的快捷键,方便需要 plug-in 支持插件程序,可以通过config.exe方便的管理已安装的插件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值