Система ботов в сурсе расторгуева.

kokaloka

Путник
Пользователь
Сообщения
33
Розыгрыши
0
Репутация
-34
Реакции
0
Баллы
0
Здравствуйте, вроде бы сделал все по инструкции.
Закинул скрипты в сурс по указанному пути. Прописываю импорты в gs.java (так же прикрепляю файл).
Но скрипт не подгружается при старте сервера, хотя он лежал как я понял рабочий с растовским кодом.
В бд так же таблицу залил и ид чара указал на аккаунте. Подскажите что я не так делаю на этапе прописи в gs.java
 

Вложения

  • fakeplayers.rar
    2,4 КБ · Просмотры: 91
  • GameServer.rar
    4,7 КБ · Просмотры: 96
автор вы понимаете разницу меду глобал АИ подконтрольным сервером и плеерами которые участвуют в статистике ?
 
автор вы понимаете разницу меду глобал АИ подконтрольным сервером и плеерами которые участвуют в статистике ?
Что я по вашему должен понимать, если тема задана в разделе для новичков? То есть на пальцах объяснить можете?

Ребят поможет кто?
 
Совет: Выкинуть этот хлам и посмотреть в сторону чистого некстгена без манипуляций рукожопа
 
Совет: Выкинуть этот хлам и посмотреть в сторону чистого некстгена без манипуляций рукожопа

Здравствуйте! Я это под чистые исходны некстов хочу взять.
Подскажите пожалуйста как в gs.java правильно прописать импорт и инстанс
 
Здравствуйте! Я это под чистые исходны некстов хочу взять.
Подскажите пожалуйста как в gs.java правильно прописать импорт и инстанс
А зачем? Если это то же самое ничем не изменившееся от шарных сурсов?

И как оно будет работать если указан только импорт?
Что за бред?
Util.printSection("Characters");
CharNameTable.getInstance();
FakePlayersTable.getInstance();
И вы добавляете тоже самое
FakePlayersTable.getInstance();
В некстгене они не реализованы, а то что там натворил личер это полный бред.
 
А зачем? Если это то же самое ничем не изменившееся от шарных сурсов?
Там у раста по словам гадости много в коде, я сейчас только учусь.
Нашел шару с его сборкой а там система ботов валялась.
У меня нет эклипса так как скорость интернета не позволяет скачать за то есть ант.
И получается что импорты не так как то сую. Можете мой файл глянуть что я выложил что я не так там сделал.

И как оно будет работать если указан только импорт?
Что за бред?
Util.printSection("Characters");
CharNameTable.getInstance();
FakePlayersTable.getInstance();
И вы добавляете тоже самое
FakePlayersTable.getInstance();
В некстгене они не реализованы, а то что там натворил личер это полный бред.
А там есть в первом архиве скрипты для ядра, и таблица для бд, я туда ид чара вписал но при загрузке эти скрипты не подгружает так как что то не так с импортами начудил.

И как оно будет работать если указан только импорт?
Что за бред?
Util.printSection("Characters");
CharNameTable.getInstance();
FakePlayersTable.getInstance();
И вы добавляете тоже самое
FakePlayersTable.getInstance();
В некстгене они не реализованы, а то что там натворил личер это полный бред.

FakePlayersTable.getInstance(); вот это не могу понять куда нужно добавить что бы скрипты подгружались, без эклипса не понятно и ошибок с антом нет при билде.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Оффтоп:
не по теме конечно,но зачем ставить женский пол если ты мужик?
 
Извините, думал что оно будет в виде вложений не обратил внимание.
 
А там есть в первом архиве скрипты для ядра, и таблица для бд, я туда ид чара вписал но при загрузке эти скрипты не подгружает так как что то не так с импортами начудил.
Причем тут импорты? Вы понимаете, что это не будет работать вообще.
Код:
/**
* Класс одного игрока
*/
public class FakePlayer
{
    private final static Logger _log = Logger.getLogger(FakePlayer.class.getName());
    private L2Player _player;

