Перейти к содержанию
Авторизация  
Draku1a

Переделать Скрипт

Рекомендуемые сообщения

Как переделать штобы ета штука запускалась только в заданое время например в 12:00 дня а не после рестарта через какоето время, спасибо

 

Скрытый текст

import sys
from com.l2jfrozen.gameserver.model.quest import State
from com.l2jfrozen.gameserver.model.quest import QuestState
from com.l2jfrozen.gameserver.model.quest import Quest
from com.l2jfrozen.gameserver.datatables.csv import DoorTable
from com.l2jfrozen.gameserver.datatables import SkillTable
from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest
from com.l2jfrozen.gameserverr.model.entity import Announcements
from com.l2jfrozen.util.database import L2DatabaseFactory
from com.l2jfrozen.gameserver.ai import CtrlIntention
from com.l2jfrozen.util.random import Rnd
from java.lang import System
from com.l2jfrozen.gameserver.model import L2World
from com.l2jfrozen.gameserver.model.actor.instance import L2DoorInstance
from com.l2jfrozen.gameserver.datatables.csv import DoorTable;

qn = "777_LastHero"
# =======================================#
#			   Настройки				#
# =======================================#
# Название Эвента (только английские символы)
Event_name = u"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0413\u0435\u0440\u043e\u0439" 

# Город, в котором вы хотите поставить регистрирующего НПЦ.
StartLocation = u"\u0413\u0438\u0440\u0430\u043d" 

# ID-номер регистрирующего нпц
Reg_Npc = 99998

# Координаты, где будет появляться регистрирующий НПЦ
StartNpcCoordinat = [82840,149361,-3469] 

# Вещи, необходимый для участия в Эвенте.
# Формат записи [itemId1,itemId2,....]
Price = [6673]

# Сколько заданных вещей необходимых для участия в Эвенте. Если хотите чтобы участие было бесплатным - поставте 0.
# Формат записи [itemId1_count,itemId2_count,....]
Price_count = [0]

# Минимальный уровень, на котором игрок сможет принять участие в Эвенте.
Min_level = 40 

# Через какое время эвент запустится после рестарта сервера.(указывать в секундах)
Time_to_start_after_restart = 32400

# Через какое время после телепортации на эвент начнеться битва.(указывать в секундах)
Time_to_wait_battle = 30

# Длительность эвента. (указывать в минутах)
EVENT_INTERVAL = 7

# Время между Эвентами.(указывать в минутах)
Time_to_next_start = 7209999999

# Время на регистрацию.(указывать в минутах)
Time_for_regestration = 10

# Как часто аннонсить о регистрации на Эвент.(указывать в секундах)
Announce_reg_delay = 60

# Минимальное количество игроков(не меньше 2).
Min_participate_count = 2

# Максимальное количество игроков.
Max_participate_count = 80

# Список наград при победе в эвенте. Выдаётся каждому игроку. 
# Формат записи: [[itemId1,count1,chance1],[itemId2,count2,chanceN],...]
Rewards = [[3481,1,100],[6673,1,100]] 

# Координаты точки куда будут телепортироваться игроки.
Teleport_coordinat = [149438, 46785, -3413]

# Двери которые будут закрываться на периоод прохождения эвента.
# Формат записи: [Door_id1,Door_id2,...]
Doors = [24190002,24190003]


# ================Неизменять================ #
lastPlayers = []
lastX = []
lastY = []
lastZ = []
closed = 1
Players = []
Deadplayers = []
annom = 1
f = 0
# ========================================== #

print "LastHero:....................................Initialized"

class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

def init_LoadGlobalData(self) :
  self.startQuestTimer("open_reg", Time_to_start_after_restart *1000, None, None)
  return

def onTalk (Self,npc,player):
 global Players,closed
 st = player.getQuestState(qn)
 npcId = npc.getNpcId()
 if npcId == Reg_Npc:
  if closed<>1:
if not player.isInOlympiadMode() :
 if player.getLevel() >= Min_level:
  if player.getName() not in Players:
   if len(Players) <= Max_participate_count :
	if Price_count[0]<>0:   
	 if st.getQuestItemsCount(Price[0])>Price_count[0]:
	   st.takeItems(Price[0],Price_count[0])
	   Players.append(player.getName())
	   return "reg.htm"
	 else:
	   st.exitQuest(1)
	   return "noPrice.htm"
	else:
		Players.append(player.getName())
		return "reg.htm"
   else:		 
	 return "max.htm"
  else:
   return "yje.htm"
 else:
  return "lvl.htm"
