以下内容的前提是,大家知道,如何在编辑器里面写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

jass制图的一些基础概念相关推荐

  1. GIS地图学习笔记一之基础概念

    要做GIS地图的开发,我们需要先了解GIS地图相关的概念. 相关概念可以在这里了解-->ArcGIS 帮助库 本文是从上述网站中学习,摘抄的. 基础概念 地理信息系统 (GIS) 是以可视化和分 ...

  2. WEB GIS 开发基础概念汇总

    WEB GIS 开发基础概念汇总 文章目录 WEB GIS 开发基础概念汇总 1.基础概念 2.技术框架 2.1 常见技术概念汇总 2.2 思维导图(借用,感觉比较到位) 3.内网离线WEB GIS搭 ...

  3. AI:人工智能领域之AI基础概念术语之机器学习、深度学习、数据挖掘中常见关键词、参数等5000多个单词中英文对照(绝对干货)

    AI:人工智能领域之AI基础概念术语之机器学习.深度学习.数据挖掘中常见关键词.参数等5000多个单词中英文对照(绝对干货) 导读      本博主基本收集了网上所有有关于ML.DL的中文解释词汇,机 ...

  4. TCP/IP基础概念及通信过程举例

    TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...

  5. Python+Dash快速web应用开发——基础概念篇

    作者:费弗里 来源:Python大数据分析 ❝本文示例代码与数据已上传至https://github.com/CNFeffery/DataScienceStudyNotes ❞ 1 简介 这是我的新系 ...

  6. 理解 angular2 基础概念和结构 ----angular2系列(二)

    前言: angular2官方将框架按以下结构划分: Module Component Template Metadata Data Binding Directive Service Dependen ...

  7. 数据库基础笔记(MySQL)1 —— 基础概念

    (写算法题目把自己心态搞崩了,休息两天顺便把之前学的数据库手写笔记记录在网上方便查阅,因为只是自己学的时候做的笔记,如果有错误欢迎大家指正,过两天再重回算法的怀抱哈哈) 如何下载配置 这个感觉视频讲的 ...

  8. python 舍去小数_零基础小白Python入门必看——编程基础概念

    1. 程序的构成 程序由模块组成,一个模块对应python的源文件 ,一般后缀为:.py 模块由语句构成 语句是python程序的构造单元,用于创建对象.变量赋值.调用函数.控制语句等. 2. 对象 ...

  9. J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...

最新文章

  1. net start mysql 提示:服务名无效 请键入NET HELPING 2185以获得更多的帮助的问题
  2. oracle体系结构剖析
  3. kafka记录及面试题
  4. 虚拟机上的Ubuntu如何无线上网
  5. Android studio | From Zero To One ——TextView实现跑马灯效果及聊天室、文字直播间
  6. having和where可以同时使用吗_阴、阳离子聚丙烯酰胺可以同时混合溶解使用吗?...
  7. 净水器怎么放_今日头条 | 如何清洗净水器的陶瓷滤芯,要不要来学一下!
  8. Linux下捕捉信号
  9. 服务器没权限修改,ftp服务器没有修改权限
  10. 《SQL Server 2008从入门到精通》--20180703
  11. 使用java发送邮件(支持多人)
  12. BZOJ 1406: [AHOI2007]密码箱 数论
  13. 【年终总结】我的2016,阅读本文大约需要一整年
  14. 俄数学天才破解庞加莱猜想拒领百万奖金
  15. 关于嵌入式EMW3162 Wifi模块的网络配置与测试
  16. Centos7 编译安装 图片压缩 MozJPEG
  17. 一文搞懂马尔可夫链 (Markov Chain)
  18. Golang的压测工具 hey
  19. mysql免费自学课程,自学SQL网(教程 视频 练习全套)
  20. 如何将nb公式转换成matlab公式

热门文章

  1. 移动端h5落地页总结(vue cli+vant)
  2. java 图像识别 头部,翻拍识别示例_图像识别 Image_SDK参考_使用SDK(Java)_华为云...
  3. python keyboard hook_Keyboard Hook API函数 参数说明
  4. 回头客会员管理系统软件安装说明
  5. linux在线man手册
  6. 谢谢...,DuerOS开放平台的2020
  7. MATLAB从入门到精通-向量运算点乘、叉乘和卷积
  8. Nginx+Springboot+Security+CAS 整合方案-XML 实现SSO客户端
  9. 【独立版】智创云享3107、易搜资料1.4.3、变现宝1.2.4最新版
  10. matlab采用向量作为标号赋值的实质是同维矩阵的赋值