VOldo 0 Опубликовано 7 октября, 2011 Ребята помогите зделать ивент для сборки l2jfrozen Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ScrepY 19 Опубликовано 20 июня, 2012 Не у кого нету евентов или шопов всяких для сборок Фрозен? (пользуюсь Линками) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ScrepY 19 Опубликовано 21 июня, 2012 up Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Моветон 413 Опубликовано 25 июня, 2012 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 import DoorTable from com.l2jfrozen.gameserver.datatables import SkillTable from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest from com.l2jfrozen.gameserver import Announcements from com.l2jfrozen 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 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 = 300 # Через какое время после телепортации на эвент начнеться битва.(указывать в секундах) Time_to_wait_battle = 30 # Длительность эвента. (указывать в минутах) EVENT_INTERVAL = 7 # Время между Эвентами.(указывать в минутах) Time_to_next_start = 360 # Время на регистрацию.(указывать в минутах) Time_for_regestration = 10 # Как часто аннонсить о регистрации на Эвент.(указывать в секундах) Announce_reg_delay = 60 # Минимальное количество игроков(не меньше 2). Min_participate_count = 2 # Максимальное количество игроков. Max_participate_count = 80 # Список наград при победе в эвенте. Выдаётся каждому игроку. # Формат записи: [[itemId1,count1,chance1],[itemId2,count2,chanceN],...] Rewards = [[4356,500,100],[6393,100,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)) Автор: Moki Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты