179 lines
6.4 KiB
Python
179 lines
6.4 KiB
Python
# Dressing Room NPC
|
|
|
|
equip_type = 0
|
|
equip_page = 0
|
|
page_limit = 300
|
|
expire_time = 5
|
|
|
|
# flags
|
|
flag_main = 1
|
|
flag_browse = 1
|
|
flag_search = 0
|
|
# select category
|
|
# select specific page
|
|
# go back to categories
|
|
|
|
# name, buy_cost, rent_cost
|
|
categories = [
|
|
["Hats", 2, 0],
|
|
["Tops", 2, 0],
|
|
["Bottoms", 2, 0],
|
|
["Overalls", 2, 0],
|
|
["Shoes", 2, 0],
|
|
["Gloves", 2, 0],
|
|
["Capes", 2, 0],
|
|
["Weapons", 2, 0],
|
|
["Face Accessories", 2, 0],
|
|
["Eye Accessories", 2, 0],
|
|
["Rings", 2, 0]
|
|
]
|
|
|
|
selected_item = 0
|
|
|
|
def prompt_main():
|
|
text = "#eYou currently have #b" + str(sm.getVotePoints()) +" Vote Points#n\r\nPlease select a category\r\n"
|
|
count = 0
|
|
for category in categories:
|
|
if count == 4:
|
|
text += "\n#b#L" + repr(count) + "#" + str(category[0]) + "#l"
|
|
text += "\t\t\t\t\t\t\t#e#r#L999#Search for an item#l#n\r\n"
|
|
else:
|
|
text += "\n#b#L" + repr(count) + "#" + str(category[0]) + "#l\r\n"
|
|
count += 1
|
|
return text
|
|
|
|
def prompt_equips(type, page, limit):
|
|
equip_tuple = sm.getDressingRoomEquips(type, page, limit)
|
|
|
|
size = equip_tuple.getLeft()
|
|
equips = equip_tuple.getRight()
|
|
|
|
fromIndex = page
|
|
toIndex = page + limit
|
|
|
|
if (toIndex > size):
|
|
toIndex = size
|
|
|
|
text = "Displaying " + repr(fromIndex) + " - " + repr(toIndex) + " of " + repr(size) + " " + categories[type][0] + " \r\n"
|
|
for equip in equips:
|
|
item_id = equip.getItemId()
|
|
text += "#b#L" + repr(item_id) + "##v" + repr(item_id) + "# #z" + repr(item_id) + "##l#k\r\n"
|
|
text += "\r\n"
|
|
|
|
if page != 0:
|
|
text += "#b#L9998#Previous Page\r\n"
|
|
|
|
if (toIndex) < size:
|
|
text += "#b#L9999#Next Page#l\r\n"
|
|
|
|
text += "#b#L10000#Back to Categories#l"
|
|
|
|
return text
|
|
|
|
def prompt_options(item_id):
|
|
selected_item = item_id
|
|
text = (
|
|
"You've selected #v{0}# #b#z{0}##k.\r\n\r\n"
|
|
"Please select what you would like to do:\r\n"
|
|
"#L1#Buy for #b{1}#k VP#l\r\n"
|
|
"#L2#Rent for #b{2}#k VP#l\r\n\r\n"
|
|
"#L0#Go back to the list#l"
|
|
).format(
|
|
item_id,
|
|
categories[sm.getDressingRoomEquipType(item_id)][1],
|
|
categories[sm.getDressingRoomEquipType(item_id)][2]
|
|
)
|
|
|
|
return text
|
|
|
|
def prompt_search():
|
|
text = (
|
|
"Please enter the name of the item you want to search for:"
|
|
)
|
|
|
|
return text
|
|
|
|
def message_done(item_id, cost, rent):
|
|
buy_text = "bought" if not rent else "rented"
|
|
text = (
|
|
"You've {0} #v{1}# #b#z{1}##k.\r\n\r\n"
|
|
"#b{2}#k Vote Points will be deducted from your account.\r\n\r\n"
|
|
).format(buy_text, item_id, cost)
|
|
|
|
if rent:
|
|
text += "The item will expire in #b{0} minutes#k.".format(expire_time)
|
|
|
|
return text
|
|
|
|
|
|
while flag_main == 1:
|
|
selection_main = sm.sendNext(prompt_main())
|
|
|
|
if selection_main != 999:
|
|
flag_browse = 1
|
|
while flag_browse == 1:
|
|
selection_equips = sm.sendNext(prompt_equips(selection_main, equip_page, page_limit))
|
|
if selection_equips == 9998: # previous
|
|
equip_page -= page_limit
|
|
elif selection_equips == 9999: # next
|
|
equip_page += page_limit
|
|
elif selection_equips == 10000: # exit
|
|
flag_browse = 0
|
|
else:
|
|
flag_browse = 0
|
|
selection_options = sm.sendNext(prompt_options(selection_equips))
|
|
item = selection_equips
|
|
if selection_options == 0: # exit - return to list
|
|
flag_browse = 1
|
|
elif selection_options != 0:
|
|
cost = categories[selection_main][selection_options]
|
|
if sm.getVotePoints() < cost:
|
|
sm.sendNext("You do not have enough vote points!")
|
|
else:
|
|
if selection_options == 1: # buy
|
|
sm.giveItem(item)
|
|
sm.deductVotePoints(cost)
|
|
sm.sendNext(message_done(item, cost, False))
|
|
flag_main = 0 # exit npc
|
|
elif selection_options == 2: # rent
|
|
sm.giveItemWithExpireDate(item, 1, False, 5)
|
|
sm.deductVotePoints(cost)
|
|
sm.sendNext(message_done(item, cost, True))
|
|
flag_main = 0 # exit npc
|
|
elif selection_main == 999:
|
|
flag_search = 1
|
|
search_result = sm.sendAskText(prompt_search(), "", 0, 12)
|
|
search_tuple = sm.getDressingRoomEquipsSearch(search_result)
|
|
|
|
size = search_tuple.getLeft()
|
|
equips = search_tuple.getRight()
|
|
|
|
text_list = "Displaying {0} results for query '{1}'.\r\n".format(size, search_result)
|
|
for id, string in equips.items():
|
|
text_list += "#b#L" + repr(id) + "##v" + repr(id) + "# #z" + repr(id) + "##l#k\r\n"
|
|
|
|
if (size == 0):
|
|
sm.sendNext("There were no results for '{0}'.".format(search_result))
|
|
else:
|
|
selection_equips = sm.sendNext(text_list)
|
|
|
|
selection_options = sm.sendNext(prompt_options(selection_equips))
|
|
item = selection_equips
|
|
cost = categories[sm.getDressingRoomEquipType(selection_equips)][1]
|
|
if selection_options == 0: # exit - return to list
|
|
flag_browse = 1
|
|
elif selection_options != 0:
|
|
cost = categories[sm.getDressingRoomEquipType(selection_equips)][selection_options]
|
|
if sm.getVotePoints() < cost:
|
|
sm.sendNext("You do not have enough vote points!")
|
|
else:
|
|
if selection_options == 1: # buy
|
|
sm.giveItem(item)
|
|
sm.deductVotePoints(cost)
|
|
sm.sendNext(message_done(item, cost, False))
|
|
flag_main = 0 # exit npc
|
|
elif selection_options == 2: # rent
|
|
sm.giveItemWithExpireDate(item, 1, False, 5)
|
|
sm.deductVotePoints(cost)
|
|
sm.sendNext(message_done(item, cost, True))
|
|
flag_main = 0 # exit npc |