куда вставить скрипт ?? - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Работа со скриптами

Работа со скриптами Помощь в редактировании и написании квестов к Java серверам, а так же эвентов.

Ответ
Опции темы
Непрочитано 25.09.2009, 17:28   #1
Пользователь

Автор темы (Топик Стартер) куда вставить скрипт ??

Подскажите нашел мануал по эвенту все сделал, кроме 1го скрипта т.к написано впишите скрипт, а куда именно не понятно, сборка L2gold Gracia final

Код:
import math 
import sys 
from net.sf.l2j.gameserver              import Announcements 
from net.sf.l2j.util                    import Rnd 
from java.lang                      import System 
from net.sf.l2j.gameserver.model.actor.appearance   import PcAppearance 
from net.sf.l2j.gameserver              import GameTimeController 
from net.sf.l2j.gameserver.model.quest          import State 
from net.sf.l2j.gameserver.model.quest          import QuestState 
from net.sf.l2j.gameserver.model.quest.jython       import QuestJython as JQuest 
from net.sf.l2j.gameserver.model.actor.instance     import L2PcInstance 
from net.sf.l2j.gameserver.model.actor.instance     import L2NpcInstance 
     
     
MANAGER = 100400 
TOPNPC  = 100401 
Raids =  [ 25514,22216,25286,25283,25319 ] 
     
#Mountain protected zone 
MX  = 55312 
MY  = 219168 
MZ  = -3223 
     
#Mountain top NPC coords 
MNPCX   = 144291 
MNPCY   = 157446 
MNPCZ   = -466 
     
#Mountain bottom and giran NPC coords 
MBX1    = 82698 
MBY1    = 148638 
MBZ1    = -3468 
MBX = 143370 
MBY = 161135 
MBZ = -1925 
     
#number of participants 
MountainMinPlayers = 6 
MountainMaxPlayers = 30 
     
EventNpcs = [ 100400, 100401 ] 
     
