Jump to content

Recommended Posts

  • 2 weeks later...
Posted

file exeis ftiaksi ena gia ola ta video pou exis leo guide  kai na soupo brethka gt poli egrafes leo barethka gt ksero ola afta alla ama di afto to guide sou akomi kai enas 10 xrono pou den kseri tpt tha aniksi  server brabo file gia mena prosopika aksisis +1 kama

Posted

file exeis ftiaksi ena gia ola ta video pou exis leo guide  kai na soupo brethka gt poli egrafes leo barethka gt ksero ola afta alla ama di afto to guide sou akomi kai enas 10 xrono pou den kseri tpt tha aniksi  server brabo file gia mena prosopika aksisis +1 kama

Σ'ευχαριστω ))
Posted

Applauded & topic stickied.

Πολύ καλή κίνηση, το άξιζε το παλικάρι επειδή αφιέρωσε αρκετό χρόνο για να κάνει ότι έκανε.

 

Μπράβο και από μένα WolfGiaS3na.

Posted

Applauded & topic stickied.

Σ'ευχαριστω.. Ευελπιστω να λυσει προβληματα καθως τα περισσοτερα guide ειναι outdate με dead links και δεν εξηγουν πως και γιατι αλλα ακομη βλεπω οτι

πανω απο 20 ατομα την μερα με κανουνε αδδ στο skype :)) ευχαριστω κ παλι ομως!

Posted

poly kalo topic! sygxarhthria! alla mia erwthsh thelw na kanw mono.. afou einai greek section giati ta grafeis sta agglika ?? :?

Posted

poly kalo topic! sygxarhthria! alla mia erwthsh thelw na kanw mono.. afou einai greek section giati ta grafeis sta agglika ?? :?

Δεν νομιζω να ενοχλει σιγα..
Posted

Με τη java ειδικά με έχεις βοηθήσει απίστευτα ! μπράβο !

Νιωθω πολυ καλα που βοηθανε τα βιντεακια ο λογος που τα εφτιαξα ηταν επειδη πολλα guide υπαρχουν αλλα λιγα ειναι αυτα που ειναι updated με valid links και εξηγουν τι κανουν και παντα το βιντεο θα ειναι πιο ωραιο και γραφικο απο τις εικονες που μπορει να παραλειψουν 1 - 2 βηματακια η κουμπακια. 

Συντομα θα ανεβασω βιντεο οπως how to create custom npc buffer . how to create custom weapons with photoshop  - unreal.

how to create custom 3D models in 3D's max and import in l2. How to make GM shop. How to connect website with L2 (am)

how to create custom configs in Eclipse.

 

Συντομα ! απο Octomber και μετα!!!

  • 2 months later...
Posted

Καλως ηρθατε στον οδηγο μου "πως να φτιαξετε ενα l2j server". Μου πηρε ωρες για να κανω recording, editing και upload. Ελπιζω να σας αρεσει.

Συνολικα ειναι 45 λεπτα και τα 3 βιντεο. Στο description περιλαμβανονται ολα τ προγραμματα οπως (Mysql - Navicat(Full) - SVN - Eclipse - File editor)

Οτι θελετε ρωτηστε ελευθερα. Ευχαριστω πολυ (Updated 5/9/2013)

 

Part 1: Compile pack

 

 

Part 2: Setup Server

 

Part 3: Login-Admin

 


New videos!! [5/9/2013]

 

How to add JAVA codes in eclipse part 1 (code by WYATT) MultiFunctionZone shared

### Eclipse Workspace Patch 1.0
#P Core_Freya
Index: java/com/l2jserver/gameserver/model/actor/L2Character.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/L2Character.java  (revision 5631)
+++ java/com/l2jserver/gameserver/model/actor/L2Character.java  (working copy)
@@ -205,8 +205,9 @@
        public static final byte ZONE_ALTERED = 19;
        public static final byte ZONE_NOBOOKMARK = 20;
        public static final byte ZONE_NOITEMDROP = 21;
+       public static final byte ZONE_MULTIFUNCTION = 22;
       
