添加示例项目
This commit is contained in:
11
示例项目/装备继承券/Proj.ifo
Normal file
11
示例项目/装备继承券/Proj.ifo
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"ProjectName": "装备继承券",
|
||||
"ProjectDescribe": "可以将装备的强化附魔增幅等属性更改到另外一个装备",
|
||||
"ProjectAuthor": "南瓜",
|
||||
"ProjectVersion": 1.3,
|
||||
"ProjectConfig": "装备继承券配置_Nangua.json",
|
||||
"ProjectFiles": [
|
||||
"装备继承券.nut"
|
||||
],
|
||||
"ProjectRunFunc": "_Dps_InheritItem_Main_"
|
||||
}
|
||||
166
示例项目/装备继承券/装备继承券.nut
Normal file
166
示例项目/装备继承券/装备继承券.nut
Normal file
@@ -0,0 +1,166 @@
|
||||
|
||||
function InheritFuncBynangua(SUser, ItemId) {
|
||||
local Config = GlobalConfig.Get("装备继承券配置_Nangua.json");
|
||||
//获取玩家背包
|
||||
local InvenObj = SUser.GetInven();
|
||||
if(!InvenObj) {
|
||||
return;
|
||||
}
|
||||
//获取装备栏第一栏装备
|
||||
local firstItemObj = InvenObj.GetSlot(Inven.INVENTORY_TYPE_ITEM, Config["继承配置"]["装备1摆放位置"]);
|
||||
//获取装备栏第二栏装备
|
||||
local secondItemObj = InvenObj.GetSlot(Inven.INVENTORY_TYPE_ITEM, Config["继承配置"]["装备2摆放位置"]);
|
||||
//装备不存在
|
||||
if (firstItemObj.IsEmpty || secondItemObj.IsEmpty) {
|
||||
_InheritBynangua.NotifyUserAndReturn(SUser, ItemId, Config["继承配置"]["继承失败提示1"]);
|
||||
return;
|
||||
}
|
||||
//获取ID
|
||||
local firstItemIndex = firstItemObj.GetIndex();
|
||||
local secondItemIndex = secondItemObj.GetIndex();
|
||||
//获取类型
|
||||
local firstItemInfo = PvfItem.GetPvfItemById(firstItemIndex);
|
||||
local firstItemType = NativePointer(firstItemInfo.C_Object).add(141 * 4).readU32();
|
||||
local secondItemInfo = PvfItem.GetPvfItemById(secondItemIndex);
|
||||
local secondItemType = NativePointer(secondItemInfo.C_Object).add(141 * 4).readU32();
|
||||
//判断是否在禁止继承装备中
|
||||
foreach(exceptItemIndex in Config["继承配置"]["禁止继承装备ID"]) {
|
||||
if(firstItemIndex == exceptItemIndex || secondItemIndex == exceptItemIndex) {
|
||||
//获取装备名字
|
||||
local ItemName = PvfItem.GetNameById(exceptItemIndex);
|
||||
_InheritBynangua.NotifyUserAndReturn(SUser, ItemId, format(Config["继承配置"]["继承失败提示5"], ItemName));
|
||||
return;
|
||||
}
|
||||
}
|
||||
// 禁止继承的装备类型(10武器,11称号,12上衣,13头肩,14下装,15鞋子,16腰带,17项链,18手镯,19戒指,20左槽,21右槽)
|
||||
if (Config["继承配置"]["禁止继承装备类型"].find(firstItemType || secondItemType) != null) {
|
||||
_InheritBynangua.NotifyUserAndReturn(SUser, ItemId, Config["继承配置"]["继承失败提示2"]);
|
||||
return;
|
||||
}
|
||||
// 1、2栏装备类型不同无法继承
|
||||
if (firstItemType != secondItemType) {
|
||||
_InheritBynangua.NotifyUserAndReturn(SUser, ItemId, Config["继承配置"]["继承失败提示2"]);
|
||||
return;
|
||||
}
|
||||
//装备等级大于等于50级才可以继承,1、2栏装备等级差距超过5级无法继承
|
||||
if (firstItemInfo.GetUsableLevel() < Config["继承配置"]["装备等级大于等于多少允许继承"] || secondItemInfo.GetUsableLevel() < Config["继承配置"]["装备等级大于等于多少允许继承"] || _InheritBynangua.CheckUsableLevelBynangua(firstItemInfo.GetUsableLevel() - secondItemInfo.GetUsableLevel()) > Config["继承配置"]["装备等级跨度超过多少不允许继承"]) {
|
||||
_InheritBynangua.NotifyUserAndReturn(SUser, ItemId, Config["继承配置"]["继承失败提示3"]);
|
||||
return;
|
||||
}
|
||||
//装备品级低于3无法继承
|
||||
if (firstItemInfo.GetRarity() < Config["继承配置"]["装备品级低于多少不允许继承"] || secondItemInfo.GetRarity() < Config["继承配置"]["装备品级低于多少不允许继承"]) {
|
||||
_InheritBynangua.NotifyUserAndReturn(SUser, ItemId, Config["继承配置"]["继承失败提示4"]);
|
||||
return;
|
||||
}
|
||||
if (!Config["继承配置"]["是否允许不同品级的装备继承(true可以,false不可以)"]) {
|
||||
if (firstItemInfo.GetRarity() != secondItemInfo.GetRarity()) {
|
||||
_InheritBynangua.NotifyUserAndReturn(SUser, ItemId, Config["继承配置"]["继承失败提示4"]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
//满足以上条件后开始执行继承逻辑
|
||||
//将第一个装备的属性继承到第二个装备
|
||||
Sq_CallFunc(S_Ptr("0x8671EB2"), "int", ["pointer", "pointer", "pointer"], SUser.C_Object, secondItemObj.C_Object, firstItemObj.C_Object);
|
||||
// 将第一个装备的镶嵌数据库ID设置为0
|
||||
NativePointer(firstItemObj.C_Object).add(25).writeU32(0);
|
||||
//获取异界气息属性
|
||||
local firstBreath = NativePointer(firstItemObj.C_Object).add(31).readU8();
|
||||
local secondBreath = NativePointer(firstItemObj.C_Object).add(32).readU8();
|
||||
if(firstBreath > 0 && Config["继承配置"]["是否允许继承异界气息(true可以,false不可以)"]) {
|
||||
//写入异界气息属性
|
||||
NativePointer(secondItemObj.C_Object).add(31).writeU8(firstBreath);
|
||||
NativePointer(secondItemObj.C_Object).add(32).writeU8(secondBreath);
|
||||
//清除第一件装备异界气息属性
|
||||
NativePointer(firstItemObj.C_Object).add(31).writeU8(0);
|
||||
NativePointer(firstItemObj.C_Object).add(32).writeU8(0);
|
||||
}
|
||||
//移除被继承装备属性
|
||||
local removeAttributes = [6, 17, 51, 13];
|
||||
foreach (attributes in removeAttributes) {
|
||||
NativePointer(firstItemObj.C_Object).add(attributes).writeU8(0);
|
||||
}
|
||||
//刷新背包信息
|
||||
SUser.SendUpdateItemList(1, 0, Config["继承配置"]["装备1摆放位置"]);
|
||||
SUser.SendUpdateItemList(1, 0, Config["继承配置"]["装备2摆放位置"]);
|
||||
firstItemObj = InvenObj.GetSlot(Inven.INVENTORY_TYPE_ITEM, Config["继承配置"]["装备1摆放位置"]);
|
||||
secondItemObj = InvenObj.GetSlot(Inven.INVENTORY_TYPE_ITEM, Config["继承配置"]["装备2摆放位置"]);
|
||||
//获取装备名字
|
||||
local firstItemName = PvfItem.GetNameById(firstItemObj.GetIndex());
|
||||
local secondItemName = PvfItem.GetNameById(secondItemObj.GetIndex());
|
||||
//获取强化信息
|
||||
local upgrade = secondItemObj.GetUpgrade();//强化
|
||||
//字符串合成
|
||||
if (upgrade > 0) {
|
||||
secondItemName = "+" + upgrade + " " + secondItemName;
|
||||
}
|
||||
//组合消息
|
||||
local AdMsgObj = AdMsg()
|
||||
AdMsgObj.PutType(Config["继承成功提示"]["信息发送位置"]);
|
||||
if (Config["继承成功提示"]["信息发送位置"] != 14){
|
||||
AdMsgObj.PutString(" ");
|
||||
}
|
||||
AdMsgObj.PutImoticon(Config["继承成功提示"]["表情"]);
|
||||
AdMsgObj.PutString(Config["继承成功提示"]["信息1"]);
|
||||
AdMsgObj.PutEquipment("[" + firstItemName + "]", firstItemObj, _InheritBynangua.RarityColor(firstItemIndex));
|
||||
AdMsgObj.PutString(Config["继承成功提示"]["信息2"]);
|
||||
AdMsgObj.PutEquipment("[" + secondItemName + "]", secondItemObj, _InheritBynangua.RarityColor(secondItemIndex));
|
||||
AdMsgObj.Finalize();
|
||||
SUser.Send(AdMsgObj.MakePack());
|
||||
AdMsgObj.Delete();
|
||||
}
|
||||
|
||||
class _InheritBynangua {
|
||||
function CheckUsableLevelBynangua(value) {
|
||||
return value >= 0 ? value : -value;
|
||||
}
|
||||
function NotifyUserAndReturn(SUser, ItemId, message) {
|
||||
local Config = GlobalConfig.Get("装备继承券配置_Nangua.json");
|
||||
//发送通知
|
||||
if(Config["弹窗提示(true为开启,false为关闭)"]) {
|
||||
SUser.SendNotiBox(message, 1);
|
||||
}else{
|
||||
SUser.SendNotiPacketMessage(message, 8);
|
||||
}
|
||||
//返还消耗的道具
|
||||
SUser.GiveItem(ItemId, 1);
|
||||
}
|
||||
function RarityColor(item_id) {
|
||||
local PvfItemObj = PvfItem.GetPvfItemById(item_id);
|
||||
if (PvfItemObj == null) {
|
||||
return;
|
||||
}
|
||||
local CItem_get_rarity = PvfItemObj.GetRarity(); // 装备品级
|
||||
return _InheritBynangua.rarityColorMap[(CItem_get_rarity).tostring()];
|
||||
}
|
||||
//品级对应的RGB
|
||||
rarityColorMap = {
|
||||
"0": [255, 255, 255], // 普通
|
||||
"1": [104, 213, 237], // 高级
|
||||
"2": [179, 107, 255], // 稀有
|
||||
"3": [255, 0, 255], // 神器
|
||||
"4": [255, 180, 0], // 史诗
|
||||
"5": [255, 102, 102], // 勇者
|
||||
"6": [255, 20, 147], // 深粉红色
|
||||
"7": [255, 215, 0] // 金色
|
||||
};
|
||||
}
|
||||
|
||||
//加载入口
|
||||
function _Dps_InheritItem_Main_() {
|
||||
_Dps_InheritItem_Logic_();
|
||||
}
|
||||
|
||||
//重载入口
|
||||
function _Dps_InheritItem_Main_Reload_(OldConfig) {
|
||||
local Cofig = GlobalConfig.Get("装备继承券配置_Nangua.json");
|
||||
Cb_Use_Item_Sp_Func.rawdelete(OldConfig["继承配置"]["继承券道具ID"].tointeger());
|
||||
|
||||
//重新注册
|
||||
_Dps_InheritItem_Logic_();
|
||||
}
|
||||
|
||||
function _Dps_InheritItem_Logic_() {
|
||||
local Cofig = GlobalConfig.Get("装备继承券配置_Nangua.json");
|
||||
// 装备继承
|
||||
Cb_Use_Item_Sp_Func[Cofig["继承配置"]["继承券道具ID"]] <- InheritFuncBynangua;
|
||||
}
|
||||
13
示例项目/装备继承券/装备继承券_Lenheart.json
Normal file
13
示例项目/装备继承券/装备继承券_Lenheart.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"继承券id_不可热重载": 17577,
|
||||
"公告提示1":"请将已强化/增幅/锻造的装备放到\n[装备栏] 的第一格,要继承的装备放到第二格。",
|
||||
"公告提示2":"继承或要继承的装备不能是称号!",
|
||||
"公告提示3":"继承失败!\n[武器]\n只能继承至:\n[武器]!",
|
||||
"公告提示4":"继承失败!\n[首饰]\n只能继承至:\n[首饰]",
|
||||
"公告提示5":"继承失败!\n[魔法石、辅助装备]只能继承至:\n[魔法石或辅助装备]",
|
||||
"公告提示6":"继承失败!\n[护肩、上衣、下装、腰带、鞋]\n只能继承至:\n[护肩、上衣、下装、腰带、鞋]",
|
||||
"公告提示7":"只有大于或者等于 【60级】 的装备才可以继承。",
|
||||
"公告提示8":"只有 【神器】 以上的品级才能继承。",
|
||||
"最低可转移等级":60,
|
||||
"最低可转移品级":3
|
||||
}
|
||||
30
示例项目/装备继承券/装备继承券配置_Nangua.json
Normal file
30
示例项目/装备继承券/装备继承券配置_Nangua.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"继承配置":{
|
||||
"继承券道具ID":123014,
|
||||
"装备1摆放位置":9,
|
||||
"装备2摆放位置":10,
|
||||
"装备等级大于等于多少允许继承":50,
|
||||
"装备等级跨度超过多少不允许继承":10,
|
||||
"装备品级低于多少不允许继承":3,
|
||||
"禁止继承装备ID":[1222, 1111],
|
||||
"禁止继承装备类型":[11],
|
||||
"是否允许不同品级的装备继承(true可以,false不可以)":true,
|
||||
"是否允许继承异界气息(true可以,false不可以)":false,
|
||||
"继承失败提示1":" 继承失败\n请检查装备栏第一/二格是否存在装备!",
|
||||
"继承失败提示2":" 继承失败\n请检查装备类型是否正确!",
|
||||
"继承失败提示3":" 继承失败\n请检查装备等级是否正确!",
|
||||
"继承失败提示4":" 继承失败\n请检查装备品级是否正确!",
|
||||
"继承失败提示5":" 继承失败\n特殊/指定装备 [%s] 禁止继承!"
|
||||
},
|
||||
"继承成功提示":{
|
||||
"信息发送位置": 37,
|
||||
"表情": 59,
|
||||
"信息1": " 已成功将",
|
||||
"信息2": "属性继承至"
|
||||
},
|
||||
"弹窗提示(true为开启,false为关闭)":false,
|
||||
"提示1":"开启弹窗提示需在群文件下载 <客户端消息框233.dll> 插件,否则会导致游戏崩溃",
|
||||
"提示2":"(装备栏9-56,第一排第一格为9,第二格为10以此类推)快捷栏(第一格为3,第二格为4以此类推)",
|
||||
"提示3":"装备类型继承指武器继承武器(不同职业也可以继承),防具(腰带继承腰带,鞋子继承鞋子以此类推,不同甲类也可继承),首饰同理",
|
||||
"提示4":"表情可在群文件搜索<表情>下载导入pvf"
|
||||
}
|
||||
Reference in New Issue
Block a user