Tony 3 Опубликовано 27 августа, 2011 Как запретить итемы на лайст херо??? В настройках нет Скрытый текст import sys 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 import Quest from net.sf.l2j.gameserver.datatables import DoorTable from net.sf.l2j.gameserver.datatables import SkillTable from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest from net.sf.l2j.gameserver import Announcements from net.sf.l2j import L2DatabaseFactory from net.sf.l2j.gameserver.ai import CtrlIntention from net.sf.l2j.util import Rnd from java.lang import System from net.sf.l2j.gameserver.model import L2World from net.sf.l2j.gameserver.model.actor.instance import L2DoorInstance from net.sf.l2j.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],StartNpcCoordinat[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)) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Spartak 3 Опубликовано 27 августа, 2011 Без знания ява языка ничего не сделаешь. А это щас мало кто умеет...Сомневаюсь что ответ получишь Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ElMatador 0 Опубликовано 28 августа, 2011 Могу скинуть скрипт где есть такая функция P.S. Но уж дальше сам Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
igorbruma 4 Опубликовано 28 августа, 2011 # Вещи, необходимый для участия в Эвенте. # Формат записи [itemId1,itemId2,....] Price = [6673] где [] пишы 57 Если помог постави + Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Spartak 3 Опубликовано 28 августа, 2011 # Вещи, необходимый для участия в Эвенте.# Формат записи [itemId1,itemId2,....] Price = [6673] где [] пишы 57 Если помог постави + Ему не награду выставить нужно, а запретные вещи которые на эвенте нельзя будет использовать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
igorbruma 4 Опубликовано 28 августа, 2011 ой тогда сорри! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 28 сентября, 2012 Автоматическое сообщение Эта тема была перемещена из "Форум для новичков" в "Архив". Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты