您尚未
登入
注册
忘记密码
搜寻
赞助
赞助本站
数位公仔
纪念T恤
纪念马克杯
广告
刊登广告
广告价格
线上申请刊登
用雅币刊登
免费刊登
目前客户
简讯
简讯说明
购买金币
发送简讯
预约简讯
发送记录
好友通讯
罐头简讯
论命
数位论命馆
免费排盘工具
葫芦墩 优生造命
葫芦墩 八字命书
影音论命(葫芦墩)
影音占卜(葫芦墩)
购买金币
星座分析
孔明神数
周公解梦
数位命理街
娱乐
影 像 行 脚
数 位 造 型
数 位 画 廊
心 情 日 记
公 益 彩 券
送生日蛋糕
俄罗斯方块
四 川 省
猜 数 字
比 大 小
泡 泡 龙
许 愿 池
万 年 历
经 期 计 算
体 重 测 量
音 乐 点 播
卫 星 地 图
时间戳字幕
男女聊天室
求助
论坛守则
会员等级
会员权限
语法教学
常见问题
最新活动
打工赚雅币
最近
哈啦旧文区
笑话集锦
数位影视
线上游戏1
新品测试及..
CS插件区
国考&法律
CS模组区
传基居士-..
五术哈拉精..
-最近浏览-
试试各位智商
验算
日本美女议..
第一款 接..
光碟机巨擘..
[ZP]新类型..
首页
新版首页(全页)
传统首页(全页)
新版首页(选单)
传统首页(选单)
MyChat 数位男女
命理风水
15
星侨五术软体
4
葫芦墩命理网
5
命理问答
9
四柱八字
1
紫微斗数
1
姓名学
手面相
易经占卜
1
风水研讨
1
择日&三式
1
西洋占星
无视论塔罗牌
10
修行&武术
1
中医研讨
五术哈啦
1
电脑资讯
13
硬体讨论
5
超频 & 开箱
3
数位生活
2
PDA 讨论
手机讨论区
软体推荐
2
软体讨论
6
Apple 讨论
1
Unix-like
网路&防毒
2
程式设计
网站架设
4
电脑教学资源
生活休闲
14
休闲哈啦
7
感情世界
2
上班一族
5
国考&法律
7
生活医学
4
运动体育
1
单车讨论
1
钓鱼讨论
6
旅游讨论
4
天文观星
3
摄影分享
8
图片分享
4
数位影视
2
笑话集锦
3
兴趣嗜好
13
文学散文
7
绘图艺术
1
布袋戏
3
动漫画讨论
3
美食天地
6
理财专区
心理测验
1
汽、机车
3
宠物园地
模型&手工艺
4
花卉园艺
魔术方块
独轮车专区
电玩游戏
13
游戏欢乐包
4
CS讨论
8
Steam
3
MineCraft
2
东方Project
英雄联盟LOL
1
单机游戏
2
WebGame
3
线上游戏1
6
线上游戏2
5
电视游乐器
1
掌上型游戏
2
模拟器游戏
1
工商服务
6
虚拟城市
7
好康分享
新品贩售
二手拍卖
1
租屋&找屋
工商建议区
1
站务专区
10
最新活动
活动成果
数位造型
心情日记
个人图库
新人报到练习
论坛问题建议
1
荣会及电子报讨论
-最近版区-
哈啦旧文区
笑话集锦
数位影视
线上游戏1
新品测试及..
CS插件区
国考&法律
CS模组区
传基居士-..
五术哈拉精..
-最近浏览-
试试各位智商
验算
日本美女议..
第一款 接..
光碟机巨擘..
[ZP]新类型..
»
电玩游戏
游戏欢乐包
CS讨论
Steam
MineCraft
东方Project
英雄联盟LOL
单机游戏
WebGame
线上游戏1
线上游戏2
电视游乐器
掌上型游戏
模拟器游戏
»
CS讨论
CS插件区
CS模组区
CS地图区
CS教学区
CS团队/伺服器
枪模研究区
CS提问区
»
CS教学区
»
创造自己的事件(中高阶教程)
手机版
订阅
地图
繁体
您是第
5276
个阅读者
可列印版
加为IE收藏
收藏主题
上一主题
|
下一主题
级别:
*
x
x
分享:
▼
x
1
[插件] 创造自己的事件(中高阶教程)
此文章被评分,最近评分记录
财富:200 (by amore12) | 理由:
赞..^^
x
2
[楼 主]
|
Posted:
2014-07-29 11:03 |
xhsu
级别:
路人甲
x2
x6
分享:
▲
▼
4.第二步
事件注册完了,但是我们并没有规定什么时候触发啊?所以我们得触发他。
(这里我们以爆头触发为例)
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
Post_Gift = CreateMultiForward("amx_event_head_shot", ET_IGNORE, FP_CELL, FP_CELL)
register_event("DeathMsg","EventDeath","a","3=1","5=0") //这样过滤,就会仅仅触发爆头
}
public EventDeath()
{
new iVictim = read_data(2)
new iAttacker = read_data(1)
fm_set_user_money(iAttacker, get_pdata_int(iAttacker, m_pdata_iMoney)+1000, 1)
ExecuteForward(Post_Gift, g_fwDummyResult, iVictim, iAttacker)
}
这样,我们在给爆头额外奖励的同时,也会触发一个事件。
(Post事件的特性也体现在这里——所有东西都处理完毕,才触发)
我们来讲解一下ExecuteForward()
首先第一项,就是我们在注册事件中的事件返回值了——Post_Gift = CreateMultiForward()
第二项……嗯,还记得我说过,即使一个事件也需要两个变量吗?就是这样。即使你使用了ET_IGNORE,你也需要一个容器来盛放“0”这个没用的返回值。
(g_fwDummyResult这个东西变成全局的其实也没关系,因为每触发一个事件,就会被赋值一次,不会互相干扰返回值)
然后第三项到第N项,就是我们的事件基本参数,也就是刚刚FP_CELL等等一一对应的数字。
(注意:刚刚你用了多少个FP_XXX,这里就必须给满所有参数,否则会出错。)
x
0
[1 楼]
From:欧洲 |
Posted:
2014-07-29 11:11 |
xhsu
级别:
路人甲
x2
x6
分享:
▲
▼
5.结束了?没有!Pre事件!
以上就是一个Post事件的来历。
(以下部分选修~~)
那么,有人要问,Pre事件呢?
其实对于插件来说,Pre事件和Post事件没差多少。你让不让Pre事件打断,都是你说了算的。
我们来看看:
new g_fwDummyResult, Post_Gift, Pre_Gift
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
Post_Gift = CreateMultiForward("amx_event_head_shot", ET_IGNORE, FP_CELL, FP_CELL)
Pre_Gift = CreateMultiForward("amx_hook_head_shot", ET_CONTINUE)
register_event("DeathMsg","EventDeath","a","3=1","5=0")
}
public EventDeath()
{
ExecuteForward(Pre_Gift, g_fwDummyResult) //执行Pre事件
if(g_fwDummyResult) return //如果Pre事件存在返回值,那么主插件也返回
new iVictim = read_data(2)
new iAttacker = read_data(1)
fm_set_user_money(iAttacker, get_pdata_int(iAttacker, m_pdata_iMoney)+1000, 1)
ExecuteForward(Post_Gift, g_fwDummyResult, iVictim, iAttacker)
}
这样一来,大家都明白了吧?在g_fwDummyResult被赋予返回值了以后,一旦不为0,那就取消主插件内事件的执行。
所以,返回值其实可以做很多事……比如你要在一个think刷速度的插件内控制速度,可以选择把速度设定为返回值最高的那个插件。
等等等等……但总而言之,如果你不写上if(g_fwDummyResult) return 那么你的Pre事件也打不断。所以,Pre到底能不能打断,全看你。
这就是forward事件的创造,学会了吗?如果还不会,可以回复我~
以上
x
0
[2 楼]
From:欧洲 |
Posted:
2014-07-29 11:20 |
xhsu
级别:
路人甲
x2
x6
分享:
▲
▼
顺便说一下对本论坛的看法(个人)
1.插件都不开源……Allied Modders 的插件都必须开源,不开源还可能删帖……(而且也无权限)
2.教学文都要威望……我有点怀疑这几位是否真心想让新人学习插件(哪怕是教怎么用if,else,new的教学文也是如此)
3.能下载的插件都有一行讨厌的字飘来飘去,下载者如果要做版本会直接pass,如果个人娱乐玩也愉快不到哪去,最终很可能会没人用……当初你写这个插件是让大家都不用,还是希望广为流传?
4.似乎以上都是为了防止盗文啊?嗯……无论各位怎么珍爱自己的劳动成果,这毫无错误。但是我要表明我的态度:我的插件没有版权,欢迎改PLUGIN_AUTHOR或者显示一行字说是某某人写的;我的文章没有版权,欢迎四处转载不标明出处……
以上
x
3
[3 楼]
From:欧洲 |
Posted:
2014-07-29 11:31 |
i-c0112
级别:
小有名气
x6
x194
分享:
▲
▼
要不要再补齐一下 提醒大家 要发布 forward 的 宣告标头.inc??
如果能再稍微花时间排版 整齐点 让有心学习的人能更快看懂
除此之外 这篇已经确实发挥教学效果了 真的感谢分享
愿意花时间帮助他人~~
至于插件和教学文 存在不低的门槛 这样的问题
说真的原因其实是缺乏正式管道让创作人保护自己的权利
所以才会靠这种 不分好坏 一概把 有意获得源码的人 排挤在外 这种下下策
其实大家没有一个不喜欢讨论自己的成果 尤其各位应该都是满腔热血的在coding吧
x
0
[4 楼]
From:台湾中华电信股份有限公司 |
Posted:
2014-08-01 20:49 |
xhsu
级别:
路人甲
x2
x6
分享:
▲
▼
抱歉忘了这一段~关于forward的,感谢楼上提醒~
6.在inc里面:
既然事件已经存在了,那么我们怎么让别的插件调用它呢?
当然就是我们最初提到的forward啦!
我们还是以上面为例!
(我原来还不会用code呢,感谢Nailaz教我!)
复制程式
forward amx_hook_head_shot() forward amx_event_head_shot(iVictim, iAttacker)
这个怎么来的呢?
还记得我们上面的CreateMultiForward("amx_hook_head_shot", ET_CONTINUE)吗?
forward里面的主要部分就是注册事件时引号内的内容,括弧里面的对应法则就是ExecuteForward里面除了返回值以外的部分,按顺序写下来~
这样,整个事件就算是完成了~
(注:forward可以放在inc里然后用#include;当然也可以放在插件头!)
x
0
[5 楼]
From:欧洲 |
Posted:
2014-08-04 09:05 |
xuqiang52133
级别:
初露锋芒
x1
x32
分享:
▲
我有一个代码,能帮我加个东西吗?我的 QQ373734484。加我可以吗/我想问你点问题
我要暴你头。。。。。
x
0
[6 楼]
From:没有资料 |
Posted:
2014-11-26 21:51 |
MyChat 数位男女
»
CS教学区
Powered by
PHPWind
v1.3.6
Copyright © 2003-04
PHPWind
Processed in 0.013446 second(s),query:16 Gzip disabled
本站由
瀛睿律师事务所
担任常年法律顾问 |
免责声明
|
本网站已依台湾网站内容分级规定处理
|
连络我们
|
访客留言