台服dnf吧 关注:116,411贴子:1,826,396

脑洞二开,说说DP2实现暗黑赫拉迪克方块的方法

只看楼主收藏回复

脑洞大开,说说DP2实现暗黑赫拉迪克方块的方法
紧接上一篇《脑洞向关于DP插件的一些应用》没看过的小伙伴可以去搜一下
############################分割线##############################
自从有了合成方法以后,便有了一个不用设计图任意合成的方法,思路大致如下
使用dp2,可以检测背包内容,我们使用装备的前四格作为合成内容,在用户输入“//融合”时,可以对背包前四格进行判断,符合要求后,通过邮件发送合成完的装备,再通过dpx.item.delete(user, space, slot, count)函数将相关的道具删除。
例如,装备前四格分别放,三孔巨剑(700001)+魔攻宝石(800004)+独立宝石(800005)+属强宝石(800006)= 魔攻独立属强巨剑(904050601)
##########################################################################
if input == "//赫迪拉斯合成" then
local party = user:GetParty()
local dungeon = party:GetDungeon()
local dungeonId = dungeon:GetIndex()
local inven = user:GetCurCharacInvenR()
if inven:CheckItemExist(700001) > -1 and inven:CheckItemExist(800004) > -1 and inven:CheckItemExist(800005) > -1 and inven:CheckItemExist(800006) > -1 then
dpx.mail.item(user:GetCharacNo(), 3, "合成", "恭喜您合成成功",904050601,1)
dpx.item.delete(user, ItemSpace.INVENTORY, 1, 1);
dpx.item.delete(user, ItemSpace.INVENTORY, 2, 1);
dpx.item.delete(user, ItemSpace.INVENTORY, 3, 1);
dpx.item.delete(user, ItemSpace.INVENTORY, 34 1);
end
return 0
end
##########################################################################
那么问题就来了,这样一来得做多少装备呢?不急,我们用代码来生成一下
(以下是java代码,本人用java比较多,会其他的参考思路即可)
##########################################################################
public class ScriptCreater {
private static Map<String,String> equNames = new HashMap();
private static Map<String,String> runeNames = new HashMap();
private static Map<String,String> runeAttr = new HashMap();
//这个是装备类型的枚举
static {
equNames.put("01", "巨剑");
equNames.put("02", "短剑");
equNames.put("03", "太刀");
equNames.put("04", "光剑");
equNames.put("05", "钝器");
equNames.put("11", "臂铠");
}
//这个是宝石的枚举
static {
runeNames.put("01", "生命");
runeNames.put("02", "法力");
runeNames.put("03", "物攻");
runeNames.put("04", "魔攻");
runeNames.put("05", "独立");
runeNames.put("06", "属强");
}
//这个是装备属性的枚举
static {
runeAttr.put("01", "[HP MAX]\r\n" + "40\r\n");
runeAttr.put("02", "[MP MAX]\r\n" + "40\r\n");
runeAttr.put("03", "[equipment physical attack]\r\n" + "500600\r\n");
runeAttr.put("04", "[equipment magical attack]\r\n" + "500600\r\n");
runeAttr.put("05", "[separate attack]\r\n" + "100200\r\n");
runeAttr.put("06", "[all elemental attack]\r\n" + "40\r\n");
}
public static void main(String[] args) {
//遍历
Object[] equList = equNames.keySet().toArray();
Object[] runeList = runeNames.keySet().toArray();
for (int i = 0; i < runeList.length; i++) {
for (int j = 0; j < runeList.length; j++) {
for (int k = 0; k < runeList.length; k++) {
for (int l = 0; l < equList.length; l++) {
String name = runeNames.get(runeList[i]) + runeNames.get(runeList[j]) + runeNames.get(runeList[k]) + "的" + equNames.get(equList[j]);
if(i==3&&j==4&&k==5&&l==2) {
System.out.println("[name]\r\n\""+name+"\"\r\n" + runeAttr.get(runeList[i])+ runeAttr.get(runeList[j])+ runeAttr.get(runeList[k]));
}
}
}
}
}
}
}
##########################################################################

这个是生成结果,自己输出成文件就行了,随便输出了一个。
当然是不完全的,你可以通过像属性那样生成的方法,把他生成全。
##########################################################################
这样一来,我们通过代码生成了装备,生成的规则是
9+宝石1编号+宝石2编号+宝石3编号+武器类型
这样的话我们再把我们的lua脚本改一下就好了
7000开头代表带孔武器8000开头代表宝石
##########################################################################
if input == "//融合" then
local id1 = dpx.item.info(user, ItemSpace.INVENTORY, 1): GetType()
local id2 = dpx.item.info(user, ItemSpace.INVENTORY, 2): GetType()
local id3 = dpx.item.info(user, ItemSpace.INVENTORY, 3): GetType()
local id4 = dpx.item.info(user, ItemSpace.INVENTORY, 4): GetType()
//自己写一些判断逻辑,判断能否合成下面是判断第一个装备id是在700000-800000
if id1 > 700000 and id1<800000 and id2>800000 and id2<900000 and id3>800000 and id3<900000 and id4>800000 and id4<900000 then
//取余数就是要合成的编号例如二号宝石是800012,除以800000的余数是12
local eid = 9..id2%800000..id3%800000..id4%800000..id1%700000
dpx.mail.item(user:GetCharacNo(), 3, "合成", "恭喜您合成成功",eid,1)
end
end
#########################################################################
最后,DP2牛逼!


IP属地:天津1楼2023-05-10 11:05回复


    IP属地:天津来自Android客户端2楼2023-05-10 11:09
    回复
      最后加一句,符文之语,可以产生一些特殊的效果,例如你可以把生成好的生命属强独立巨剑改成精神巨剑,就出现符文之语了


      IP属地:天津来自Android客户端3楼2023-05-10 11:14
      回复
        牛逼


        IP属地:江苏来自iPhone客户端4楼2023-05-10 11:37
        回复
          除了牛逼,找不到别的词汇了


          IP属地:河北来自Android客户端5楼2023-05-10 11:49
          回复
            期待大佬完善


            IP属地:广西来自Android客户端6楼2023-05-10 11:53
            回复
              快做个TP+让我到处飞


              IP属地:内蒙古来自Android客户端7楼2023-05-10 12:00
              收起回复


                IP属地:天津来自Android客户端8楼2023-05-10 12:13
                回复
                  不懂帮顶


                  IP属地:广西来自Android客户端9楼2023-05-10 12:30
                  回复
                    6


                    IP属地:河南来自手机贴吧10楼2023-05-10 12:31
                    回复
                      符文之语呢


                      IP属地:四川来自Android客户端11楼2023-05-10 12:34
                      收起回复
                        666


                        IP属地:广东来自Android客户端12楼2023-05-10 12:50
                        回复
                          大佬牛逼!


                          IP属地:辽宁来自Android客户端13楼2023-05-10 12:56
                          回复
                            你小子,快让我加个好友


                            IP属地:河北来自Android客户端14楼2023-05-10 13:37
                            回复
                              666 牛逼


                              IP属地:河北15楼2023-05-10 13:49
                              回复