您尚未
登入
註冊
忘記密碼
搜尋
贊助
贊助本站
數位公仔
紀念T恤
紀念馬克杯
廣告
刊登廣告
廣告價格
線上申請刊登
用雅幣刊登
免費刊登
目前客戶
簡訊
簡訊說明
購買金幣
發送簡訊
預約簡訊
發送記錄
好友通訊
罐頭簡訊
論命
數位論命舘
免費排盤工具
葫蘆墩 優生造命
葫蘆墩 八字命書
影音論命(葫蘆墩)
影音占卜(葫蘆墩)
購買金幣
星座分析
孔明神數
周公解夢
數位命理街
娛樂
影 像 行 腳
數 位 造 型
數 位 畫 廊
心 情 日 記
公 益 彩 券
送生日蛋糕
俄羅斯方塊
四 川 省
猜 數 字
比 大 小
泡 泡 龍
許 願 池
萬 年 曆
經 期 計 算
體 重 測 量
音 樂 點 播
衛 星 地 圖
時間戳字幕
男女聊天室
求助
論壇守則
會員等級
會員權限
語法教學
常見問題
最新活動
打工賺雅幣
最近
國考&法律
網友自唱
修行&武術
驚奇搞笑
理財專區
國內旅遊
法律討論
天文照片分享
上班一族
五術哈啦
-最近瀏覽-
孩子的好玩..
徐懷玉 友..
開顯遍智妙道
芒果現採
燒燙傷沒「..
在台灣自助..
首頁
新版首頁(全頁)
傳統首頁(全頁)
新版首頁(選單)
傳統首頁(選單)
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
榮會及電子報討論
-最近版區-
國考&法律
網友自唱
修行&武術
驚奇搞笑
理財專區
國內旅遊
法律討論
天文照片分享
上班一族
五術哈啦
-最近瀏覽-
孩子的好玩..
徐懷玉 友..
開顯遍智妙道
芒果現採
燒燙傷沒「..
在台灣自助..
»
電玩遊戲
遊戲歡樂包
CS討論
Steam
MineCraft
東方Project
英雄聯盟LOL
單機遊戲
WebGame
線上遊戲1
線上遊戲2
電視遊樂器
掌上型遊戲
模擬器遊戲
»
CS討論
CS插件區
CS模組區
CS地圖區
CS教學區
CS團隊/伺服器
槍模研究區
CS提問區
»
CS教學區
»
创造自己的事件(中高阶教程)
手機版
訂閱
地圖
簡體
您是第
5268
個閱讀者
可列印版
加為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.025962 second(s),query:16 Gzip disabled
本站由
瀛睿律師事務所
擔任常年法律顧問 |
免責聲明
|
本網站已依台灣網站內容分級規定處理
|
連絡我們
|
訪客留言