-       private final byte[] _zones = new byte[22];
+       private final byte[] _zones = new byte[23];
        protected byte _zoneValidateCounter = 4;
       
        private L2Character _debugger = null;
Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java        (revision 5631)
+++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java        (working copy)
@@ -170,6 +170,7 @@
 import com.l2jserver.gameserver.model.quest.QuestState;
 import com.l2jserver.gameserver.model.quest.State;
 import com.l2jserver.gameserver.model.zone.type.L2BossZone;
+import com.l2jserver.gameserver.model.zone.type.L2MultiFunctionZone;
 import com.l2jserver.gameserver.network.L2GameClient;
 import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.communityserver.CommunityServerThread;
@@ -5684,6 +5685,7 @@
                        // Add karma to attacker and increase its PK counter
                        setPvpKills(getPvpKills() + 1);
                       
+                       L2MultiFunctionZone.givereward(this);
                        // Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter
                        sendPacket(new UserInfo(this));
                        sendPacket(new ExBrExtraUserInfo(this));
Index: dist/game/config/MultiFunctionZone.properties
===================================================================
--- dist/game/config/MultiFunctionZone.properties       (revision 0)
+++ dist/game/config/MultiFunctionZone.properties       (revision 0)
@@ -0,0 +1,60 @@
+# ---------------------------------------------------------------------------
+# MultiFunctionZone - custom addon for your server
+# ---------------------------------------------------------------------------
+# This option will turn on PvP flag to all people when entering to the zone
+EnablePvP = True
+
+# If set to false, zone will be no-restart zone
+NoRestartZone = False
+
+# If set to false, zone will be no-logout zone
+NoLogoutZone = False
+
+# If set to false, zone will be no-store zone
+NoStoreZone = False
+
+# Give noblesse after revive?
+ReviveNoblesse = False
+
+# Heal after revive?
+ReviveHeal = False
+
+# Delay, in seconds, to wait before revive
+# 0 to disable
+ReviveDelay = 10
+
+# Set the spawn points where players will be teleported on revive, if enabled
+# example:150111,144740,-12248;143665,144418,-12022;144443,147685,-12139
+SpawnLoc = 150111,144740,-12248;143665,144418,-12022;144443,147685,-12139
+
+# Random respawn radius
+RespawnRadius = 500
+
+# If set to true, players will take noblesse blessing when entering
+GiveNoblesse = True
+
+# Remove buffs when entering to the zone
+RemoveBuffs = False
+
+# Remove pets when entering to the zone
+RemovePets = False
+
+# Special rewards when hunting inside this zone
+# example: 57,100000;14720,1
+Rewards = 57,100000;14720,1
+
+# List of Items(id's) that won't be usable inside this area and also will be unequiped when entering
+# (armor, weapons, scrolls, potions, etc), example: 728,7575, 6383, 1538
+Items = 728,7575,6383,1538
+
+# List of Grades that won't be usable inside this area and also will be unequiped when entering
+# example: D,C,B,A,S,S80,S84
+Grades = C,B,A
+
+# Items with this enchant or more won't be usable inside this area and also will be unequiped when entering
+# 0 to disable
+Enchant = 0
+
+# Players with one of that classes won't be able to enter to the zone
+# example: 93,85,12
+Classes = 92
\ No newline at end of file
Index: java/com/l2jserver/gameserver/network/clientpackets/UseItem.java
===================================================================
--- java/com/l2jserver/gameserver/network/clientpackets/UseItem.java    (revision 5631)
+++ java/com/l2jserver/gameserver/network/clientpackets/UseItem.java    (working copy)
@@ -23,9 +23,11 @@
import com.l2jserver.gameserver.handler.ItemHandler;
import com.l2jserver.gameserver.instancemanager.FortSiegeManager;
import com.l2jserver.gameserver.model.L2ItemInstance;
+import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.base.Race;
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
+import com.l2jserver.gameserver.model.zone.type.L2MultiFunctionZone;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
import com.l2jserver.gameserver.network.serverpackets.ItemList;
@@ -113,6 +115,12 @@
                if (item == null)
                        return;
               
