我正在编写脚本,可以使用一些指导。该脚本的目的是允许玩家获取魔法物品并将其存储在特定的插槽中。我遇到的问题是尝试根据给出的插槽生成项目。
我正在创建一个类型dict的子类。这是我将存储用户项目的地方。
class PlayerData(dict):
def __init__(self):
self.weapon = 0
self.head = 0
self.back = 0
self.chest = 0
self.hands = 0
self.feet = 0
def __getattr__(self, attr):
return self.__getitem__(attr)
def __setattr__(self, attr, value):
self.__setitem__(attr, value)
我将这些值存储在字典中。我有一个修改这些条目的类。其中一个方法迭代PlayerData中的项目,如果所有项目都为空,则抓取一个随机项目并尝试向其添加一个对象(类型为MagicItem)。 “self.steamid”是对玩家的引用。
def addItem(self):
chance = 75
slot = 0
count = 0
for k,v in PlayerDataDictionary[self.steamid].iteritems():
if not v:
count += 1
if count = 6:
chance = 100
if random.randint(1,100) <= chance:
slot = random.choice(PlayerDataDictionary[self.steamid])
if slot:
chooseReplace(self, slot)
else:
PlayerDataDictionary[self.steamid][slot] = MagicItem(slot)
else:
es.tell(userid, '#green', 'You destroyed your item during creation!')
# This is a custom module for a game, this function works as intended
但是,创建的项目取决于插槽。我如何确定将PlayerData中的哪个插槽传递给MagicItem类?
答案 0 :(得分:1)
从我理解正在发生的事情的方式来看,行:
slot = random.choice(PlayerDataDictionary[self.steamid])
是唯一分配slot
的地方。因此,你应该能够在某处传递该变量(打印,另一个函数,无论你想用它做什么)。如果您正在寻找特定的索引,那么您将需要在PlayerDataDictionary
中编写一个可以返回插槽索引的函数或者:
size = len(PlayerDataDictionary[self.steamid])
random_slot = random.randint(0, size)
这将为random_slot
留下一个您可以传递的索引值
if PlayerDataDictionary[self.steamid][random_slot]:
chooseReplace(self, random_slot)
else:
PlayerDataDictionary[self.steamid][random_slot] = MagicItem(random_slot)
只要我正确理解你的问题,这应该可行。你对你究竟想要什么感到遗憾,所以如果我错过了确切的问题,请告诉我。