#time between events in milliseconds 
eventInterval = 7200000  # 2 hours after the first event there is the second one and the others after are 2 hours too 
FirstStart = 2700000  #45 minutes after each restart there is the first event 
     
     
class eventmanager (JQuest): 
     
      def __init__(self,id,name,descr): 
          JQuest.__init__(self,id,name,descr) 
          self.RaidBosses ={ 
                  0: {'name':"Queen Shyeed" , 'id':25514}, 
                  1: {'name':"Tyrannosaurus" , 'id':22216}, 
                  2: {'name':"Anakim" , 'id':25286}, 
                  3: {'name':"Lilith" , 'id':25283},    
                  4: {'name':"Ember" , 'id':25319}, 
                  } 
          self.RbCoords ={ 
                  0: {'name':"in the colliseum" , 'X':150086 , 'Y':46733 , 'Z':-3407},    
                  1: {'name':"near the entrance of the Garden of Eva" , 'X':84805 , 'Y':233832 , 'Z':-3669}, 
                  2: {'name':"close to the western entrance of the Cemetary" , 'X':161385 , 'Y':21032 , 'Z':-3671}, 
                  3: {'name':"at Gludin's Harbor" , 'X':89199 , 'Y':149962 , 'Z':-3581}, 
                  } 
          self.startQuestTimer("EventTrigger", FirstStart, None, None) 
          self.RbSpawn = [] 
          self.rewards ={ 
                  0: {'prize':4357 , 'number':1}, #King of the hill event, dont forget to change the reward 
                  } 
          self.Teams = [] 
          self.Event = [] 
          self.True = True 
          self.False = False 
          self.Group = [] 
          self.EventManager1 = [] 
          self.EventManager = [] 
          self.Registration = [] 
          self.numberPlayers = [] 
          self.One = 1 
          self.Team1 = [] 
          self.Team2 = [] 
          self.numberOfTeams = [] 
          self.Trigger = 1 
          self.Count = 2 
          self.Add = 1 
          self.Full = False 
          self.TopNpc = [] 
          self.EventNames = {0:"King of the hill", 1:"kill the Raidboss"} 
     
     
      def onAdvEvent (self,event,npc,player): 
          if event == "EventTrigger" : 
              rr = int(Rnd.get(2)) 
              Announcestart = "The " + self.EventNames[rr] + " event is about to start!!!" 
              Announcements.getInstance().announceToAll(Announcestart) 
              if rr == 0: 
                  self.Event = 0 
                  eventmanager1 = self.addSpawn(MANAGER,MBX1,MBY1,MBZ1,0,False,0) 
                  self.EventManager1 = eventmanager1 
                  topnpc = self.addSpawn(TOPNPC,MNPCX,MNPCY,MNPCZ,0,False,0) 
                  self.TopNpc = topnpc 
                  Announcements.getInstance().announceToAll("All those who wish to participate should come to meet me in Giran town") 
                  Announcements.getInstance().announceToAll("Registration will last 15 minutes") 
                  self.startQuestTimer("MountainSelect", 900000, npc, player)                    
                  self.startQuestTimer("10minutes", 300000, npc, player)                    
                  self.startQuestTimer("5minutes", 600000, npc, player)                    
                  self.startQuestTimer("2minutes", 780000, npc, player)                    
                  self.startQuestTimer("1minute", 840000, npc, player)                    
              if rr == 1: 
                  self.Event = 1 
                  #the spawn coords and which raidboss are both random and 
                  #independant from each other 
                  ra = int(Rnd.get(5)) 
                  rb = int(Rnd.get(4)) 
                  self.RbSpawn = [] 
                  raidboss = self.RaidBosses[ra]['name'] 
                  location = self.RbCoords[rb]['name'] 
                  Announcements.getInstance().announceToAll(raidboss + " has just been spawned " + location + " and will disappear in 2 hours, hurry!") 
                  self.RbSpawn = self.addSpawn(self.RaidBosses[ra]['id'],self.RbCoords[rb]['X'],self.RbCoords[rb]['Y'],self.RbCoords[rb]['Z'],0,False,0) 
                  self.startQuestTimer("RbDespawn", 7150000, npc, player)                    
                  self.startQuestTimer("EventTrigger", eventInterval, npc, player)                            
          if event == "10minutes": 
              Announcements.getInstance().announceToAll("10 minutes left for event registration in Giran") 
          if event == "5minutes": 
              Announcements.getInstance().announceToAll("5 minutes left for event registration in Giran") 
          if event == "2minutes": 
              Announcements.getInstance().announceToAll("2 minutes left for event registration in Giran") 
          if event == "1minutes": 
              Announcements.getInstance().announceToAll("1 minute left for event registration in Giran") 
          if event == "MountainSelect" : 
                  self.EventManager1.deleteMe() 
                  self.startQuestTimer("MountainStart", 60000, npc, player)                    
                  totalplayers = len(self.Registration) 
                  if totalplayers >= MountainMinPlayers: 
                      #5 players per team, max 6 teams can participate 
                      self.numberOfTeams = int((len(self.Registration))/2) 
                      numberOfTeams = int((len(self.Registration))/2) 
                      playerList = list(self.Registration) 
                      Team1 = [] 
                      Team2 = [] 
                      for i in range(len(playerList)/2) : 
                          Team1.append(playerList.pop(Rnd.get(len(playerList)))) 
                      Team2 = playerList 
                      for i in Team1: 
                          i.teleToLocation(MNPCX,MNPCY,MNPCZ)#tele to top of mountain 
                          i.getAppearance().setNameColor(0x005de2) #orange 
                          i.getAppearance().setTitleColor(0x005de2) #orange 
                          i.getQuestState("eventmanager").set("cond","3") 
                      for i in Team2: 
                          i.teleToLocation(144428,161151,-2460)#tele to location A 
                          i.getAppearance().setNameColor(0xd5e200) #yellow 
                          i.getAppearance().setTitleColor(0xd5e200) #yellow 
                          i.getQuestState("eventmanager").set("cond","4") 
                      Announcements.getInstance().announce ToAll("Team 1 - blue - has 20 minutes to take control of the mountain and talk to the Flag NPC to win this event.") 
                      Announcements.getInstance().announceToAll("Team 2 - orange - has to defend the mountain to win.  Event starts in 1 minute, wait for the signal.") 
                      self.Team1 = Team1 
                      self.Team2 = Team2 
                      self.numberOfTeams = numberOfTeams 
                  else: 
                      Announcements.getInstance().announceToAll("Event cancelled due to lack of participation.") 
                      self.EventManager1.deleteMe() 
                      self.TopNpc.deleteMe() 
                      self .cancelQuestTimer("round_finish", None, None) 
                      self.cancelQuestTimer("15Tofinish", None, None) 
                      self.cancelQuestTimer("10Tofinish", None, None) 
                      self.cancelQuestTimer("5Tofinish", None, None) 
                      self.cancelQuestTimer("1Tofinish", None, None) 
          if event == "MountainStart": 
              for i in self.Team2: 
                  i.teleToLocation(MBX,MBY,MBZ)#tele to location A 
              Announcements.getInstance().announceToAll("Start the event!!! Team 2, ATTACK!!! Good luck to both teams!") 
              self.Attacker = self.Team2 
              self.Defender = self.Team1 
              self.startQuestTimer("round_finish", 1200000, npc, player) #sera 1200000                    
              self.startQuestTimer("15Tofinish", 300000, npc, player)                    
              self.startQuestTimer("10Tofinish", 600000, npc, player)                    
              self.startQuestTimer("5Tofinish", 900000, npc, player)                    
              self.startQuestTimer("1Tofinish", 1140000, npc, player)                    
          if event == "15Tofinish": 
              Announcements.getInstance().announceToAll("15 minutes until the end of the event") 
          if event == "10Tofinish": 
              Announcements.getInstance().announceToAll("10 minutes until the end of the event") 
          if event == "5Tofinish": 
              Announcements.getInstance().announceToAll("5 minutes until the end of the event") 
          if event == "1Tofinish": 
              Announcements.getInstance().announceToAll("1 minute until the end of the event") 
          if event == "round_finish" and npc and player: 
              self.TopNpc.deleteMe() 
              self.startQuestTimer("EventTrigger", eventInterval, npc, player)                            
              self.cancelQuestTimer("15Tofinish", None, None) 
              self.cancelQuestTimer("10Tofinish", None, None) 
              self.cancelQuestTimer("5Tofinish", None, None) 
              self.cancelQuestTimer("1Tofinish", None, None) 
              Announcements.getInstance().announceToAll("Orange team wins!") 
              rr = self.Event 
              reward = self.rewards 
              for i in self.Team2: 
                  i.teleToLocation(MBX1,MBY1,MBZ1)#tele back to town 
                  i.getAppearance().setNameColor(0xffffff) 
                  i.getAppearance().setTitleColor(0xffffff) 
                  i .getQuestState("eventmanager").set("cond","0") 
              for i in self.Team1: 
                  i.teleToLocation(MBX1,MBY1,MBZ1)#tele back to town 
                  i.getQuestState("eventmanager").giveItems(reward[rr]['prize'],reward[rr]['number']) 
                  i.getQuestState("eventmanager").playSound("ItemSound.quest_fanfare_1") 
                  i.getAppearance().setNameColor( 0xffffff) 
                  i.getAppearance().setTitleColor(0xffffff) 
                  i.getQuestState("eventmanager").set("cond","0") 
          i f event == "RbDespawn": 
              self.RbSpawn.deleteMe() 
     
      def onTalk (self,npc,player) : 
          npcId = npc.getNpcId() 
          cond = player.getQuestState("eventmanager").getInt("cond") 
          if npcId == MANAGER : 
              if not cond == 2: 
                  if self.Event == 0: 
                      if len(self.Registration) < MountainMaxPlayers: 
                          player.getQuestState("eventmanager").set("cond","2") 
                          self.Registrati on.append(player) 
                          Reg = list(self.Registration) 
                          return "<html><body>You have been added to the event list, teams will be made randomly 1 minute before the start of the event</body></html>" 
                      else: 
                          Announcements.getInstance().announceToAll("Event is now full, no more registration accepted.") 
                          self.Full = True 
                          return "<html><body>Event is full, try again next time</body></html>" 
              else: 
                  return "<html><body>You are already registered</body></html>" 
          if npcId == TOPNPC : 
              if not cond == 3: 
                  self.TopNpc.deleteMe() 
                  self.cancelQuestTimer("round_finish", None, None) 
                  self.cancelQuestTimer("15Tofinish", None, None) 
                  self.cancelQuestTimer("10Tofinish", None, None) 
                  self.cancelQuestTimer("5Tofinish", None, None) 
                  self.cancelQuestTimer("1Tofinish", None, None) 
                  Announcements.getInstance().announceToAll("Blue team wins!") 
                  rr = self.Event 
                  reward = self.rewards 
                  self.startQuestTimer("EventTrigger", eventInterval, npc, player)                            
                  for i in self.Team1: 
                      i.teleToLocation(MBX1,MBY1,MBZ1)#tele back to town 
                      i.getAppearance().setNameColor(0xffffff) 
                      i.getAppearance().setTitleColor(0xffffff) 
                      i .getQuestState("eventmanager").set("cond","0") 
                  for i in self.Team2: 
                      i.teleToLocation(MBX1,MBY1,MBZ1)#tele back to town 
                      i.getQuestState("eventmanager").playSound("ItemSound.quest_fanfare_1") 
                      i.getQuestState("eve ntmanager").giveItems(reward[rr]['prize'],reward[rr]['number']) 
                      i.getAppearance().setNameColor(0xffffff) 
                      i.getAppearance().setTitleColor(0xffffff) 
                      i .getQuestState("eventmanager").set("cond","0") 
              else: 
                  return "<html><body>You are on the defending team!!! defend me, stop talking!</body></html>" 
     
      def onKill (self,npc,player,isPet): 
          if npc in self.RbSpawn: 
              self.cancelQuestTimer("RbDespawn", None, None) 
     
