Skip to content
La2Base
Home
DownloadsWikiForumFAQ
Search
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/Форум для новичков[JAVA]/[help] Ai Antharas
Search

[help] Ai Antharas

4 replies102 viewsCurrently viewing: 1
V
Vo1N

User

Участник

Posts: 85

На форуме с: 08/26/2007

Репутация: +29

Рейтинг: 0

· 09/13/2009, 09:29 AM

Сборка 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)


Соображения Отсутсвуют

0
pchayka
pchayka

User

Ветеран

Posts: 1304

На форуме с: 02/01/2008

Репутация: +1313

Рейтинг: 0

· 09/13/2009, 09:59 AM

Это мы должны проанализировать?...

— You&#39;re an amateur

0
V
Vo1N

User

Участник

Posts: 85

На форуме с: 08/26/2007

Репутация: +29

Рейтинг: 0

· 09/13/2009, 10:06 AM

pchayka™: Это мы должны проанализировать?...

Ну я так думаю, что тот кто в Jypton'е лучше понимает, ему проще прочитать код и возможно найти ошибку

P.S. def onAttack я не изменял

0
V
Vo1N

User

Участник

Posts: 85

На форуме с: 08/26/2007

Репутация: +29

Рейтинг: 0

· 09/13/2009, 07:21 PM

Проблема решена...

0
Войдите или зарегистрируйтесь чтобы ответить