AMXMODXDocumentation.doc

上传人:壹****1 文档编号:545584707 上传时间:2022-12-28 格式:DOC 页数:17 大小:125.01KB
返回 下载 相关 举报
AMXMODXDocumentation.doc_第1页
第1页 / 共17页
AMXMODXDocumentation.doc_第2页
第2页 / 共17页
AMXMODXDocumentation.doc_第3页
第3页 / 共17页
AMXMODXDocumentation.doc_第4页
第4页 / 共17页
AMXMODXDocumentation.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《AMXMODXDocumentation.doc》由会员分享,可在线阅读,更多相关《AMXMODXDocumentation.doc(17页珍藏版)》请在金锄头文库上搜索。

1、AMX MOD X DocumentationScripting Tutorial (Introduction & Pawn Language Basics) Translated by Shaman.Kaler介绍Pawn是一种“脚本”语言,用于将各种功能嵌入其他程序。这种语言共有两种,一种类似C或C+,是“汇编”语言,通常是用于输出可执行二进制文件;另一种是“解释”语言,通过虚拟机动态地运行代码(VB那样的译者注)。AMX Pawn是两者的混合体:写AMX是解释型的,但编译过程是汇编的。(说明了为什么amxx文件没法打开,因为是汇编语言译者注)在你开始编程之前你要知道一些重要的结构。第一是

2、“变量”。变量可以说是含有数据的一个符号或记号(symbol or marker,中文太相似了译者注)。比如,变量a可能会含有值2、16、0等等等等。变量是一个程序创造的存储空间,在使用前必须声明它们的名字(和类型)。给予变量数据称为“赋值”。变量的赋值使用的是一个等号:new a,b,c,d /这里是 声明a=5 /把a赋值为5b=16c=0d=500另一个重要的概念是函数。函数是完成某种功能时引用的符号或记号。这意味着当你使用它们时,它们会处理你所给的数据(“传递”的数据)。函数有几种,但是使用方法是一致的。例如,”show”函数把一个数字显示在屏幕上:show(56) /启动”show”

3、函数, 并传递数据”56”。show() /启动”show”函数, 没有数据(或不需要数据)。show(a) /启动”show”函数, 并传递变量a包含的数据。注意任何前面带有”/”符号的文字都属于“注释”,不是真正的代码。任何传递给函数的数据都被称为“参数”,一个函数可能有任意多的参数,你必须保证你所传递的每个参数的正确性。如果一个函数需要两个数字,你就不能给它两个字符串。函数可以“返回”数据,比如:new bb = add(5, 7)这个例子中,如果”add”是一个把两个数字相加的函数,那么变量b的值就是12.是吧?最后一个概念就是“大括号式”编程。你可以把程序代码用”和”括起来作为一个整

4、体。比如: 这里是 一堆代码一旦有可能的话就要练习用这种方式编程,把代码括成一个个单独部分。当你读完这些时,你应该有了一点AMXX编程的基础。恭喜。Pawn语言基础(这一段真是杀了人的多翻译还在继续-译者崩溃中)1、变量Pawn是一种可捆绑的,(几乎)不需要输入的,便于使用的脚本语言,为虚拟机而汇编。(定义可以直接省略,真的译者注)AMX Mod X用Small语言使各种功能在HL引擎中实现,使用Small虚拟机和Metamod(Small是用C写的,Metamod用的是C+)。当你把Small脚本写好之后可以用“编译器”把脚本编译成AMX Mod X二进制文件(amxx插件)。AMX Mod

5、 X小组提供特殊的Small编译器(amxxpc.exe)。Pawn的编程脚本相对简单,没有一些其他语言中的例如指针、类、数据流等等的概念。Small只有三种变量数据类型。默认的变量类型是整型(integer),就是一个整数。为了兼容以往的版本,变量名称不得超过19个字符,而且必须以字母开头。可以包含AZ,az,09和下划线”_”。变量名是区分大小写的,”myvar”,”MyVaR”和”MYVAR”是不同的三个变量。要声明一个变量,使用new方法:new a /声明一个空的变量anew b=5 /声明一个变量b并赋值5.new c=5.0 /这是错误的,5.0不是整型!(带有小数点是浮点型!)

6、new d=hello /hello是个字符串,因此也是错误的。/一行之内允许声明多个变量:new e,f,g,hnew x=7, y=3你也可以把一个变量声明为“浮点型”,这意味着变量可以储存带有小数部分的数字。也就是“浮点”数:new Float:a /声明一个空的浮点型变量a。new Float:b=5.3 /声明一个浮点型变量b并赋值5.3。new Float:c=5 /这是有效的,但编译器会给你个warning。new Float:d=hello /这是无效的!”hello”是个字符串。你也可以做下面的这些:/ float(n)是个把整型变为浮点型的函数。new Float:var

