Jump to content
  • 0

Baium Script!


Question

Posted

Hi All!

Can someone help me with this script?Im need if one person attack him or Leave from his room without kill him the baium despawn and spawn the stone mode again!Now im manage to do this just without attack him just wakeup him and leave and baium is despawned after 5 min.Just if you attack him and leave the boss alive he not despawn to stone and the teleport to him is disabled and need server restart to unblock the teleport and spawn the stone mode!

Can someone help me?Thx with Advance!

 

Here is the code:the import from the script is not included!

 

 
   1. STONE_BAIUM = 29025
   2. ANGELIC_VORTEX = 31862
   3. LIVE_BAIUM = 29020
   4.  
   5. # Boss: Baium
   6. #
   7. # Note1: if the server gets rebooted while players are still fighting Baium, there is no lock, but
   8. # players also lose their ability to wake baium up. However, should another person
   9. # enter the room and wake him up, the players who had stayed inside may join the raid.
  10. # This can be helpful for players who became victims of a reboot (they only need 1 new player to
  11. # enter and wake up baium) and is not too exploitable since any player wishing to exploit it
  12. # would have to suffer 5 days of being parked in an empty room.
  13. # Note2: Neither version of Baium should be a permanent spawn. This script is fully capable of
  14. # spawning the statue-version when the lock expires and switching it to the mob version promptly.
  15. #
  16. # Additional notes ( source http://aleenaresron.blogspot.com/2006_0 ... chive.html ):
  17. # * Baium only first respawns five days after his last death. And from those five days he will
  18. # respawn within 1-8 hours of his last death. So, you have to know his last time of death.
  19. # * If by some freak chance you are the only one in Baium's chamber and NO ONE comes in
  20. # [ha, ha] you or someone else will have to wake Baium. There is a good chance that Baium
  21. # will automatically kill whoever wakes him. There are some people that have been able to
  22. # wake him and not die, however if you've already gone through the trouble of getting the
  23. # bloody fabric and camped him out and researched his spawn time, are you willing to take that
  24. # chance that you'll wake him and not be able to finish your quest? Doubtful.
  25. # [ this powerful attack vs the player who wakes him up is NOT yet implemented here]
  26. # * once someone starts attacking Baium no one else can port into the chamber where he is.
  27. # Unlike with the otehr raid bosses, you can just show up at any time as long as you are there
  28. # when they die. Not true with Baium. Once he gets attacked, the port to Baium closes. byebye,
  29. # see you in 5 days. If nobody attacks baium for 30 minutes, he auto-despawns and unlocks the
  30. # vortex
  31. class baium (JQuest):
  32.  
  33. def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
  34.  
  35. def init_LoadGlobalData(self) :
  36. # initialize
  37. self.isBaiumAwake = False
  38. self.playersInside = []
  39. self.isBaiumLocked = False
  40. self.lastAttackVsBaiumTime = 0
  41.  
  42. # load the unlock date and time for baium from DB
  43. temp = self.loadGlobalQuestVar("unlockDatetime")
  44. # if baium is locked until a certain time, mark it so and start the unlock timer
  45. if temp == "" :
  46. self.addSpawn(STONE_BAIUM,115213,16623,10080,41740,False,0)
  47. else :
  48. # the unlock time has not yet expired. Mark Baium as currently locked. Setup a timer
  49. # to fire at the correct time (calculate the time between now and the unlock time,
  50. # setup a timer to fire after that many msec)
  51. temp = long(temp) - System.currentTimeMillis()
  52. if temp > 0 :
  53. self.isBaiumLocked = True
  54. self.startQuestTimer("baium_unlock", temp, None, None)
  55. else :
  56. # the time has already expired while the server was offline. Delete the saved time and
  57. # immediately spawn the stone-baium. Also the variable is not changed from "isBaiumLocked = False"
  58. self.deleteGlobalQuestVar("unlockDatetime")
  59. self.addSpawn(STONE_BAIUM,115213,16623,10080,41740,False,0)
  60. return
  61.  
  62. def onAdvEvent (self,event,npc,player):
  63. objId=0
  64. if event == "baium_unlock" :
  65. self.isBaiumLocked = False
  66. self.deleteGlobalQuestVar("unlockDatetime")
  67. self.addSpawn(STONE_BAIUM,115213,16623,10080,41740,False,0)
  68. elif event == "baium_wakeup" and npc:
  69. if npc.getNpcId() == LIVE_BAIUM :
  70. npc.broadcastPacket(SocialAction(npc.getObjectId(),1))
  71. npc.broadcastPacket(Earthquake(npc.getX(), npc.getY(), npc.getZ(),40,5))
  72. # once Baium is awaken, no more people may enter until he dies, the server reboots, or
  73. # 30 pass with no attacks made against Baium.
  74. self.isBaiumLocked = True
  75. # start monitoring baium's inactivity
  76. self.lastAttackVsBaiumTime = System.currentTimeMillis()
  77. self.startQuestTimer("baium_despawn", 3000, npc, None)
  78. # TODO: the person who woke baium up should be knocked across the room, onto a wall, and
  79. # lose massive amounts of HP.
  80. # despawn the live baium after 30 minutes of inactivity
  81. elif event == "baium_despawn" and npc:
  82. if (npc.getNpcId() == LIVE_BAIUM) and (self.lastAttackVsBaiumTime + 3000 < System.currentTimeMillis()) :
  83. npc.deleteMe() # despawn the live-baium
  84. self.addSpawn(STONE_BAIUM,115213,16623,10080,41740,False,0) # spawn stone-baium
  85. self.deleteGlobalQuestVar("unlockDatetime") # make sure that all locks are deleted from the DB
  86. self.isBaiumAwake = False # mark that Baium is not awake any more
  87. self.isBaiumLocked = False # unlock the entrance
  88. self.playersInside = []
  89. else :
  90. # if baium's inactivity is still younger than 30 minutes, just re-add the timer
  91. self.startQuestTimer("baium_despawn", 3000, npc, None)
  92. return
  93.  
  94. def onTalk (self,npc,player):
  95. npcId = npc.getNpcId()
  96. htmltext = ""
  97. if npcId == STONE_BAIUM :
  98. if player in self.playersInside :
  99. if not npc.isBusy():
