13号避难所

 找回密码
 立即注册
搜索
查看: 2382|回复: 13
打印 上一主题 下一主题

问一个改武器的问题...

[复制链接]
楼主
发表于 2020-4-8 13:35:08 | 显示全部楼层
我直接改戰鬥刀的話沒啥問題,圖中我唯一注意到的問題是你601的proto ID仍然是用舊的236
沙发
发表于 2020-4-8 18:56:51 | 显示全部楼层
我剛才試出你的問題了,我的情況是要先攻擊(投擲)一次才會發生。
原因看來是你沒設定投射物(圖中的Project PID)
板凳
发表于 2020-4-9 04:20:33 | 显示全部楼层
hellsinger 发表于 2020-4-9 02:33
额...可是如果选择投掷物的话,攻击之后就会把刀丢出去,我是想做出可以无限投掷的并且可远程可近战的刀 ...

投擲武器一定得有投射物才不會有近戰攻擊無法使用的問題,你想無限投擲(遠程攻擊)的話不如直接把刀的攻擊距離提高當成用劍氣攻擊算了。
不然就是寫hook script在執行攻擊之後送給玩家另一把刀,然後刪除掉在地上的前一把。

地板
发表于 2020-4-10 21:05:22 | 显示全部楼层
hellsinger 发表于 2020-4-10 13:30
算了呀...送武器倒是会写,删除丢出去的武器完全不知道怎么搞...
然后我以“手中是否持有这个新武器”作 ...

如果不要求“漂亮“的話不難,我直接把清除程序hook在Keypress和MouseClick,反正攻擊完不管怎樣一定會點擊或按鍵盤切換鼠標做其他事,那時再清就夠了。拿一般飛刀做例子:


為什麼不把清除程序hook在CombatDamage是因為拿飛刀去投門之類的物體不會被呼叫到,這樣一直丟門就等於有無限把刀在地上了。
另外你新武器的Proto ID仍然是舊的236而不是新的601,所以你要是寫pid == 601之類的判斷當然沒用。如果你要做新武器的話在Proto Manager內用選單建立新proto,不要去手動複製proto檔,不然你就得拿hex editor自己改了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
5#
发表于 2020-4-11 11:31:20 | 显示全部楼层
現在完全不建議用hs_開頭的那些名稱固定的hook腳本(對它們的支援還留著純粹只是為了兼容舊mod),想用某個hook就用register_hook_proc把在gl腳本某個程序註冊為hook觸發。
你想要在背景不斷跑檢查盡可能即時移除地上刀子的話,原本的gl腳本稍微修改一下就行了。


玩家的STAT_unused屬性從來沒用處,但就算這樣也別拿它來當數值暫存用。
你真的要有一個必須留在存檔內的變數就用set_sfall_global建個新變數(一定要正好8個字元,不能多不能少),然後用get_sfall_global_int/float讀取數值。
不過你今天這種場合根本不需要那些東西,一個單純在腳本中的變數(cleanOnce)就夠了,不會在存檔留下無用內容。
sfall全域變數是很方便,但能不需要就盡可能別用,實際上沒那麼多資料需要保留,絕大多數都是gl腳本載入當下初始化就夠了。

EDIT: 更省工的方式:

這樣腳本就不用一直在背景跑空迴圈。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
6#
发表于 2020-4-12 13:51:54 | 显示全部楼层
空轉不會怎樣,就只是效能浪費而已,雖然以這年頭的電腦能力來說這擔憂算是多餘的就是了。
事實上遊戲背景本來就有一堆程序在重覆執行,例如各角色腳本內的critter_p_proc執行頻率就相當高。

你想把一個hook的參數傳給其他程序用,就在腳本一開頭宣告個全域變數把資料放進去,讓所有程序都能取用就好了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Archiver|13号避难所

GMT+8, 2024-5-4 10:01 , Processed in 0.057721 second(s), 13 queries .

快速评论 返回顶部 返回列表