else:
 return "You register in olympiad games now"
  else:
return "noreg.htm"
 return

def onAdvEvent (self,event,npc,player):
  global Deadplayers,Players,annom,closed,Doors,lastPlayers,lastX,lastY,lastZ,f,n
  if event == "open_reg" :
closed = 0
annom = 1
lastPlayers = []
Players = []
Deadplayers = []
lastX = []
lastY = []
lastZ = []
npc = self.addSpawn(Reg_Npc,StartNpcCoordinat[0],StartNpcCoordinat[1],StartNpcCoordina
t[2],30000,False,0)
self.startQuestTimer("wait_battle", Time_for_regestration*60000, npc, None)
self.startQuestTimer("announce", Announce_reg_delay*1000, None, None)
Announcements.getInstance().announceToAll(u"\u041e\u0442\u043a\u0440\u044b\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u0430 \u044d\u0432\u0435\u043d\u0442 "+str(Event_name)+ u"! \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0432 \u0433\u043e\u0440\u043e\u0434\u0435 "+str(StartLocation)+".")
  if event == "start_event":
if len(Players)< Min_participate_count :
  closed=1
  Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(Event_name)+ u" \u0431\u044b\u043b \u043e\u0442\u043c\u0435\u043d\u0451\u043d \u0438\u0437-\u0437\u0430 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432!!!")
  self.startQuestTimer("set_winner", 1000, None, None)
  self.startQuestTimer("open_reg", Time_to_next_start*60000, None, None)
else:
  closed=1
  Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(Event_name)+ u" \u043d\u0430\u0447\u0430\u043b\u0441\u044f!!!")
  self.startQuestTimer("konec", EVENT_INTERVAL*60000, None, None)
  f=0
  for nm in Players :
   i=L2World.getInstance().getPlayer(nm)
   if i<>None:
	if i.isOnline() :
	 i.getAppearance().setVisible()
	 i.broadcastStatusUpdate()
	 i.broadcastUserInfo()
  while len(Players)>1 :
   for nm in Players :
	i=L2World.getInstance().getPlayer(nm)
	if i<>None:
	 if i.isDead():
	  i.reviveAnswer(0)
	  Deadplayers.append(i.getName())
	  Players.remove(i.getName())
  self.startQuestTimer("set_winner", 1000, None, None)
  if event == "announce" and closed==0 and (Time_for_regestration*60 - Announce_reg_delay * annom)>0: 
 Announcements.getInstance().announceToAll(str(Time_for_regestration*60 - Announce_reg_delay * annom ) + u" \u0441\u0435\u043a\u0443\u043d\u0434(\u044b) \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u044d\u0432\u0435\u043d\u0442\u0430 "+str(Event_name)+u"! \u041f\u043e\u0441\u043f\u0435\u0448\u0438\u0442\u0435!!! \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0432 \u0433\u043e\u0440\u043e\u0434\u0435 "+str(StartLocation)+".")
 annom=annom+1
 self.startQuestTimer("announce", Announce_reg_delay*1000, None, None)
  if event == "set_winner" :
 if len(Players) > 0 and len(Players + Deadplayers) >= Min_participate_count:
	 winner=L2World.getInstance().getPlayer(Players[0])
	 Deadplayers.append(Players[0])
	 if winner.isDead():
		 Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(Event_name)+ u" \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f. \u0412\u0441\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043c\u0435\u0440\u0442\u0432\u044b. \u041f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d!")
	 else :
		 f=1 
		 Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(Event_name)+ u" \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f. \u041f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c  `"+str(Players[0])+"`")
	 for nm in Deadplayers :
		 i=L2World.getInstance().getPlayer(nm)
		 if i<>None and i.isOnline():
			 if i.isDead():
				 i.doRevive()
			 i.setCurrentCp(i.getMaxCp())
			 i.setCurrentHp(i.getMaxHp())
			 i.setCurrentMp(i.getMaxMp())
			 i.stopAllEffects()
			 i.broadcastStatusUpdate()
			 i.broadcastUserInfo()
	 if len(Deadplayers)>0:
		 n = 0
		 for nm in lastPlayers :
			 i=L2World.getInstance().getPlayer(nm)
			 i.teleToLocation(lastX[n],lastY[n],lastZ[n])
			 n = n + 1
	 if winner<>None:
	   if winner.isOnline() :
		   L2World.getInstance().getPlayer(Players[0]).setHero(True)
 Announcements.getInstance().announceToAll(u"\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 "+str(Time_to_next_start)+ u" \u043c\u0438\u043d\u0443\u0442")
 for d in Doors:
	 door = DoorTable.getInstance().getDoor(d)
	 door.openMe()
 lastPlayers = []
 Players = []
 Deadplayers = []
 lastX = []
 lastY = []
 lastZ = []
 self.startQuestTimer("open_reg", Time_to_next_start*60000, None, None)
  if event == "exit" :
 if player.getName() in Players:
   Players.remove(player.getName())
   return "exit.htm"
 else:
   return "default.htm"

  if event == "konec" :
