Jeffuu 3 Опубликовано 28 октября, 2014 (изменено) Представляю Вашему вниманию уникальный ивент. Описание ивента: Регистрация на ивент происходит через сообщение в игре. По окончанию регистрации все зарегистрированные игроки телепортируются в Колизей делясь на две команды, одна команда трансформируется в Зомби(количество хп увеличивается, физ. атака и скорость уменьшаются). Ивент состоит с 3 раундов, Команда которая победит дважды побеждает, если после 2 раундов - ничья, то запускается 3 раунд где все трансформируются в Зомби. Зомби имеют скилл заражения, с вероятностью в 40% они могут заразить игрока другой команды. Игрок которого заразил Зомби превращается в 1 стадию заражения. Его можно вылечить только 1 раз за раунд специальным скиллом от напарника (id классов которым будет добавлен скилл указывается через конфиг). Находясь возле зараженного игрока в течении 7 секунд можно заразится. Время через которое будет заражен игрок выводится в в виде скрин сообщения. Если не вылечить зараженного игрока в течении 3 мин. он превращается в 2 стадию заражения, через 3 мин. в 3 стадию. Превратившись в 3 стадию он играет за команду Зомби. После 2 побед одной из команд выдается награда. Конф файл: -Время через какое запускать ивент после старта -Время раунда ивента -Aвтозапуск в определенное время -Снимать баффы при телепортации? -Мин .количество участников для каждой команды -Макс. количество участников для каждой команды -Id профы которой будет добавлен скилл "Лечение зараженного" -Награда -Регистрацию в 2 и более окон Цена ивента - 3500 рублей iсq - 661512590 skype - jeffuu0 Изменено 28 октября, 2014 пользователем Jeffuu 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
buga38 133 Опубликовано 28 октября, 2014 Что то не сильно впечатляет Ивент еще и за такую цену... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GoodDev 79 Опубликовано 29 октября, 2014 идею доработать и будет норм , если для ит вообще шик ) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Jeffuu 3 Опубликовано 30 октября, 2014 идею доработать и будет норм , если для ит вообще шик ) В ит нету трансформации Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mefestofel163 1333 Опубликовано 30 октября, 2014 а команда полиморф не катит для эвента? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
hoske 117 Опубликовано 31 октября, 2014 даже знаю откуда вырезан эвент , т.к сборка эта есть у меня. Хроники ХФ если я не ошибаюсь. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Jeffuu 3 Опубликовано 1 ноября, 2014 даже знаю откуда вырезан эвент , т.к сборка эта есть у меня. Хроники ХФ если я не ошибаюсь. Что? Сам писал этот ивент. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Jeffuu 3 Опубликовано 5 ноября, 2014 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
localhost 715 Опубликовано 5 ноября, 2014 ну что то вообще какой либо логики в ивенте не увидел... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
wester999 26 Опубликовано 5 ноября, 2014 наркомания Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Respect 120 Опубликовано 5 ноября, 2014 (изменено) Бобры - зомби автор, не вы снимали данную картину? хД P.S. не "ивент", а "эвент". Ну в крайнем случае пишите "event". P.S.S. за что 3,5к ?) Изменено 5 ноября, 2014 пользователем Respect Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ncsSpawN 45 Опубликовано 5 ноября, 2014 Идея интересная, но можно немного доработать, + поставил автору. Могу написать подобное под ИТ. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Colonist 5 Опубликовано 8 ноября, 2014 направление интересное Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Aeore 326 Опубликовано 8 ноября, 2014 Видел уже где то этот эвент только там еще были возможности убивать зомби особенными скиллами и так далее. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Jeffuu 3 Опубликовано 8 ноября, 2014 (изменено) Цена снижена до 2к рублей. Изменено 8 ноября, 2014 пользователем Jeffuu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Angelika 622 Опубликовано 11 ноября, 2014 Команда зомби и стандартных игроков - вяло как то всё это сделано без изюминки личное мнение ) сыровато немножко если идею доделать - а так удачи в продаже ) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
LifeGame32 312 Опубликовано 12 ноября, 2014 Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java===================================================================--- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (revision 5667)+++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (working copy)@@ -302,6 +313,96 @@ */public final class L2PcInstance extends L2Playable{+ + public boolean _zombie = false;+ public void setZombie(boolean t)+ {+ _zombie = t;+ }+ + public boolean isZombie()+ {+ return _zombie;+ }@@ -394,8 +494,19 @@ @Override public void doAttack(L2Character target) {+ Zombie z = new Zombie(); super.doAttack(target);- + if (isZombie())+ {+ + L2PcInstance targeto = target.getActingPlayer();+ z.infect(targeto);+ + if (Zombie._notinfected.size() == 0)+ {+ z.end();+ }+ } // cancel the recent fake-death protection instantly if the player attacks or casts spells getPlayer().setRecentFakeDeath(false); }@@ -5389,6 +5576,15 @@ @Override public synchronized void untransform() {+ if (isZombie())+ {+ sendMessage("Fuck you noob cheater");+ return;+ } if (_transformation != null) { if (!fireTransformListeners(_transformation, false))\ No newline at end of fileIndex: java/com/l2jserver/gameserver/model/entity/Zombie.java===================================================================--- java/com/l2jserver/gameserver/model/entity/Zombie.java (revision 0)+++ java/com/l2jserver/gameserver/model/entity/Zombie.java (revision 0)@@ -0,0 +1,298 @@+/* This program is free software; you can redistribute it and/or modify+ * it under the terms of the GNU General Public License as published by+ * the Free Software Foundation; either version 2, or (at your option)+ * any later version.+ *+ * This program is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+ * GNU General Public License for more details.+ *+ * You should have received a copy of the GNU General Public License+ * along with this program; if not, write to the Free Software+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA+ * 02111-1307, USA.+ *+ * http://www.gnu.org/copyleft/gpl.html+ */+package com.l2jserver.gameserver.model.entity;++import javolution.util.FastList;++import com.l2jserver.gameserver.Announcements;+import com.l2jserver.gameserver.ThreadPoolManager;+import com.l2jserver.gameserver.datatables.DoorTable;+import com.l2jserver.gameserver.datatables.NpcTable;+import com.l2jserver.gameserver.datatables.SpawnTable;+import com.l2jserver.gameserver.instancemanager.TransformationManager;+import com.l2jserver.gameserver.model.L2Spawn;+import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;+import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;+import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;+import com.l2jserver.util.Rnd;++/**+ * @author Marwan+ */+public class Zombie+{+ public L2PcInstance zombie = null;+ public static L2Spawn _npcSpawn;+ public static FastList<L2PcInstance> all = new FastList<L2PcInstance>();+ public static FastList<L2PcInstance> _infected = new FastList<L2PcInstance>();+ public static FastList<L2PcInstance> _notinfected = new FastList<L2PcInstance>();+ public int rounds = 3;+ + public static enum State+ {+ INACTIVE,+ ACTIVE+ }+ + public State state = State.INACTIVE;+ + public class Start implements Runnable+ {+ @Override+ public void run()+ {+ if (state == State.INACTIVE)+ {+ startEvent();+ }+ }+ }+ + public void startEvent()+ {+ state = State.ACTIVE;+ all.addAll(_notinfected);+ all.addAll(_infected);+ Announcements.getInstance().announceToAll("Zombie event registrations will end in 10 minute(s).");+ Announcements.getInstance().announceToAll("Registration npc in giran.");+ spawnEventNpc();+ waitSecs(10);+ Announcements.getInstance().announceToAll("Zombie event registrations will end in 5 minute(s).");+ waitSecs(10);+ Announcements.getInstance().announceToAll("Zombie event registrations will end in 1 minute(s).");+ waitSecs(10);+ + if (_notinfected.size() >= 2)+ {+ closeDoor(24190002);+ closeDoor(24190003);+ closeDoor(24190001);+ closeDoor(24190004);+ pickZombie();+ for (L2PcInstance players : _notinfected)+ {+ players.sendMessage("Zombie is " + zombie.getName());+ players.teleToLocation(150108, 46736, -3407);+ }+ zombie.sendMessage("Infect others by hitting them");+ zombie.teleToLocation(148498, 46752, -3413);+ for (int i = 2; i <= rounds; i++)+ {+ i++;+ waitSecs(110);+ nextRound(i);+ }+ end();+ }+ else+ {+ Announcements.getInstance().announceToAll("Zombie event has been cancelled due to lack of participants");+ state = State.INACTIVE;+ }+ + }+ + public void nextRound(int round)+ {+ for (L2PcInstance pl : _notinfected)+ {+ + pl.teleToLocation(147771, 46712, -3411);+ ExShowScreenMessage message1 = new ExShowScreenMessage("Round " + round + " will start in 30 seconds.", 8000);+ pl.sendPacket(message1);+ }+ for (L2PcInstance pl : _infected)+ {+ pl.teleToLocation(151248, 46721, -3406);+ ExShowScreenMessage message1 = new ExShowScreenMessage("Round " + round + " will start in 30 seconds.", 8000);+ pl.sendPacket(message1);+ }+ waitSecs(30);+ for (L2PcInstance pl : _notinfected)+ {+ + pl.teleToLocation(148515, 46660, -3413);+ }+ for (L2PcInstance pl : _infected)+ {+ pl.teleToLocation(150400, 46764, -3413);+ }+ }+ + private static void spawnEventNpc()+ {+ L2NpcTemplate tmpl = NpcTable.getInstance().getTemplate(70012);+ + try+ {+ _npcSpawn = new L2Spawn(tmpl);+ _npcSpawn.setLocx(83450);+ _npcSpawn.setLocy(148608);+ _npcSpawn.setLocz(3405);+ _npcSpawn.setAmount(1);+ _npcSpawn.setHeading(1);+ SpawnTable.getInstance().addNewSpawn(_npcSpawn, false);+ + _npcSpawn.init();+ _npcSpawn.getLastSpawn().setTitle("Zombie");+ _npcSpawn.getLastSpawn().setName("Zombie Event");+ }+ catch (Exception e)+ {+ }+ }+ + public void pickZombie()+ {+ zombie = _notinfected.get(Rnd.get(0, _notinfected.size() - 1));+ infect(zombie);+ }+ + public void infect(L2PcInstance z)+ {+ _infected.add(z);+ _notinfected.remove(z);+ z.getAppearance().setTitleColor(255, 0, 0);+ z.setZombie(true);+ TransformationManager.getInstance().transformPlayer(303, z);+ }+ + public void uninfectall()+ {+ for (L2PcInstance uninfect : _infected)+ {+ uninfect.untransform();+ uninfect.setZombie(false);+ }+ }+ + public void end()+ {+ openDoor(24190002);+ openDoor(24190003);+ openDoor(24190001);+ openDoor(24190004);+ uninfectall();+ rewardWinner();+ state = State.INACTIVE;+ for (L2PcInstance p : all)+ {+ p.teleToLocation(83450, 148608, -3405);+ }+ if (_notinfected.size() >= 1)+ {+ Announcements.getInstance().announceToAll("Zombie event has end");+ Announcements.getInstance().announceToAll("Players won");+ _notinfected.removeAll(_notinfected);+ }+ else+ {+ + Announcements.getInstance().announceToAll("Zombie event has end");+ Announcements.getInstance().announceToAll("Zombies won");+ _infected.removeAll(_infected);+ }+ + }+ + public void register(L2PcInstance p)+ {+ _notinfected.add(p);+ p.sendMessage("You have succesfully registered");+ }+ + public void unregister(L2PcInstance p)+ {+ _notinfected.remove(p);+ p.sendMessage("You have succesfully unregistered");+ }+ + public void rewardWinner()+ {+ if (_notinfected.size() == 0)+ {+ for (L2PcInstance n : _infected)+ {+ n.addItem("zombie", 57, 10000, n, false);+ }+ }+ else+ {+ for (L2PcInstance n : _notinfected)+ {+ n.addItem("zombie", 57, 10000, n, false);+ }+ }+ }+ + public void waitSecs(int i)+ {+ try+ {+ Thread.sleep(i * 1000);+ }+ catch (InterruptedException ie)+ {+ ie.printStackTrace();+ }+ }+ + public void wait(int i)+ {+ try+ {+ Thread.sleep(i * 60000);+ }+ catch (InterruptedException ie)+ {+ ie.printStackTrace();+ }+ }+ + private static void closeDoor(int i)+ {+ + L2DoorInstance doorInstance = DoorTable.getInstance().getDoor(i);+ + if (doorInstance != null)+ {+ doorInstance.closeMe();+ }+ + }+ + private static void openDoor(int i)+ {+ L2DoorInstance doorInstance = DoorTable.getInstance().getDoor(i);+ + if (doorInstance != null)+ {+ doorInstance.openMe();+ }+ }+ + public Zombie()+ {+ ThreadPoolManager.getInstance().scheduleAiAtFixedRate(new Start(), 60000, 6000);+ + }+ + public static Zombie getInstance()+ {+ return SingletonHolder._instance;+ }+ + private static class SingletonHolder+ {+ protected static final Zombie _instance = new Zombie();+ }+}Index: java/com/l2jserver/gameserver/instancemanager/ZombieNpc.java===================================================================--- java/com/l2jserver/gameserver/instancemanager/ZombieNpc.java (revision 0)+++ java/com/l2jserver/gameserver/instancemanager/ZombieNpc.java (revision 0)@@ -0,0 +1,131 @@+/*+ * This program is free software: you can redistribute it and/or modify it under+ * the terms of the GNU General Public License as published by the Free Software+ * Foundation, either version 3 of the License, or (at your option) any later+ * version.+ *+ * This program is distributed in the hope that it will be useful, but WITHOUT+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more+ * details.+ *+ * You should have received a copy of the GNU General Public License along with+ * this program. If not, see <http://www.gnu.org/licenses/>.+ */+package com.l2jserver.gameserver.instancemanager;++import com.l2jserver.Config;+import com.l2jserver.gameserver.model.actor.L2Npc;+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;+import com.l2jserver.gameserver.model.entity.Zombie;+import com.l2jserver.gameserver.model.quest.Quest;+import com.l2jserver.gameserver.model.quest.QuestState;++/**+ * Zombie Npc+ * @author Marwan+ */+public final class ZombieNpc extends Quest+{+ + private final int NpcId = 70012;+ + private ZombieNpc(int questId, String name, String descr)+ {+ + super(questId, name, descr);+ addStartNpc(NpcId);+ addTalkId(NpcId);+ }+ + @Override+ public final String onAdvEvent(String event, L2Npc npc, L2PcInstance player)+ {+ QuestState st = player.getQuestState("ZombieNpc");+ if (st == null)+ {+ return "";+ }+ else if (event.equalsIgnoreCase("show"))+ {+ StringBuilder sb = new StringBuilder();+ sb.append("<html><title>TvT Event</title>");+ sb.append("<body>");+ // sb.append("<br><font color=\"0066FF\">Current Event: 1vs1 </font>");+ sb.append("<br><br><font color=\"00ff4d\">Hello " + player.getName() + ".<br> Here you can register for Zombie Event <br><br></font>");+ sb.append("<hr>");+ sb.append("<br><br><br><br>");+ sb.append("<center><img src=\"L2UI.SquareWhite\" width=300 height=1>");+ sb.append("<table bgcolor=333333 width=100>");+ sb.append("<tr>");+ sb.append("<td width=100 ALIGN=\"LEFT\"><button value=\"Register\" action=\"bypass -h Quest ZombieNpc register\" width=100 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></td>");+ sb.append("<td width=100 ALIGN=\"RIGHT\"><button value=\"Unregister\" action=\"bypass -h Quest ZombieNpc unregister\" width=100 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></td></tr>");+ sb.append("<br><tr><td width=150 ALIGN=\"CENTER\"><button value=\"Registered Players\" action=\"bypass -h Quest ZombieNpc players\" width=150 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></td></tr>");+ + sb.append("</tr>");+ sb.append("</table>");+ sb.append("<br><br></center>");+ return sb.toString();+ }+ + else if (event.equalsIgnoreCase("register"))+ {+ + StringBuilder sb = new StringBuilder();+ if (Zombie._notinfected.contains(player))+ {+ sb.append("<html><title>Zombie Event</title><body>");+ sb.append("You are already registered</body></html>");+ }+ else+ {+ sb.append("<html><title>Zombie Event</title><body>");+ sb.append("Registration succesful</body></html>");+ Zombie z = new Zombie();+ z.register(player);+ + }+ return sb.toString();+ + }+ else if (event.equalsIgnoreCase("unregister"))+ {+ + StringBuilder sb = new StringBuilder();+ sb.append("<html><title>Zombie Event</title>");+ sb.append("<body>You have succesfully unregistered</body></html>");+ Zombie z = new Zombie();+ z.unregister(player);+ return sb.toString();+ }+ else if (event.equalsIgnoreCase("players"))+ {+ StringBuilder sb = new StringBuilder();+ String noobs = null;+ sb.append("<html><title>Zombie Event</title><body><center>");+ sb.append("<br><br><table width=300><tr><td>Name</td><td width=80>Level</td></tr><br></font>");+ for (L2PcInstance pls : Zombie._notinfected)+ {+ noobs += "<tr><td><font color=\"009900\">" + pls.getName() + "</td><td>" + pls.getLevel() + "</font></td></tr>";+ }+ sb.append("<table>" + noobs + "</table></body></html>");+ return sb.toString();+ + }+ + return event;+ }+ + @SuppressWarnings("synthetic-access")+ public static ZombieNpc getInstance()+ {+ return SingletonHolder._instance;+ }+ + private static class SingletonHolder+ {+ @SuppressWarnings("synthetic-access")+ private static final ZombieNpc _instance = new ZombieNpc(-1, "ZombieNpc", "instances");+ }+ +} Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты