chat room handlers instead of a function hook, this fixes communication breakdown
This commit is contained in:
Mute 2022-10-24 18:03:26 +00:00
parent f911c05073
commit 41b2029efd
1 changed files with 22 additions and 15 deletions

View File

@ -1,6 +1,6 @@
// ==UserScript== // ==UserScript==
// @name MBCHC // @name MBCHC
// @version dev.3 // @version dev.4
// @description Mute's Bondage Club Hacks Collection // @description Mute's Bondage Club Hacks Collection
// @author codename.mute@proton.me // @author codename.mute@proton.me
// @namespace https://code.fleshless.org/mute/ // @namespace https://code.fleshless.org/mute/
@ -24,7 +24,7 @@
if (!window.AsylumGGTSSAddItems) throw "AsylumGGTSSAddItems() not found, aborting MBCHC loading" if (!window.AsylumGGTSSAddItems) throw "AsylumGGTSSAddItems() not found, aborting MBCHC loading"
if (window.MBCHC) throw "MBCHC found, aborting loading" if (window.MBCHC) throw "MBCHC found, aborting loading"
window.MBCHC = { window.MBCHC = {
VERSION: "dev.3", VERSION: "dev.4",
TARGET_VERSION: "R85", TARGET_VERSION: "R85",
NEXT_MESSAGE: 1, NEXT_MESSAGE: 1,
LOG_MESSAGES: false, LOG_MESSAGES: false,
@ -314,7 +314,7 @@
}, },
receive: function(data) { receive: function(data) {
let char = this.cid2char(data.Sender) let char = this.cid2char(data.Sender)
if (char.IsPlayer()) return // this is our own message, sent back to us if (char.IsPlayer()) return true // this is our own message, sent back to us
let payload = this.ensure("Empty message", () => data.Dictionary[0]) let payload = this.ensure("Empty message", () => data.Dictionary[0])
switch (payload.type) { switch (payload.type) {
case "greetings": case "hello": case "greetings": case "hello":
@ -323,6 +323,7 @@
break break
default: // if we don't know the type it may be from a newer version default: // if we don't know the type it may be from a newer version
} }
return true
}, },
hello: function(char = null) { hello: function(char = null) {
let payload = {type: "greetings", value: window.Player.MBCHC} let payload = {type: "greetings", value: window.Player.MBCHC}
@ -594,18 +595,6 @@
window.MBCHC.update_char(nextargs[0]) window.MBCHC.update_char(nextargs[0])
return(result) return(result)
}) })
window.MBCHC.sdk.hookFunction("ChatRoomMessageInvolvesPlayer", 0, (nextargs, next) => {
let data = nextargs[0]
if (!data.MBCHC_ID) {
data.MBCHC_ID = window.MBCHC.NEXT_MESSAGE
window.MBCHC.NEXT_MESSAGE += 1
if (window.MBCHC.LOG_MESSAGES) console.debug(data)
if (("ReceiveSuitcaseMoney" === data.Content) && ("Hidden" === data.Type)) { window.MBCHC.LAST_HACKED = data.Sender }
if (("ServerEnter" === data.Content) && ("Action" === data.Type) && (data.Sender === window.Player.cid)) { window.MBCHC.player_enters_room() }
if (("MBCHC" === data.Content) && ("Hidden" === data.Type)) { window.MBCHC.receive(data) }
}
return(next(nextargs))
})
window.MBCHC.sdk.hookFunction("ChatRoomReceiveSuitcaseMoney", 0, (nextargs, next) => { window.MBCHC.sdk.hookFunction("ChatRoomReceiveSuitcaseMoney", 0, (nextargs, next) => {
let result = next(nextargs) let result = next(nextargs)
if (window.MBCHC.AUTOHACK_ENABLED && window.MBCHC.LAST_HACKED) { if (window.MBCHC.AUTOHACK_ENABLED && window.MBCHC.LAST_HACKED) {
@ -695,6 +684,24 @@
return(next(nextargs)) return(next(nextargs))
}) })
// Chat room handlers
window.ChatRoomRegisterMessageHandler({ Priority: -220, Description: "MBCHC preprocessor",
Callback: (data, sender, msg, metadata) => {
data.MBCHC_ID = window.MBCHC.NEXT_MESSAGE
window.MBCHC.NEXT_MESSAGE += 1
if (window.MBCHC.LOG_MESSAGES) console.debug({data, sender, msg, metadata})
}
})
window.ChatRoomRegisterMessageHandler({ Priority: -219, Description: "MBCHC room enter hook",
Callback: (data, sender, msg, metadata) => { if (("Action" === data.Type) && ("ServerEnter" === data.Content) && (data.Sender === window.Player.cid)) window.MBCHC.player_enters_room() }
})
window.ChatRoomRegisterMessageHandler({ Priority: -219, Description: "MBCHC specific consumer",
Callback: (data, sender, msg, metadata) => { if (("Hidden" === data.Type) && ("MBCHC" === data.Content)) return window.MBCHC.receive(data) }
})
window.ChatRoomRegisterMessageHandler({ Priority: -219, Description: "MBCHC autohack lookup",
Callback: (data, sender, msg, metadata) => { if (("Hidden" === data.Type) && ("ReceiveSuitcaseMoney" === data.Content)) window.MBCHC.LAST_HACKED = data.Sender }
})
// MAIN SCREEN TURN ON // MAIN SCREEN TURN ON
if (window.MBCHC.need_load_hook(window.CurrentModule, window.CurrentScreen)) { if (window.MBCHC.need_load_hook(window.CurrentModule, window.CurrentScreen)) {
window.MBCHC.remove_load_hook = window.MBCHC.sdk.hookFunction("AsylumGGTSSAddItems", 0, (nextargs, next) => {window.MBCHC.loader(); return(next(nextargs))}) window.MBCHC.remove_load_hook = window.MBCHC.sdk.hookFunction("AsylumGGTSSAddItems", 0, (nextargs, next) => {window.MBCHC.loader(); return(next(nextargs))})