    public void run()
    {
        _log.info("FakePlayers: Activated");
    }
}
Тут ничего не происходит, тут выведет информацию вида GameServer: FakePlayers: Actived
FakePlayersTable.getInstance(); вот это не могу понять куда нужно добавить что бы скрипты подгружались, без эклипса не понятно и ошибок с антом нет при билде.
Этого нету, что вы предложили в вашем архиве.
Код:
package l2s.game.scripts.fakeplayers;

import l2s.commons.list.GArray;
import l2s.database.FiltredPreparedStatement;
import l2s.database.L2DatabaseFactory;
import l2s.database.ThreadConnection;
import l2s.database.utils.DbUtils;
import l2s.game.L2GameThreadPools;
import l2s.game.model.actor.L2Player;

import java.sql.ResultSet;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* Класс управляющий ботами
*/
public class FakePlayersManager
{
    private final static Logger _log = Logger.getLogger(FakePlayersManager.class.getName());
    private GArray<FakePlayer> _players = new GArray<FakePlayer>();
    private static final String LOAD_OFFLINE_STATUS = "SELECT * FROM fake_players";

    private static class SingletonHolder
    {
        private static final FakePlayersManager _instance = new FakePlayersManager();
    }

    public static FakePlayersManager getInstance()
    {
        return SingletonHolder._instance;
    }

    public void storeFakePlayers()
    {
        ThreadConnection con = null;
        FiltredPreparedStatement statement = null;
        ResultSet rs = null;
        int nPlayers = 0;
        try
        {
            con = L2DatabaseFactory.getInstance().getConnection();
            statement = con.prepareStatement(LOAD_OFFLINE_STATUS);
            rs = statement.executeQuery();
            while(rs.next())
            {
                L2Player player = null;
                try
                {
                    player = L2Player.restore(rs.getInt("charId"));

                    if(player == null)
                        continue;

                    if(player.isDead())
                    {
                        player.logout(false, false, true, true);
                        continue;
                    }

                    player.restoreBonus();
                    player.setOnlineStatus(true);
                    player.setConnected(true);
                    player.restoreEffects();
                    player.restoreDisableSkills();
                    player.broadcastUserInfo(true);
                    player.setAutoLoot(true);

                    player.spawnMe();
                    player.updateTerritories();

                    if(player.getClan() != null && player.getClan().getClanMember(player.getObjectId()) != null)
                        player.getClan().getClanMember(player.getObjectId()).setPlayerInstance(player);

                    player.setFakePlayer(true);
                    player.setRunning();
                    player.stopUnimportantTimers();

                    L2GameThreadPools.getInstance().scheduleGeneral(new FakePlayerTask(player), 15000);

                    nPlayers++;
                }
                catch(Exception e)
                {
                    _log.log(Level.WARNING, "Fake Players Engine: Error loading player: "+player,e);
                }
            }
            rs.close();
            statement.close();
        }
        catch(Exception e)
        {
            _log.log(Level.WARNING, "Fake Players Engine : Error while loading player: ",e);
        }
        finally
        {
            DbUtils.closeQuietly(con);
        }
        _log.info("Loaded: " +nPlayers+ " Fake Players");
    }
}
Вот тут и происходит загрузка этого гавна.
Соответственно находите
CharNameTable.getInstance();
FakePlayersTable.getInstance();
И ниже вставьте
FakePlayersManager.getInstance();
Всё, а тут удалите
_log.info("|=======================INFO==========================|");
_log.info("| Version: " + Config.SERVER_VERSION + ".");
_log.info("|=======================INFO==========================|");
FakePlayersTable.getInstance(); - вот это ибо это не нужно
 
Причем тут импорты? Вы понимаете, что это не будет работать вообще.
Код:
/**
* Класс одного игрока
*/
public class FakePlayer
{
    private final static Logger _log = Logger.getLogger(FakePlayer.class.getName());
    private L2Player _player;

    public void run()
    {
        _log.info("FakePlayers: Activated");
    }
}
Тут ничего не происходит, тут выведет информацию вида GameServer: FakePlayers: Actived

Этого нету, что вы предложили в вашем архиве.
Код:
package l2s.game.scripts.fakeplayers;

