Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   куда вставить скрипт ?? (https://forum.zone-game.info/showthread.php?t=4722)

OnePaces 25.09.2009 17:28

куда вставить скрипт ??
 
Подскажите нашел мануал по эвенту все сделал, кроме 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!!!"


PROGRAMMATOR 25.09.2009 18:13

Ответ: куда вставить скрипт ??
 
Вот сюда посмотрите и сделайте "по шаблону".
Цитата:

gameserver\data\scripts\custom\
Потом пропишите загрузку скрипта в:
Цитата:

gameserver\data\scripts.cfg

OnePaces 25.09.2009 19:17

Ответ: куда вставить скрипт ??
 
Ой чото не то пишет :
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.") '))

PROGRAMMATOR 25.09.2009 20:17

Ответ: куда вставить скрипт ??
 
Гарантировать работу скрипта никто не сможет. Из кода видно, что написан для L2jServer и возможно в вашей сборке нет необходимых компонентов.


Текущее время: 10:07. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot