• Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.
Иконка ресурса

RuAcis 3.8 [Исходники]


Благодарю за шару
 
Оскорбление пользователей
клоун у тебя вуаля циксы все что можно было дернуть с шар - и после ты сдых ибо уже не чего не где дернуть нельзя и упал под полье или же хочешь сказать не так , так давай тебя проверим наь общем банальном тесте уверен ты сольешся или будеш покупать ответ ради вида
Клоун это ты. Во первых с шар я брал только то что более-менее нужно для пвп серверов и просто какие-то полезные фишки, не более... во вторых у меня не мало моментов (уникальных) добавлено в сборку под заказ от разных людей, так же много чего исправлено по баг репортам и по личным тестам сборки... По факту, что находилось то и исправлялось по возможности, что не получалось исправить, до сих пор так и не исправлено, например геодвиг... Я этого и не отрицаю. Не понимаю вообще почему ты ерепенишься на всех и на вся... честно, убого выглядит. А по поводу ушел в подполье... как это банально не звучит, но у меня своя личная жизнь, работа в реале и в конце концов в стране война, как то не всегда есть возможность и желание фиксить баги, пока над башкой бомбы летают.
 
Дополню, вот исправление как diff патч для этих исходников.
Исправляет проблему с миньонами боссов.

Diff:
### Eclipse Workspace Patch 1.0
#P aCis_gameserver
diff --git java/net/sf/l2j/gameserver/handler/AbstractHandler.java
index db5728c..0c09598 100644
--- java/net/sf/l2j/gameserver/handler/AbstractHandler.java
+++ java/net/sf/l2j/gameserver/handler/AbstractHandler.java
@@ -1,91 +1,95 @@
 package net.sf.l2j.gameserver.handler;
 
 import java.io.File;
 import java.lang.reflect.Modifier;
 import java.net.JarURLConnection;
 import java.net.URL;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 
 import net.sf.l2j.commons.logging.CLogger;
 
 public abstract class AbstractHandler<K, H>
 {
     private static final CLogger LOGGER = new CLogger(AbstractHandler.class.getName());
   
     protected final Map<K, H> _entries = new HashMap<>();
   
     protected abstract void registerHandler(H handler);
   
-    protected AbstractHandler(Class<H> handlerInterface, String className)
-    {
-        final String packagePath = "net/sf/l2j/gameserver/handler/" + className;
-      
-        try
-        {
-            final Enumeration<URL> resources = Thread.currentThread().getContextClassLoader().getResources(packagePath);
--            while (resources.hasMoreElements())
-            {
-                final URL resource = resources.nextElement();
-              
-                // Handle debug process.
-                if (resource.getProtocol().equals("file"))
-                {
-                    final File directory = new File(resource.getFile());
--                    if (!directory.exists())
-                        continue;
-                  
-                    final String packageName = packagePath.replace("/", ".");
-                  
-                    for (String file : directory.list())
-                    {
-                        if (!file.endsWith(".class"))
-                            continue;
-                      
-                        final Class<?> clazz = Class.forName(packageName + "." + file.substring(0, file.length() - 6));
-                        if (!handlerInterface.isAssignableFrom(clazz) || clazz.isInterface() || Modifier.isAbstract(clazz.getModifiers()))
-                            continue;
-                      
-                        registerHandler(handlerInterface.cast(clazz.getDeclaredConstructor().newInstance()));
-                    }
-                }
-                // Handle regular JAR process.
-                else if (resource.getProtocol().equals("jar"))
-                {
-                    final JarURLConnection conn = (JarURLConnection) resource.openConnection();
-                    try (JarFile jarFile = conn.getJarFile())
-                    {
-                        final Enumeration<JarEntry> entries = jarFile.entries();
-                        while (entries.hasMoreElements())
-                        {
-                            final JarEntry entry = entries.nextElement();
-                            final String entryName = entry.getName();
-                          
-                            if (!entryName.startsWith(packagePath) || !entryName.endsWith(".class"))
-                                continue;
-                          
-                            final Class<?> clazz = Class.forName(entryName.replace('/', '.').replace(".class", ""));
-                            if (!handlerInterface.isAssignableFrom(clazz) || clazz.isInterface() || Modifier.isAbstract(clazz.getModifiers()))
-                                continue;
-                          
-                            registerHandler(handlerInterface.cast(clazz.getDeclaredConstructor().newInstance()));
-                        }
-                    }
-                }
-            }
-        }
-        catch (Exception e)
-        {
-            LOGGER.warn("Failed to load classes from package {}", e, packagePath);
-        }
-    }
+     protected AbstractHandler(Class<H> handlerInterface, String className)
+    {
+        final String packagePath = "net/sf/l2j/gameserver/handler/" + className;
+      
+        try
+        {
+            final Enumeration<URL> resources = Thread.currentThread().getContextClassLoader().getResources(packagePath);
+            while (resources.hasMoreElements())
+            {
+                final URL resource = resources.nextElement();
+              
+                // Handle debug process.
+                // Suporte a modo debug no Eclipse
+                if (resource.getProtocol().equals("file"))
+                {
+                    File directory = new File(resource.toURI());
+
+                    if (!directory.exists() || !directory.isDirectory())
+                        continue;
+
+                    String packageName = packagePath.replace("/", ".");
+
+                    for (File file : directory.listFiles())
+                    {
+                        if (!file.getName().endsWith(".class"))
+                            continue;
+
+                        String simpleClassName = file.getName().substring(0, file.getName().length() - 6);
+                        Class<?> clazz = Class.forName(packageName + "." + simpleClassName);
+
+                        if (!handlerInterface.isAssignableFrom(clazz) || clazz.isInterface() || Modifier.isAbstract(clazz.getModifiers()))
+                            continue;
+
+                        registerHandler(handlerInterface.cast(clazz.getDeclaredConstructor().newInstance()));
+                    }
+                }
+                // Handle regular JAR process.
+                else if (resource.getProtocol().equals("jar"))
+                {
+                    final JarURLConnection conn = (JarURLConnection) resource.openConnection();
+                    try (JarFile jarFile = conn.getJarFile())
+                    {
+                        final Enumeration<JarEntry> entries = jarFile.entries();
+                        while (entries.hasMoreElements())
+                        {
+                            final JarEntry entry = entries.nextElement();
+                            final String entryName = entry.getName();
+                          
+                            if (!entryName.startsWith(packagePath) || !entryName.endsWith(".class"))
+                                continue;
+                          
+                            final Class<?> clazz = Class.forName(entryName.replace('/', '.').replace(".class", ""));
+                            if (!handlerInterface.isAssignableFrom(clazz) || clazz.isInterface() || Modifier.isAbstract(clazz.getModifiers()))
+                                continue;
+                          
+                            registerHandler(handlerInterface.cast(clazz.getDeclaredConstructor().newInstance()));
+                        }
+                    }
+                }
+            }
+        }
+        catch (Exception e)
+        {
+            LOGGER.warn("Failed to load classes from package {}", e, packagePath);
+        }
+    }  
   
     public int size()
     {
         return _entries.size();
     }
   
     public H getHandler(Object key)
diff --git java/net/sf/l2j/gameserver/taskmanager/AiTaskManager.java
index dbd8c7b..34c7300 100644
--- java/net/sf/l2j/gameserver/taskmanager/AiTaskManager.java
+++ java/net/sf/l2j/gameserver/taskmanager/AiTaskManager.java
@@ -14,81 +14,87 @@
 import net.sf.l2j.gameserver.model.actor.instance.Monster;
 import net.sf.l2j.gameserver.model.actor.instance.RaidBoss;
 
 /**
  * Handle all {@link Npc} AI tasks.
  */
 public final class AiTaskManager implements Runnable
 {
     private final Set<Npc> _npcs = ConcurrentHashMap.newKeySet();
   
     private static final int RETURN_HOME_RAIDBOSS_RADIUS = Config.RETURN_HOME_RAIDBOSS_RADIUS;
     private static final int RETURN_HOME_MONSTER_RADIUS = Config.RETURN_HOME_MONSTER_RADIUS;
   
     private static final Set<Integer> EXCLUDED_RAIDBOSS_IDS = Set.of(29095);
     private static final Set<Integer> EXCLUDED_MONSTER_IDS = Set.of(29016, 29008, 29004);
   
     protected AiTaskManager()
     {
         // Run task each second.
         ThreadPool.scheduleAtFixedRate(this, 1000, 1000);
       
         // Run task every 10 seconds.
         ThreadPool.scheduleAtFixedRate(this::animationTask, 10000, 10000);
     }
   
     @Override
     public final void run()
     {
         _npcs.forEach(npc -> processNpc(npc));
     }
   
     private void processNpc(Npc npc)
     {
         npc.getAI().runAI();
       
         if (npc instanceof GrandBoss)
             return;
         else if (npc instanceof RaidBoss raidBoss)
             monsterReturn(raidBoss, Config.RETURN_HOME_RAIDBOSS, RETURN_HOME_RAIDBOSS_RADIUS, EXCLUDED_RAIDBOSS_IDS);
         else if (npc instanceof Monster monster)
-            monsterReturn(monster, Config.RETURN_HOME_MONSTER, RETURN_HOME_MONSTER_RADIUS, EXCLUDED_MONSTER_IDS);
+        {
+             // Evitar retornar raid related (inclui minions do boss)
+            if (monster.isRaidRelated())
+                return;
+            monsterReturn(monster, Config.RETURN_HOME_MONSTER, RETURN_HOME_MONSTER_RADIUS, EXCLUDED_MONSTER_IDS);
+        }
     }
   
     private void monsterReturn(Monster monster, boolean returnHome, int radius, Set<Integer> excludedNpcIds)
     {
         if (!returnHome || isNpcIdExcluded(monster.getNpcId(), excludedNpcIds))
             return;
       
         if (!monster.isIn3DRadius(monster.getSpawnLocation(), radius))
         {
             System.out.println("Returning monster: " + monster.getNpcId());
             monster.teleportTo(monster.getSpawnLocation(), 0);
             monster.removeAllAttackDesire();
             monster.getStatus().setHpMp(monster.getStatus().getMaxHp(), monster.getStatus().getMaxMp());
             teleportMinions(monster);
         }
     }
   
     private boolean isNpcIdExcluded(int npcId, Set<Integer> excludedNpcIds)
     {
         return excludedNpcIds.contains(npcId);
     }
   
     private void teleportMinions(Monster monster)
     {
         monster.getMinions().forEach(minion ->
         {
             if (!minion.isDead())
             {
                 minion.teleportToMaster();
                 minion.removeAllAttackDesire();
                 minion.getStatus().setHpMp(minion.getStatus().getMaxHp(), minion.getStatus().getMaxMp());
             }
         });
     }
   
     protected final void animationTask()
     {
         _npcs.stream().filter(npc -> npc instanceof Folk).forEach(folk ->
         {
             int moveAroundSocial = folk.getTemplate().getAiParams().getInteger("MoveAroundSocial", 0);
Спасибо. А что оно исправляет?
 
let's study thanks man
 
На какой реве у него база?
 
You must reply and click 'Like' to see the hidden information contained here.
 
Отлично, спасибо)
 
Скомпилировал сборку, потестил немного, заметил несколько не приятных моментов. 1) Конфиг не настроил на адену к примеру или покупку за колы(например) настройка по стоку только включил класс мастер, и заметил , что нет проверок на лвл. Тоесть можно изучать профы с 1 лвл, 1,2.3. 2) Вынесен конфиг с настройкой времени скиллов, например на час но по факту это не работает. Там же в комментарии указано, что нужно править время в bufferSkills.xml. Неважно вкл и выкл это конфиг высталено время на скиллах это работать не будет без правки bufferSkills.xml. Ну да ладно. 3) Эвент ластман, зарегал двоих с мелким лвл, отправило на арену, одним я убил второго, сообщение о выигрыше появилось в чате, выигравший игрок улетел в город, второй реснуся на арене с кругом визуалкой типо в эвенте участвует и так стоял он мин 25, пока я не перезашел в игру. 4) Помимо этого еще были сюрпризы, не помню конечно все, но при создании предмета в админке я указал большое значении в id предмета помоему и получил в гейм сервере ошибки в гс, сервер работает но это как бельмо на глазу. Такое чувство, что здесь нет не каких проверок по коду и предпологаю пакетхак тут может работать хорошо , это я не проверял. Над ацисом только трискел сколько работал + над этой сборкой 5 лет Руацис. Чем они занимальсь не понятно. За 10к за сурс очень жирно за сборку) Из плюсов, что я нашел вэтой сборке это квест нубский работает в отличие от того же ацис и некоторые квесты успел потестить в начальной деревне - работают
 
Последнее редактирование:
а еще, конфигов с допами маловато, для мид и пвп можно, но на фоне других сборок очень мало.
 
Последнее редактирование:
Назад
Сверху