import l2s.commons.list.GArray;
import l2s.database.FiltredPreparedStatement;
import l2s.database.L2DatabaseFactory;
import l2s.database.ThreadConnection;
import l2s.database.utils.DbUtils;
import l2s.game.L2GameThreadPools;
import l2s.game.model.actor.L2Player;

import java.sql.ResultSet;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* Класс управляющий ботами
*/
public class FakePlayersManager
{
    private final static Logger _log = Logger.getLogger(FakePlayersManager.class.getName());
    private GArray<FakePlayer> _players = new GArray<FakePlayer>();
    private static final String LOAD_OFFLINE_STATUS = "SELECT * FROM fake_players";

    private static class SingletonHolder
    {
        private static final FakePlayersManager _instance = new FakePlayersManager();
    }

    public static FakePlayersManager getInstance()
    {
        return SingletonHolder._instance;
    }

    public void storeFakePlayers()
    {
        ThreadConnection con = null;
        FiltredPreparedStatement statement = null;
        ResultSet rs = null;
        int nPlayers = 0;
        try
        {
            con = L2DatabaseFactory.getInstance().getConnection();
            statement = con.prepareStatement(LOAD_OFFLINE_STATUS);
            rs = statement.executeQuery();
            while(rs.next())
            {
                L2Player player = null;
                try
                {
                    player = L2Player.restore(rs.getInt("charId"));

                    if(player == null)
                        continue;

                    if(player.isDead())
                    {
                        player.logout(false, false, true, true);
                        continue;
                    }

                    player.restoreBonus();
                    player.setOnlineStatus(true);
                    player.setConnected(true);
                    player.restoreEffects();
                    player.restoreDisableSkills();
                    player.broadcastUserInfo(true);
                    player.setAutoLoot(true);

                    player.spawnMe();
                    player.updateTerritories();

                    if(player.getClan() != null && player.getClan().getClanMember(player.getObjectId()) != null)
                        player.getClan().getClanMember(player.getObjectId()).setPlayerInstance(player);

                    player.setFakePlayer(true);
                    player.setRunning();
                    player.stopUnimportantTimers();

                    L2GameThreadPools.getInstance().scheduleGeneral(new FakePlayerTask(player), 15000);

                    nPlayers++;
                }
                catch(Exception e)
                {
                    _log.log(Level.WARNING, "Fake Players Engine: Error loading player: "+player,e);
                }
            }
            rs.close();
            statement.close();
        }
        catch(Exception e)
        {
            _log.log(Level.WARNING, "Fake Players Engine : Error while loading player: ",e);
        }
        finally
        {
            DbUtils.closeQuietly(con);
        }
        _log.info("Loaded: " +nPlayers+ " Fake Players");
    }
}
Вот тут и происходит загрузка этого гавна.
Соответственно находите
CharNameTable.getInstance();
FakePlayersTable.getInstance();
И ниже вставьте
FakePlayersManager.getInstance().storeFakePlayers();
Всё, а тут удалите
_log.info("|=======================INFO==========================|");
_log.info("| Version: " + Config.SERVER_VERSION + ".");
_log.info("|=======================INFO==========================|");
FakePlayersTable.getInstance(); - вот это ибо это не нужно
Спасибо Вам большое. Все просто и понятно.
Стадо дебилов с ЗГ так и не дало нормального ответа, одни понты. Спасибо что Вы и Ваш форум существует)
 

    Influence

    Баллов: -4
    Без комментариев
Java:
package ru.l2gw.gameserver.tables;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.LineNumberReader;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledFuture;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import ru.l2gw.commons.math.Rnd;

import ru.l2gw.gameserver.Config;
import ru.l2gw.gameserver.controllers.ThreadPoolManager;
import ru.l2gw.gameserver.loginservercon.LSConnection;
import ru.l2gw.gameserver.loginservercon.gspackets.SendFakePlayersCount;
import ru.l2gw.gameserver.model.FakePlayer;
import ru.l2gw.gameserver.model.GameObjectsStorage;
import ru.l2gw.gameserver.model.base.ClassId;

