添加示例项目
This commit is contained in:
11
示例项目/多彩蜜蜡改跨界石/Proj.ifo
Normal file
11
示例项目/多彩蜜蜡改跨界石/Proj.ifo
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"ProjectName": "多彩蜜蜡改跨界石",
|
||||
"ProjectDescribe": "将物品跨界存放至账号仓库,需dll或启动器支持,否则无法放入物品",
|
||||
"ProjectAuthor": "南瓜",
|
||||
"ProjectVersion": 1.0,
|
||||
"ProjectConfig": "多彩蜜蜡改跨界石_Nangua.json",
|
||||
"ProjectFiles": [
|
||||
"多彩蜜蜡改跨界石.nut"
|
||||
],
|
||||
"ProjectRunFunc": "_Dps_Cross_Stone_Main_"
|
||||
}
|
||||
108
示例项目/多彩蜜蜡改跨界石/多彩蜜蜡改跨界石.nut
Normal file
108
示例项目/多彩蜜蜡改跨界石/多彩蜜蜡改跨界石.nut
Normal file
@@ -0,0 +1,108 @@
|
||||
function _Dps_Cross_Stone_Main_() {
|
||||
Cb_ModItemattr_Enter_Func.Cross_Stone <- function(args) {
|
||||
local SUser = User(args[1]);
|
||||
local pack = NativePointer(args[2]);
|
||||
local a = NativePointer(pack.add(20).readPointer());
|
||||
local itemSlot = a.add(13).add(6).readShort();
|
||||
local equSlot = a.add(13).add(0).readShort();
|
||||
local InvenObj = SUser.GetInven();
|
||||
if (InvenObj) {
|
||||
local ItemObj = InvenObj.GetSlot(1, itemSlot);
|
||||
if (ItemObj.GetIndex() == 2675422) {
|
||||
Sq_WriteByteArr(S_Ptr("0x820110E"), array(5, 0x90));
|
||||
Sq_WriteByteArr(S_Ptr("0x8201647"), array(5, 0x90));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Cb_ModItemattr_Leave_Func.Cross_Stone <- function(args) {
|
||||
local Config = GlobalConfig.Get("多彩蜜蜡改跨界石_Nangua.json");
|
||||
local SUser = User(args[1]);
|
||||
local pack = NativePointer(args[2]);
|
||||
local a = NativePointer(pack.add(20).readPointer());
|
||||
local itemSlot = a.add(13).add(6).readShort();
|
||||
local equSlot = a.add(13).add(0).readShort();
|
||||
local InvenObj = SUser.GetInven();
|
||||
local result = 0;
|
||||
if (InvenObj) {
|
||||
local ItemObj = InvenObj.GetSlot(1, itemSlot);
|
||||
local equObj = InvenObj.GetSlot(1, equSlot);
|
||||
if (ItemObj.GetIndex() == 2675422) {
|
||||
local PvfItemObj = PvfItem.GetPvfItemById(equObj.GetIndex());
|
||||
local qixi1 = NativePointer(equObj.C_Object).add(31).readU8();
|
||||
local qixi2 = NativePointer(equObj.C_Object).add(32).readU8();
|
||||
local ItemType = NativePointer(PvfItemObj.C_Object).add(141 * 4).readU32();
|
||||
//获取账号金库对象
|
||||
local CargoObj = SUser.GetAccountCargo();
|
||||
//获取账号金库中的一个空格子
|
||||
local EmptySlot = CargoObj.GetEmptySlot();
|
||||
local CheckItemLock = Sq_CallFunc(S_Ptr("0x8646942"), "int", ["pointer", "int", "int"], SUser.C_Object, 1, equSlot);
|
||||
if (CheckItemLock) {
|
||||
_Cross_StoneBynangua.CUser_SendCmdErrorPacket(SUser, 84, 13)
|
||||
} else if(qixi1 > 0 || qixi2 > 0) {
|
||||
_Cross_StoneBynangua.sendNotification(SUser, true, itemSlot, Config["跨界失败提示4"]);
|
||||
_Cross_StoneBynangua.CUser_SendCmdErrorPacket(SUser, 84, 13)
|
||||
} else if (Config["不可跨界装备"].find(equObj.GetIndex()) != null) {
|
||||
_Cross_StoneBynangua.sendNotification(SUser, true, itemSlot, format(Config["跨界失败提示2"], PvfItem.GetNameById(equObj.GetIndex())));
|
||||
_Cross_StoneBynangua.CUser_SendCmdErrorPacket(SUser, 84, 13)
|
||||
} else if (Config["不可跨界的装备类型"].find(ItemType) != null) {
|
||||
_Cross_StoneBynangua.sendNotification(SUser, true, itemSlot, Config["跨界失败提示3"]);
|
||||
_Cross_StoneBynangua.CUser_SendCmdErrorPacket(SUser, 84, 13)
|
||||
} else if (EmptySlot == -1) {
|
||||
_Cross_StoneBynangua.sendNotification(SUser, true, itemSlot, Config["跨界失败提示1"]);
|
||||
_Cross_StoneBynangua.CUser_SendCmdErrorPacket(SUser, 84, 13)
|
||||
} else {
|
||||
local Flag = CargoObj.InsertItem(equObj, EmptySlot);
|
||||
if (Flag == -1) {
|
||||
_Cross_StoneBynangua.sendNotification(SUser, true, itemSlot, Config["跨界失败提示5"]);
|
||||
_Cross_StoneBynangua.CUser_SendCmdErrorPacket(SUser, 84, 13)
|
||||
} else {
|
||||
local num = NativePointer(ItemObj.C_Object).add(7).readU32();
|
||||
_Cross_StoneBynangua.SendConsume(SUser, itemSlot, num);
|
||||
//销毁背包中的道具
|
||||
equObj.Delete();
|
||||
//刷新玩家背包列表
|
||||
SUser.SendUpdateItemList(1, 0, equSlot);
|
||||
//刷新账号金库列表
|
||||
Timer.SetTimeOut(function() {
|
||||
CargoObj.SendItemList();
|
||||
}, 1);
|
||||
_Cross_StoneBynangua.sendNotification(SUser, false, itemSlot, format(Config["跨界成功提示"], PvfItem.GetNameById(equObj.GetIndex())));
|
||||
}
|
||||
}
|
||||
Sq_WriteByteArr(S_Ptr("0x820110E"), [0x3D, 0x4E, 0xD1, 0x28, 0x00]);
|
||||
Sq_WriteByteArr(S_Ptr("0x8201647"), [0xE8, 0xEC, 0x02, 0x00, 0x00]);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
class _Cross_StoneBynangua {
|
||||
function sendNotification(SUser, bool, slot, message) {
|
||||
local Config = GlobalConfig.Get("多彩蜜蜡改跨界石_Nangua.json");
|
||||
if(bool){
|
||||
SUser.GiveItem(2675422, 1);
|
||||
SUser.SendUpdateItemList(1, 0, slot);
|
||||
}
|
||||
if (Config["233弹窗提示开启(true开启/false关闭)"]) {
|
||||
SUser.SendNotiBox(message, 1);
|
||||
} else {
|
||||
SUser.SendNotiPacketMessage(message, 8);
|
||||
}
|
||||
}
|
||||
function CUser_SendCmdErrorPacket(SUser, a, b) {
|
||||
return Sq_CallFunc(S_Ptr("0x0867BF42"), "int", ["pointer", "int", "int"], SUser.C_Object, a, b);
|
||||
}
|
||||
function SendConsume(SUser,ItemSlot,num){
|
||||
local Pack = Packet();
|
||||
Pack.Put_Header(1, 84);
|
||||
Pack.Put_Byte(1);
|
||||
Pack.Put_Short(ItemSlot);
|
||||
Pack.Put_Int(num);
|
||||
Pack.Put_Short(2);
|
||||
Pack.Finalize(true);
|
||||
SUser.Send(Pack);
|
||||
Pack.Delete();
|
||||
}
|
||||
}
|
||||
15
示例项目/多彩蜜蜡改跨界石/多彩蜜蜡改跨界石_Nangua.json
Normal file
15
示例项目/多彩蜜蜡改跨界石/多彩蜜蜡改跨界石_Nangua.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"请看这里": "此功能需要登录器支持或者dll支持,否则无法使用(多彩蜜蜡)",
|
||||
"跨界成功提示": "已成功将 [%s] 跨界存放至账号仓库",
|
||||
"跨界失败提示1": "账号仓库已满 无法进行跨界",
|
||||
"跨界失败提示2": "跨界失败, [%s] 不可以跨界",
|
||||
"跨界失败提示3": "跨界失败, 该装备类型无法跨界",
|
||||
"跨界失败提示4": "跨界失败, 携带异界气息的装备无法进行跨界",
|
||||
"跨界失败提示5": "跨界失败",
|
||||
"不可跨界装备": [270981, 33333],
|
||||
"不可跨界的装备类型":[10],
|
||||
"装备类型(10武器 11称号 12上衣 13头肩 14下装 15鞋子 16腰带 17项链 18手镯 19戒指 20左槽 21右槽)":"",
|
||||
"跨界石固定道具ID为2675422更改无效": "",
|
||||
"233弹窗提示开启(true开启/false关闭)":true,
|
||||
"提示":"开启弹窗提示需在群文件下载 <客户端消息框233.dll> 插件,否则会导致游戏崩溃"
|
||||
}
|
||||
Reference in New Issue
Block a user