# Quest class and state definition 
QUEST       = eventmanager(-1, "eventmanager", "ai") 
     
for i in Raids: 
      QUEST.addKillId(i) 
     
for i in EventNpcs: 
      QUEST.addTalkId(i) 
      QUEST.addStartNpc(i) 
     
print "Event Manager loaded!!!"
OnePaces вне форума Ответить с цитированием
Непрочитано 25.09.2009, 18:13   #2
Аватар для PROGRAMMATOR
Администратор

По умолчанию Ответ: куда вставить скрипт ??

Вот сюда посмотрите и сделайте "по шаблону".
Цитата:
gameserver\data\scripts\custom\
Потом пропишите загрузку скрипта в:
Цитата:
gameserver\data\scripts.cfg
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 25.09.2009, 19:17   #3
Пользователь

Автор темы (Топик Стартер) Ответ: куда вставить скрипт ??

Ой чото не то пишет :
Error on: E:\Fart\Game\data\scripts\custom\RBoxota\__init__. py.error.log
Line: -1 - Column: -1

Traceback (innermost last):
(no code object) at line 0
SyntaxError: ('invalid syntax', ('__init__.py', 154, 60, ' Announcements.getInstance().announce ToAll("Team 1 - blue - has 20 minutes to take control of the mountain and talk to the Flag NPC to win this event.") '))
OnePaces вне форума Ответить с цитированием
Непрочитано 25.09.2009, 20:17   #4
Аватар для PROGRAMMATOR
Администратор

По умолчанию Ответ: куда вставить скрипт ??

Гарантировать работу скрипта никто не сможет. Из кода видно, что написан для L2jServer и возможно в вашей сборке нет необходимых компонентов.
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 05:42. Часовой пояс GMT +3.

Вверх