+               if(getClient().getActiveChar().isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2MultiFunctionZone.checkItem(item))
+               {
+                       getClient().getActiveChar().sendMessage("You cannot use "+item.getName()+" inside this zone.");
+                       return;
+               }
+              
                if (item.getItem().getType2() == L2Item.TYPE2_QUEST)
                {
                        SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.CANNOT_USE_QUEST_ITEMS);
Index: java/com/l2jserver/gameserver/network/clientpackets/RequestRestart.java
===================================================================
--- java/com/l2jserver/gameserver/network/clientpackets/RequestRestart.java     (revision 5631)
+++ java/com/l2jserver/gameserver/network/clientpackets/RequestRestart.java     (working copy)
@@ -17,12 +17,13 @@
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
-
import com.l2jserver.Config;
import com.l2jserver.gameserver.SevenSignsFestival;
import com.l2jserver.gameserver.instancemanager.AntiFeedManager;
import com.l2jserver.gameserver.model.L2Party;
+import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.zone.type.L2MultiFunctionZone;
import com.l2jserver.gameserver.network.L2GameClient;
import com.l2jserver.gameserver.network.L2GameClient.GameClientState;
import com.l2jserver.gameserver.network.SystemMessageId;
@@ -87,6 +88,13 @@
                        return;
                }
               
+               if(player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2MultiFunctionZone.restart_zone)
+               {
+                       player.sendMessage("You cannot restart while inside a Multifunction zone.");
+                       sendPacket(RestartResponse.valueOf(false));
+                       return;
+               }
+              
                // Prevent player from restarting if they are a festival participant
                // and it is in progress, otherwise notify party members that the player
                // is not longer a participant.
Index: java/com/l2jserver/gameserver/model/itemcontainer/ItemContainer.java
===================================================================
--- java/com/l2jserver/gameserver/model/itemcontainer/ItemContainer.java        (revision 5631)
+++ java/com/l2jserver/gameserver/model/itemcontainer/ItemContainer.java        (working copy)
@@ -43,7 +43,7 @@
{
        protected static final Logger _log = Logger.getLogger(ItemContainer.class.getName());
       
-       protected final List<L2ItemInstance> _items;
+       public final List<L2ItemInstance> _items;
       
        protected ItemContainer()
        {
Index: java/com/l2jserver/gameserver/model/zone/type/L2MultiFunctionZone.java
===================================================================
--- java/com/l2jserver/gameserver/model/zone/type/L2MultiFunctionZone.java      (revision 0)
+++ java/com/l2jserver/gameserver/model/zone/type/L2MultiFunctionZone.java      (revision 0)
@@ -0,0 +1,345 @@
+/*
+ * 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/>.
+ */
+/*
+ * 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.model.zone.type;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+import javolution.util.FastList;
+import com.l2jserver.gameserver.ThreadPoolManager;
+import com.l2jserver.gameserver.datatables.SkillTable;
+import com.l2jserver.gameserver.model.L2ItemInstance;
+import com.l2jserver.gameserver.model.L2Skill;
+import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.actor.L2Summon;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
+import com.l2jserver.gameserver.model.zone.L2SpawnZone;
+import com.l2jserver.util.Rnd;
+
+/**
+ *
+ * @author Wyatt
+ * @version 1.3
+ *
+ */
+
+public class L2MultiFunctionZone extends L2SpawnZone
+{
+      
+       public L2MultiFunctionZone(int id)
+       {
+               super(id);
+               loadConfigs();
+       }
+      
+       public static boolean pvp_enabled, restart_zone, store_zone, logout_zone, revive_noblesse, revive_heal, revive, remove_buffs, remove_pets, give_noblesse;
+       static int radius, enchant, revive_delay;
+       static int[][] spawn_loc;
+       L2Skill noblesse = SkillTable.getInstance().getInfo(1323, 1);
+       private static List<String> items = new FastList<String>();
+       private static List<String> grades = new FastList<String>(), classes = new FastList<String>();
+       public static List<int[]> rewards;
+       static String[] gradeNames = {"","D","C","B","A","S","S80","S84"};
+      
+       @Override
+       protected void onEnter(L2Character character)
+       {
+               character.setInsideZone(L2Character.ZONE_NOSUMMONFRIEND, true);
+               character.setInsideZone(L2Character.ZONE_MULTIFUNCTION, true);
+               if(!store_zone)
+                       character.setInsideZone(L2Character.ZONE_NOSTORE, true);
+              
+               if (character instanceof L2PcInstance)
+               {
+                       L2PcInstance activeChar = ((L2PcInstance) character);
+                       if(classes != null && classes.contains(""+activeChar.getClassId().getId()))
+                       {
+                               activeChar.teleToLocation(83597,147888,-3405);
+                               activeChar.sendMessage("Your class is not allowed in the MultiFunction zone.");
+                               return;
+                       }
+                      
+                       for(L2ItemInstance o : activeChar.getInventory()._items)
+                       {
+                               if(o.isEquipable() && o.isEquipped() && !checkItem(o))
+                               {
+                                       int slot = activeChar.getInventory().getSlotFromItem(o);
+                                       activeChar.getInventory().unEquipItemInBodySlot(slot); 
+                                       activeChar.sendMessage(o.getName()+" unequiped because is not allowed inside this zone.");
+                               }
+                       }
+                       activeChar.sendMessage("You entered in a MultiFunction zone.");
+                       clear(activeChar);
+                       if(give_noblesse)
+                       noblesse.getEffects(activeChar, activeChar);  
+                       if(pvp_enabled && activeChar.getPvpFlag() == 0)
+                               activeChar.updatePvPFlag(1);                   
+               }
+       }
+      
+       @Override
+       protected void onExit(L2Character character)
+       {
+               character.setInsideZone(L2Character.ZONE_NOSUMMONFRIEND, false);
+               character.setInsideZone(L2Character.ZONE_MULTIFUNCTION, false);
+               if(!store_zone)
+                       character.setInsideZone(L2Character.ZONE_NOSTORE, false);
+              
+               if (character instanceof L2PcInstance)
+               {
+                       L2PcInstance activeChar = ((L2PcInstance) character);
+                       activeChar.sendMessage("You left from a MultiFunction zone.");
+                      
+                       if(pvp_enabled)
+                               activeChar.stopPvPFlag();  
+               }
+       }
+      
+       @Override
+       public void onDieInside(final L2Character character)
+       {
+               if (character instanceof L2PcInstance)
+           {
+                       final L2PcInstance activeChar = ((L2PcInstance) character);
+                       if(revive)
+                       {
+                               ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
+                               {
+                               @Override
+                                       public void run()
+                                       {
+                                       activeChar.doRevive();
+                                       heal(activeChar);
+                                       int[] loc = spawn_loc[Rnd.get(spawn_loc.length)];
+                                       activeChar.teleToLocation(loc[0]+Rnd.get(-radius,radius), loc[1]+Rnd.get(-radius,radius), loc[2]);
+                                       }
+                               },revive_delay*1000);  
+                       }
+           }
+       }
+
+       @Override
+       public void onReviveInside(L2Character character)
+       {      
+               if (character instanceof L2PcInstance)
+           {
+                       L2PcInstance activeChar = ((L2PcInstance) character);
+                       if(revive_noblesse)
+                               noblesse.getEffects(activeChar, activeChar);  
+                       if(revive_heal)
+                               heal(activeChar);
+           }
+       }
+      
+       private void clear (L2PcInstance player)
+       {
+               if(remove_buffs)
+               {
+                       player.stopAllEffectsExceptThoseThatLastThroughDeath();
+                       if(remove_pets)
+                       {
+                               L2Summon pet = player.getPet();
+                               if(pet!= null)
+                               {
+                                       pet.stopAllEffectsExceptThoseThatLastThroughDeath();
+                                       pet.unSummon(player);  
+                               }      
+                       }
+               }
+               else
+               {
+                       if(remove_pets)
+                       {
+                               L2Summon pet = player.getPet();
+                               if(pet!= null)
+                               {
+                                       pet.unSummon(player);  
+                               }      
+                       }
+               }
+       }
+      
+       static void heal(L2PcInstance activeChar)
+       {
+               activeChar.setCurrentHp(activeChar.getMaxHp());
+               activeChar.setCurrentCp(activeChar.getMaxCp());
+               activeChar.setCurrentMp(activeChar.getMaxMp());
+       }
+      
+       public static void givereward(L2PcInstance player)
+       {
+               if(player.isInsideZone(L2Character.ZONE_MULTIFUNCTION))
+               {
+                       for (int[] reward : rewards)
+                       {
+                               PcInventory inv = player.getInventory();
+                               inv.addItem("Custom Reward", reward[0], reward[1], player,  player);   
+                       }
+               }
+       }
+      
+       public static boolean checkItem (L2ItemInstance item)
+       {
+               int o = item.getItem().getCrystalType();
+               int e = item.getEnchantLevel();
+              
+               if(enchant != 0 && e >= enchant)
+               {
+                       return false;
+               }
+              
+               if(grades.contains(gradeNames[o]))
+                       return false;
+
+               if(items != null && items.contains(""+item.getItemId()))
+                       return false;
+               return true;
+       }
+      
+       private static void loadConfigs()
+       {
+               try
+               {
+                       Properties prop = new Properties();
+                       prop.load(new FileInputStream(new File("./config/MultiFunctionZone.properties")));
+                       pvp_enabled = Boolean.parseBoolean(prop.getProperty("EnablePvP", "False"));
+                       spawn_loc = parseItemsList(prop.getProperty("SpawnLoc", "150111,144740,-12248"));
+                       revive_delay = Integer.parseInt(prop.getProperty("ReviveDelay", "10"));
+                       if(revive_delay != 0)
+                       {
+                               revive = true;
+                       }
+                       give_noblesse = Boolean.parseBoolean(prop.getProperty("GiveNoblesse", "False"));
+                       String[] propertySplit = prop.getProperty("Items", "").split(",");
+                       if (propertySplit.length != 0)
+                       {
+                               for(String i : propertySplit)
+                               {
+                                       items.add(i);
+                               }
+                       }
+                       propertySplit = prop.getProperty("Grades", "").split(",");
+                       if (propertySplit.length != 0)
+                       {
+                               for(String i : propertySplit)
+                               {
+                                       if(i.equals("D") || i.equals("C") || i.equals("B") || i.equals("A") || i.equals("S") || i.equals("S80") || i.equals("S84"))
+                                               grades.add(i);
+                               }
+                       }
+                       propertySplit = prop.getProperty("Classes", "").split(",");
+                       if (propertySplit.length != 0)
+                       {
+                               for(String i : propertySplit)
+                               {
+                                       classes.add(i);
+                               }
+                       }
+                       radius =  Integer.parseInt(prop.getProperty("RespawnRadius", "500"));
+                       enchant =  Integer.parseInt(prop.getProperty("Enchant", "0"));
+                       remove_buffs = Boolean.parseBoolean(prop.getProperty("RemoveBuffs", "False"));
+                       remove_pets = Boolean.parseBoolean(prop.getProperty("RemovePets", "False"));
+                       restart_zone = Boolean.parseBoolean(prop.getProperty("NoRestartZone", "False"));
+                       store_zone = Boolean.parseBoolean(prop.getProperty("NoStoreZone", "False"));
+                       logout_zone = Boolean.parseBoolean(prop.getProperty("NoLogoutZone", "False"));
+                       revive_noblesse = Boolean.parseBoolean(prop.getProperty("ReviveNoblesse", "False"));
+                       revive_heal = Boolean.parseBoolean(prop.getProperty("ReviveHeal", "False"));
+                       rewards = new ArrayList<int[]>();
+                       propertySplit = prop.getProperty("Rewards", "57,100000").split(";");
+                       for (String reward : propertySplit)
+                       {
+                               String[] rewardSplit = reward.split(",");
+                               if (rewardSplit.length == 2)
+                               {
+                                       try
+                                       {
+                                               rewards.add(new int[]{Integer.parseInt(rewardSplit[0]), Integer.parseInt(rewardSplit[1])});
+                                       }
+                                       catch (NumberFormatException nfe)
+                                       {
+                                       }
+                               }
+                       }
+               }
+               catch(Exception e)
+               {
+                       e.printStackTrace();
+               }
+       }      
+      
+       private static int[][] parseItemsList(String line)
+       {
+               final String[] propertySplit = line.split(";");
+               if (propertySplit.length == 0)
+                       return null;
+
+               int i = 0;
+               String[] valueSplit;
+               final int[][] result = new int[propertySplit.length][];
+               for (String value : propertySplit)
+               {
+                       valueSplit = value.split(",");
+                       if (valueSplit.length != 3)
+                       {
+                               return null;
+                       }
+
+                       result[i] = new int[3];
+                       try
+                       {
+                               result[i][0] = Integer.parseInt(valueSplit[0]);
+                       }
+                       catch (NumberFormatException e)
+                       {
+                               return null;
+                       }
+                       try
+                       {
+                               result[i][1] = Integer.parseInt(valueSplit[1]);
+                       }
+                       catch (NumberFormatException e)
+                       {
+                               return null;
+                       }
+                       try
+                       {
+                               result[i][2] = Integer.parseInt(valueSplit[2]);
+                       }
+                       catch (NumberFormatException e)
+                       {
+                               return null;
+                       }
+                       i++;
+               }
+               return result;
+       }
+}
\ No newline at end of file
Index: java/com/l2jserver/gameserver/network/serverpackets/Die.java
===================================================================
--- java/com/l2jserver/gameserver/network/serverpackets/Die.java        (revision 5631)
+++ java/com/l2jserver/gameserver/network/serverpackets/Die.java        (working copy)
@@ -27,6 +27,7 @@
import com.l2jserver.gameserver.model.entity.Castle;
import com.l2jserver.gameserver.model.entity.Fort;
import com.l2jserver.gameserver.model.entity.TvTEvent;
+import com.l2jserver.gameserver.model.zone.type.L2MultiFunctionZone;
 
/**
 * sample
@@ -62,7 +63,7 @@
                       
                }
                _charObjId = cha.getObjectId();
-               _canTeleport = !((cha instanceof L2PcInstance && TvTEvent.isStarted() && TvTEvent.isPlayerParticipant(_charObjId)) || cha.isPendingRevive());
+               _canTeleport = !((cha instanceof L2PcInstance && TvTEvent.isStarted() && TvTEvent.isPlayerParticipant(_charObjId)) || cha.isPendingRevive() || (cha.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && L2MultiFunctionZone.revive));
                if (cha instanceof L2Attackable)
                        _sweepable = ((L2Attackable)cha).isSweepActive();
               
Index: java/com/l2jserver/gameserver/network/clientpackets/Logout.java
===================================================================
--- java/com/l2jserver/gameserver/network/clientpackets/Logout.java     (revision 5631)
+++ java/com/l2jserver/gameserver/network/clientpackets/Logout.java     (working copy)
@@ -21,7 +21,9 @@
import com.l2jserver.Config;
import com.l2jserver.gameserver.SevenSignsFestival;
import com.l2jserver.gameserver.model.L2Party;
+import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.zone.type.L2MultiFunctionZone;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
@@ -83,6 +85,13 @@
                        return;
                }
               
+               if(player.isInsideZone(L2Character.ZONE_MULTIFUNCTION) && !L2MultiFunctionZone.logout_zone)
+               {
+                       player.sendMessage("You cannot logout while inside a Multifunction zone.");
+                       player.sendPacket(ActionFailed.STATIC_PACKET);
+                       return;
+               }
+              
                // Prevent player from logging out if they are a festival participant
                // and it is in progress, otherwise notify party members that the player
                // is not longer a participant.
 
### Eclipse Workspace Patch 1.0
#P L2J_DataPack
Index: dist/game/data/zones/peace_zones.xml
===================================================================
--- dist/game/data/zones/peace_zones.xml        (revision 9174)
+++ dist/game/data/zones/peace_zones.xml        (working copy)
@@ -978,4 +978,10 @@
                <node X="-113768" Y="-150965" />
                <node X="-115424" Y="-150965" />
        </zone>
+       <zone name="Custom" type="MultiFunctionZone" shape="NPoly" minZ="-15000" maxZ="-10000">
+               <node X="130000" Y="160000" />
+               <node X="130000" Y="130000" />
+               <node X="160000" Y="130000" />
+               <node X="160000" Y="160000" />
+       </zone>
</list>
\ No newline at end of file
How to add JAVA codes in eclipse part 2 (code by WYATT) MultiFunctionZone shared


 

How to add customs and make server online (Using DUC) (4 parts)

 

 

 

Soon: Edit textures with Unreal and photoshop

          Create - Edit 3D's max models and import to lineage 2

          How to adopt buffers between packs

          How to Connect website with server (create account) via php

 

Created by WolfGiaS3na

www.youtube.com/WolfGiaS3na

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

Guest
This topic is now closed to further replies.



  • Posts

    • Played the first 20 lvls in the OBT, very promising indeed. Quests seemed to be working fine for the most part although there's no need for the repetitive quests in the start since with x3 rates (x4 with premium which is pretty cheap tbh) adena from mobs outperforms the repetitive quests since you outlevel them in the early stage before you finish the quest, one time quests are good though and that's where is the juice. Idk how the og elixir was since I was a kid but this is definetely going to be much easier than your usual x1-2 no buffs server since GK is free for the first 40 lvls and you get basic 6 basic normal buffs even after low levels, that's not a bad thing for a lot of people though. Will be there on the opening.  
    • This post originally appeared on MmoGah. As the global release of Aion 2 draws near, players are eagerly preparing to dive into this highly anticipated MMORPG. One of the most important decisions you’ll make is choosing the right class, as it will define your experience in both solo and group content. Aion 2 introduces eight distinct classes, each with unique gameplay mechanics, strengths, and roles. Whether you’re a seasoned veteran or a newcomer, understanding these classes is essential to finding the one that suits your preferred playstyle. This guide provides a comprehensive overview of all eight classes, tips for selecting your ideal role, and recommendations for different types of players. Aion 2’s class system offers a variety of options across tanks, damage dealers, healers, and hybrid supports. Here’s a quick breakdown of the roles: - Tank Classes: Templar - Physical DPS Classes: Gladiator, Assassin, Ranger - Magical DPS Classes: Sorcerer - Hybrid Classes: Spiritmaster, Chanter - Healer Class: Cleric Each class has been carefully designed to excel in specific scenarios, whether it’s PvP, PvE, solo leveling, or large-scale faction battles. Pro Tip: As you embark on your journey, remember that having Aion 2 Kinah can greatly enhance your experience, so consider acquiring it to make the most of your adventure.   Class Breakdown Templar – The Indomitable Tank The Templar is the quintessential tank, specializing in defense and crowd control. With high durability and reliable aggro management, this class is invaluable in group content and large-scale battles. Strengths: - Exceptional survivability  - Top-tier aggro control  - Disruption tools for PvP  Playstyle: Templars thrive on the frontlines, soaking up damage and protecting allies. They are perfect for players who enjoy leading the charge and maintaining battlefield control. Gladiator – The Melee Powerhouse The Gladiator strikes a balance between offense and defense, offering strong AoE damage and decent survivability. This class excels in fast-paced melee combat and open-world PvP. Strengths: - High AoE damage  - Lifesteal-style abilities for sustain  - Versatile in both PvE and PvP  Playstyle:  Gladiators are ideal for players who enjoy dynamic melee combat with a mix of durability and damage. Assassin – The Stealthy Burst Specialist Assassins are masters of stealth and mobility. Known for their high single-target burst damage, they dominate in duels and small-scale PvP encounters. Strengths: - Exceptional burst damage  - Stealth mechanics for ambushes  - High mobility for quick disengagement Playstyle: This class is perfect for players who prefer fast-paced, tactical gameplay with an emphasis on sneaky kills. Ranger – The Precision Archer Rangers excel at dealing consistent physical damage from a distance. With excellent crowd control abilities and strong kiting potential, they are a solid choice for both PvE and PvP. Strengths:  - Safe ranged damage  - Strong crowd control tools  - Great for solo play  Playstyle: Rangers suit players who enjoy staying at range, controlling enemies, and executing precise attacks. Sorcerer – The Magical Artillery Sorcerers are pure magic damage dealers with devastating AoE spells and crowd control abilities. They are capable of turning the tide of battle with their massive burst potential. Strengths: - Highest magical burst damage  - Excellent AoE capabilities  - Crowd control via slows and immobilizes  Playstyle: Sorcerers are perfect for players who enjoy dealing immense magical damage while controlling enemies from a distance. Spiritmaster – The Tactical Summoner The Spiritmaster brings strategic depth to combat by combining summons, debuffs, and utility spells. This class is highly versatile and excels in both solo and group settings. Strengths: - Elemental summons with unique abilities  - Strong debuffs for PvP dominance  - Great solo leveling potential  Playstyle: Spiritmasters are best suited for players who enjoy strategic gameplay and multitasking in battle. Cleric – The Essential Healer The Cleric is the backbone of any group, providing powerful healing, cleansing, and defensive buffs. This class is indispensable in dungeons and raids. Strengths: - Reliable direct and AoE healing  - Cleansing abilities to remove debuffs  - Vital for group survival  Playstyle: Clerics are ideal for players who take pride in supporting their team and ensuring everyone stays alive. Chanter – The Hybrid Support The Chanter blends melee combat with healing and party-wide buffs. This versatile class can fill multiple roles in a group, making it a valuable addition to any team. Strengths: - Strong party buffs  - Solid healing capabilities  - Decent melee damage Playstyle: Chanters are perfect for players who want to contribute both offensively and defensively while supporting their team.   Choosing the Right Class What’s Your Playstyle? To help narrow down your choice, consider what you enjoy most in an MMORPG: • If you like tanking and leading the charge, choose Templar. • If you like melee combat with high durability, choose Gladiator.  • If you like stealthy gameplay with burst damage, choose Assassin.  • If you like ranged combat with precision, choose Ranger.   • If you like Massive magical damage, choose Sorcerer. • If you like tactical utility with summons, choose Spiritmaster. • If you like healing and supporting teammates, choose Cleric.  • If you like hybrid support with melee combat, choose Chanter. Beginner-Friendly Classes If you’re new to MMORPGs or unsure where to start, these classes offer straightforward mechanics: 1. Templar – Durable, beginner-friendly tank. 2. Cleric – Essential healer with clear roles in group content. Solo vs. Group Play Some classes excel in solo play, while others shine in groups: - Best Solo Classes: Gladiator, Ranger, Spiritmaster (good sustain and flexibility). - Best Group Classes: Templar (tank), Cleric (healer), Chanter (support). PvP Recommendations For competitive players who enjoy PvP: - 1v1/Small-Scale PvP: Assassin (stealth burst) or Sorcerer (burst + CC).  - Large-Scale PvP: Spiritmaster (debuffs) or Templar (frontline disruption). Team Composition Tips Building a balanced party is crucial in Aion 2. Consider these combinations for optimal synergy: - Tank + DPS + Healer: Templar + Sorcerer + Cleric (classic setup).  - Buff-Oriented Group: Gladiator + Chanter + Cleric (durability + support).    Final Thoughts Aion 2 offers a rich variety of classes tailored to different playstyles. Whether you prefer tanking, dealing damage, or supporting your team, there’s a class that fits your preferences. To summarize: - For beginners: Start with Templar or Cleric. - For high damage: Choose Gladiator, Assassin, or Sorcerer. - For strategic gameplay: Go with Spiritmaster. - For support roles: Opt for Cleric or Chanter. Still undecided? Share your preferred playstyle—solo adventuring, competitive PvP, or cooperative group play—and you’ll find the perfect class to begin your journey in Aion 2!  
    • Prepare for OBT (Open Beta Test)! https://www.l2ertheia.eu/news:open-beta-test-obt/
    • What the actual fuck? HEY Maxtor, gay of the season, time to do some work. Banning required.
    • Hello there, sorry for the late response, (nobody cares anyway). I remember you, yes you did tried something, but sucked at it. Not a little lick, but sucked hard. No surprise you couldn't handle a single event, not to mention a long term event schedule. Section is long gone. And after all these years, you are still dumb enough to not even try to use a google translator.
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock