添加示例项目
This commit is contained in:
251
示例项目/杂项功能/杂项功能.nut
Normal file
251
示例项目/杂项功能/杂项功能.nut
Normal file
@@ -0,0 +1,251 @@
|
||||
function _Dps_sundry_nangua_Main_() {
|
||||
local config = GlobalConfig.Get("杂项功能开关_Nangua.json");
|
||||
if(config["杂项功能开关"]["摆摊开启两排格子"]){
|
||||
NativePointer(S_Ptr("0x085C6EB8")).writeByteArray([0x66, 0x83, 0xF8, 0x0E]);
|
||||
// 超过10个邮件时自动分开发送
|
||||
Cb_ReqDBSendNewSystemMultiMail_Leave_Func._SendNewSystemMultiMail <- function(args) {
|
||||
local num = args[2];
|
||||
if (num > 10) {
|
||||
Sq_CallFunc(S_Ptr("0x8556B68"), "int", ["pointer", "pointer", "int", "int", "int", "pointer", "int", "int", "int", "int"],
|
||||
args[0], args[1], 10, args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
|
||||
local left = num - 10;
|
||||
local pack = Memory.alloc(0x1000);
|
||||
for(local i = 0; i < left; i++){
|
||||
Memory.copy(pack.add(61 * i), NativePointer(args[1]).add(61 * (i + 10)), 61);
|
||||
}
|
||||
Sq_CallFunc(S_Ptr("0x8556B68"), "int", ["pointer", "pointer", "int", "int", "int", "pointer", "int", "int", "int", "int"],
|
||||
args[0], pack.C_Object, left, args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 设置最大等级
|
||||
if(config["杂项功能开关"]["设置最高等级"][0]){
|
||||
local level = config["杂项功能开关"]["设置最高等级"][1];
|
||||
GameManager.SetGameMaxLevel(level);
|
||||
}
|
||||
|
||||
// 装备解锁时间
|
||||
if(config["杂项功能开关"]["装备解锁(单位:秒)"][0]){
|
||||
local time = config["杂项功能开关"]["装备解锁(单位:秒)"][1];
|
||||
GameManager.SetItemLockTime(time);
|
||||
}
|
||||
|
||||
// 创建缔造者
|
||||
if(config["杂项功能开关"]["创建缔造者"]){
|
||||
GameManager.OpenCreateJob_CreatorMage();
|
||||
}
|
||||
|
||||
// 自动解除魔法封印
|
||||
if(config["杂项功能开关"]["自动解除魔法封印"]){
|
||||
GameManager.OpenRandomAutomaticUnblocking();
|
||||
}
|
||||
|
||||
// 开启装备与时装镶嵌
|
||||
if(config["杂项功能开关"]["开启装备与时装镶嵌"]){
|
||||
GameManager.FixEquipUseJewel();
|
||||
}
|
||||
|
||||
// 修复下线卡城镇
|
||||
if(config["杂项功能开关"]["修复下线卡城镇"]){
|
||||
GameManager.FixSaveTown();
|
||||
}
|
||||
|
||||
// 修复绝望之塔金币异常
|
||||
if(config["杂项功能开关"]["修复绝望之塔金币异常"]){
|
||||
GameManager.FixDespairGold();
|
||||
}
|
||||
|
||||
// 绝望之塔通关后可以用门票继续进入
|
||||
if(config["杂项功能开关"]["绝望之塔通关后可以用门票继续进入"]){
|
||||
Sq_WriteByteArr(S_Ptr("0x0864416F"), [0xEB, 0x47]);
|
||||
}
|
||||
|
||||
// 修复绝望之塔每10层进不去副本
|
||||
Cb_TowerOfDespairMgr_SendAPCInfo_Enter_Func._TowerOfDespair <- function(args) {
|
||||
local config = GlobalConfig.Get("杂项功能开关_Nangua.json");
|
||||
if(config["杂项功能开关"]["修复绝望之塔每10层进不去副本"]){
|
||||
local this_ptr = args[0];
|
||||
local tod_layer = args[1];
|
||||
local user = args[2];
|
||||
local apc_mgr = NativePointer(this_ptr).add(213 * 4).readPointer();
|
||||
local layer = NativePointer(tod_layer).readU16();
|
||||
local apc_info = Memory.alloc(0x100000);
|
||||
local new_tod_layer = Memory.alloc(2);
|
||||
new_tod_layer.writeU16(layer);
|
||||
Sq_CallFunc(S_Ptr("0x085FED2E"), "void", ["pointer", "pointer", "pointer"], apc_mgr, new_tod_layer.C_Object, apc_info.C_Object);
|
||||
}
|
||||
}
|
||||
|
||||
// 设置每日可交易金币上限值
|
||||
if(config["杂项功能开关"]["设置每日可交易金币上限值"][0]){
|
||||
local max = config["杂项功能开关"]["设置每日可交易金币上限值"][1];
|
||||
GameManager.FixGlodTradeDaily(max);
|
||||
}
|
||||
|
||||
// 强化13以上免刷新
|
||||
if(config["杂项功能开关"]["强化13以上免刷新"]){
|
||||
GameManager.Fix_13Upgrade();
|
||||
}
|
||||
|
||||
// 开启14格技能栏
|
||||
if(config["杂项功能开关"]["开启14格技能栏"]){
|
||||
GameManager.Fix14Skill();
|
||||
}
|
||||
|
||||
// 修复拍卖行消耗品上架
|
||||
if(config["杂项功能开关"]["修复拍卖行消耗品上架"]){
|
||||
GameManager.Fix_Auction_Regist_Item();
|
||||
}
|
||||
|
||||
// 副本内可丢弃物品品级
|
||||
if(config["杂项功能开关"]["副本内可丢弃物品品级(开启后可丢弃粉装,3为装备品级)"][0]){
|
||||
local level = config["杂项功能开关"]["副本内可丢弃物品品级(开启后可丢弃粉装,3为装备品级)"][1];
|
||||
GameManager.FixDungeonDropGrade(level);
|
||||
}
|
||||
|
||||
// 发送邮件时验证关闭
|
||||
if(config["杂项功能开关"]["发送邮件时验证关闭"]){
|
||||
GameManager.FixEmailRemovalVerification();
|
||||
}
|
||||
|
||||
// 关闭商店回购
|
||||
Cb_Item_IsBanRedeemItem_Leave_Func.BanRedeemItemByNangua <- function(args) {
|
||||
local config = GlobalConfig.Get("杂项功能开关_Nangua.json");
|
||||
if (config["杂项功能开关"]["关闭商店回购"]) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// 无视创建角色时间直接删除角色
|
||||
Cb_User_CheckDeleteCharacTime_Leave_Func.DeleteCharacByNangua <- function(args) {
|
||||
local config = GlobalConfig.Get("杂项功能开关_Nangua.json");
|
||||
if (config["杂项功能开关"]["无视创建角色时间直接删除角色"]) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// 忽略在副本门口禁止摆摊
|
||||
Cb_CPrivateStore_IsAreaNearEntranceDungeon_Leave_Func.PrivateStoreByNangua <- function(args) {
|
||||
local config = GlobalConfig.Get("杂项功能开关_Nangua.json");
|
||||
if (config["杂项功能开关"]["忽略在副本门口禁止摆摊"]) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// 脱离公会后可立马加入新公会
|
||||
Cb_MonitorNoticeGuildSecede_dispatch_Enter_Func.DeleteSecedeByNangua <- function(args) {
|
||||
local config = GlobalConfig.Get("杂项功能开关_Nangua.json");
|
||||
if (config["杂项功能开关"]["脱离公会后可立马加入新公会"]) {
|
||||
local SUser = User(args[1]);
|
||||
local charac_no = SUser.GetCID();
|
||||
local updateQuery = "UPDATE d_guild.guild_member SET secede_time = '0000-00-00 00:00:00' where charac_no=" + charac_no + ";";
|
||||
local column_type_list = ["int"];
|
||||
local SqlObj = MysqlPool.GetInstance().GetConnect();
|
||||
SqlObj.Select(updateQuery, column_type_list);
|
||||
MysqlPool.GetInstance().PutConnect(SqlObj);
|
||||
}
|
||||
}
|
||||
|
||||
//公会普通信息互通
|
||||
Cb_MonitorNoticeGuildChatMsg_Leave_Func.GUildMessagetoCommonByNangua <- function(args) {
|
||||
local config = GlobalConfig.Get("杂项功能开关_Nangua.json");
|
||||
if (config["杂项功能开关"]["公会聊天互通"]) {
|
||||
local SUser = User(args[1]);
|
||||
local msgData = args[2];
|
||||
|
||||
local senderName = NativePointer(msgData).add(18).readUtf8String();
|
||||
if (SUser.GetCharacName() == senderName) {
|
||||
local Guild_name = SUser.GetGuildName();
|
||||
_Dps_GuildmsgBynangua_Main_.SendMessagetoCommon(msgData, Guild_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
//公会超链接信息互通
|
||||
Cb_MonitorNoticeGuildChatMsgHyperLink_Leave_Func.GUildMessagetoHyperLinkByNangua <- function(args) {
|
||||
local config = GlobalConfig.Get("杂项功能开关_Nangua.json");
|
||||
local SUser = User(args[1]);
|
||||
local msgData = args[2];
|
||||
|
||||
local senderName = NativePointer(msgData).add(18).readUtf8String();
|
||||
if (config["杂项功能开关"]["公会聊天互通"] && SUser.GetCharacName() == senderName) {
|
||||
local guild_name = SUser.GetGuildName();
|
||||
local Pack = _Dps_GuildmsgBynangua_Main_.SendMessagetoHyperLink(msgData, guild_name);
|
||||
local users = World.GetOnlinePlayer();
|
||||
users.apply(function(Value) {
|
||||
local onguildName = Value.GetGuildName()
|
||||
local guildkey = Sq_CallFunc(S_Ptr("0x822F46C"), "int", ["pointer"], Value.C_Object);
|
||||
if (onguildName != guild_name && guildkey > 0) {
|
||||
Value.Send(Pack);
|
||||
}
|
||||
});
|
||||
Pack.Delete();
|
||||
}
|
||||
}
|
||||
|
||||
class _Dps_GuildmsgBynangua_Main_ {
|
||||
function SendMessagetoCommon(msg, guild_name) {
|
||||
local Pack = Packet();
|
||||
Pack.Put_Header(0, 65);
|
||||
Pack.Put_Byte(6);
|
||||
Pack.Put_Byte(0);
|
||||
local name = NativePointer(msg).add(18).readUtf8String();
|
||||
_Dps_GuildmsgBynangua_Main_.api_InterfacePacketBuf_put_string(Pack, name);
|
||||
Pack.Put_Byte(0);
|
||||
local msgLen = NativePointer(msg).add(0x30).readU8();
|
||||
local content = NativePointer(msg).add(0x31);
|
||||
local extraMsg = " [" + guild_name + "]跨公会信息";
|
||||
local extraContent = Memory.allocUtf8String(extraMsg);
|
||||
local extraLen = extraMsg.len();
|
||||
local newMsgLen = msgLen + extraLen;
|
||||
Pack.Put_Int(newMsgLen)
|
||||
Pack.Put_BinaryEx(content.C_Object, msgLen);
|
||||
Pack.Put_BinaryEx(extraContent.C_Object, extraLen);
|
||||
Pack.Put_Byte(0);
|
||||
Pack.Finalize(true);
|
||||
local users = World.GetOnlinePlayer();
|
||||
users.apply(function(Value) {
|
||||
local onguildName = Value.GetGuildName()
|
||||
local guildkey = Sq_CallFunc(S_Ptr("0x822F46C"), "int", ["pointer"], Value.C_Object);
|
||||
if (onguildName != guild_name && guildkey > 0) {
|
||||
Value.Send(Pack);
|
||||
}
|
||||
});
|
||||
Pack.Delete();
|
||||
}
|
||||
|
||||
function SendMessagetoHyperLink(msg, guild_name) {
|
||||
local Pack = Packet();
|
||||
Pack.Put_Header(0, 371);
|
||||
Pack.Put_Byte(6);
|
||||
Pack.Put_Byte(0);
|
||||
// 角色名
|
||||
local name = NativePointer(msg).add(18).readUtf8String();
|
||||
_Dps_GuildmsgBynangua_Main_.api_InterfacePacketBuf_put_string(Pack, name);
|
||||
Pack.Put_Byte(0);
|
||||
local msgLen = NativePointer(msg).add(361).readU8();
|
||||
local content = NativePointer(msg).add(362);
|
||||
local extraMsg = " [" + guild_name + "]跨公会信息";
|
||||
local extraContent = Memory.allocUtf8String(extraMsg);
|
||||
local extraLen = extraMsg.len();
|
||||
local newMsgLen = msgLen + extraLen;
|
||||
Pack.Put_Int(newMsgLen)
|
||||
Pack.Put_BinaryEx(content.C_Object, msgLen);
|
||||
Pack.Put_BinaryEx(extraContent.C_Object, extraLen);
|
||||
|
||||
local itemCount = NativePointer(msg).add(48).readU8();
|
||||
Pack.Put_Byte(itemCount);
|
||||
for (local i = 0; i < itemCount; i++) {
|
||||
Pack.Put_BinaryEx(NativePointer(msg).add(104 * i + 49).C_Object, 104);
|
||||
}
|
||||
Pack.Finalize(true);
|
||||
return Pack;
|
||||
}
|
||||
function api_InterfacePacketBuf_put_string(Pack, s) {
|
||||
local p = Memory.allocUtf8String(s);
|
||||
local len = s.len();
|
||||
Pack.Put_Int(len);
|
||||
Pack.Put_BinaryEx(p.C_Object, len);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user