Commit a8d65bed authored by TanakaKotoha's avatar TanakaKotoha

update

parent 9627e030
{
"id": "extraBGMs_DJTROOPERS",
"version": "1.2.0",
"name": "IIDX 15 DJ TROOPERS BGM +",
"version": "1.3.0",
"name": "IIDX 15 DJ TROOPERS BGM",
"author": ["Tachibana","Altivias"],
"description": "beatmania IIDX 15 DJ TROOPERS BGM + 经典雀龙门音效。",
"description": "beatmania IIDX 15 DJ TROOPERS BGM经典雀龙门音效。",
"dir": "assets",
"preview": "preview.png",
"preview": "preview.jpg",
"dependencies": {},
"entry": "script.js",
"resourcepack": [
"audio/audio_lobby/matchcomplete.mp3",
"audio/audio_mj/btn_appear.mp3",
......@@ -32,26 +34,34 @@
"audio/audio_mj/showtile.mp3",
"audio/audio_mj/winlose.mp3",
"audio/audio_mj/zimo.mp3",
"audio/music/lobby.mp3",
"audio/my_music/0.mp3",
"audio/my_music/1.mp3",
"audio/my_music/2.mp3",
"audio/my_music/3.mp3",
"audio/my_music/4.mp3",
"audio/my_music/5.mp3",
"audio/my_music/6.mp3",
"audio/my_music/7.mp3",
"audio/my_music/e1.mp3",
"audio/my_music/e2.mp3",
"audio/my_music/e3.mp3",
"audio/my_music/h1.mp3",
"audio/my_music/h2.mp3",
"audio/my_music/h3.mp3",
"audio/my_music/p.mp3",
"audio/my_music/r1.mp3",
"audio/my_music/r2.mp3",
"audio/my_music/r3.mp3"
],
"dependencies": {},
"entry": "script.js"
"audio/DJTROOPERS/lobby.mp3",
"audio/DJTROOPERS/1.mp3",
"audio/DJTROOPERS/2.mp3",
"audio/DJTROOPERS/3.mp3",
"audio/DJTROOPERS/4.mp3",
"audio/DJTROOPERS/5.mp3",
"audio/DJTROOPERS/6.mp3",
"audio/DJTROOPERS/7.mp3",
"audio/DJTROOPERS/8.mp3",
"audio/DJTROOPERS/9.mp3",
"audio/DJTROOPERS/10.mp3",
"audio/DJTROOPERS/11.mp3",
"audio/DJTROOPERS/dorm.mp3",
"audio/DJTROOPERS/factory.mp3",
"audio/DJTROOPERS/few0.mp3",
"audio/DJTROOPERS/few1.mp3",
"audio/DJTROOPERS/few2.mp3",
"audio/DJTROOPERS/intermission.mp3",
"audio/DJTROOPERS/lobby.mp3",
"audio/DJTROOPERS/lose.mp3",
"audio/DJTROOPERS/my_rich0.mp3",
"audio/DJTROOPERS/my_rich1.mp3",
"audio/DJTROOPERS/rich1-0.mp3",
"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) {
const musicDir = 'music/'
//h1为终局精算点正分,h2为Top,h3为精算点负分;r1为他家立直,r2为自家立直,r3为追立;连庄BGM不变,e1-e3未使用。
const musicDir = 'DJTROOPERS/'
// 正负得点播放不同 BGM
const _showBackup = uiscript.UI_GameEnd.prototype.show
uiscript.UI_GameEnd.prototype.show = function () {
var musicPlayerFlag = false
view.DesktopMgr.Inst.gameEndResult.players.forEach((player, index) => {
if (player.seat == view.DesktopMgr.Inst.seat) {
if (index == 0) {
view.AudioMgr.PlayMusic('my_music/h2.mp3', 1, false, true)
musicPlayerFlag = true
} else if (player.total_point >= 0) {
view.AudioMgr.PlayMusic('my_music/h1.mp3', 1, false, true)
if (player.total_point >= 0) {
view.AudioMgr.PlayMusic(musicDir + 'win.mp3')
musicPlayerFlag = true
} else {
view.AudioMgr.PlayMusic('my_music/h3.mp3', 1, false, true)
view.AudioMgr.PlayMusic(musicDir + 'lose.mp3')
musicPlayerFlag = true
}
}
})
if (!musicPlayerFlag) {
view.AudioMgr.PlayMusic('my_music/h1.mp3', 1, false, true)
view.AudioMgr.PlayMusic(musicDir + 'win.mp3')
}
_showBackup.apply(this, arguments)
}
// 不同 UI 注入不同音乐
const lobbyMusic = musicDir + 'lobby.mp3'
const executeUIs = [['UI_Lobby', 'onEnable', 'lobby.mp3']]
const executeUIs = [
['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]) => {
uiscript[scriptKey].prototype[funName] = (() => {
const functionBackup = uiscript[scriptKey].prototype[funName]
return function () {
view.AudioMgr.PlayMusic(musicDir + fileName, 1, false, true)
view.AudioMgr.PlayMusic(musicDir + fileName)
return functionBackup.apply(this, arguments)
}
})()
})
!(function (e = view, u = uiscript, i = view.DesktopMgr, am = view.AudioMgr) {
var _cy_riched,
_cy_myrich,
_cy_cur_bgm,
_cy_fc,
_cy_bgmidx,
_cy_tk,
tmp;
(am.PlayMusic = (() => {
const functionBackup = am.PlayMusic
let lastTimeMusic = ''
return function (audioDir, ...args) {
console.log(args)
console.warn('Playing: ' + audioDir)
if (args[2] !== true) {
if (view.BgmListMgr.bgm_lobby_list.includes(audioDir)) {
lastTimeMusic = lobbyMusic
}
return functionBackup.apply(this, [lastTimeMusic, ...args])
} else {
lastTimeMusic = audioDir
}
return functionBackup.apply(this, [audioDir, ...args])
}
})()),
(paiRemain = () => {
return i.Inst.left_tile_count <= 20
}),
(playMusic = () => {
var t = ''
if (_cy_riched) {
t = _cy_riched > 1 ? 'r' + 3 : _cy_myrich ? 'r' + 2 : 'r' + 1
let isRefreshPaiLeftHacked = false
let isFastrecord = false
let isMyRich = false
let currentBGM
let thisTurnBGM
let benOfTurn
let richedCount = 0
let fewPai = false
const richMusicSet = { count: 0, file: '' }
// 对默认音乐进行拒绝
let playing = ''
view.AudioMgr.PlayMusic = (() => {
const functionBackup = view.AudioMgr.PlayMusic
return function (audioDir, i) {
if (audioDir.includes(musicDir) && !isFastrecord) {
// console.warn('Playing: ' + audioDir)
playing = audioDir
return functionBackup.apply(this, arguments)
} else {
t = paiRemain() ? 'p' : (_cy_bgmidx % 8) + ''
}
_cy_cur_bgm = !t ? _cy_cur_bgm : 'my_music/' + t + '.mp3';
!_cy_fc && _cy_cur_bgm && i.Inst.gameing && am.PlayMusic(_cy_cur_bgm, 0, false, true)
}),
(e.ViewPlayer.prototype.AddQiPai = (function () {
var o = e.ViewPlayer.prototype.AddQiPai
return function (r, x, y, z) {
functionBackup.apply(this, [playing]) // 继续播放当前曲目
}
}
})()
// view.AudioMgr.StopMusic = (() => {
// var funBackup = view.AudioMgr.StopMusic
// return function() {
// return (
// !new Error().stack.split('\n')[3].match(/anonymous/) &&
// funBackup.apply(this, arguments)
// )
// }
// })()
const backupStopmusic = view.AudioMgr.StopMusic
view.AudioMgr.StopMusic = function () {
// console.warn(this)
return backupStopmusic.apply(this, arguments)
}
const paiRemain = (number) => {
return view.DesktopMgr.Inst.left_tile_count <= number
}
const playMusic = () => {
let fileDir = ''
if (richedCount > 0) {
// 立直
if (richMusicSet.count < richedCount) {
richMusicSet.count = richedCount
fileDir = (() => {
if (isMyRich) {
if (richMusicSet.file.includes('my_rich')) {
return richMusicSet.file
}
return (
x &&
(++_cy_riched,
(_cy_myrich = this.container_qipai.player.seat == i.Inst.seat),
playMusic()),
o.apply(this, arguments)
'my_rich' +
(() => {
return (Math.random() * 2) >> 0
})()
)
}
})()),
(newRound = function (t) {
if (!_cy_tk && i.Inst) {
_cy_tk = 1
i.Inst.RefreshPaiLeft = (() => {
var o = i.Inst.RefreshPaiLeft
return function (a, b) {
return paiRemain() && playMusic(), o.apply(this, arguments)
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()
}),
['play', 'fastplay', 'record', 'fastrecord'].forEach(i => {
e.ActionNewRound[i] = (() => {
var o = e.ActionNewRound[i]
return function (t) {
return (tmp = o.apply(this, arguments)), newRound(t), tmp
}
return functionBackup.apply(this, arguments)
}
})()
}),
;['play', 'fastplay', 'record', 'fastrecord'].forEach((key) => {
const functionBackup = view.ActionNewRound[key]
view.ActionNewRound[key] = function (...args) {
isFastrecord = false
if (key === 'fastrecord') {
isFastrecord = true
}
const resultBackup = functionBackup.apply(this, args)
newRound(...args)
return resultBackup
}
})
Object.entries({
Replay: '_refreshBarshow',
Live_Broadcast: '_fastSync'
}).forEach(([k, v]) => {
u['UI_' + k]['prototype'][v] = (() => {
var o = u['UI_' + k]['prototype'][v]
Live_Broadcast: '_fastSync',
}).forEach(([key, value]) => {
uiscript['UI_' + key]['prototype'][value] = (() => {
const oldFunction = uiscript['UI_' + key]['prototype'][value]
return function () {
return (
(tmp = o.apply(this, arguments)),
_cy_fc && ((_cy_fc = 0), playMusic()),
tmp
)
const resultBackup = oldFunction.apply(this, arguments)
if (isFastrecord) {
isFastrecord = false
playMusic()
}
return resultBackup
}
})()
})
})(view, uiscript, view.DesktopMgr, view.AudioMgr)
// 注入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)
})
}
}
})
}
args[1] = player_datas
} 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