if f==0:
 for nm in Players :
  i=L2World.getInstance().getPlayer(nm)
  if i<>None:
   if i.isOnline() :
	i.teleToLocation(82698,148638,-3468)
	i.broadcastStatusUpdate()
	i.broadcastUserInfo()
 Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(Event_name)+ u" \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f \u043d\u0438\u0447\u044c\u0435\u0439!")
 self.startQuestTimer("open_reg", Time_to_next_start*60000, None, None)

  if event == "wait_battle":
npc.deleteMe()
if len(Players) >= Min_participate_count:
  for nm in Players:
	i=L2World.getInstance().getPlayer(nm)
	if i<>None:
	  if not i.isOnline() or i.isInOlympiadMode() or i.isInJail():
		Players.remove(nm)
	else:
		Players.remove(nm)
  for nm in Players:
	i=L2World.getInstance().getPlayer(nm)
	if i<>None:
	  if i.isOnline() :
		if i.isDead():
		  i.doRevive()
		i.setCurrentCp(i.getMaxCp())
		i.setCurrentHp(i.getMaxHp())
		i.setCurrentMp(i.getMaxMp())
		i.stopAllEffects()
		i.getAppearance().setInvisible();
		i.broadcastStatusUpdate()
		i.broadcastUserInfo()
		lastPlayers.append(nm)
		lastX.append(i.getX())
		lastY.append(i.getY())
		lastZ.append(i.getZ())
		i.teleToLocation(Teleport_coordinat[0],Teleport_coordinat[1],Teleport_coordinat[
2])
  for d in Doors:
	door = DoorTable.getInstance().getDoor(d)
	door.closeMe()
  Announcements.getInstance().announceToAll(u"\u042d\u0432\u0435\u043d\u0442 "+str(Event_name)+ u": \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u0430. \u0423 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c "+str(Time_to_wait_battle)+u" \u0441\u0435\u043a\u0443\u043d\u0434 \u0434\u043b\u044f \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0430\u0444\u0444\u0430\u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u043d\u0451\u0442\u0441\u044f \u0431\u043e\u0439!!!")
  self.startQuestTimer("start_event", Time_to_wait_battle*1000, None, None)
else :
	self.startQuestTimer("start_event", 1000, None, None)

QUEST = Quest(777, qn, "Custom")

QUEST.addStartNpc(int(Reg_Npc))
QUEST.addTalkId(int(Reg_Npc))

Изменено пользователем Akumu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мда))

Изменено пользователем Draku1a

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пф.. Теперь тебе точно помогут:(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

просто это не кому не недо, я бы смог сделать но не за беспл и нужен тест

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

# Время между Эвентами.(указывать в минутах) - вот время указывай

Time_to_next_start = 7209999999

 

 

# Через какое время эвент запустится после рестарта сервера.(указывать в секундах)

Time_to_start_after_restart = 32400 - а тут уж извини надо сам код переписывать(200 рублей платиш и будет тебе в 12 часов запуск евента)

Изменено пользователем Владимир(LoginOnn)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дам 1 совет есть исходный код на сайте фрозенов, и там есть такая система точно же посмотри алгоритм и переделай сам

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Дам 1 совет есть исходный код на сайте фрозенов, и там есть такая система точно же посмотри алгоритм и переделай сам

+1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...