100. npc.setBusy(True)
101. npc.setBusyMessage("Attending another player's request")
102. npc.deleteMe()
103. baium = self.addSpawn(LIVE_BAIUM,npc)
104. baium.broadcastPacket(SocialAction(baium.getObjectId(),2))
105. self.startQuestTimer("baium_wakeup",15000, baium, None)
106. self.playersInside = []
107. else:
108. htmltext = "Conditions are not right to wake up Baium"
109. elif npcId == ANGELIC_VORTEX :
110. if not self.isBaiumLocked :
111. if player.isFlying() :
112. print "Player "+player.getName()+" attempted to enter Baium's layer while flying!"
113. htmltext = '<html><body>Angelic Vortex:<br>You may not enter while flying a wyvern</body></html>'
114. if player.getQuestState("baium").getQuestItemsCount(4295) : # bloody fabric
115. player.getQuestState("baium").takeItems(4295,1)
116. player.teleToLocation(113100,14500,10077)
117. if not self.isBaiumAwake :
118. self.playersInside.append(player)
119. else :
120. htmltext = '<html><body>Angelic Vortex:<br>You do not have Bloody Fabric!</body></html>'
121. else :
122. htmltext = '<html><body>Angelic Vortex:<br>You may not enter at this time!</body></html>'
123. return htmltext
124.  
125. def onAttack(self, npc, player, damage, isPet) :
126. # update a variable with the last action against baium
127. self.lastAttackVsBaiumTime = System.currentTimeMillis()
128.  
129. def onKill(self,npc,player,isPet):
130. objId=npc.getObjectId()
131. npc.broadcastPacket(PlaySound(1, "BS02_D", 1, objId, npc.getX(), npc.getY(), npc.getZ()))
132. # spawn the "Teleportation Cubic" for 15 minutes (to allow players to exit the lair)
133. self.addSpawn(29055,115203,16620,10078,0,False,900000)
134.  
135. # "lock" baium for 5 days and 1 to 8 hours [i.e. 432,000,000 + 1*3,600,000 + random-less-than(8*3,600,000) millisecs]
136. respawnTime = 5455000 + Rnd.get(0*0)
137. self.isBaiumLocked = True
138. self.startQuestTimer("baium_unlock", respawnTime, None, None)
139. # also save the respawn time so that the info is maintained past reboots
140. self.saveGlobalQuestVar("unlockDatetime", str(System.currentTimeMillis() + respawnTime))
141.  
142.  
143. # Quest class and state definition
144. QUEST = baium(-1, "baium", "ai")
145. CREATED = State('Start', QUEST)
146.  
147. # Quest initialization
148. QUEST.setInitialState(CREATED)
149. # Quest NPC starter initialization
150. QUEST.addStartNpc(STONE_BAIUM)
151. QUEST.addStartNpc(ANGELIC_VORTEX)
152. QUEST.addTalkId(STONE_BAIUM)
153. QUEST.addTalkId(ANGELIC_VORTEX)
154.  
155. QUEST.addKillId(LIVE_BAIUM)
156. QUEST.addAttackId(LIVE_BAIUM)

4 answers to this question

Recommended Posts

  • 0
Posted

Hi man!

 

I help you.

scripts/ai/individual/Baium.java: http://www.4shared.com/file/127694003/893eca21/Baium.html

scripts/custom/8003_MeetBaium: http://www.4shared.com/file/127693930/a91ccb6e/8003_MeetBaium.html

html/default http://www.4shared.com/file/127694162/a9a13706/default.html

 

Finally, change your scripts.cfg

# Custom part

Add line custom/8003_MeetBaium/__init__.py

 

 

 

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...