DP-S-Script/Dps_A/BaseClass/GameManagerClass/GameManagerClass.nut

207 lines
7.6 KiB
Plaintext
Raw Normal View History

2024-09-16 17:05:26 +08:00
/*
文件名:GameManagerClass.nut
路径:BaseClass/GameManagerClass/GameManagerClass.nut
创建日期:2024-04-09 20:30
文件用途:游戏管理器类
*/
class GameManager extends Base_C_Object {
constructor() {
local CObject = Sq_GameManager_GameManager();
base.constructor(CObject);
}
function GetParty() {
local C_Party = Sq_GameManager_GetParty(C_Object);
return Party(C_Party);
}
//设置游戏最大等级
function SetGameMaxLevel(MaxLevel) {
NativePointer("0x8360C38").add(3).writeU8(MaxLevel);
NativePointer("0x8360C76").add(3).writeU8(MaxLevel);
NativePointer("0x8360CC1").add(3).writeU8(MaxLevel);
NativePointer("0x84EF802").add(3).writeU8(MaxLevel);
NativePointer("0x858F002").add(3).writeU8(MaxLevel);
NativePointer("0x865A5C0").add(1).writeU8(MaxLevel);
NativePointer("0x865B091").add(4).writeU8(MaxLevel);
NativePointer("0x865B757").add(4).writeU8(MaxLevel);
NativePointer("0x8662F53").add(2).writeU8(MaxLevel);
NativePointer("0x86630F0").add(3).writeU8(MaxLevel);
NativePointer("0x86638F4").add(2).writeU8(MaxLevel);
NativePointer("0x8665D24").add(4).writeU8(MaxLevel);
NativePointer("0x8666E9A").add(2).writeU8(MaxLevel);
NativePointer("0x866A4A6").add(2).writeU8(MaxLevel);
NativePointer("0x866A657").add(2).writeU8(MaxLevel);
NativePointer("0x866A926").add(3).writeU8(MaxLevel);
NativePointer("0x866A93F").add(2).writeU8(MaxLevel);
NativePointer("0x867AEC0").add(2).writeU8(MaxLevel);
NativePointer("0x8689D48").add(3).writeU8(MaxLevel);
NativePointer("0x868fecb").add(3).writeU8(MaxLevel);
NativePointer("0x868fed4").add(6).writeU8(MaxLevel);
}
//设置装备解锁需要时间
function SetItemLockTime(time) {
NativePointer("0x8402D29").writeInt(time);
NativePointer("0x854242F").writeInt(time);
NativePointer("0x854274D").writeInt(time);
NativePointer("0x854296F").writeInt(time);
NativePointer("0x8542AD9").writeInt(time);
NativePointer("0x8542BDE").writeInt(time);
}
2024-10-02 21:00:21 +08:00
//开启创建鼠标妹
function OpenCreateJob_CreatorMage() {
Sq_WriteByteArr(S_Ptr("0x81C029F"), [0xf]);
}
//开启获得魔法封印时自动解除魔法封印
function OpenRandomAutomaticUnblocking() {
Cb_User_Insert_Item_Leave_Func.Rindro <- function(args) {
local SUser = User(NativePointer(args[0]).readPointer());
local InvenObj = SUser.GetInven();
local idx = args.pop();
if (idx > 0) {
local inven_item = InvenObj.GetSlot(1, idx);
local item_id = inven_item.GetIndex();
local pvfitem = PvfItem.GetPvfItemById(item_id);
//如果是魔法封印装备
if (!pvfitem.IsRandomOption()) {
return;
}
local random_option = NativePointer(inven_item.C_Object).add(37);
if (random_option.readU32() || random_option.add(4).readU32() || random_option.add(8).readShort()) {
return;
}
NativePointer(inven_item.C_Object).add(37).add(0).writeU8(1);
}
SUser.SendItemSpace(0);
return null;
}
}
//开启自动热重载
function OpenHotFix(Path = "/dp_s/MyProject") {
print("DP-S开启自动重载脚本功能,重载目录为: " + Path + " .");
print("请注意如果你不处于DP-S开发环境请关闭此功能以免对性能造成影响");
Sq_AutoReload(Path);
}
2024-10-11 23:56:27 +08:00
//开启时装镶嵌
function FixAvatarUseJewel() {
//时装镶嵌修复
_AvatarUseJewel_Object <- AvatarUseJewel();
}
2025-03-27 20:21:11 +08:00
//开启装备镶嵌
function FixEquipUseJewel() {
//装备镶嵌修复
_EquimentUseJewel_Object <- EquimentUseJewel();
}
//修复14技能
function Fix14Skill() {
Sq_WriteByteArr(S_Ptr("0x08604B1E"), [0x83, 0x7D, 0xEC, 0x07]);
Sq_WriteByteArr(S_Ptr("0x08604B8C"), [0xC7, 0x45, 0xE4, 0x08, 0x00, 0x00, 0x00]);
Sq_WriteByteArr(S_Ptr("0x08604A09"), [0x83, 0x7D, 0x0C, 0x07]);
Sq_WriteByteArr(S_Ptr("0x086050b1"), [0xC7, 0x45, 0xEC, 0x08, 0x00, 0x00, 0x00]);
Sq_WriteByteArr(S_Ptr("0x0860511c"), [0xC7, 0x45, 0xE8, 0x08, 0x00, 0x00, 0x00]);
Sq_WriteByteArr(S_Ptr("0x08608D7B"), [0x83, 0xF8, 0x0B]);
}
2024-10-11 23:56:27 +08:00
//修复下线卡城镇
function FixSaveTown() {
Cb_Set_Charac_Info_Detail_Enter_Func._FixSaveTown_ <- function(arg) {
local curArea = NativePointer(arg[3]).add(34).readS8();
if (curArea == 12 || curArea == 13) {
NativePointer(arg[3]).add(34).writeS8(11);
}
}
}
//修复绝望金币异常
function FixDespairGold() {
getroottable()._FixDespairGold_Data_ <- {};
Cb_UseAncientDungeonItems_Enter_Func._FixDespairGold_ <- function(arg) {
local DgnObj = Dungeon(arg[1]);
local DgnIndex = DgnObj.GetId();
if ((DgnIndex >= 11008) && (DgnIndex <= 11107)) {
getroottable()._FixDespairGold_Data_[arg[1]] <- NativePointer(arg[1]).add(2044).readS8();
NativePointer(arg[1]).add(2044).writeS8(0);
}
}
Cb_UseAncientDungeonItems_Leave_Func._FixDespairGold_ <- function(arg) {
local DgnObj = Dungeon(arg[1]);
local DgnIndex = DgnObj.GetId();
if ((DgnIndex >= 11008) && (DgnIndex <= 11107)) {
//绝望之塔 不再扣除金币
NativePointer(arg[1]).add(2044).writeS8(getroottable()._FixDespairGold_Data_[arg[1]]);
getroottable()._FixDespairGold_Data_.rawdelete(arg[1]);
}
}
}
//修复绝望之塔通关后可以用门票继续进入
function FixDespairDungeon() {
Cb_User_GetLastClearTime_Leave_Func._FixDespairDungeon_ <- function(arg) {
return 0;
}
}
2024-10-27 15:32:44 +08:00
//修改交易金币上限
function FixGlodTradeDaily(Count) {
local Arr = [0xB8];
local BlobObj = blob(0);
BlobObj.writen(Count, 'i');
for (local i = 0; i< 4; i++) {
Arr.append(BlobObj[i]);
}
Arr.append(0x90);
Sq_WriteByteArr(S_Ptr("0x86464CE"), Arr);
}
2024-11-15 19:53:44 +08:00
//+13免刷新
function Fix_13Upgrade() {
Haker.LoadHook("0x080FC850", ["pointer", "pointer", "pointer", "int", "void"],
function(args) {
return null;
},
function(args) {
local Pos = NativePointer(args[2]).add(27).readU16();
local SUser = User(args[1]);
SUser.SendUpdateItemList(1, 0, Pos);
return null;
});
}
2025-03-27 20:21:11 +08:00
//副本可丢弃品级 传入一个值 3为神器
function FixDungeonDropGrade(Level) {
NativePointer("0x085A69F2").writeS8(Level);
}
//邮件去除验证
function FixEmailRemovalVerification() {
//修改独立掉落原逻辑为不掉落
local HexCode = Haker.AsmGenerateMcd(
"mov eax, 0x0",
"ret");
Sq_WriteByteArr(S_Ptr("0x0868A51A"), HexCode);
}
//修复拍卖行消耗品上架,设置最大总价,建议值2E
function Fix_Auction_Regist_Item() {
Haker.LoadHook("0x08213E40", ["int", "int", "bool"],
function(args) {
return null;
},
function(args) {
return true;
});
}
2024-10-02 21:00:21 +08:00
}
//热重载
function _Reload_List_Write_(Path) {
2024-10-05 11:47:12 +08:00
dofile(Path);
2024-10-02 21:00:21 +08:00
print("位于 [" + Path + "] 的脚本已重载")
2024-09-16 17:05:26 +08:00
}