public class FakePlayersTable
{
    private static final Log log = LogFactory.getLog(FakePlayersTable.class);
    private static long _nextLoginUpdate = 0;
    static List<String> fakePlayerNames = new ArrayList<>();
    static final Map<String, FakePlayer> fakePlayers = new ConcurrentHashMap<>();
    static ScheduledFuture<?> fakePlayersDeleteTask;
   
    public static void loadFakeNames()
    {
        LineNumberReader lnr = null;
        try
        {
            File list = new File("config/fake_players.list");
            if (!list.exists())
            {
                log.info("Config File doesn't exist: fake_player.list");
                return;
            }
           
            lnr = new LineNumberReader(new BufferedReader(new FileReader(list)));
           
            String line;
            while ((line = lnr.readLine()) != null)
            {
                if ((line.trim().length() == 0) || line.startsWith("#"))
                {
                    continue;
                }
               
                fakePlayerNames.add(line.trim());
            }
            log.info("FakePlayersTable: Loaded fake player names:" + fakePlayerNames.size());
        }
        catch (Exception e)
        {
            log.warn("FakePlayersTable: config/fake_players.list load error: " + e, e);
        }
    }
   
    public static int getFakePlayersCount()
    {
        if (Config.FAKE_PLAYERS_FACTOR > 0)
        {
            int count = (int) (GameObjectsStorage.getAllPlayersCount() * Config.FAKE_PLAYERS_FACTOR * Config.FAKE_PLAYERS_FACTOR_HOUR[Calendar.getInstance().get(Calendar.HOUR_OF_DAY)]);
            if (_nextLoginUpdate < System.currentTimeMillis())
            {
                _nextLoginUpdate = System.currentTimeMillis() + 300000;
                LSConnection.getInstance().sendPacket(new SendFakePlayersCount(count));
            }
            return count;
        }
        return 0;
    }
   
    public static int getBotCount()
    {
        return fakePlayers.size();
    }
   
    public static FakePlayer createFakePlayer(ClassId classId, byte sex, byte hs, byte hc, byte f, int timeMin, int timeMax)
    {
        String name = null;
        while ((fakePlayerNames.size() > 0) && (name == null))
        {
            name = fakePlayerNames.remove(Rnd.get(fakePlayerNames.size()));
            if (CharNameTable.getInstance().doesCharNameExist(name))
            {
                name = null;
            }
        }
       
        if (name == null)
        {
            return null;
        }
       
        return FakePlayer.create((short) classId.getId(), sex, "fake_player", name, hs, hc, f, Rnd.get(timeMin, timeMax));
    }
   
    public static void addFakePlayer(FakePlayer player)
    {
        FakePlayer fakePlayer = fakePlayers.put(player.getName().toLowerCase(), player);
        if (fakePlayer != null)
        {
            fakePlayer.deleteMe();
        }
       
        if (fakePlayersDeleteTask == null)
        {
            fakePlayersDeleteTask = ThreadPoolManager.getInstance().scheduleGeneral(new FakePlayerDeleteTask(), 60000);
        }
    }
   
    public static boolean isFakePlayer(String name)
    {
        return fakePlayers.containsKey(name.toLowerCase());
    }
   
    private static class FakePlayerDeleteTask implements Runnable
    {
        public FakePlayerDeleteTask()
        {
        }
       
        @Override
        public void run()
        {
            for (FakePlayer fakePlayer : fakePlayers.values())
            {
                if (fakePlayer.getDespawnTime() < System.currentTimeMillis())
                {
                    fakePlayers.remove(fakePlayer.getName().toLowerCase());
                    if (!fakePlayerNames.contains(fakePlayer.getName()))
                    {
                        fakePlayerNames.add(fakePlayer.getName());
                    }
                   
                    fakePlayer.deleteMe();
                }
            }
           
            if (fakePlayers.size() < 1)
            {
                fakePlayersDeleteTask = null;
            }
            else
            {
                fakePlayersDeleteTask = ThreadPoolManager.getInstance().scheduleGeneral(this, 10000);
            }
        }
    }
}

Сейчас у меня такой код и не знаю как его запустить, можете подсказать а может поправить?
 
Назад
Сверху Снизу