实战教程(一)导弹插件制作 ―― 浅谈实体关系
您是否想过自己编写导弹插件?是否看到导弹插件的源代码就感到恐怖?――完全没有必要!今天Hydralisk就为大家简单讲述一下如何自己动手制作自己的导弹插件!如果您有学习的兴趣――请镇定下来,其实这是个很简单的插件。
仅仅支持Amx Mod,不支持 AMXX
第一阶段 普通导弹插件制作
技术难度系数:★★★☆
理解难度系数:★★★★
首先介绍一下导弹插件制作流程,以便大家理清思路
1-简单初始化程序,监视控制台中的导弹发射命令(本教程的命令为missile_launch)
2-如果玩家在控制台中输入missile_launch则创建实体,给实体命名为“hy_missile”(这个名字大家可以自己起),给实体“穿上”导弹的“衣服”,给实体一个初速度,给实体一个拉线效果。
3-监视实体碰撞,如果发生碰撞的两个实体其中一个名字为“hy_missile”,则这个叫“hy_missile”的实体的位置创建爆炸的视觉效果,然后按距离平方的比例给玩家减血,创建“疼痛罗盘”效果(就是玩家被攻击的时候屏幕上的红色的指示敌人方向的东西),删除实体
主要就这么3步,简单吧?
下面按流程具体解释实现方法。
第一步,简单初始化程序 #include <amxmod>
#include <amxmisc>
#include <vexd_utilities>
#include <vexdum_stock>
new beam, boom
public plugin_precache(){
precache_model("models/rpgrocket.mdl")
beam = precache_model("sprites/laserbeam.spr")
boom = precache_model("sprites/zerogxplode.spr")
}
public plugin_init(){
register_plugin("Rocket example","0.1","Hydralisk")
register_clcmd("missile_launch","ms_launch",0,"Launch a missile")
return PLUGIN_CONTINUE
}
public ms_launch(id){
}
public entity_touch(entity1,entity2){
}
复制代码其中 #include <amxmod>
#include <amxmisc>
复制代码是所有AMX插件必须的 #include <vexd_utilities>
#include <vexdum_stock>
复制代码是AMX Mod里控制实体的必要模块。 new beam, boom
public plugin_precache(){
precache_model("models/rpgrocket.mdl")
beam = precache_model("sprites/laserbeam.spr")
boom = precache_model("sprites/zerogxplode.spr")
}
复制代码其中,new beam, boom 是插件申请的两个全局变量,所谓全局变量,就是这两个变量的值是整个插件公用的,而不是某个过程里面的值。
plugin_precache 是AMX自带的事件,这个事件在CS执行预存储的时候(CS1.6里显示precaching resources时)被调用,这里,precache_model("models/rpgrocket.mdl")是让CS预存储火箭炮炮弹的皮肤,beam = precache_model("sprites/laserbeam.spr")这个是让CS预存储火箭炮弹发射后,后面的白烟的spr文件,并将存储索引号码存入全局变量beam中,boom = precache_model("sprites/zeroxplode.spr")和 beam的那个差不多,只不过预存储的是爆炸效果的spr文件。 public plugin_init(){
register_plugin("Rocket example","0.1","Hydralisk")
register_clcmd("missile_launch","ms_launch",0,"Launch a missile")
return PLUGIN_CONTINUE
您是否想过自己编写导弹插件?是否看到导弹插件的源代码就感到恐怖?――完全没有必要!今天Hydralisk就为大家简单讲述一下如何自己动手制作自己的导弹插件!如果您有学习的兴趣――请镇定下来,其实这是个很简单的插件。
仅仅支持Amx Mod,不支持 AMXX
第一阶段 普通导弹插件制作
技术难度系数:★★★☆
理解难度系数:★★★★
首先介绍一下导弹插件制作流程,以便大家理清思路
1-简单初始化程序,监视控制台中的导弹发射命令(本教程的命令为missile_launch)
2-如果玩家在控制台中输入missile_launch则创建实体,给实体命名为“hy_missile”(这个名字大家可以自己起),给实体“穿上”导弹的“衣服”,给实体一个初速度,给实体一个拉线效果。
3-监视实体碰撞,如果发生碰撞的两个实体其中一个名字为“hy_missile”,则这个叫“hy_missile”的实体的位置创建爆炸的视觉效果,然后按距离平方的比例给玩家减血,创建“疼痛罗盘”效果(就是玩家被攻击的时候屏幕上的红色的指示敌人方向的东西),删除实体
主要就这么3步,简单吧?
下面按流程具体解释实现方法。
第一步,简单初始化程序 #include <amxmod>
#include <amxmisc>
#include <vexd_utilities>
#include <vexdum_stock>
new beam, boom
public plugin_precache(){
precache_model("models/rpgrocket.mdl")
beam = precache_model("sprites/laserbeam.spr")
boom = precache_model("sprites/zerogxplode.spr")
}
public plugin_init(){
register_plugin("Rocket example","0.1","Hydralisk")
register_clcmd("missile_launch","ms_launch",0,"Launch a missile")
return PLUGIN_CONTINUE
}
public ms_launch(id){
}
public entity_touch(entity1,entity2){
}
复制代码其中 #include <amxmod>
#include <amxmisc>
复制代码是所有AMX插件必须的 #include <vexd_utilities>
#include <vexdum_stock>
复制代码是AMX Mod里控制实体的必要模块。 new beam, boom
public plugin_precache(){
precache_model("models/rpgrocket.mdl")
beam = precache_model("sprites/laserbeam.spr")
boom = precache_model("sprites/zerogxplode.spr")
}
复制代码其中,new beam, boom 是插件申请的两个全局变量,所谓全局变量,就是这两个变量的值是整个插件公用的,而不是某个过程里面的值。
plugin_precache 是AMX自带的事件,这个事件在CS执行预存储的时候(CS1.6里显示precaching resources时)被调用,这里,precache_model("models/rpgrocket.mdl")是让CS预存储火箭炮炮弹的皮肤,beam = precache_model("sprites/laserbeam.spr")这个是让CS预存储火箭炮弹发射后,后面的白烟的spr文件,并将存储索引号码存入全局变量beam中,boom = precache_model("sprites/zeroxplode.spr")和 beam的那个差不多,只不过预存储的是爆炸效果的spr文件。 public plugin_init(){
register_plugin("Rocket example","0.1","Hydralisk")
register_clcmd("missile_launch","ms_launch",0,"Launch a missile")
return PLUGIN_CONTINUE