7、= float(5)new Float:var2 = 5.0 new Float:var3 = 1.0*5new var4 = floatround(5.0) /注: floatround(n) 是把浮点型变为整型的函数。/这使得通常的整型声明也有效了。注:有没有空格通常是无关紧要的,编译器可以把符号和内容分开,但是如果你省略得非常过分,编译时就会出现error和warning了。例如”new var = 5”和”new var=5”是一样的,但”newvar=5”就是错的了!最后一种就是“布尔型”,它的值只会有“True(真)”或“False(假)”。默认是“False”。new bool:

8、IsItOn /声明一个新的布尔型变量“IsItOn”,并设为“False”new bool:xyz=true /声明一个新的布尔型变量“xyz”,并设为“Ture”2、数组Pawn拥有基础的“数组”。数组是存储组织数据的一种重要方法。这意味着你可以在一个变量中存储多个数据。数组和变量遵循同一规定,有同样的类型,数组只是单纯的可以多存储几个数据而已。用中括号”和”来声明数组与数组的容量(容量必须是固定的)。例如:/声明一个Players数组,容量为32(可存储32个数据)。new Players32/现在就可以往数组的32个空间里传递数据了。 /空间的索引从0开始,到n-1结束。这里就是031

9、啦。/每个空间的默认值都是0./把空间0设成5.Players0 = 5/把空间1设成和空间0一样的值,这里就是5Players1 = Players0/注意下面的是无效的!/虽然有32个空间,但最多只到31号!/这会导致AMX Native Error 4 - AMX_ERR_BOUNDS/或者压根就无法编译!Players32 = 15/这个自然也是无效的。 Players-1 = 6/下面的也是无效的,a必须为常数。new a = 3new BadArraya/这样就正确了,const代表常数(无法再被赋值)。const b = 3new GoodArrayb/你甚至可以使用define

10、的数据来声明数组#define ARRAY_SIZE 3new ArrayARRAY_SIZE数组也可以直接声明并赋予所有的数据:new Numbers4 = 0,1,2,3/注: 确保数据个数与数组容量的一致!数组也可以使用各种数据类型:/浮点型的数组:new Float:Numbers4 = 0.0, 1.2, 2.4, 3.8/布尔型的数组:(这会把所有数据设成True)new bool:playerHasGun32 = true3、字符串你可能注意到了还有一种数据类型没说呢没错,就是字符串。在Pawn里,字符串,也是通过数字存储的。/下面声明了一个数组myString包含数据Hello

11、. /有五个字母,就需要六个空间. /最后一个空间设置成0,告诉Pawn引擎这是字符串.new myString = Hello/注: 在 /* 和 */ 之间的也是注释.你不能在 /* */ 里面再来一个 /* */./* 下面的命令也能做到存储”Hello”,但是用起来麻烦,不推荐使用。*/new myString6myString0 = HmyString1 = emyString2 = lmyString3 = lmyString4 = omyString5 = 0/*你不可以使用下面的命令!这可能会在编译时产生数据溢出!*/new myString6myString = Hello

12、/无效!(少了就是在一个变量里存一个数组)myString0 = Hello /无效!(在一个空间里存了一个数组)/想要在字符串里添加数据,可以使用Copy命令:new goodString6copy(goodString, 6, Hello)/Copy共有三个参数:copy(destination, length, source)/它把源字符串的内容复制到目标数组中,但只复制最多length个字符。 /最后,为了证明字符串是用数字存储的:new weird6weird0 = 68weird1 = 65weird2 = 73weird3 = 86weird4 = 68weird5 = 0/这会

13、把变量weird赋值”David”./想知道字符和数字如何换算,请访问4、函数Pawn允许你定义自己的函数。这就可以在很多地方省略很多相同的语句。注意函数必须有返回值,使用return命令,将会直接停止函数运行并将处理结果传递出去(前面曾说过“可以返回数据”,这里注意是“必须”有返回值,因为返回的不一定是“数据”译者注)。注意当return被执行后函数就会强制性停止。这里是一些例子。/这是一个不需要参数并直接返回1的函数./引用时, 这个函数调用(事实上并不存在的)print命令.show() print(Hello!) return 1 /结束,返回1/像这样引用:show()你也可以使函数

14、变得需要参数:/声明一个叫做add_two_numbers的函数, 用于求两数之和.add_two_numbers(first, second) new sum = first + second return sum /返回sum/然后就可以引用你的函数了:new a,ba = 5a = 12new c = add_two_numbers(a,b)/c 现在就应该等于 17.在参数类型方面是没有限制的。当你把参数给予一个函数时,这个过程称为“传递”(这个定义居然到现在才出现译者注)。传递的可以是数据,也可以是变量:/声明一个叫 add_two_floats 的函数,对两个浮点数求和。Float:add_two_floats(Float:first, Float:second) new Float:sum = first + second return sumnew Float:anew Float:b

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号