U3Games

Games | Desarrollo & Soporte => L2 | Sección de Servidores => Lineage => L2 | Implementaciones => Mensaje iniciado por: Swarlog en Jul 26, 2025, 10:54 PM

Título: Movie maker + Fence builder
Publicado por: Swarlog en Jul 26, 2025, 10:54 PM
https://youtu.be/vCqfDTgesyw

http://youtu.be/lCWuSgNGwIs

CitarCODE:

Index: java/com/l2jserver/gameserver/GameServer.java
    ===================================================================
    --- java/com/l2jserver/gameserver/GameServer.java   (revision 4060)
    +++ java/com/l2jserver/gameserver/GameServer.java   (working copy)
    @@ -91,6 +91,7 @@
    import com.l2jserver.gameserver.instancemanager.CursedWeaponsManager;
    import com.l2jserver.gameserver.instancemanager.DayNightSpawnManager;
    import com.l2jserver.gameserver.instancemanager.DimensionalRiftManager;
    +import com.l2jserver.gameserver.instancemanager.FenceBuilderManager;
    import com.l2jserver.gameserver.instancemanager.FortManager;
    import com.l2jserver.gameserver.instancemanager.FortSiegeManager;
    import com.l2jserver.gameserver.instancemanager.FourSepulchersManager;
    @@ -100,6 +101,7 @@
    import com.l2jserver.gameserver.instancemanager.ItemsOnGroundManager;
    import com.l2jserver.gameserver.instancemanager.MailManager;
    import com.l2jserver.gameserver.instancemanager.MercTicketManager;
    +import com.l2jserver.gameserver.instancemanager.MovieMakerManager;
    import com.l2jserver.gameserver.instancemanager.PetitionManager;
    import com.l2jserver.gameserver.instancemanager.QuestManager;
    import com.l2jserver.gameserver.instancemanager.RaidBossPointsManager;
    @@ -410,6 +412,10 @@
     
          TvTManager.getInstance();
          KnownListUpdateTaskManager.getInstance();
    +     
    +      MovieMakerManager.getInstance();
    +      FenceBuilderManager.getInstance();
    +     
          if (Config.DEADLOCK_DETECTOR)
          {
             _deadDetectThread = new DeadLockDetector();
    Index: java/com/l2jserver/gameserver/instancemanager/FenceBuilderManager.java
    ===================================================================
    --- java/com/l2jserver/gameserver/instancemanager/FenceBuilderManager.java   (revision 0)
    +++ java/com/l2jserver/gameserver/instancemanager/FenceBuilderManager.java   (revision 0)
    @@ -0,0 +1,127 @@
    +package com.l2jserver.gameserver.instancemanager;
    +
    +import java.util.Map;
    +
    +import javolution.text.TextBuilder;
    +import javolution.util.FastMap;
    +import com.l2jserver.gameserver.idfactory.IdFactory;
    +import com.l2jserver.gameserver.model.actor.instance.L2FenceInstance;
    +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
    +import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
    +import com.l2jserver.gameserver.model.L2World;
    +import com.l2jserver.gameserver.model.L2WorldRegion;
    +
    +/**
    + * @author KKnD
    + */
    +public class FenceBuilderManager
    +{
    +   private static FenceBuilderManager _instance;
    +   private Map<Integer, L2FenceInstance> _fences = new FastMap<Integer, L2FenceInstance>();
    +   private Map<Integer, L2FenceInstance> _fence = new FastMap<Integer, L2FenceInstance>();
    + 
    + 
    +   public static FenceBuilderManager getInstance()
    +   {
    +      if ( _instance == null )
    +      {
    +         _instance = new FenceBuilderManager();
    +      }
    +     
    +      return _instance;
    +   }
    + 
    +   public void main_fence(L2PcInstance pc)
    +   {
    +      NpcHtmlMessage html = new NpcHtmlMessage(5);
    +        TextBuilder sb = new TextBuilder();
    +        sb.append("<html><title>KKnD's Fence Builder</title><body>");
    +        sb.append("<table width=270>");
    +        sb.append("<tr></tr>");
    +        sb.append("<tr><td>New Fence:</td></tr>");
    +        sb.append("<tr><td>Type: </td></tr>");
    +        sb.append("<tr><td><combobox width=75 var=ts list=0;1;2></td></tr>");
    +        sb.append("<tr><td>Width: (min 150)</td></tr>");
    +        sb.append("<tr><td><td><edit var=\"tdist\"></td></tr>");
    +        sb.append("<tr><td>Lenght: (min 150)</td></tr>");
    +        sb.append("<tr><td><td><edit var=\"tyaw\"></td></tr>");
    +        sb.append("<tr><td>Hight: </td></tr>");
    +        sb.append("<tr><td><td><combobox width=75 var=tscreen list=1;2;3></td></tr>");
    +        sb.append("<tr>");
    +        sb.append("</tr>");
    +        sb.append("</table>");
    +        sb.append("<BR>");
    +        sb.append("<BR>");
    +        sb.append("<table width=270>");
    +        sb.append("<tr>");
    +        sb.append("<td><button value=\"spawn fence\" width=90 action=\"bypass -h admin_fence $ts $tdist $tyaw $tscreen\" height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
    +        sb.append("</tr>");
    +        sb.append("<tr>");
    +        sb.append("<td><button value=\"delete last created\" width=90 action=\"bypass -h admin_dellastspawned\" height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
    +        sb.append("<td><button value=\"delete all fences\" width=90 action=\"bypass -h admin_delallspawned\" height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
    +        sb.append("</tr>");
    +        sb.append("<tr>");
    +        sb.append("</tr>");
    +        sb.append("</table></body></html>");
    +        html.setHtml(sb.toString());
    +        pc.sendPacket(html);
    +   }
    + 
    +   public void spawn_fence(L2PcInstance pc, int type, int wid, int hi, int size)
    +   {
    +      _fence.clear();
    +      for (int i = 0; i < size; i++)
    +      {
    +         int id = IdFactory.getInstance().getNextId();
    +         L2FenceInstance inst = new L2FenceInstance(id, type, wid, hi);
    +         inst.spawnMe(pc.getX(), pc.getY(), pc.getZ());
    +         _fences.put(id, inst);
    +         _fence.put(id, inst);
    +      }
    +      main_fence(pc);
    +   }
    + 
    +   public void del_last(L2PcInstance pc)
    +   {
    +      if (!_fence.isEmpty())
    +      {
    +         for (L2FenceInstance f : _fence.values())
    +         {
    +            if ( f != null )
    +            {
    +               L2WorldRegion region = f.getWorldRegion();
    +               f.decayMe();
    +               if (region != null)
    +                  region.removeVisibleObject(f);
    +               f.getKnownList().removeAllKnownObjects();
    +               L2World.getInstance().removeObject(f);
    +               _fences.remove(f);
    +               _fence.remove(f);
    +            }
    +         }
    +      }
    +      main_fence(pc);
    +   }
    + 
    +   public void del_all(L2PcInstance pc)
    +   {
    +      if (!_fences.isEmpty())
    +      {
    +         for (L2FenceInstance f : _fences.values())
    +         {
    +            if ( f != null )
    +            {
    +               L2WorldRegion region = f.getWorldRegion();
    +               f.decayMe();
    +               if (region != null)
    +                  region.removeVisibleObject(f);
    +               f.getKnownList().removeAllKnownObjects();
    +               L2World.getInstance().removeObject(f);
    +               _fences.remove(f);
    +               _fence.clear();
    +            }
    +         }
    +      }
    +      main_fence(pc);
    +   }
    +}
    \ No newline at end of file
    Index: java/com/l2jserver/gameserver/instancemanager/MovieMakerManager.java
    ===================================================================
    --- java/com/l2jserver/gameserver/instancemanager/MovieMakerManager.java   (revision 0)
    +++ java/com/l2jserver/gameserver/instancemanager/MovieMakerManager.java   (revision 0)
    @@ -0,0 +1,364 @@
    +package com.l2jserver.gameserver.instancemanager;
    +
    +import java.util.Collection;
    +import java.util.Map;
    +
    +import javolution.text.TextBuilder;
    +import javolution.util.FastMap;
    +import com.l2jserver.gameserver.ThreadPoolManager;
    +import com.l2jserver.gameserver.model.L2Object;
    +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
    +import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
    +import com.l2jserver.gameserver.network.serverpackets.SpecialCamera;
    +
    +/**
    + * @author KKnD
    + */
    +public class MovieMakerManager
    +{
    +   private static MovieMakerManager _instance;
    +   protected Map<Integer, Sequence> _sequence = new FastMap<Integer, Sequence>();
    + 
    + 
    +   public static MovieMakerManager getInstance()
    +   {
    +      if ( _instance == null )
    +      {
    +         _instance = new MovieMakerManager();
    +      }
    +     
    +      return _instance;
    +   }
    +   protected class Sequence
    +   {
    +      protected int sequenceId;
    +      protected int _objid;
    +      protected int _dist;
    +      protected int _yaw;
    +      protected int _pitch;
    +      protected int _time;
    +      protected int _duration;
    +      protected int _turn;
    +      protected int _rise;
    +      protected int _widescreen;
    +   }
    + 
    +   public void main_txt(L2PcInstance player)
    +   {
    +      NpcHtmlMessage html = new NpcHtmlMessage(5);
    +        TextBuilder sb = new TextBuilder();
    +        sb.append("<html><title>KKnD's Movie Maker</title><body>");
    +        sb.append("<table width=270>");
    +        sb.append("<tr><td>Sequences:</td></tr>");
    +        if (!_sequence.isEmpty())
    +        {
    +           sb.append("</table>");
    +           sb.append("<table width=270>");
    +           for (Sequence s : _sequence.values())
    +            {
    +              sb.append("<tr>");
    +                sb.append("<td>Sequence Id: "+s.sequenceId+"</td>");
    +                sb.append("</tr>");
    +            }
    +           sb.append("</table>");
    +           sb.append("<BR>");
    +           sb.append("<BR>");
    +           sb.append("<table width=270>");
    +           sb.append("<tr>");
    +           sb.append("<td>Sequence Id:</td>");
    +           sb.append("<td><edit var=\"tsId\" width=120 height=15></td>");
    +           sb.append("</tr>");
    +           sb.append("</table>");
    +           sb.append("<table width=270>");
    +           sb.append("<tr>");
    +            sb.append("<td><button value=\"Edit\" width=80 action=\"bypass -h admin_editsequence $tsId\" height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
    +            sb.append("<td><button value=\"Delete\" width=80 action=\"bypass -h admin_delsequence $tsId\" height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
    +            sb.append("<td><button value=\"play\" width=80 action=\"bypass -h admin_playseqq $tsId\" height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
    +            sb.append("</tr>");
    +            sb.append("</table>");
    +            sb.append("<BR>");
    +            sb.append("<table width=270>");
    +            sb.append("<tr>");
    +            sb.append("<td>Brodcast to others near by</td>");
    +            sb.append("</tr>");
    +            sb.append("</table>");
    +            sb.append("<table width=270>");
    +            sb.append("<tr>");
    +            sb.append("<td><button value=\"Brodcast\" width=80 action=\"bypass -h admin_brodcast $tsId\" height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
    +            sb.append("</tr>");
    +           sb.append("</table>");
    +           sb.append("<BR>");
    +           sb.append("<table width=270>");
    +           sb.append("<tr>");
    +            sb.append("<td>Brodcast movie to others near by or play to yourself</td>");
    +            sb.append("</tr>");
    +            sb.append("</table>");
    +            sb.append("<table width=270>");
    +            sb.append("<tr>");
    +            sb.append("<td><button value=\"Brodcast\" width=80 action=\"bypass -h admin_brodmovie\" height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
    +            sb.append("<td><button value=\"Play\" width=80 action=\"bypass -h admin_playmovie\" height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
    +            sb.append("</tr>");
    +            sb.append("</table>");
    +        }
    +        sb.append("<table width=270>");
    +        sb.append("<tr>");
    +        sb.append("<td><button value=\"Add sequence\" width=80 action=\"bypass -h admin_addseq\" height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
    +        sb.append("</tr>");
    +        sb.append("</table></body></html>");
    +        html.setHtml(sb.toString());
    +        player.sendPacket(html);
    +   }
    + 
    +   public void play_sequence(int id, L2PcInstance pc)
    +   {
    +      if (_sequence.containsKey(id))
    +      {
    +         Sequence s = new Sequence();
    +         s = _sequence.get(id);
    +         pc.sendPacket(new SpecialCamera(s._objid, s._dist, s._yaw, s._pitch, s._time, s._duration, s._turn, s._rise, s._widescreen, 0));
    +      }
    +      else
    +      {
    +         pc.sendMessage("Wrong sequence Id.");
    +         main_txt(pc);
    +      }
    +   }
    + 
    +   public void brodcast_sequence(int id, L2PcInstance pc)
    +   {
    +      if (_sequence.containsKey(id))
    +      {
    +         Sequence s = new Sequence();
    +         s = _sequence.get(id);
    +         Collection<L2Object> objs = pc.getKnownList().getKnownObjects().values();
    +       
    +         for (L2Object object : objs)
    +         {
    +            if (object instanceof L2PcInstance)
    +            {
    +               ((L2PcInstance) object).sendPacket(new SpecialCamera(s._objid, s._dist, s._yaw, s._pitch, s._time, s._duration, s._turn, s._rise, s._widescreen, 0));
    +            }
    +         }
    +         pc.sendPacket(new SpecialCamera(s._objid, s._dist, s._yaw, s._pitch, s._time, s._duration, s._turn, s._rise, s._widescreen, 0));
    +      }
    +      else
    +      {
    +         pc.sendMessage("Wrong sequence Id.");
    +         main_txt(pc);
    +      }
    +   }
    + 
    +   public void play_sequence(L2PcInstance pc, int objid, int dist, int yaw, int pitch, int time, int duration, int turn, int rise, int screen)
    +   {
    +      pc.sendPacket(new SpecialCamera(objid, dist, yaw, pitch, time, duration, turn, rise, screen, 0));
    +   }
    + 
    +   public void add_sequence(L2PcInstance pc, int seqId, int objid, int dist, int yaw, int pitch, int time, int duration, int turn, int rise, int screen)
    +   {
    +      if (!_sequence.containsKey(seqId))
    +      {
    +         Sequence s = new Sequence();
    +         s.sequenceId = seqId;
    +         s._objid = objid;
    +         s._dist = dist;
    +         s._yaw = yaw;
    +         s._pitch = pitch;
    +         s._time = time;
    +         s._duration = duration;
    +         s._turn = turn;
    +         s._rise = rise;
    +         s._widescreen = screen;
    +         _sequence.put(seqId, s);
    +         main_txt(pc);
    +      }
    +      else
    +      {
    +         pc.sendMessage("Sequence already exists.");
    +         main_txt(pc);
    +      }
    +   }
    + 
    +   public void add_seq(L2PcInstance pc)
    +   {
    +      NpcHtmlMessage html = new NpcHtmlMessage(5);
    +        TextBuilder sb = new TextBuilder();
    +        sb.append("<html><title>KKnD's Movie Maker</title><body>");
    +        sb.append("<table width=270>");
    +        sb.append("<tr></tr>");
    +        sb.append("<tr><td>New Sequence:</td></tr>");
    +        sb.append("<tr><td>Sequence Id: </td></tr>");
    +        sb.append("<tr><td><td><edit var=\"tsId\"></td></tr>");
    +        sb.append("<tr><td>Distance: </td></tr>");
    +        sb.append("<tr><td><td><edit var=\"tdist\"></td></tr>");
    +        sb.append("<tr><td>Yaw: </td></tr>");
    +        sb.append("<tr><td><td><edit var=\"tyaw\"></td></tr>");
    +        sb.append("<tr><td>Pitch: </td></tr>");
    +        sb.append("<tr><td><td><edit var=\"tpitch\"></td></tr>");
    +        sb.append("<tr><td>Time: </td></tr>");
    +        sb.append("<tr><td><td><edit var=\"ttime\"></td></tr>");
    +        sb.append("<tr><td>Duration: </td></tr>");
    +        sb.append("<tr><td><td><edit var=\"tdur\"></td></tr>");
    +        sb.append("<tr><td>Turn: </td></tr>");
    +        sb.append("<tr><td><td><edit var=\"tturn\"></td></tr>");
    +        sb.append("<tr><td>Rise: </td></tr>");
    +        sb.append("<tr><td><td><edit var=\"trise\"></td></tr>");
    +        sb.append("<tr><td>WideScreen: </td></tr>");
    +        sb.append("<tr><td><td><combobox width=75 var=tscreen list=0;1></td></tr>");
    +        sb.append("<tr>");
    +        sb.append("</tr>");
    +        sb.append("</table>");
    +        sb.append("<BR>");
    +        sb.append("<BR>");
    +        sb.append("<table width=270>");
    +        sb.append("<tr>");
    +        sb.append("<td><button value=\"Add sequence\" width=90 action=\"bypass -h admin_addsequence $tsId $tdist $tyaw $tpitch $ttime $tdur $tturn $trise $tscreen\" height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
    +        sb.append("<td><button value=\"Play sequence\" width=90 action=\"bypass -h admin_playsequence $tdist $tyaw $tpitch $ttime $tdur $tturn $trise $tscreen\" height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
    +        sb.append("</tr>");
    +        sb.append("<tr>");
    +        sb.append("</tr>");
    +        sb.append("</table></body></html>");
    +        html.setHtml(sb.toString());
    +        pc.sendPacket(html);
    +   }
    + 
    +   public void edit_seq(int id, L2PcInstance pc)
    +   {
    +      if (_sequence.containsKey(id))
    +      {
    +         Sequence s = new Sequence();
    +         s = _sequence.get(id);
    +         NpcHtmlMessage html = new NpcHtmlMessage(5);
    +           TextBuilder sb = new TextBuilder();
    +           sb.append("<html><title>KKnD's Movie Maker</title><body>");
    +           sb.append("<table width=270>");
    +           sb.append("<tr></tr>");
    +           sb.append("<tr><td>Modyfy Sequence:</td></tr>");
    +           sb.append("<tr><td>Sequence Id: "+s.sequenceId+"</td></tr>");
    +           sb.append("<tr><td>Distance: "+s._dist+"</td></tr>");
    +           sb.append("<tr><td><td><edit var=\"tdist\"></td></tr>");
    +           sb.append("<tr><td>Yaw: "+s._yaw+"</td></tr>");
    +           sb.append("<tr><td><td><edit var=\"tyaw\"></td></tr>");
    +           sb.append("<tr><td>Pitch: "+s._pitch+"</td></tr>");
    +           sb.append("<tr><td><td><edit var=\"tpitch\"></td></tr>");
    +           sb.append("<tr><td>Time: "+s._time+"</td></tr>");
    +           sb.append("<tr><td><td><edit var=\"ttime\"></td></tr>");
    +           sb.append("<tr><td>Duration: "+s._duration+"</td></tr>");
    +           sb.append("<tr><td><td><edit var=\"tdur\"></td></tr>");
    +           sb.append("<tr><td>Turn: "+s._turn+"</td></tr>");
    +           sb.append("<tr><td><td><edit var=\"tturn\"></td></tr>");
    +           sb.append("<tr><td>Rise: "+s._rise+"</td></tr>");
    +           sb.append("<tr><td><td><edit var=\"trise\"></td></tr>");
    +           sb.append("<tr><td>WideScreen: "+s._widescreen+"</td></tr>");
    +           sb.append("<tr><td><td><combobox width=75 var=tscreen list=0;1></td></tr>");
    +           sb.append("</table>");
    +           sb.append("<BR>");
    +           sb.append("<BR>");
    +           sb.append("<table width=270>");
    +           sb.append("<tr>");
    +           sb.append("<td><button value=\"Update sequence\" width=90 action=\"bypass -h admin_updatesequence "+s.sequenceId+" $tdist $tyaw $tpitch $ttime $tdur $tturn $trise $tscreen\" height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
    +           sb.append("<td><button value=\"Play sequence\" width=90 action=\"bypass -h admin_playsequence $tdist $tyaw $tpitch $ttime $tdur $tturn $trise $tscreen\" height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");
    +           sb.append("</tr>");
    +           sb.append("</table></body></html>");
    +           html.setHtml(sb.toString());
    +           pc.sendPacket(html);
    +      }
    +   }
    + 
    +   public void update_sequence(L2PcInstance pc, int seqId, int objid, int dist, int yaw, int pitch, int time, int duration, int turn, int rise, int screen)
    +   {
    +      if (_sequence.containsKey(seqId))
    +      {
    +         _sequence.remove(seqId);
    +         Sequence s = new Sequence();
    +         s.sequenceId = seqId;
    +         s._objid = objid;
    +         s._dist = dist;
    +         s._yaw = yaw;
    +         s._pitch = pitch;
    +         s._time = time;
    +         s._duration = duration;
    +         s._turn = turn;
    +         s._rise = rise;
    +         s._widescreen = screen;
    +         _sequence.put(seqId, s);
    +         main_txt(pc);
    +      }
    +      else
    +      {
    +         pc.sendMessage("Sequence dont exists.");
    +         main_txt(pc);
    +      }
    +   }
    + 
    +   public void delete_sequence(int id, L2PcInstance pc)
    +   {
    +      if (_sequence.containsKey(id))
    +      {
    +         _sequence.remove(id);
    +         main_txt(pc);
    +      }
    +      else
    +      {
    +         pc.sendMessage("sequence Id dont exists.");
    +         main_txt(pc);
    +      }
    +   }
    + 
    +   public void play_movie(int brodcast, L2PcInstance pc)
    +   {
    +      if (!_sequence.isEmpty())
    +      {
    +         ThreadPoolManager.getInstance().scheduleGeneral(new play(1,brodcast,pc), 500);
    +      }
    +      else
    +      {
    +         pc.sendMessage("There is nothing to play");
    +         main_txt(pc);
    +      }
    +   }
    + 
    +   private class play implements Runnable
    +   {
    +      private int _id;
    +      private int brod;
    +      private L2PcInstance _pc;
    +      public play(int id, int brodcast, L2PcInstance pc)
    +      {
    +         _id = id;
    +         brod = brodcast;
    +         _pc = pc;
    +      }
    +      public void run()
    +      {
    +         int id = 0;
    +         Sequence sec = new Sequence();
    +         if (_sequence.containsKey(_id))
    +         {
    +            id = _id+1;
    +            sec = _sequence.get(_id);
    +            if (brod == 1)
    +            {
    +               Collection<L2Object> objs = _pc.getKnownList().getKnownObjects().values();
    +             
    +               for (L2Object object : objs)
    +               {
    +                  if (object instanceof L2PcInstance)
    +                  {
    +                     ((L2PcInstance) object).sendPacket(new SpecialCamera(sec._objid, sec._dist, sec._yaw, sec._pitch, sec._time, sec._duration, sec._turn, sec._rise, sec._widescreen, 0));
    +                  }
    +               }
    +               _pc.sendPacket(new SpecialCamera(sec._objid, sec._dist, sec._yaw, sec._pitch, sec._time, sec._duration, sec._turn, sec._rise, sec._widescreen, 0));
    +            }
    +            else
    +               _pc.sendPacket(new SpecialCamera(sec._objid, sec._dist, sec._yaw, sec._pitch, sec._time, sec._duration, sec._turn, sec._rise, sec._widescreen, 0));
    +           
    +            ThreadPoolManager.getInstance().scheduleGeneral(new play(id,brod,_pc), (sec._duration - 100));
    +         }
    +         else
    +         {
    +            _pc.sendMessage("Movie ended on "+(_id - 1)+" Sequence.");
    +            main_txt(_pc);
    +         }
    +      }
    +   }
    +}
    \ No newline at end of file
    Index: java/com/l2jserver/gameserver/model/actor/instance/L2FenceInstance.java
    ===================================================================
    --- java/com/l2jserver/gameserver/model/actor/instance/L2FenceInstance.java   (revision 0)
    +++ java/com/l2jserver/gameserver/model/actor/instance/L2FenceInstance.java   (revision 0)
    @@ -0,0 +1,50 @@
    +package com.l2jserver.gameserver.model.actor.instance;
    +
    +import com.l2jserver.gameserver.model.L2Object;
    +import com.l2jserver.gameserver.model.actor.L2Character;
    +import com.l2jserver.gameserver.network.serverpackets.ExColosseumFenceInfoPacket;
    +
    +/**
    + * @author KKnD
    + */
    +public final class L2FenceInstance extends L2Object
    +{
    +   private int _type;
    +   private int _width;
    +   private int _height;
    + 
    +   public L2FenceInstance(int objectId, int type, int width, int height)
    +   {
    +      super(objectId);
    +      _type = type;
    +      _width = width;
    +      _height = height;
    +   }
    + 
    +   @Override
    +    public void sendInfo(L2PcInstance activeChar)
    +   {
    +      activeChar.sendPacket(new ExColosseumFenceInfoPacket(this));
    +   }
    + 
    +   public int getType()
    +   {
    +      return _type;
    +   }
    + 
    +   public int getWidth()
    +   {
    +      return _width;
    +   }
    + 
    +   public int getHeight()
    +   {
    +      return _height;
    +   }
    + 
    +   @Override
    +   public boolean isAutoAttackable(L2Character attacker)
    +   {
    +      return false;
    +   }
    +}
    \ No newline at end of file
    Index: java/com/l2jserver/gameserver/network/serverpackets/ExColosseumFenceInfoPacket.java
    ===================================================================
    --- java/com/l2jserver/gameserver/network/serverpackets/ExColosseumFenceInfoPacket.java   (revision 0)
    +++ java/com/l2jserver/gameserver/network/serverpackets/ExColosseumFenceInfoPacket.java   (revision 0)
    @@ -0,0 +1,140 @@
    +/*
    +
    + * 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.network.serverpackets;
    +
    +import com.l2jserver.gameserver.model.actor.instance.L2FenceInstance;
    +
    +
    +
    +
    +
    +/**
    +
    + * Format: (ch)dddddd
    +
    + * d: object id
    +
    + * d: type (00 - no fence, 01 - only 4 columns, 02 - columns with fences)
    +
    + * d: x coord
    +
    + * d: y coord
    +
    + * d: z coord
    +
    + * d: width
    +
    + * d: height
    +
    + */
    +
    +public class ExColosseumFenceInfoPacket extends L2GameServerPacket {
    +
    +
    +
    +   private static final String _S__FE_03_EXCOLOSSEUMFENCEINFOPACKET = "[S] FE:03 ExColosseumFenceInfoPacket";
    +
    +   private int _type;
    +
    +   private L2FenceInstance _activeChar;
    +
    +   private int _width;
    +
    +   private int _height;
    +
    +
    +
    +   public ExColosseumFenceInfoPacket(L2FenceInstance activeChar)
    +
    +   {
    +      _activeChar = activeChar;
    +
    +      _type = activeChar.getType();
    +
    +      _width = activeChar.getWidth();
    +
    +      _height = activeChar.getHeight();
    +
    +   }
    +
    +
    +
    +   /* (non-Javadoc)
    +
    +    * @see net.sf.l2j.gameserver.serverpackets.ServerBasePacket#writeImpl()
    +
    +    */
    +
    +   @Override
    +
    +   protected void writeImpl()
    +
    +   {
    +
    +      writeC(0xfe);
    +
    +      writeH(0x03);
    +
    +
    +
    +      writeD(_activeChar.getObjectId()); // ?
    +
    +      writeD(_type);
    +
    +      writeD(_activeChar.getX());
    +
    +      writeD(_activeChar.getY());
    +
    +      writeD(_activeChar.getZ());
    +
    +      writeD(_width);
    +
    +      writeD(_height);
    +
    +   }
    +
    +
    +
    +   /* (non-Javadoc)
    +
    +    * @see net.sf.l2j.gameserver.BasePacket#getType()
    +
    +    */
    +
    +   @Override
    +
    +   public String getType()
    +
    +   {
    +
    +      return _S__FE_03_EXCOLOSSEUMFENCEINFOPACKET;
    +
    +   }
    +
    +}
    \ No newline at end of file
     
 

CitarDATA:

Index: data/scripts/handlers/admincommandhandlers/AdminFence.java
    ===================================================================
    --- data/scripts/handlers/admincommandhandlers/AdminFence.java   (revision 0)
    +++ data/scripts/handlers/admincommandhandlers/AdminFence.java   (revision 0)
    @@ -0,0 +1,52 @@
    +package handlers.admincommandhandlers;
    +
    +import com.l2jserver.gameserver.handler.IAdminCommandHandler;
    +import com.l2jserver.gameserver.instancemanager.FenceBuilderManager;
    +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
    +
    +
    +/**
    + * @author  KKnD
    + */
    +public class AdminFence implements IAdminCommandHandler
    +{
    +   private static final String[] ADMIN_COMMANDS =
    +   {
    +      "admin_fence",
    +      "admin_fbuilder",
    +      "admin_delallspawned",
    +      "admin_dellastspawned"
    +   };
    + 
    +   public boolean useAdminCommand(String command, L2PcInstance activeChar)
    +   {
    +      if (command.startsWith("admin_fence"))
    +      {
    +         String[] args = command.split(" ");
    +         if (args.length < 5)
    +         {
    +            activeChar.sendMessage("Not all arguments was set");
    +            return false;
    +         }
    +         FenceBuilderManager.getInstance().spawn_fence(activeChar, Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3]), Integer.parseInt(args[4]));
    +      }
    +      else if (command.equals("admin_delallspawned"))
    +      {
    +         FenceBuilderManager.getInstance().del_all(activeChar);
    +      }
    +      else if (command.equals("admin_dellastspawned"))
    +      {
    +         FenceBuilderManager.getInstance().del_last(activeChar);
    +      }
    +      else if (command.equals("admin_fbuilder"))
    +      {
    +         FenceBuilderManager.getInstance().main_fence(activeChar);
    +      }
    +      return true;
    +   }
    + 
    +   public String[] getAdminCommandList()
    +   {
    +      return ADMIN_COMMANDS;
    +   }
    +}
    \ No newline at end of file
    Index: data/scripts/handlers/admincommandhandlers/AdminMovieMaker.java
    ===================================================================
    --- data/scripts/handlers/admincommandhandlers/AdminMovieMaker.java   (revision 0)
    +++ data/scripts/handlers/admincommandhandlers/AdminMovieMaker.java   (revision 0)
    @@ -0,0 +1,139 @@
    +package handlers.admincommandhandlers;
    +
    +import com.l2jserver.gameserver.handler.IAdminCommandHandler;
    +import com.l2jserver.gameserver.instancemanager.MovieMakerManager;
    +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
    +
    +/**
    + * @author  KKnD
    + */
    +public class AdminMovieMaker implements IAdminCommandHandler
    +{
    +   private static final String[] ADMIN_COMMANDS =
    +   {
    +      "admin_addseq",//
    +      "admin_playseqq",//
    +      "admin_delsequence",//
    +      "admin_editsequence",//
    +      "admin_addsequence",//
    +      "admin_playsequence",//
    +      "admin_movie",//
    +      "admin_updatesequence",//
    +      "admin_brodcast",//
    +      "admin_playmovie",//
    +      "admin_brodmovie"//
    +   };
    + 
    +   public boolean useAdminCommand(String command, L2PcInstance activeChar)
    +   {
    +      if (command.equals("admin_movie"))
    +      {
    +         MovieMakerManager.getInstance().main_txt(activeChar);
    +      }
    +      else if (command.startsWith("admin_playseqq"))
    +      {
    +         String val = command.substring(15);
    +         int id = Integer.parseInt(val);
    +         MovieMakerManager.getInstance().play_sequence(id, activeChar);
    +      }
    +      else if (command.equals("admin_addseq"))
    +      {
    +         MovieMakerManager.getInstance().add_seq(activeChar);
    +      }
    +      else if (command.startsWith("admin_addsequence"))
    +      {
    +         String[] args = command.split(" ");
    +         int targ = 0;
    +         if (args.length < 10)
    +         {
    +            activeChar.sendMessage("Not all arguments was set");
    +            return false;
    +         }
    +         if (activeChar.getTarget() != null)
    +         {
    +            targ = activeChar.getTarget().getObjectId();
    +         }
    +         else
    +         {
    +            activeChar.sendMessage("Target for camera is missing");
    +            MovieMakerManager.getInstance().main_txt(activeChar);
    +            return false;
    +         }
    +         MovieMakerManager.getInstance().add_sequence(activeChar, Integer.parseInt(args[1]), targ, Integer.parseInt(args[2]), Integer.parseInt(args[3]), Integer.parseInt(args[4]), Integer.parseInt(args[5]), Integer.parseInt(args[6]), Integer.parseInt(args[7]), Integer.parseInt(args[8]), Integer.parseInt(args[9]));
    +      }
    +      else if (command.startsWith("admin_playsequence"))
    +      {
    +         String[] args = command.split(" ");
    +         int targ = 0;
    +         if (args.length < 10)
    +         {
    +            activeChar.sendMessage("Not all arguments was set");
    +            return false;
    +         }
    +         if (activeChar.getTarget() != null)
    +         {
    +            targ = activeChar.getTarget().getObjectId();
    +         }
    +         else
    +         {
    +            activeChar.sendMessage("Target for camera is missing");
    +            MovieMakerManager.getInstance().main_txt(activeChar);
    +            return false;
    +         }
    +         MovieMakerManager.getInstance().play_sequence(activeChar, targ, Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3]), Integer.parseInt(args[4]), Integer.parseInt(args[5]), Integer.parseInt(args[6]), Integer.parseInt(args[7]), Integer.parseInt(args[8]));
    +      }
    +      else if (command.startsWith("admin_editsequence"))
    +      {
    +         String val = command.substring(19);
    +         int id = Integer.parseInt(val);
    +         MovieMakerManager.getInstance().edit_seq(id, activeChar);
    +      }
    +      else if (command.startsWith("admin_updatesequence"))
    +      {
    +         String[] args = command.split(" ");
    +         int targ = 0;
    +