[help] Ai Antharas
4 ответов101 просмотровСейчас просматривают: 1
· 13.09.2009, 09:29
Сборка Interlude Equel 305
Проблема Правил ai Antharas'a и где-то накосячил, не могу понять в каком именно месте.
Код
import sys
from com.equal.gameserver.model.quest import State
from com.equal.gameserver.model.quest import QuestState
from com.equal.gameserver.model.quest.jython import QuestJython as JQuest
from com.equal.gameserver.network.serverpackets import Earthquake
from com.equal.gameserver.network.serverpackets import MagicSkillUser
from com.equal.gameserver.network.serverpackets import PlaySound
from com.equal.gameserver.network.serverpackets import SocialAction
from com.equal.gameserver.network.serverpackets import SpecialCamera
from com.equal.gameserver.ai import CtrlIntention
from com.equal.gameserver.datatables import SkillTable
from com.equal.gameserver.datatables import DoorTable
from com.equal.util import Rnd
from java.lang import System
Global_GK = 319190
ANTARAS = 29019
class Antharas(JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def init_LoadGlobalData(self) :
ubitt = self.loadGlobalQuestVar("ubit")
underatak = self.loadGlobalQuestVar("underattack")
if ubitt == "1" :
temp = long(self.loadGlobalQuestVar("respawn")) - System.currentTimeMillis()
if temp > 0 :
print "Antharas: dead"
self.deleteGlobalQuestVar("underattack")
self.startQuestTimer("resp", temp, None, None)
else :
print "Antharas: live"
self.deleteGlobalQuestVar("ubit")
self.deleteGlobalQuestVar("respawn")
elif underatak == "1" :
print "Antharas: under attack"
self.deleteGlobalQuestVar("underattack")
else :
print "Antharas: live"
self.deleteGlobalQuestVar("ubit")
self.deleteGlobalQuestVar("respawn")
self.deleteGlobalQuestVar("underattack")
return
def onAdvEvent (self,event,npc,player):
if event == "prosnuca" :
taras = self.addSpawn(ANTARAS,181164,114835,-7676,30000,False,0)
taras.broadcastPacket(Earthquake(taras.getX(), taras.getY(), taras.getZ(),40,5))
self.saveGlobalQuestVar("underattack", "1")
self.startQuestTimer("vkrovatku",1800000,taras,player)
self.cancelQuestTimer("prosnuca",npc,None)
if event == "vkrovatku" :
underatak = self.loadGlobalQuestVar("underattack")
if underatak == "" :
npc.deleteMe()
self.deleteGlobalQuestVar("underattack")
self.cancelQuestTimer("vkrovatku",npc,None)
else :
self.deleteGlobalQuestVar("underattack")
self.startQuestTimer("lastchek",60000, npc, player)
if event == "lastchek" :
underatak = self.loadGlobalQuestVar("underattack")
if underatak == "" :
npc.deleteMe()
self.deleteGlobalQuestVar("underattack")
self.cancelQuestTimer("lastchek",npc,None)
else :
self.deleteGlobalQuestVar("underattack")
self.startQuestTimer("vkrovatku",1800000,npc,None)
maxHp = npc.getMaxHp()
nowHp = npc.getCurrentHp()
if nowHp < maxHp*0.25:
npc.setTarget(npc)
npc.doCast(SkillTable.getInstance().getInfo(4239,1))
elif nowHp < maxHp*0.5:
npc.setTarget(npc)
npc.doCast(SkillTable.getInstance().getInfo(4240,1))
elif nowHp < maxHp*0.75:
npc.setTarget(npc)
npc.doCast(SkillTable.getInstance().getInfo(4241,1))
else:
npc.setTarget(npc)
npc.doCast(SkillTable.getInstance().getInfo(4125,1))
elif event == "resp" :
print "Antharas: Respawn"
self.deleteGlobalQuestVar("ubit")
self.cancelQuestTimer("resp",npc,None)
return
def onAttack (self,npc,player,damage,isPet):
self.saveGlobalQuestVar("underattack", "1")
print "Antharas: under attack"
maxHp = npc.getMaxHp()
nowHp = npc.getCurrentHp()
if nowHp < maxHp*0.25:
if (Rnd.get(100) < 30):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4110,1))
elif (Rnd.get(100) < 80):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4107,1))
elif (Rnd.get(100) < 40):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4109,1))
elif (Rnd.get(100) < 15):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4106,1))
elif (Rnd.get(100) < 10):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4108,1))
elif (Rnd.get(100) < 6):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4111,1))
elif (Rnd.get(100) < 50):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4112,1))
else:
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4113,1))
elif nowHp < maxHp*0.5:
if (Rnd.get(100) < 80):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4107,1))
elif (Rnd.get(100) < 40):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4109,1))
elif (Rnd.get(100) < 15):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4106,1))
elif (Rnd.get(100) < 10):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4108,1))
elif (Rnd.get(100) < 6):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4111,1))
elif (Rnd.get(100) < 50):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4112,1))
else:
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4113,1))
elif nowHp < maxHp*0.75:
if (Rnd.get(100) < 80):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4107,1))
elif (Rnd.get(100) < 40):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4109,1))
elif (Rnd.get(100) < 15):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4106,1))
elif (Rnd.get(100) < 10):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4108,1))
elif (Rnd.get(100) < 6):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4111,1))
elif (Rnd.get(100) < 50):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4112,1))
else:
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4113,1))
elif (Rnd.get(100) < 80):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4107,1))
elif (Rnd.get(100) < 10):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4108,1))
elif (Rnd.get(100) < 6):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4111,1))
elif (Rnd.get(100) < 50):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4112,1))
else:
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4113,1))
return
def onTalk (self,npc,player):
st = player.getQuestState("antharas")
npcId = npc.getNpcId()
ubitt = self.loadGlobalQuestVar("ubit")
if npcId == Global_GK :
if ubitt == "" :
st.getPlayer().teleToLocation(174009,115265,-7708)
self.startQuestTimer("prosnuca",600000,npc,player)
elif ubitt == "1" :
st.getPlayer().teleToLocation(174009,115265,-7708)
"<html><body>Antharas ubit!</body></html>"
return
else :
return htmltext
def onKill(self,npc,player,isPet):
self.addSpawn(319190,177615,114941,-7709,0,False,900000)
self.cancelQuestTimer("vkrovatku",npc,None)
self.deleteGlobalQuestVar("underattack")
respawnTime = long((19 + Rnd.get(11)) * 3600000)
self.saveGlobalQuestVar("ubit", "1")
self.saveGlobalQuestVar("respawn", str(System.currentTimeMillis() + respawnTime))
self.startQuestTimer("resp", respawnTime, None, None)
print "GrandBossManager: Antharas was killed."
return
QUEST = Antharas(-1,"antharas","ai")
CREATED = State('Start',QUEST)
QUEST.setInitialState(CREATED)
QUEST.addStartNpc(Global_GK)
QUEST.addTalkId(Global_GK)
QUEST.addKillId(ANTARAS)
QUEST.addAttackId(ANTARAS)
from com.equal.gameserver.model.quest import State
from com.equal.gameserver.model.quest import QuestState
from com.equal.gameserver.model.quest.jython import QuestJython as JQuest
from com.equal.gameserver.network.serverpackets import Earthquake
from com.equal.gameserver.network.serverpackets import MagicSkillUser
from com.equal.gameserver.network.serverpackets import PlaySound
from com.equal.gameserver.network.serverpackets import SocialAction
from com.equal.gameserver.network.serverpackets import SpecialCamera
from com.equal.gameserver.ai import CtrlIntention
from com.equal.gameserver.datatables import SkillTable
from com.equal.gameserver.datatables import DoorTable
from com.equal.util import Rnd
from java.lang import System
Global_GK = 319190
ANTARAS = 29019
class Antharas(JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def init_LoadGlobalData(self) :
ubitt = self.loadGlobalQuestVar("ubit")
underatak = self.loadGlobalQuestVar("underattack")
if ubitt == "1" :
temp = long(self.loadGlobalQuestVar("respawn")) - System.currentTimeMillis()
if temp > 0 :
print "Antharas: dead"
self.deleteGlobalQuestVar("underattack")
self.startQuestTimer("resp", temp, None, None)
else :
print "Antharas: live"
self.deleteGlobalQuestVar("ubit")
self.deleteGlobalQuestVar("respawn")
elif underatak == "1" :
print "Antharas: under attack"
self.deleteGlobalQuestVar("underattack")
else :
print "Antharas: live"
self.deleteGlobalQuestVar("ubit")
self.deleteGlobalQuestVar("respawn")
self.deleteGlobalQuestVar("underattack")
return
def onAdvEvent (self,event,npc,player):
if event == "prosnuca" :
taras = self.addSpawn(ANTARAS,181164,114835,-7676,30000,False,0)
taras.broadcastPacket(Earthquake(taras.getX(), taras.getY(), taras.getZ(),40,5))
self.saveGlobalQuestVar("underattack", "1")
self.startQuestTimer("vkrovatku",1800000,taras,player)
self.cancelQuestTimer("prosnuca",npc,None)
if event == "vkrovatku" :
underatak = self.loadGlobalQuestVar("underattack")
if underatak == "" :
npc.deleteMe()
self.deleteGlobalQuestVar("underattack")
self.cancelQuestTimer("vkrovatku",npc,None)
else :
self.deleteGlobalQuestVar("underattack")
self.startQuestTimer("lastchek",60000, npc, player)
if event == "lastchek" :
underatak = self.loadGlobalQuestVar("underattack")
if underatak == "" :
npc.deleteMe()
self.deleteGlobalQuestVar("underattack")
self.cancelQuestTimer("lastchek",npc,None)
else :
self.deleteGlobalQuestVar("underattack")
self.startQuestTimer("vkrovatku",1800000,npc,None)
maxHp = npc.getMaxHp()
nowHp = npc.getCurrentHp()
if nowHp < maxHp*0.25:
npc.setTarget(npc)
npc.doCast(SkillTable.getInstance().getInfo(4239,1))
elif nowHp < maxHp*0.5:
npc.setTarget(npc)
npc.doCast(SkillTable.getInstance().getInfo(4240,1))
elif nowHp < maxHp*0.75:
npc.setTarget(npc)
npc.doCast(SkillTable.getInstance().getInfo(4241,1))
else:
npc.setTarget(npc)
npc.doCast(SkillTable.getInstance().getInfo(4125,1))
elif event == "resp" :
print "Antharas: Respawn"
self.deleteGlobalQuestVar("ubit")
self.cancelQuestTimer("resp",npc,None)
return
def onAttack (self,npc,player,damage,isPet):
self.saveGlobalQuestVar("underattack", "1")
print "Antharas: under attack"
maxHp = npc.getMaxHp()
nowHp = npc.getCurrentHp()
if nowHp < maxHp*0.25:
if (Rnd.get(100) < 30):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4110,1))
elif (Rnd.get(100) < 80):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4107,1))
elif (Rnd.get(100) < 40):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4109,1))
elif (Rnd.get(100) < 15):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4106,1))
elif (Rnd.get(100) < 10):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4108,1))
elif (Rnd.get(100) < 6):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4111,1))
elif (Rnd.get(100) < 50):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4112,1))
else:
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4113,1))
elif nowHp < maxHp*0.5:
if (Rnd.get(100) < 80):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4107,1))
elif (Rnd.get(100) < 40):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4109,1))
elif (Rnd.get(100) < 15):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4106,1))
elif (Rnd.get(100) < 10):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4108,1))
elif (Rnd.get(100) < 6):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4111,1))
elif (Rnd.get(100) < 50):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4112,1))
else:
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4113,1))
elif nowHp < maxHp*0.75:
if (Rnd.get(100) < 80):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4107,1))
elif (Rnd.get(100) < 40):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4109,1))
elif (Rnd.get(100) < 15):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4106,1))
elif (Rnd.get(100) < 10):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4108,1))
elif (Rnd.get(100) < 6):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4111,1))
elif (Rnd.get(100) < 50):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4112,1))
else:
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4113,1))
elif (Rnd.get(100) < 80):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4107,1))
elif (Rnd.get(100) < 10):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4108,1))
elif (Rnd.get(100) < 6):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4111,1))
elif (Rnd.get(100) < 50):
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4112,1))
else:
npc.setTarget(player)
npc.doCast(SkillTable.getInstance().getInfo(4113,1))
return
def onTalk (self,npc,player):
st = player.getQuestState("antharas")
npcId = npc.getNpcId()
ubitt = self.loadGlobalQuestVar("ubit")
if npcId == Global_GK :
if ubitt == "" :
st.getPlayer().teleToLocation(174009,115265,-7708)
self.startQuestTimer("prosnuca",600000,npc,player)
elif ubitt == "1" :
st.getPlayer().teleToLocation(174009,115265,-7708)
"<html><body>Antharas ubit!</body></html>"
return
else :
return htmltext
def onKill(self,npc,player,isPet):
self.addSpawn(319190,177615,114941,-7709,0,False,900000)
self.cancelQuestTimer("vkrovatku",npc,None)
self.deleteGlobalQuestVar("underattack")
respawnTime = long((19 + Rnd.get(11)) * 3600000)
self.saveGlobalQuestVar("ubit", "1")
self.saveGlobalQuestVar("respawn", str(System.currentTimeMillis() + respawnTime))
self.startQuestTimer("resp", respawnTime, None, None)
print "GrandBossManager: Antharas was killed."
return
QUEST = Antharas(-1,"antharas","ai")
CREATED = State('Start',QUEST)
QUEST.setInitialState(CREATED)
QUEST.addStartNpc(Global_GK)
QUEST.addTalkId(Global_GK)
QUEST.addKillId(ANTARAS)
QUEST.addAttackId(ANTARAS)
Соображения Отсутсвуют
0
· 13.09.2009, 10:06
pchayka™: Это мы должны проанализировать?...
Ну я так думаю, что тот кто в Jypton'е лучше понимает, ему проще прочитать код и возможно найти ошибку
P.S. def onAttack я не изменял
0
Войдите или зарегистрируйтесь чтобы ответить

