Commit a8d65bed authored by TanakaKotoha's avatar TanakaKotoha

update

parent 9627e030
{ {
"id": "extraBGMs_DJTROOPERS", "id": "extraBGMs_DJTROOPERS",
"version": "1.2.0", "version": "1.3.0",
"name": "IIDX 15 DJ TROOPERS BGM +", "name": "IIDX 15 DJ TROOPERS BGM",
"author": ["Tachibana","Altivias"], "author": ["Tachibana","Altivias"],
"description": "beatmania IIDX 15 DJ TROOPERS BGM + 经典雀龙门音效。", "description": "beatmania IIDX 15 DJ TROOPERS BGM经典雀龙门音效。",
"dir": "assets", "dir": "assets",
"preview": "preview.png", "preview": "preview.jpg",
"dependencies": {},
"entry": "script.js",
"resourcepack": [ "resourcepack": [
"audio/audio_lobby/matchcomplete.mp3", "audio/audio_lobby/matchcomplete.mp3",
"audio/audio_mj/btn_appear.mp3", "audio/audio_mj/btn_appear.mp3",
...@@ -32,26 +34,34 @@ ...@@ -32,26 +34,34 @@
"audio/audio_mj/showtile.mp3", "audio/audio_mj/showtile.mp3",
"audio/audio_mj/winlose.mp3", "audio/audio_mj/winlose.mp3",
"audio/audio_mj/zimo.mp3", "audio/audio_mj/zimo.mp3",
"audio/music/lobby.mp3", "audio/DJTROOPERS/lobby.mp3",
"audio/my_music/0.mp3", "audio/DJTROOPERS/1.mp3",
"audio/my_music/1.mp3", "audio/DJTROOPERS/2.mp3",
"audio/my_music/2.mp3", "audio/DJTROOPERS/3.mp3",
"audio/my_music/3.mp3", "audio/DJTROOPERS/4.mp3",
"audio/my_music/4.mp3", "audio/DJTROOPERS/5.mp3",
"audio/my_music/5.mp3", "audio/DJTROOPERS/6.mp3",
"audio/my_music/6.mp3", "audio/DJTROOPERS/7.mp3",
"audio/my_music/7.mp3", "audio/DJTROOPERS/8.mp3",
"audio/my_music/e1.mp3", "audio/DJTROOPERS/9.mp3",
"audio/my_music/e2.mp3", "audio/DJTROOPERS/10.mp3",
"audio/my_music/e3.mp3", "audio/DJTROOPERS/11.mp3",
"audio/my_music/h1.mp3", "audio/DJTROOPERS/dorm.mp3",
"audio/my_music/h2.mp3", "audio/DJTROOPERS/factory.mp3",
"audio/my_music/h3.mp3", "audio/DJTROOPERS/few0.mp3",
"audio/my_music/p.mp3", "audio/DJTROOPERS/few1.mp3",
"audio/my_music/r1.mp3", "audio/DJTROOPERS/few2.mp3",
"audio/my_music/r2.mp3", "audio/DJTROOPERS/intermission.mp3",
"audio/my_music/r3.mp3" "audio/DJTROOPERS/lobby.mp3",
], "audio/DJTROOPERS/lose.mp3",
"dependencies": {}, "audio/DJTROOPERS/my_rich0.mp3",
"entry": "script.js" "audio/DJTROOPERS/my_rich1.mp3",
} "audio/DJTROOPERS/rich1-0.mp3",
\ No newline at end of file "audio/DJTROOPERS/rich2-0.mp3",
"audio/DJTROOPERS/rich3-0.mp3",
"audio/DJTROOPERS/shop.mp3",
"audio/DJTROOPERS/special.mp3",
"audio/DJTROOPERS/title.mp3",
"audio/DJTROOPERS/win.mp3"
]
}
// 增强型BGM,作者 rin93 改造 青龙圣者 ,bin // 扩展 BGM,作者 Handle,部分参考 rin93 的源码
if (!!view && !!uiscript) { if (!!view && !!uiscript) {
const musicDir = 'music/' const musicDir = 'DJTROOPERS/'
//h1为终局精算点正分,h2为Top,h3为精算点负分;r1为他家立直,r2为自家立直,r3为追立;连庄BGM不变,e1-e3未使用。
// 正负得点播放不同 BGM
const _showBackup = uiscript.UI_GameEnd.prototype.show const _showBackup = uiscript.UI_GameEnd.prototype.show
uiscript.UI_GameEnd.prototype.show = function () { uiscript.UI_GameEnd.prototype.show = function () {
var musicPlayerFlag = false var musicPlayerFlag = false
view.DesktopMgr.Inst.gameEndResult.players.forEach((player, index) => { view.DesktopMgr.Inst.gameEndResult.players.forEach((player, index) => {
if (player.seat == view.DesktopMgr.Inst.seat) { if (player.seat == view.DesktopMgr.Inst.seat) {
if (index == 0) { if (player.total_point >= 0) {
view.AudioMgr.PlayMusic('my_music/h2.mp3', 1, false, true) view.AudioMgr.PlayMusic(musicDir + 'win.mp3')
musicPlayerFlag = true musicPlayerFlag = true
} else if (player.total_point >= 0) { } else {
view.AudioMgr.PlayMusic('my_music/h1.mp3', 1, false, true) view.AudioMgr.PlayMusic(musicDir + 'lose.mp3')
musicPlayerFlag = true musicPlayerFlag = true
} else {
view.AudioMgr.PlayMusic('my_music/h3.mp3', 1, false, true)
musicPlayerFlag = true
}
} }
})
if (!musicPlayerFlag) {
view.AudioMgr.PlayMusic('my_music/h1.mp3', 1, false, true)
} }
_showBackup.apply(this, arguments) })
if (!musicPlayerFlag) {
view.AudioMgr.PlayMusic(musicDir + 'win.mp3')
} }
_showBackup.apply(this, arguments)
}
// 不同 UI 注入不同音乐 // 不同 UI 注入不同音乐
const lobbyMusic = musicDir + 'lobby.mp3' const executeUIs = [
const executeUIs = [['UI_Lobby', 'onEnable', 'lobby.mp3']] ['UI_Shop', 'show', 'shop.mp3'],
['UI_Recharge', 'refresh_info', 'shop.mp3'],
['UI_Bag', 'show', 'factory.mp3'],
['UI_Friend', 'show', 'factory.mp3'],
['UI_Lobby', 'onEnable', 'lobby.mp3'],
['UI_Sushe', 'show_page_select', 'dorm.mp3'],
['UI_Treasure', 'refresh_show', 'special.mp3'],
['UI_Ob', 'show', 'intermission.mp3'],
['UI_PaiPu', 'show', 'intermission.mp3'],
['UI_Remind', 'onCreate', 'title.mp3'],
]
executeUIs.forEach(([scriptKey, funName, fileName]) => { executeUIs.forEach(([scriptKey, funName, fileName]) => {
uiscript[scriptKey].prototype[funName] = (() => { uiscript[scriptKey].prototype[funName] = (() => {
const functionBackup = uiscript[scriptKey].prototype[funName] const functionBackup = uiscript[scriptKey].prototype[funName]
return function () { return function () {
view.AudioMgr.PlayMusic(musicDir + fileName, 1, false, true) view.AudioMgr.PlayMusic(musicDir + fileName)
return functionBackup.apply(this, arguments) return functionBackup.apply(this, arguments)
} }
})() })()
}) })
!(function (e = view, u = uiscript, i = view.DesktopMgr, am = view.AudioMgr) { let isRefreshPaiLeftHacked = false
var _cy_riched, let isFastrecord = false
_cy_myrich, let isMyRich = false
_cy_cur_bgm, let currentBGM
_cy_fc, let thisTurnBGM
_cy_bgmidx, let benOfTurn
_cy_tk, let richedCount = 0
tmp; let fewPai = false
(am.PlayMusic = (() => { const richMusicSet = { count: 0, file: '' }
const functionBackup = am.PlayMusic
let lastTimeMusic = '' // 对默认音乐进行拒绝
return function (audioDir, ...args) { let playing = ''
console.log(args)
console.warn('Playing: ' + audioDir) view.AudioMgr.PlayMusic = (() => {
if (args[2] !== true) { const functionBackup = view.AudioMgr.PlayMusic
if (view.BgmListMgr.bgm_lobby_list.includes(audioDir)) { return function (audioDir, i) {
lastTimeMusic = lobbyMusic if (audioDir.includes(musicDir) && !isFastrecord) {
} // console.warn('Playing: ' + audioDir)
return functionBackup.apply(this, [lastTimeMusic, ...args]) playing = audioDir
} else { return functionBackup.apply(this, arguments)
lastTimeMusic = audioDir } else {
} functionBackup.apply(this, [playing]) // 继续播放当前曲目
return functionBackup.apply(this, [audioDir, ...args]) }
} }
})()), })()
(paiRemain = () => {
return i.Inst.left_tile_count <= 20 // view.AudioMgr.StopMusic = (() => {
}), // var funBackup = view.AudioMgr.StopMusic
(playMusic = () => { // return function() {
var t = '' // return (
if (_cy_riched) { // !new Error().stack.split('\n')[3].match(/anonymous/) &&
t = _cy_riched > 1 ? 'r' + 3 : _cy_myrich ? 'r' + 2 : 'r' + 1 // funBackup.apply(this, arguments)
} else { // )
t = paiRemain() ? 'p' : (_cy_bgmidx % 8) + '' // }
} // })()
_cy_cur_bgm = !t ? _cy_cur_bgm : 'my_music/' + t + '.mp3'; const backupStopmusic = view.AudioMgr.StopMusic
!_cy_fc && _cy_cur_bgm && i.Inst.gameing && am.PlayMusic(_cy_cur_bgm, 0, false, true) view.AudioMgr.StopMusic = function () {
}), // console.warn(this)
(e.ViewPlayer.prototype.AddQiPai = (function () { return backupStopmusic.apply(this, arguments)
var o = e.ViewPlayer.prototype.AddQiPai }
return function (r, x, y, z) {
return ( const paiRemain = (number) => {
x && return view.DesktopMgr.Inst.left_tile_count <= number
(++_cy_riched, }
(_cy_myrich = this.container_qipai.player.seat == i.Inst.seat), const playMusic = () => {
playMusic()), let fileDir = ''
o.apply(this, arguments) if (richedCount > 0) {
) // 立直
} if (richMusicSet.count < richedCount) {
})()), richMusicSet.count = richedCount
(newRound = function (t) { fileDir = (() => {
if (!_cy_tk && i.Inst) { if (isMyRich) {
_cy_tk = 1 if (richMusicSet.file.includes('my_rich')) {
i.Inst.RefreshPaiLeft = (() => { return richMusicSet.file
var o = i.Inst.RefreshPaiLeft
return function (a, b) {
return paiRemain() && playMusic(), o.apply(this, arguments)
} }
return (
'my_rich' +
(() => {
return (Math.random() * 2) >> 0
})()
)
}
if (richedCount >= 3) {
richedCount = 3
}
let richFile = 'rich' + richedCount
switch (richedCount) {
case 1:
case 2:
richFile += '-0'
break
case 3:
default:
richFile += '-0'
break
}
return richFile
})()
richMusicSet.file = fileDir
} else {
fileDir = richMusicSet.file
}
} else if (paiRemain(20)) {
if (!fewPai) {
// 余牌少于 20
fileDir =
'few' +
(() => {
return (Math.random() * 3) >> 0
})() })()
fewPai = fileDir
} else {
fileDir = fewPai
}
}
if (!fileDir) {
currentBGM = thisTurnBGM
} else {
currentBGM = fileDir
}
currentBGM = `${musicDir}${currentBGM}.mp3`
if (!isFastrecord && currentBGM && view.DesktopMgr.Inst.gameing) {
if (richedCount > 0) {
view.AudioMgr.PlayLiqiBgm(currentBGM)
} else {
view.AudioMgr.PlayMusic(currentBGM)
}
}
}
const newRound = (roundInfo) => {
// 如果是第一局,hack剩余牌数
if (!isRefreshPaiLeftHacked && view.DesktopMgr.Inst) {
isRefreshPaiLeftHacked = true
const functionBackup = view.DesktopMgr.Inst.RefreshPaiLeft
view.DesktopMgr.Inst.RefreshPaiLeft = function (...args) {
if (paiRemain(20)) {
playMusic()
}
return functionBackup.apply(this, args)
}
}
// roundInfo.ju为局数,roundInfo.ben为本场数
thisTurnBGM = roundInfo.chang * 4 + roundInfo.ju
if (thisTurnBGM <= 11) {
thisTurnBGM ++
}
benOfTurn = roundInfo.ben
richedCount = 0
isMyRich = false
fewPai = false
richMusicSet.count = 0
richMusicSet.file = ''
playMusic()
}
view.ViewPlayer.prototype.AddQiPai = (function () {
const functionBackup = view.ViewPlayer.prototype.AddQiPai
return function (r, isRich, y, z) {
if (isRich) {
richedCount++
if (this.container_qipai.player.seat === view.DesktopMgr.Inst.seat) {
isMyRich |= true
} else {
isMyRich |= false
} }
_cy_cur_bgm = ''
//t.ju为局数
_cy_bgmidx = t.chang * 4 + t.ju
_cy_riched = 0
new Error().stack.split('\n')[2].match(/fastrecord/) && (_cy_fc = 1)
playMusic() playMusic()
}), }
['play', 'fastplay', 'record', 'fastrecord'].forEach(i => { return functionBackup.apply(this, arguments)
e.ActionNewRound[i] = (() => { }
var o = e.ActionNewRound[i] })()
return function (t) { ;['play', 'fastplay', 'record', 'fastrecord'].forEach((key) => {
return (tmp = o.apply(this, arguments)), newRound(t), tmp const functionBackup = view.ActionNewRound[key]
} view.ActionNewRound[key] = function (...args) {
})() isFastrecord = false
}), if (key === 'fastrecord') {
Object.entries({ isFastrecord = true
Replay: '_refreshBarshow', }
Live_Broadcast: '_fastSync' const resultBackup = functionBackup.apply(this, args)
}).forEach(([k, v]) => { newRound(...args)
u['UI_' + k]['prototype'][v] = (() => { return resultBackup
var o = u['UI_' + k]['prototype'][v] }
return function () { })
return (
(tmp = o.apply(this, arguments)), Object.entries({
_cy_fc && ((_cy_fc = 0), playMusic()), Replay: '_refreshBarshow',
tmp Live_Broadcast: '_fastSync',
) }).forEach(([key, value]) => {
uiscript['UI_' + key]['prototype'][value] = (() => {
const oldFunction = uiscript['UI_' + key]['prototype'][value]
return function () {
const resultBackup = oldFunction.apply(this, arguments)
if (isFastrecord) {
isFastrecord = false
playMusic()
}
return resultBackup
}
})()
})
// 注入UI,用于显示UI脚本调用的大概信息
Object.keys(uiscript).forEach((key) => {
if (key.startsWith('UI_')) {
try {
Object.entries(uiscript[key].prototype).forEach(([k, v]) => {
uiscript[key].prototype[k] = function (...args) {
// console.log(key, k, 'At', performance.now(), ...args)
return v.apply(this, args)
}
})
} catch (e) {
console.warn(e)
}
}
})
// 强制干翻立直BGM,作者Handle,v2.0
const backupFun = view.DesktopMgr.prototype.initRoom
view.DesktopMgr.prototype.initRoom = function (...args) {
// console.log(args)
try {
const player_datas = args[1]
if (Array.isArray(player_datas)) {
player_datas.forEach((player_data) => {
const views = player_data.views
if (views && views.length) {
if (Array.isArray(views)) {
player_data.views = views.filter((view) => {
const slot = view.slot
const id = view.item_id
return !(slot == game.EView.lizhi_bgm)
})
} }
})() }
}) })
})(view, uiscript, view.DesktopMgr, view.AudioMgr) }
} args[1] = player_datas
\ No newline at end of file } catch (e) {
console.warn(e)
}
return backupFun.call(this, ...args)
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment