223 lines
8.9 KiB
Python
223 lines
8.9 KiB
Python
from net.swordie.ms.enums import EventType
|
|
|
|
sm.setSpeakerID(9270035)
|
|
|
|
options = ["I want to go somewhere","I want to buy something","Trade Golden Maple Leaf","Trade Maple Leaf Gold","Vote in-game", "View achievements", "View rankings and speed runs"]
|
|
|
|
options2 = ["Town Maps","Monster Maps","Boss Entrances","Party Quest Entrances"]
|
|
|
|
options3 = ["Trade Mesos for Golden Maple Leaf","Trade Golden Maple Leaf for Mesos"]
|
|
|
|
options4 = ["Trade NX for Maple Leaf Gold","Trade Maple Leaf Gold for NX"]
|
|
|
|
options5 = ["Shop (Mesos)","Talk to Agent W (Donation Points)","Talk to Lilin (Cash)","Talk to Cygnus (Vote Points)","Buy item buffs (Mesos)","Talk to Bo (Nebulites)","Talk to Vega (Scrolls)","Talk to Fredrick (My Free Market Shop)"]
|
|
|
|
maps = [
|
|
[300000000, 680000000, 230000000, 910001000, 260000000, 541000000, 610050000, 540000000,
|
|
211060010, 863100000, 105300000, 310000000, 211000000, 101072000, 101000000, 101050000,
|
|
130000000, 820000000, 223000000, 410000000, 141000000, 120040000, 209000000, 682000000,
|
|
310070000, 401000000, 100000000, 271010000, 251000000, 744000000, 551000000, 103000000,
|
|
224000000, 241000000, 240000000, 104000000, 220000000, 150000000, 261000000, 701220000,
|
|
807000000, 701210000, 250000000, 800000000, 600000000, 120000000, 200000000, 800040000,
|
|
400000000, 102000000, 140000000, 865000000, 801000000, 105000000, 866190000, 693000020,
|
|
270000000, 860000000, 273000000, 701100000, 320000000], # Town Maps
|
|
|
|
[240070300, 800020110, 610040000, 270030000, 860000032, 101040300, 211060000, 240040500, 551030100,
|
|
271000300, 211061000, 910170000, 211041100, 240010501, 270020000, 106030700, 910160000, 120040000,
|
|
910160000, 610030010, 863000100, 240093100, 920020100, 910180000, 807050501, 272000300, 682010200, 541000300,
|
|
241000200, 220050300, 102040200, 240010700, 241000210, 241000220, 701220500, 272010000, 910028500,
|
|
910028600, 706041000, 706041005, 273050000, 231040400, 401050000, 541020000, 502010010], # Monster Maps
|
|
|
|
#[ [211042300, "Zakum"], [262030000, "Hilla"],
|
|
#[105200000, "Root Abyss"], [211070000, "Von Leon"], [272020110, "Arkarium"], [401060000, "Easy Magnus"],
|
|
#[401060000, "Normal/Hard Magnus"], [270050000, "Pink Bean"], [271030600, "Cygnus"], [350060300, "Lotus"],
|
|
#[863010000, "Gollux"], [211041700, "Ranmaru"], [811000008, "Princess No"], [970000106, "Hekaton"],
|
|
#[970072200, ["Ursus"], [105300303, "Damien"], [610030010, "Crimsonwood Keep"], [450004000, "Lucid"],
|
|
#[927030060, "Black Mage"]] # Boss Maps
|
|
[[105100100, "Balrog"], [211042300, "Zakum"], [240050400, "Horntail"], [270050000, "Pink Bean"], [211070000, "Von Leon"], [262030000, "Hilla"], [272020110, "Arkarium"],
|
|
[105200000, "Root Abyss"], [401060000, "Magnus"], [271030600, "Cygnus"], [211041700, "Ranmaru"], [811000008, "Princess No"], [350060300, "Lotus"],
|
|
[863010000, "Gollux"], [970072200, "Ursus"], [302090500, "Hekaton"], [105300303, "Damien"]],
|
|
|
|
[[861000000, "Alien Party Quest"], [610030020, "Crimsonwood Keep"], [956000100, "Picture World Guild Party Quest"], [610030020, "Guild Party Quest"]]
|
|
]
|
|
|
|
pqEventTypeIDs = [0, 1, 2, 16, 40, 41, 42, 43, 45, 46, 47, 50]
|
|
|
|
list = "Hello #r#h0##k! How can I help you today?"
|
|
i = 0
|
|
while i < len(options):
|
|
list += "\r\n#b#L" +str(i)+ "#" + str(options[i])
|
|
i += 1
|
|
i = 0
|
|
option = sm.sendNext(list)
|
|
if option == 0: # I want to go somewhere (maps)
|
|
list = "These are your options: "
|
|
while i < len(options2):
|
|
list += "\r\n#b#L" +str(i)+ "#" + str(options2[i])
|
|
i += 1
|
|
i = 0
|
|
ans1 = sm.sendNext(list)
|
|
list = "These are your options: "
|
|
if ans1 == 1: # town/monster maps
|
|
while i < len(maps[ans1]):
|
|
list += "\r\n#L" + str(i) + "##b#m" + str(maps[ans1][i]) + "#"
|
|
i += 1
|
|
if ans1 == 0: # town/monster maps
|
|
while i < len(maps[ans1]):
|
|
list += "\r\n#L" + str(i) + "##b#m" + str(maps[ans1][i]) + "#"
|
|
i += 1
|
|
else: # boss maps
|
|
while i < len(maps[ans1]):
|
|
list += "\r\n#L" + str(i) + "##b" + str(maps[ans1][i][1])
|
|
i += 1
|
|
|
|
|
|
ans2 = sm.sendNext(list)
|
|
if ans1 == 0:
|
|
sm.warp(maps[ans1][ans2], 1)
|
|
elif ans1 == 1:
|
|
sm.warp(maps[ans1][ans2], 1)
|
|
elif ans1 == 2 or ans1 == 3: # boss maps
|
|
sm.warp(maps[ans1][ans2][0], 1)
|
|
|
|
if option == 1:
|
|
list = "These are your options: "
|
|
while i < len(options5):
|
|
list += "\r\n#b#L" +str(i)+ "#" + str(options5[i])
|
|
i += 1
|
|
i = 0
|
|
ans1 = sm.sendNext(list)
|
|
list = "These are your options: "
|
|
if ans1 == 0:
|
|
sm.openShop(9201060)
|
|
sm.dispose()
|
|
if ans1 == 1:
|
|
sm.invokeAfterDelay(10, "openNpc", 9000039)
|
|
sm.dispose()
|
|
if ans1 == 2:
|
|
sm.invokeAfterDelay(10, "openNpc", 9010036)
|
|
sm.dispose()
|
|
if ans1 == 3:
|
|
sm.invokeAfterDelay(10, "openNpc", 9010034)
|
|
sm.dispose()
|
|
if ans1 == 4: #Create Item Buff Shop
|
|
sm.dispose()
|
|
if ans1 == 5:
|
|
sm.invokeAfterDelay(10, "openNpc", 9201182)
|
|
sm.dispose()
|
|
if ans1 == 6:
|
|
sm.invokeAfterDelay(10, "openNpc", 2041016)
|
|
sm.dispose()
|
|
if ans1 == 7:
|
|
sm.invokeAfterDelay(10, "openNpc", 9030000)
|
|
sm.dispose()
|
|
|
|
if option == 2:
|
|
list = "You currently have #r"+ str(sm.getMesos()) +"#b Mesos#k\r\nThese are your options: "
|
|
while i < len(options3):
|
|
list += "\r\n#b#L" +str(i)+ "#" + str(options3[i])
|
|
i += 1
|
|
i = 0
|
|
ans1 = sm.sendNext(list)
|
|
list = "These are your options: "
|
|
|
|
if ans1 == 0:
|
|
answer = sm.sendAskNumber("How many #b#v 4034382 # #t 4034382 #(s)#k #kdo you wish purchase?", 0, 1, 10)
|
|
|
|
Total = answer * 1
|
|
totalQty = answer * 1100000000
|
|
|
|
if sm.getMesos() <= totalQty:
|
|
sm.sendSayOkay("You do not have enough #bMesos#k.")
|
|
sm.dispose()
|
|
|
|
elif not sm.canHold(4034382, Total):
|
|
sm.sendSayOkay("Please make room in your inventory first.")
|
|
|
|
else:
|
|
sm.deductMesos(totalQty)
|
|
sm.giveItem(4034382, Total)
|
|
sm.sendSayOkay("Thank you for your purchase!\r\nYou have #r"+ str(sm.getMesos()) +"#b Mesos#k left.")
|
|
sm.dispose()
|
|
|
|
if ans1 == 1:
|
|
canSell = (9 -(sm.getMesos()/1000000000))
|
|
answer = sm.sendAskNumber("How many #b#v 4034382 # #t 4034382 #(s)#k #kdo you wish sell?", 0, 1, canSell)
|
|
|
|
Total = answer * 1
|
|
totalQty = answer * 1000000000
|
|
|
|
|
|
if not sm.hasItem(4034382, Total):
|
|
sm.sendSayOkay("You do not have enough #b#v 4034382 # #t 4034382 #(s)#k.")
|
|
sm.dispose()
|
|
|
|
else:
|
|
sm.consumeItem(4034382, Total)
|
|
sm.giveMesos(totalQty)
|
|
sm.chat("You have gained mesos. (+"+ str(totalQty) +")")
|
|
sm.sendSayOkay("Thank you for your purchase!\r\nYou now have #r"+ str(sm.getMesos()) +"#b Mesos#k.")
|
|
sm.dispose()
|
|
|
|
if option == 3:
|
|
list = "You currently have #r"+ str(sm.getNX()) +"#b NX#k\r\nThese are your options: "
|
|
while i < len(options4):
|
|
list += "\r\n#b#L" +str(i)+ "#" + str(options4[i])
|
|
i += 1
|
|
i = 0
|
|
ans1 = sm.sendNext(list)
|
|
list = "These are your options: "
|
|
|
|
if ans1 == 0:
|
|
answer = sm.sendAskNumber("How many #b#v 4430000 # #t 4430000 #(s)#k #kdo you wish purchase?", 0, 1, 1000)
|
|
|
|
Total = answer * 1
|
|
totalQty = answer * 1100000
|
|
|
|
if sm.getNX() <= totalQty:
|
|
sm.sendSayOkay("You do not have enough #bNX#k.")
|
|
sm.dispose()
|
|
|
|
elif not sm.canHold(4430000, Total):
|
|
sm.sendSayOkay("Please make room in your inventory first.")
|
|
|
|
else:
|
|
sm.deductNX(totalQty)
|
|
sm.giveItem(4430000, Total)
|
|
sm.sendSayOkay("Thank you for your purchase!\r\nYou have #r"+ str(sm.getNX()) +"#b NX#k left.")
|
|
sm.dispose()
|
|
|
|
if ans1 == 1:
|
|
answer = sm.sendAskNumber("How many #b#v 4430000 # #t 4430000 #(s)#k #kdo you wish sell?", 0, 1, 1000)
|
|
|
|
Total = answer * 1
|
|
totalQty = answer * 1000000
|
|
|
|
|
|
if not sm.hasItem(4430000, Total):
|
|
sm.sendSayOkay("You do not have enough #b#v 4430000 # #t 4430000 #(s)#k.")
|
|
sm.dispose()
|
|
|
|
else:
|
|
sm.consumeItem(4430000, Total)
|
|
sm.giveNX(totalQty)
|
|
sm.sendSayOkay("Thank you for your purchase!\r\nYou now have #r"+ str(sm.getNX()) +"#b NX#k.")
|
|
sm.dispose()
|
|
|
|
if option == 4:
|
|
sm.dispose()
|
|
if option == 5:
|
|
sm.sendNext("Here are all the achievements. Bolded achievements are the ones you already completed.\r\n"+sm.getAchievements())
|
|
if option == 6:
|
|
eventCooldowns = ""
|
|
for i in pqEventTypeIDs:
|
|
eType = EventType.getByVal(i)
|
|
if eType is not None and sm.getEventAmountDone(eType) > 0:
|
|
eventCooldowns += ("PQs will reset in: " + sm.getTimeUntilEventReset(eType) + "\r\n\r\n")
|
|
break
|
|
for i in range(100):
|
|
eType = EventType.getByVal(i)
|
|
if i not in pqEventTypeIDs and eType is not None and sm.getEventAmountDone(eType) > 0:
|
|
eventCooldowns += ("" + eType.name() + ": " + sm.getTimeUntilEventReset(eType) + "\r\n")
|
|
sm.sendSayOkay(eventCooldowns)
|