00002 贪婪洞窟.003.5:地牢商店

贪婪洞窟游戏地牢商店配置解析与自动化修改
本文介绍了贪婪洞窟游戏地牢商店的配置文件结构,包括商品价格、库存和商人ID,并讨论了如何通过Swift脚本自动化修改商店出售物品,实现以1水晶价格出售指定套装的功能。此外,还提到了Xcode的一个小bug。


00002 贪婪洞窟.003.5:地牢商店

         地牢商店在shopincave.plist中定义。格式如下:

            {

                       6001= {

                                   1= {

                                               gems= 1;

                                               itemId= 10030;

                                               num= 1;

                                   };

                                   2= {

                                               gems= 1;

                                               itemId= 20030;

                                               num= 1;

                                   };

                                   ……

                       };

                       6002= { …… };

                       6003= { …… };

                       ……

            }

60016002等是商人的id,这在“00002 贪婪洞窟.003.4:地牢生成”中提到过。它们的规律如下:

6001-6010

普通难度

6101-6110

噩梦难度

6111-6119

地狱难度

地狱难度为毛不是62016209?都不按规律来,开发者有点不负责哦。

商人id对应的节点是个映射,而映射的id是自然数。这个id在游戏中毫无作用,在显示商店物品时,总是按照游戏内部特有的顺序。节点类型为毛不改成数组?

下面的单个物品配置很好理解:

l        gem指定物品或者装备的出售价格(水晶)。

l        itemId:指定物品或者装备的id

l        num:指定物品或者装备的库存数量。这里需要注意,对于装备,不要使用大于1的值。不要妄想设置后能够一次购买nnn件装备:购买装备时不会让你选择购买多少件;购买需要gem*num个水晶,但装备只给一件。

有些物品和装备是可以使用金币购买的,此时只要设置gem=0即可,而具体的金币出售价格,则在equipmentAttribute.plistitemsAttribute.plist中的指定(price字段)。

手工去一个一个修改出售物品,这个方法很“愚公”。除非出售的物品毫无规律,否则尽可能还是写写脚本用用程序。下面的Swift脚本实现了地牢商店以1水晶的价格出售指定套装的功能。注意,此处的套装指的是整套装备,而不是暗金和梦境的那种集齐后有额外加成的成套装备。

let version="贪婪洞窟(v1.5.0)"

let configs:[(String,[String])]=[//map[setId]

    ("6001",["0030","0041"]),

    ("6002",["0021","0060"]),

    ("6003",["0090","0111"]),

    ("6004",["0081","0120"]),

    ("6005",["0150","0171","0380"]),

    ("6006",["0141","0180"]),

    ("6007",["0210","0231"]),

    ("6008",["0191","0240"]),

    ("6009",["0270","0291","0310"]),

    ("6010",["0261","0300"]),

   

    ("6101",["1030","1041"]),

    ("6102",["0320","1021","1060","5010"]),

    ("6103",["0330","1090","1111"]),

    ("6104",["0340","1081","1120","5020"]),

    ("6105",["0350","1150","1171"]),

    ("6106",["0360","1141","1180"]),

    ("6107",["0370","1210","1231"]),

    ("6108",["1191","1240","5040"]),

    ("6109",["0400","1270","1291"]),

    ("6110",["1261","1300","5050"]),

   

    ("6111",["0390","2301","3030"]),

    ("6112",["0410","3050","3060","5060"]),

    ("6113",["3012","3090"]),

    ("6114",["0420","3110","3120","5070"]),

    ("6115",["3111","3150"]),

    ("6116",["0430","3170","3180","5080"]),

    ("6117",["3171","3210"]),

    ("6118",["0440","3230","3240","5090"]),

    ("6119",["3180","3180","3180"])

]

 

let equipmentsAttribute:NSDictionary = NSDictionary(contentsOfFile:"/Users/x/\(version)/equipmentAttribute.plist")!

let filePathName = "/Users/x/\(version)/shopincave.plist"

 

func doEquipment(caveLevel:NSMutableDictionary, equipmentId:String)->Void

{

    if equipmentsAttribute.valueForKey(equipmentId) != nil

    {

        let itemId = String(caveLevel.allKeys.count+1)

        let item:NSMutableDictionary =NSMutableDictionary()

        item.setValue("1", forKey: "gems")

        item.setValue("1", forKey: "num")

        item.setValue(equipmentId, forKey: "itemId")

        caveLevel.setValue(item, forKey:itemId)

    }

}

 

let content:NSMutableDictionary =NSMutableDictionary()

for config in configs

{

    let caveLevel:NSMutableDictionary = NSMutableDictionary()

    for setId in config.1

    {

        for i in 1...8

        {

            doEquipment(caveLevel, equipmentId:String(i)+setId)

        }

    }

    content.setValue(caveLevel, forKey: config.0)

}

content.writeToFile(filePathName,atomically: true)

 

print("done!")

无意中居然发现了xcodebugatomically!没有u,哈哈。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值