CS七龙珠CCI插件编写手法教程[教材]
CS七龙珠CCI插件编写手法教程
《常用的符号》
我们做插件不是学编程,所以我在这里把基本的常用符号教给大家,这些在插件的制作上都是常见的,难度不大。里面所讲到的常量、数组什么的大家先有个印象就行,到后面几章我再做出解释。
编写HL插件的是Pawn 语言,是一种跨平台的脚本语言. 我们常看到两种类型的语言, 一种是"编译"语言, 例如: C 和 C++. 一种是"解释"语言, 像 VB Script.
AMX Pawn 语言是两者的混合体: 将脚本编译成二进制文件, 并由 AMXx 来解释它.
---------------------------------沧月天上天下霸气分割线~~~---------------------------------
分隔符: //
//用来注释,比如现在这段解释前面不就有一个分隔符吗~在代码后面加上分隔符可以来记录这段代码的意思,以便以后观看这段代码时一看到注释就明白了这段代码用来干什么。
路径符号: \
//这个符号通常用来调用某个资源,相信大家都知道路径是什么吧,比如c盘的“小坏”文件夹里面的“123.mdl”文件,就是 c:\小坏\123.mdl。
//需要注意我们在编写插件时最好不要用到中文,统一用半角的英文,中文和英文两种字符是不一样的,大家可以在代码编写区试试
输入一个中文后按退格键删除它,然后在试试输入一个英文后按退格键删除它,你会发现想完全删除中文字符会要比删除英文字符多按一下退格键。
赋值号: =
//可以为变量、数组进行赋值,赋值后这个常量或数组就会等于你赋给它的值,一般用在定义上。感觉上就像伟大的的神:小坏用赋值技能赐给了某某下等生物100W点强大的战斗力~然后这个下等生物就是变量或数组,100W强大的战斗力就是常量,伟大的神就是我们,赋值技能就是赋值号~~~当然,别人会解释的比较官方一点。就当我开个比喻性玩笑嘎嘎^_^。还有更多更高级的使用技巧,说了怕你们学不会-3-
加号: +
//和数学上面一个样子,不同的是现在却用在了编写方面,我们可以把加号用在常量的相加,整型、浮点型函数的相加等,比如先定义出一个变量“xh”,那么我们可以利用一下上面刚讲的赋值,请看:xh = xh + 1 ,有聪明人会奇怪xh刚开始等于几呢,告诉你们,等于0.那么翻译就是xh=0+1,那么这下xh就是1了。
减号: -
//和上面加号一个用法,学过数学都应该会,这个大家动脑筋套着上面的观察学习吧。
乘号: *
// - -~蛋疼,加减乘除要不是白痴就都会,这里还要哥再解释一边。。。还是套着加号看吧-8- 这里注意乘号已经不是原来的那个×的写法了。
除号: /
//这里也要注意除号已经不是原来的那个?号了,还是原来的老话,套着加号的解释观察去。。。
等于号: ==
//这个和赋值号的功能差不多,只不过多了一个“=”,并且一般是用在判断的语句上,比如if(a==3),表示判断变量a是否等于3,这时你如果写成if(a=3),那你就等着出错吧。。。
大于号: >
小于号: <
大于等于号: >=
小于等于号: <=
//以上四个符号都是用来比较的,我们小学就学过。。。要注意比较的都是数值的大小,没有某某人他老妈大于某某人他老爸一说什么的,最多只能说他老妈用的化妆品比他老爸的多什么的,而这些都牵扯到了数量的问题,而不是质量的问题。。。
整数输出: %d
//这个用在显示的语句中,主要用于显示输出,比如定义了某个变量C并赋值了常量为5后,在输出的函数里就这样写:print(%d,C)
意思就是显示输出C的值
浮点数输出: %f
//用于显示输出,和上面一样,不过这次定义变量必须为小数,比如定义了某个变量a并赋值了常量为5.0后,在输出的函数内这样写:print(f%,a) 意思就是显示输出a的值
字符串型输出: %s
//用于显示输出,定义变量必须为字符串,比如定义了某个变量XIAOHUAI并赋值了常量为“"沧月"”后,在输出的函数内这样写:print(s%,XIAOHUAI) 意思就是显示输出XIAOHUAI的字符信息。字符串在后面会讲到。
//还有就是HL的显示函数不是print,我在这里只是为了方便一下,不过后面的那些参数却相差不远。
或者: ||
//说道这里,我绝对有信心肯定某些笨笨连这个符号都不知道要怎么打出来。。。我告诉你们吧。。。按组合键“Shift+\”就是了。并且用法一般也用在判断句型中,比如
“if(getClientPowerup(player) || getClientPL(player)>1000000)”意思就是 如果现在正在蓄气 或者 战斗力大于一百万,那么就。。。。(后面写结果,那么就怎样。。)。这里面用到的两个函数到后面就讲,还是留个印象就行。
并且: &&
//和上面的或者用法差不多,大多用在判断上面(当然也能用在结果上面),上面举了如果的例子,这里我来接着上面的那一段写下如果和结果完整的例子:
if(getClientPowerup(player) || getClientPL(player)>1000000)
{
setClientPL(player,2000000) && setClientHP(player,20)
}
//以上的就是一个完整的判断了,翻译是:如果现在正在蓄气或者战斗力大于一百万,那么现在的战斗力就等于二百万并且HP值等于20点。
好了,先讲这么多吧,这些都是常用的,非常简单,用一点心去记都能记全。
《量、类型》
---------------------------------沧月天上天下霸气分割线~~~---------------------------------
常量:
在《常用的符号》那里出现的常量和变量我让大家留了个印象,不知大家忘记了没有,常量简单的来说就是数字,但它不能是分数,如果你想让一个常量三分之一表示出来,你可以这样:“1/5”,也可以用小数来表示它,小数在这里不叫做小数,我们叫它实型常量,不过大家改不了习惯的话我也无能为力。
举个例子,常量,可以是整型常量:1、2、3、4、5、-1、-2、-3等等,不管是正整数还是负整数,都属于整型常量,这个在初中
时应该都学过。整型常量还分短整型常量和长整型常量,这个不多用,没必要说出来增加本可以避免的麻烦。
也可以是实型常量:1.0、1.1、1.4、2.5、2.7、-3.1、-2.3、3.14124等,也不分正与负。
实型常量分双精度型(double)和单精度型(Float),双进度一般不常用,记住它必须小数点后要有15-17个数位就行,比如2.1247483923415512
单精度型挺常用的,小数点后需要1-7个字位。
还有字符型常量:'A'、'B'、'C'、'd'、'e'、'4'、'-5.312' 这个大家可能看出了规律,每个字符型常量都必须有单引号括起来,不管是大写、小写、整数、小数、正数或负数,但是大家必须注意每定义个字符型常量单引号里面的字符都只能为一个~你不可这样:'AB'、'cd'、'AbcD'、'3.24.6'
最后就是字符串型常量:"XIAOHUAI"、"asasfA"、"Cangy,ue123" 这个和字符型常量的不同是字符串型常量是用双引号括起字符的,并且里面的字符数量没有什么限制,你甚至还可以把符号代进去。
变量:
变量我们可以理解它为“替代品”,用来替代某个常量。变量可以是一个大写或小写的字母,也可以出现数字,但开头还必须是字母,比如a123 = 23 变量由程序创建一个空间让你保存数据. 你必须在使用它们之前先定义你的变量. 变量用 = 号来赋值。
数组:
数组是一组数据的集合. 这样你可以在一个变量里储存多个
数据! 数组的定义方法和普通变量一样, 并且类型也和普通一样. 它能包含多个数据. 用括号 [] 来定义数组的元素数量, 例如定义出10个元素的数组“Xiaohuai”出来:new Xiaohuai[10] 你可以使用数组中的任何一个元素, 每个数组的元素的位置都是由 0 到 n-1,每一个数组的元素的位置都是从 0 开始的.比如为数组的第一个元素赋值 30 :Xiaohuai[0] = 30 又比如为数组的第四个元素赋值为第一个元素的值:Xiaohuai[3] = Xiaohuai[0] 你不可以在数组的“[]”号里面填写负数,也不能填写超出你数组元素的数值,比如 Xiaohuai[10] = 20 这个乍一看我们直观的会认为没有错误,其实已经错了,因为上面说过每一个数组的元素的位置都是从 0 开始的,也就表示这个名为“Xiaohuai”的数组最多只能填到Xiaohuai[9]
数组定义的时候也可以赋值,像这样: Xiaohuai[10] =
{0,1,2,3,4,5,6,7,8,9} 但要注意赋值时元素的数量必须完全吻合。
还有浮点型的数组,比如 new Float:Xiaohuai[4] = {0.0,
1.2, 2.4, 3.8}
逻辑值数组:new bool:Xiaohuai[10] = true 然后初始值都赋值为 true 了。
赋值:
在赋值之前我们必须先定义出一个或多个变量,比如:new a = 1,这就是定义出了变量a之后赋值给了它 1。
也可以定义出多个变量,比如: new a,b,c,d 然后在后面赋值 a=1 b=2 c=2 d=4 点击“第二步按钮”查看定义出多个变量并赋值。
《判断语句》
判断语句,用于判断条件,如果条件是正确的,那么将会执行某事件,如果条件还不足够,那将绕过执行往下的语句,打个比方,这和资格的问题差不多,如果你的考试分数没有达到60分,那么你将被判断为不及格,如果你的考试分数大于或等于60分,那么你真是个好孩纸啊~~~我们用人类的语言就是这样的,可是用代码就要这样:
if(分数<60)
,
不及格~
,
else if(分数>=60)
{
好孩纸~~~
}
英语不差的都知道,if就是如果的意思,else就是否则的意思。
上面讲的不正宗,为避免大家集体攻击本作,我就把正宗的写在
了下面。。。
---------------------------------沧月天上天下霸气分割线~~~---------------------------------
每个判断都必须要有一个合格的条件,否则将作无效判断的处理,所谓条件,就是if()括号里面的函数或者变量的比较等等。
纯用if来判断:
在这里列出用一个if判断一个条件的代码:
new a = 3
new b = getClientPL(player)
if( a > b)
{
Client_cmd(player,say qvsiba)
}
上面出现的三个函数都可以在“ECX函数用法”篇查看到。下面进行翻译:定义变量a值为3,定义变量b值为现在的战斗力。如果3大于现在的战斗力,则运行下面的那个函数。
if与else组合判断:
if和else分别代表了如果和否则,那么我们要怎么正确使用它们呢,下面看代码:
if(getClientPL(player) > 1000000)
{
Client_cmd(player,cangyue!)
}
else
{
Client_cmd(player,xiaohuai)
}
解释就是如果现在的战斗力大于一百万,那么运行函数“Client_cmd(player,cangyue!)”否则运行函数
“Client_cmd(player,xiaohuai)”
循环嵌套:
循环嵌套有点蛋疼,还要我多打点字,基本上就是把if和else
结合了起来下面看代码:
new a
a=getClientHP(player)
if(a>100 && a<150)
{
setClientPL(player,1000000)
}
else if(a>100 && a<110)
{
setClientPL(player,3000000)
}
else if(a>50 && a<80)
{
setClientPL(player,5000000)
}
以上翻译就是定义常量a,常量a等于现在的HP值。如果现在HP大于100并且小于150的话那么现在的战斗力变为一百万。否则,如果现在的HP值大于100并且小于110的话,那么现在的战斗力变为三百万。否则,如果现在的HP大于50并且小于80的话,那么现在的战斗力变为五百万。
《ECX函数的用法》
首先我声明个需要注意的常出现的错误,有些哥编写时可霸气了,符号大小写不分,编译出错就把CCI给踢回收站了,我要声明的就是符号问题~比如我们写小括号必须用英文这样写“()”,你绝对不可以用中文时的“()”,还要大括号要这样“{}”,你也不能“,,”,这些就貌似我们要写“.”,而你却直接帅上一个“。”,这绝对是不可同日而语的,如果大家某人看到过我这个提醒还是出现这样的错误,那就不要对别人说看过我的教程。。。
还有就是执行的事件后面的括号里面如果跟了(player),那么你的函数中的引发者不能再出现id、Client,必须都填成player,当然,事件后面括号引发者那里面如果是id或别的那么函数中的引发
者参数也必须一样。
出现Client的话最好改成player或者id,player是只对引发者执行,id是对所有玩家执行。
#define 是宏定义,如果你的源码中出现了它,那么就让它排在调用函数库的后面吧,我对它不了解,所以不要动它,大家想学习可以百度。
在这里先说一下完整的插件结构,否则只知道用法是没有用的~
我先把插件的结构顺序列出来:
1.函数库
2.宏定义
3.全局变量
4.注册事件
5.事件
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
全局变量就是在事件之外声明出的变量,它可以参加到任何一场事件里面。
先是调用函数库,如果不调用函数库的话,那么只填写函数将起不到任何意义~同样,如果只调用函数库而不使用里面的函数的话也没有任何意义,这就和只有男滴没有女滴生不出小孩纸,或者只有女滴而没有男滴也生不出小孩纸是一个道理,只有函数库和函数正确搭配才能生出amxx插件~如果你是一位生物学者的话也可以反驳我道:“可以人工××。。。”
是这样调用的,比如必须用到的函数库“amxmodx.inc”,那么就
在源码的顶部写下#include
但是,如果你是在做人物的添加而不是做其它的添加的话就不用去填这个函数库了,因为CCI比较智能,它在你生成的同时源码内已经加上了这个函数库。
第二就是注册事件了:
接着上面的调用完毕函数库往下空一行写:
public plugin_init()
{
register_event("ResetHUD","xiaohuai","a")
}
就是这样,public plugin_init()就是一个自动执行的事件,register_event("ResetHUD","xiaohuai","a")是注册事件用的函数,用来引发那个事件。函数的意思会在下面讲。
最后就是运行事件了,运行事件分有两种,一种是用注册语句引发的,第二种遇到某种情况自动引发,原理是在我们调用的函数库里面注册的,第一种却需要我们手动注册。
这是第一种(就接着上面那个注册完了的往下写):
public xiaohuai(id)
{
(函数慢慢填。。。)
}
这是第二种(不需要用注册函数在上面注册,因为已经被函数库注册了):
public @ClassCreation ()
{
(这里面填一大堆函数)
,
嗯,这样一个完整的小型插件就编写完毕了。可以进入正题了。
---------------------------------沧月天上天下霸气分割线~~~---------------------------------
这里是几乎所有的关于七龙珠自动引发的事件列表,我只说对大家有用的,有些我懒得说:
这些关于七龙珠的事件都需要调用函数库(#include )
按B键打开许愿菜单时自动被引发:
public @InitWishList(player, Wishlevel )
{
(一堆函数)
}
愿望选择完毕后被引发:
public @CloseWishList( player )
{
(一堆函数)
}
龙珠再次出现到地图后自动引发:
public @SpawnDragonballs()
{
(一堆函数)
}
玩家得到龙珠后被引发:
public @PlayerGotDragonball( DragonballID,player )
{
(一堆函数)
}
把龙珠扔掉后被引发:
public @CanThrowDragonball(player );
{
(一堆函数)
}
按B键呼叫神龙时引发:
public @CanCallDragon(id);
,
(一堆函数)
,
---------------------------------沧月天上天下霸气分割线~~~---------------------------------
这里是关于特殊技能的自动引发的事件表,我也是刚开始研究特殊技能添加的插件,我出版的“怒气爆发插件”只能算的上是二流的特殊技能添加,而不是正宗的按0键调出的特殊技能,这一年我估计是研究不出了,因为我说过要求苏州实习的,希望大家可以比我先制作并发布出来。这个需要调用(#include )
创造新的特殊技能:
public @SpecialCreation ()
{
(一堆函数)
}
---------------------------------沧月天上天下霸气分割线~~~---------------------------------
这里是关于加入资源的自动引发的事件:
需要调用函数库 #include
如果是加入模型资源:
public plugin_precache() {
precache_model("models/???.mdl") }
如果是加入声音资源:
public plugin_precache() {
precache_sound("gohan/???.wav") }
如果是加入SPR效果资源:
先在宏定义下面定义出要使用的全局变量 new xiaohuai
然后这里加入SPR资源
public plugin_precache() {
xiaohuai = precache_sound("gohan/???.wav") }
---------------------------------沧月天上天下霸气分割线~~~---------------------------------
一下的函数需要调用函数库#include
从这里开始把函数列出来了,希望大家认真学。
先是关于记分版的分数,就是按TAB键的那个。
setClientWISHCOUNT (Client, 整数) //改变玩家的愿望等级分数
getClientWISHCOUNT ( Client )
//获取当前愿望等级
setClientDEATHS (Client,整数)
//改变当前玩家死亡分数
getClientDEATHS (Client)
//获取当前玩家死亡分数
setClientTEAM (Client,队伍参数)
//改变玩家的队伍,队伍参数:0为观察者,1为GOOD,2为EVIL
getClientTEAM(Client)
//获取当前所处队伍
下面这个是关于资源的使用。
第一个函数需要调用 #include
剩下的函数需要调用 #include
setClientMODEL (Client,模型文件夹名称)
//这个需要注意模型文件夹名称,如果你想用这个路径的模
型:models\player\gohan\gohan.mdl 那么你在模型文件夹名称那里只需要填写 "gohan" 注意这个要加引号。
entity_set_model(Client, "models/???.mdl")
//使用模型资源,这个需要上面说的关于加入资源的自动执行的事件
emit_sound(Client,CHAN_STATIC, "sound/???.wav", 1.0,
ATTN_NORM, 0, PITCH_NORM)
//使用声音资源,这个也需要上面说的关于加入资源的自动执行的事件
---------------------------------沧月天上天下霸气分割线~~~---------------------------------
下面的是关于战斗力的函数,都需要调用 #include
setClientPL (Client,整数)
//改变当前的战斗力数值
getClientPL (Client)
//获取当前的战斗力数值
setClientACPL (Client,整数)
//改变当前的战斗力,和上面那个一样,只是这个是改变真实的战斗力,比如你在曝气,曝气时的战斗力不是你真实拥有的战斗力
getClientACPL (Client)
//获取当前真实的战斗力
setClientADPL (Client,整数)
//改变死亡之后的战斗力
getClientADPL (Client)
//获取死亡之后的战斗力
setClientPLtoADPL (Client)
//改变当前战斗力为之前死亡时的战斗力
---------------------------------沧月天上天下霸气分割线~~~---------------------------------
下面是关于KI的,也就是气,很多人都把KI当成了战斗力其实战斗力的缩写是PL,PowerLevel
都需要调用 #include
setClientKI (Client,实数) //改变当前KI值,实数就是小数
getClentKI (Client)
//获取当前KI值
---------------------------------沧月天上天下霸气分割线~~~
---------------------------------
下面是关于HP的函数,需要调用 #include
需要知道的是HP最大值就是255
setClientHP (Client,整数) //改变当前HP值
getClientHP (Client)
//获取当前HP值
setClientMHP (Client,整数) //改变当前HP最大值 最大填255
getClientMHP (Client)
//获取当前HP最大值
---------------------------------沧月天上天下霸气分割线~~~---------------------------------
下面是关于速度的,需要调用 #include
setClientSPEED (Client,整数)
//改变当前速度值
getClientSPEED (Client)
//获取当前速度值
setClientSPEEDMP ( Client, Float:实数 ) //改变当前速度最大值
Float:getClientSPEEDMP (Client)
//获取当前最大速度值
---------------------------------沧月天上天下霸气分割线~~~---------------------------------
下面就不分类了,不过都是调用 #include
setClientGOD (Client,bool:参数)
//当前为无敌状态,参数0为关闭,1为开启
getClientGOD (Client)
//获取当前是否为无敌状态
setClientPROTECT ( player, bool:参数 ) //当前为None状态(未选人时的状态),参数0为关闭,1为开启
getClientPROTECT (Client)
//获取当前是否为None状态
setClientSENSUBEANS (Client,整数) //得到仙豆
getClientSENSUBEANS (Client)//判断触发者是否有仙豆
setClientFROZEN ( Client, bool:参数 ) //是否可以在游戏中进行操作,参数0为可操作,参数1为不可操作
getClientFROZEN (Client)
//判断是否可操纵
setClientFLY (Client,bool:参数) //是否浮在空中,参数0为否,参数1为是
getClientFLY (Client)
//判断现在是否浮在空中
setClientHiddenTURBO (Client,bool:参数)
//是否曝气,0为否,1为是
getClientTURBO (Client)
//判断现在是否在曝气
setClientHiddenPOWERUP (Client,bool:参数) //是否蓄气,0为否,1为是
getClientPOWERUP (Client)
//判断是否在蓄气
getClientWEAPONNAME ( Client, Weapon[ 32 ] ) //判断现在使用的技能名称,共32个数组元素,0-31
getClientMELEE (Client)
//判断是否在使用肉搏
getClientBASICMELEE (Client)
//判断是否在用鼠标右键的重击
---------------------------------沧月天上天下霸气分割线~~~---------------------------------
以下是关于融合的函数,需要调用 #include
addFusion (Name1,Name2,参数,参数,Float:实数,Float:实数型数组,Float:Animation[ 4 ] = { 0.0, 0.0, 0.0,
0.0 },Float:Modifier[ 4 ] = { 0.0, 0.0, 0.0, 0.0 },Float:实数)
//添加融合人物,第一个参数是融合的人物名称,第二个是另一个融合的人物名称,第三个参数是融合的方法,填1是用耳环融合,2是用技能融合,第四个参数是变身的阶段设置,第五个参数是需要多少战斗力,第六个参数是乘法器,最大10.0。第七个参数和第八个参数忽略它,照原来的填,最后一个函数是融合的时间,0.0为
无限
---------------------------------沧月天上天下霸气分割线~~~---------------------------------
一下是关于效果的,也是我们平常用的变身效果
需要调用 #include
AddFx( Core[0], "FxBlow" );
//白光
AddFx( Core[0], "fxLgtField", 0.4 , 1, 255, 20, 20 );
RemFx( Client, "fxLgtField", 0 ); //蓝色闪电
AddFx( Core[0], "fxWorldLight", 20, 100, 100, 100, 10, 1 );
//屏幕发光
AddFx( Core[0], "fxEntityLight", 20, 100, 100, 100, 10, 1 );
//身体发光
AddFx( Core[0], "fxBSPLight", 5 );
//屏幕变暗
AddFx( Core[0], "fxLightning","sprites/lgtning.spr", 2, 50, 150, 200, 10, 10, 250, 10, 100);
RemFx( Client, "fxLightning", 0 );
//红色闪电
AddFx( Core[0], "fxModelEntity",
"models/evolution/Auras/default.mdl", 0, 0, 10.0, 0, 0, 0, 1.0, 0.3, 0, 4 );
RemFx( Client, "fxModelEntity",0 );
//气
AddFx( Core[0], "fxPowerup", 150, 50, 200 );
RemFx( Client, "fxPowerup", 0 );
//蓄气效果
AddFx( Core[0], "fxScreendade", 50.0, 3.0, 5.0 );
//屏幕震荡
AddFx( Core[0], "fxSmokeField", "sprites/steam1.spr", 0.3, 6, 10, 10, 10);
RemFx( Client, "fxSmokeField", 0);
//黑烟
AddFx( Core[0], "fxSprite", "sprites/xflare1.spr", 15, 255, 0, 0, 0 );
//光
AddFx( Core[0], "fxSpriteBall", "sprites/ecx.BuuSmoke.spr", 0.5, 25, 255, 20, 20, 20 );
RemFx( Client, "fxSpriteBall", "sprites/ecx.BuuSmoke.spr", 0 );
//普乌身上的烟
AddFx( Client, "fxSpriteEntity","sprites/ecx.aura.ssj3.spr", 0, 0, 255.0, 10.0, 1.0, 0.4 );
RemFx( Client, "fxSpriteEntity",0 );
//超3变身的气
AddFx( Client, "fxBeamTorus", "sprites/lgtning.spr", 255, 255, 255, 255, 250, 8, 96, 0 );
//能量波
AddFx( Core[0], "fxLightning","sprites/lgtning.spr", 50, 50, 150, 211, 61, 204, 250, 20, 100, 0 );
//紫色闪电
AddFx( Core[0], "fxModelEntity",
"models/evolution/Auras/shape_C.mdl", 0, 0, 20.0, 0, 0, 0, 1.0, 0.3, 0, 2 );
//紫气氛
《人物自定义秘籍》
本作既然讲到了这一章,那么就提醒大家一下,这一章的内容既实用,又简单,基本上学会了这个内容,那就没白下本作教程。
所谓人物的自定义秘籍,就是说,比如在房间里面喊一声“信坏哥”,然后你的HP一下就变的满的不能再满,但是却只有你的这个人物才能用“信坏哥”这个秘籍,这就叫做《人物自定义秘籍》,我起的名字,不错吧。。。
好了,下面请窥视方法吧。。。不过,再这之前,本作先去吃饭去,哇哈哈哈哈哈。。。
27分钟过去了。。。本作回来了,看方法吧~
---------------------------------沧月天上天下霸气分割线~~~---------------------------------
嗯...应该从哪开始讲好呢,决定了,就从上面说的“信坏哥”开始吧~
首先,我们要做的是一个人物,在使用时按“Y”键来说话,说“xinhuaige”,然后这个人就得到了一百万的战斗力~~~OK,看步骤:
1.使用CCI生成一个简单的人物,用于我们的这次试验,在生成文件中找到名为“.ClassExtension”的core文件并用记事本打开它。
2.打开后可以看见这段代码“PluginInit ()
register_plugin( CX_Plugin, CX_Version, CX_Author );”,
我们把它改成“PluginInit ()
{
register_plugin( CX_Plugin, CX_Version, CX_Author );
register_clcmd("say xinhuaige","shijian"); }”
3.改完后按照函数“register_clcmd”的用法,“say xinhuaige”是控制台激活“shijian”的命令,我们现在要开始编写“shijian”这个事件。
代码如下:
public shijian(player)
{
new mhp = getClientMHP(player)
setClientHP (player,mhp)
}
OK了,整个源码连在一起意思就是这个人物按“y”键说“xinhuaige”然后就执行“shijian”这场事件,这场事件的意思是
先定义mhp的值为当前人物的HP最大值,然后改变当前HP值为当前人物的HP最大值的数值。
以上就是人物的自定义秘籍,挺简单的吧,难点的等以后在论坛问我吧,以上的代码如果大家知道变通,那么就还能修改出很多中自定义秘籍。
《人物融合》
这篇比较特别,是一个朋友至今不会做融合用的人物,所以才决定把教程加上融合篇的,不知大家会不会,会的话可以选择直接忽略。。。
-----------------------------------------------------------
-----------------------------------
第一步,打开CCI插件生成器
第二步,开始生成一个新的人物
第三步,在人物生成的界面刚开始的窗口中对名为“Fusion”的多选框打上一个对钩,其它选项随意
第四步,设置完人物后用记事本打开此人物的源码文件夹里的名为“.ClassExtension”的文件
第五步,在最底下的一行加上代码,代码如下:
{
addFusion (
"A18",
"Cell",
FUSION_DANCE,
{ 0, 0, 0 },
1500000,
2.0,
Float:{ 0.8, 0.8, 216.0, 216.0 },
Float:{ 0.0, 0.0, 0.0, 0.0 },
3.0
);
addFusion (
"A18",
"Cell",
FUSION_DANCE,
{ 1, 1, 1 },
2300000,
2.0,
Float:{ 0.8, 0.8, 216.0, 216.0 },
Float:{ 0.0, 0.0, 0.0, 0.0 },
3.0
);
}
以上是使用融合技能来融合的代码,如果是想用耳环合体进行融合就加一下的代码:
{
addFusion (
"A18",
"Cell",
FUSION_POTARA,
{ 0, 0, 0 },
1500000,
2.0,
Float:{ 0.8, 0.8, 216.0, 216.0 },
Float:{ 0.0, 0.0, 0.0, 0.0 },
3.0
);
addFusion (
"A18",
"Cell",
FUSION_POTARA,
{ 1, 1, 1 },
2300000,
2.0,
Float:{ 0.8, 0.8, 216.0, 216.0 },
Float:{ 0.0, 0.0, 0.0, 0.0 },
3.0
);
}
这些代码都是西鲁和18号进行融合的,大家想改可以融合的人物就把代码里面的人物名称改成想要的就行了。