00002 贪婪洞窟.003.5:地牢商店
地牢商店在shopincave.plist中定义。格式如下:
{
6001= {
1= {
gems= 1;
itemId= 10030;
num= 1;
};
2= {
gems= 1;
itemId= 20030;
num= 1;
};
……
};
6002= { …… };
6003= { …… };
……
}
6001、6002等是商人的id,这在“00002 贪婪洞窟.003.4:地牢生成”中提到过。它们的规律如下:
|
6001-6010 |
|
普通难度 |
|
6101-6110 |
|
噩梦难度 |
|
6111-6119 |
|
地狱难度 |
地狱难度为毛不是6201-6209?都不按规律来,开发者有点不负责哦。
商人id对应的节点是个映射,而映射的id是自然数。这个id在游戏中毫无作用,在显示商店物品时,总是按照游戏内部特有的顺序。节点类型为毛不改成数组?
下面的单个物品配置很好理解:
l gem指定物品或者装备的出售价格(水晶)。
l itemId:指定物品或者装备的id。
l num:指定物品或者装备的库存数量。这里需要注意,对于装备,不要使用大于1的值。不要妄想设置后能够一次购买nnn件装备:购买装备时不会让你选择购买多少件;购买需要gem*num个水晶,但装备只给一件。
有些物品和装备是可以使用金币购买的,此时只要设置gem=0即可,而具体的金币出售价格,则在equipmentAttribute.plist和itemsAttribute.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!")
无意中居然发现了xcode的bug:atomically!没有u,哈哈。
贪婪洞窟游戏地牢商店配置解析与自动化修改
本文介绍了贪婪洞窟游戏地牢商店的配置文件结构,包括商品价格、库存和商人ID,并讨论了如何通过Swift脚本自动化修改商店出售物品,实现以1水晶价格出售指定套装的功能。此外,还提到了Xcode的一个小bug。
2万+

被折叠的 条评论
为什么被折叠?



