maple-v206/scripts/npc/mentoringNPC.py

134 lines
5.8 KiB
Python

from net.swordie.ms.enums import InvType
selection = sm.sendNext("#fs14##bGame Manager:#n\r\n#fs12#\r\n#kHello There! I am the game manager. Below you can find game settings that you can adjust to make your gameplay as best as possible for your needs.\r\n#k#L0#- Ignore an Item#l\r\n#L1#- Get mob drops by name#l\r\n#L2#- Check drops from mobs on current map#l\r\n#L3#- Search what monsters drop an item#l\r\n#L4#- Check Map Ownership#l\r\n#L6#- Disable Remote Skills#l"
+ "\r\n#L7# Select damage skins.#l" + "\r\n#L5#- Sell items#l")
temp = ""
if selection == 0:
ignoredDrops = set(chr.getIgnoredDrops())
for i in ignoredDrops:
temp += "#L"+str(i)+"##z"+str(i)+"##l\r\n"
ignoredDropsShow = ''.join(temp)
selection = sm.sendNext("Your ignored items:\r\n"+ignoredDropsShow+ "\r\n\r\nClick on an item to remove it from the ignore list.\r\n#L90#Add an item to ignore.#l")
if selection != 90:
if chr.existsInIgnoredDrops(selection):
chr.removeIgnoredDrop(selection)
chr.chatMessage("Removed from ignore list.")
if selection == 90:
toSearch = sm.sendAskText("Enter an item name or part of it:", "", 3, 100)
searchResults = sm.searchItems(toSearch)
if not searchResults:
sm.sendSayOkay("No items were found.")
sm.dispose()
if len(searchResults) > 150:
sm.sendNext("Too many results. Please be more specific in your search.")
sm.dispose()
somestr=""
for key, value in searchResults.items():
somestr += "#L"+str(key)+"##z"+str(key)+"##l\r\n"
selectedItem = sm.sendNext(somestr)
if chr.existsInIgnoredDrops(selectedItem) == False:
chr.addIgnoredDrop(selectedItem)
chr.chatMessage("Added an item to ignore list")
else:
chr.chatMessage("You already have this item in your ignore list.")
sm.dispose()
elif selection == 1:
toSearch = sm.sendAskText("Enter a monster name or part of it:", "", 3, 50)
searchResults = sm.searchMobs(toSearch)
if not searchResults:
sm.sendSayOkay("No monsters were found.")
sm.dispose()
if len(searchResults) > 150:
sm.sendNext("Too many results. Please be more specific in your search.")
sm.dispose()
somestr=""
for key, value in searchResults.items():
somestr += "#L"+str(key)+"##eID:#n "+str(key)+" #eName:#n "+value+"#l\r\n"
mobSelected = sm.sendNext(somestr)
sm.sendSayOkay(sm.getDropPercentageByMobForNPC(mobSelected))
elif selection == 2:
searchResults = sm.searchMobsByField()
if not searchResults:
sm.sendSayOkay("No monsters were found.")
sm.dispose()
if len(searchResults) > 150:
sm.sendNext("Too many results.")
sm.dispose()
somestr=""
for key, value in searchResults.items():
somestr += "#L"+str(key)+"##eID:#n "+str(key)+" #eName:#n "+value+"#l\r\n"
mobSelected = sm.sendNext(somestr)
sm.sendSayOkay(sm.getDropPercentageByMobForNPC(mobSelected))
elif selection == 3:
toSearch = sm.sendAskText("Enter an item name or part of it:", "", 3, 100)
searchResults = sm.searchItems(toSearch)
if not searchResults:
sm.sendSayOkay("No items were found.")
sm.dispose()
if len(searchResults) > 150:
sm.sendNext("Too many results. Please be more specific in your search.")
sm.dispose()
somestr=""
for key, value in searchResults.items():
somestr += "#L"+str(key)+"##eID:#n "+str(key)+" #eName:#n "+value+"#l\r\n"
itemSelected = sm.sendNext(somestr)
searchResults = sm.searchDrop(itemSelected)
if not searchResults:
sm.sendSayOkay("No monsters were found dropping this item.")
sm.dispose()
if len(searchResults) > 150:
sm.sendNext("Too many monsters are dropping this item. Are you searching for a global-drop item?")
sm.dispose()
somestr=""
for key, value in searchResults.items():
somestr += "#L"+str(key)+"##eID:#n "+str(key)+" #eName:#n "+value+"#l\r\n"
mobSelected = sm.sendNext(somestr)
sm.sendSayOkay(sm.getDropPercentageByMobForNPC(mobSelected))
elif selection == 4:
sm.sendSayOkay("The current map owner is #e"+chr.getField().getOwner().getName()+"#n."
"\r\n\r\nOther AFK Players:" + sm.getCharsNoOwner())
elif selection == 5:
selection = sm.sendNext("Sell:\r\n#L1#Equips#l\r\n#L2#Use#l\r\n#L4#Etc#l\r\n#L3#Setup#l\r\n#L5#Cash#l\r\n")
inventory = InvType.getInvTypeByVal(selection)
outPut = ""
itemsBagIndexes = eval(sm.getItemsByInventory(inventory))
itemsBagIndexes.sort()
itemsIds = []
for x in range(len(itemsBagIndexes)):
itemsIds.append(sm.getItemIDByBagIndex(itemsBagIndexes[x], inventory))
for x in range(len(itemsIds)):
outPut += "#L" + str(x) + "##i" + str(itemsIds[x]) + "##l\r\n"
choice = sm.sendNext(outPut)
startIndex = itemsBagIndexes[choice]
outPut = ""
j = choice
while j < (len(itemsIds)):
outPut += "#L" + str(itemsBagIndexes[j]) + "##i" + str(itemsIds[j]) + "##l\r\n"
j += 1
endIndex = sm.sendNext(outPut)
sm.sellMass(startIndex, endIndex, inventory)
elif selection == 6:
if chr.isRemoteEffects():
chr.setRemoteEffects(False)
else:
chr.setRemoteEffects(True)
chr.chatMessage("Remote Skills toggled " + str(chr.isRemoteEffects()))
elif selection == 7:
damageSkins = chr.getAccount().getDamageSkinsItemIds()
damageSkins.add(2431965)
outPut = ""
for x in range(len(damageSkins)):
outPut += "#L" + str(x) + "##i" + str(damageSkins[x]) + "##l\r\n"
choice = sm.sendNext(outPut)
chr.setDamageSkinAndBroadCast(damageSkins[choice])