Исходный код фантомов/ботов - Страница 6 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Работа со скриптами

Работа со скриптами Помощь в редактировании и написании квестов к Java серверам, а так же эвентов.

Ответ
Опции темы
Непрочитано 29.03.2016, 16:12   #51
Пользователь

По умолчанию Re: Исходный код фантомов/ботов

То есть этот obj_id никак не связан с аналогичным полем в таблице characters?
И тогда метод createFakePlayer каждый раз создает нового персонажа не из таблицы characters, а на основании переданного L2PlayerTemplate template.
flopix вне форума Ответить с цитированием
Непрочитано 29.03.2016, 16:21   #52
Аватар для n3k0nation
Antihero

По умолчанию Re: Исходный код фантомов/ботов

Цитата:
Сообщение от flopix Посмотреть сообщение
То есть этот obj_id никак не связан с аналогичным полем в таблице characters?
И тогда метод createFakePlayer каждый раз создает нового персонажа не из таблицы characters, а на основании переданного L2PlayerTemplate template.
Именно так. Вообще, там в конструкторе, требуется только проинитить колоры, базовый класс и АИ.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 29.03.2016, 16:23   #53
Пользователь

По умолчанию Re: Исходный код фантомов/ботов

Просто страницей выше я не так понял и пошел по ложному пути.


В коде этих фантомов есть команда admin_phantoms_truncate

Она делает следующее:

1. Выгребает всех персонажей у которых логин "fh4f#67$kl"
PHP код:
st con.prepareStatement("SELECT * FROM characters WHERE account_name = ?");
st.setString(1"fh4f#67$kl");
... 
2. Заносит на основании этих персов новых в таблицу phantoms

3. Удаляет исходных персонажей.
PHP код:
PlayerManager.deleteCharByObjId(info.obj_id); 
flopix вне форума Ответить с цитированием
Непрочитано 29.03.2016, 22:46   #54
Пользователь

По умолчанию Re: Исходный код фантомов/ботов

Кто то мне может объяснить почему в объект PhantomInfo сохраняется все из таблицы phantoms кроме
поля `class_id` и при любом пуке оно его тянет из базы.

PHP код:
    public int getSubclassByObjId(int obj_id)
    {
....
            
statement con.prepareStatement("SELECT class_id FROM phantoms WHERE obj_Id=?");
... 

В методе рядом вообще ошибочно продублирован код из предыдущего метода:
PHP код:
    public boolean isHasEquip(int obj_id)
    {
        
int result 0;

        
Connection con null;
        
PreparedStatement statement null;
        
ResultSet rset null;
        try
        {
            
con DatabaseFactory.getInstance().getConnection();
            
statement con.prepareStatement("SELECT class_id FROM items WHERE char_obj_id=?");
            
statement.setInt(1obj_id);
            
rset statement.executeQuery();
            if(
rset.next())
                
result rset.getInt(1);
        }
        catch(
Exception e)
        {
            
_log.error("CharNameTable.getSubclassByObjId(Int): " ee);
        }
        
finally
        
{
            
DbUtils.closeQuietly(constatementrset);
        }

        return 
false;
    } 

Зачем проверка? !PhantomSpawnParser.getSpawnLocs().isEmpty()
PHP код:
            if(PhantomSpawnParser.getSpawnLocs() != null && !PhantomSpawnParser.getSpawnLocs().isEmpty())
            {
                for(
PhantomSpawnObjectInfo spawn_object PhantomSpawnParser.getSpawnLocs())
                {
... 

Дареному коню как говорится в зубы не смотрят. Но у меня вопрос к автору - это точно рабочий код, а не промежуточный вариант?
flopix вне форума Ответить с цитированием
Непрочитано 29.03.2016, 23:27   #55
Пользователь

По умолчанию Re: Исходный код фантомов/ботов

А это вообще интересный момент.

PHP код:
            // перебираем фантомов, пока на получим нужного по ИИ
            
while(fakeObjId == -|| PhantomsEngine.getInstance().isPhantomAlreadySpawned(fakeObjId))
                
fakeObjId getMatch(ai_type); 
Если фантома нужного класса нет в наличии то этот цикл будет исполнятся бесконечно, а внутри функции getMatch идет обращение к БД для получения класса.

И нет бы перебрать один раз весь список чтобы убедится что в нем есть или отсутствует еще не задействованный фантом нужного типа, но нет мы в цикле из всего списка тыкаем случайный индекс и каждый раз проверяем подходит ли он нам. Если нет - повторяем поиск. Если там например такой фантом даже и есть но только один тыкаться можно очень долго. Бред.

Последний раз редактировалось flopix; 30.03.2016 в 01:42.
flopix вне форума Ответить с цитированием
Непрочитано 31.03.2016, 17:47   #56
Пользователь

По умолчанию Re: Исходный код фантомов/ботов

Цитата:
Сообщение от Connie Посмотреть сообщение
Умеют ПвП, ГвГ, по городам бегать. Их эквип задается в конфигах, скилы которые они будут юзать там же задаются. Можно в пати их объединять. Остальное по конфигам видно.
Ну что ж запустил эту систему на сборке l2open.

Фантом персонаж как заводной бегает вокруг заданной точки периодически используя на себе селфы.
Если видит в заданном радиусе игрока бежит и пытается его слить в ПК.
Мобов не трогает.

Со стороны выглядит очень странно. Наверно их еще стоит учить бить мобов.
flopix вне форума Ответить с цитированием
Непрочитано 31.03.2016, 19:05   #57
Пользователь

По умолчанию Re: Исходный код фантомов/ботов

Странно на давнешнем видео видел, как они били мобов, юзали соски, пвп-шились.
kpNemo вне форума Ответить с цитированием
Непрочитано 31.03.2016, 22:50   #58
Пользователь

По умолчанию Re: Исходный код фантомов/ботов

Может это была другая фантом система?
Тут банально в методах нигде даже нет поиска мобов вокруг, только игроков.


Походу исходники недоделанные например файл PhantomLevelFarmParams.java пустой

PHP код:
package fakes.model;

/**
 * Created with IntelliJ IDEA.
 * User: Administrator
 * Date: 03.02.14
 * Time: 23:30
 * To change this template use File | Settings | File Templates.
 */
public class PhantomLevelFarmParams
{
    
//

flopix вне форума Ответить с цитированием
Непрочитано 26.05.2016, 15:35   #59
Аватар для FaintSmile
Пользователь

Автор темы (Топик Стартер) Re: Исходный код фантомов/ботов

Цитата:
Сообщение от flopix Посмотреть сообщение
Connie, раз уже выложили исходники будьте добры выложите недостающие методы.

Например:

Player.createFakePlayer(obj_id, template);
PHP код:
public static Player createFakePlayer(int objIdPcTemplate pc_template) {
        return new 
Player(objIdpc_template);
    } 
PHP код:
public Player(final int objectId, final PcTemplate pc_template, final String accountName)
    {
        
super(objectId);
        
setPcTemplate(pc_template);

        
_login accountName;
        
_nameColor 0xFFFFFF;
        
_titlecolor 0xFFFF77;
        
_baseClass getPcClass().class_id;
        
base_class pc_template.pc_class;
        
base_race pc_template.pc_template_type.race;
        
_cubics = new CopyOnWriteArrayList<EffectCubic>();
        
phantom_params = new PhantomParams(this);
        
playerRating = new PlayerRating(objectId);
    } 
Цитата:
Сообщение от flopix Посмотреть сообщение
Проясните логику работы.

Система сама не создает фейк игроков?

Нужно в таблицу phantoms натыкать заранее заготовленных существующих в таблице characters игроков?
Зачем тогда дублируется имя в этой таблице?
1. Тот код, что тут выложен - не создает новых ботов.
2. Да, нужно.
3. Они мне мешали в таблице characters, к тому же, информации об игроках хранится много больше, чем о ботах, и чтобы не засорять БД ненужной информацией была создана таблица phantoms. (БД меньше весит от этого, быстрее работает.)

Цитата:
Сообщение от flopix Посмотреть сообщение
Что такое тогда такое `obj_id` в этой таблице?
Это obj_id для создания Player с этим ID. Без этого никак.

Цитата:
Сообщение от flopix Посмотреть сообщение
То есть этот obj_id никак не связан с аналогичным полем в таблице characters?
И тогда метод createFakePlayer каждый раз создает нового персонажа не из таблицы characters, а на основании переданного L2PlayerTemplate template.
Связан. Это ID для создаваемого объекта Player. И нельзя делать так, чтобы были коллизии с игроками, поэтому лично я использую цифры от 5ккк для ИД ботов. Проще говоря, нельзя, чтобы был один и тот же ИД у бота и игрока.
Да, верно, каждый раз создается новый персонаж на основании темплейта (так и не нашлось времени на создание бота, который бы качался, одевался и т.д., а раз не нужно сохранять его итемы и т.д., то это каждый раз создается заного).

Цитата:
Сообщение от flopix Посмотреть сообщение
Просто страницей выше я не так понял и пошел по ложному пути.


В коде этих фантомов есть команда admin_phantoms_truncate

Она делает следующее:

1. Выгребает всех персонажей у которых логин "fh4f#67$kl"
PHP код:
st con.prepareStatement("SELECT * FROM characters WHERE account_name = ?");
st.setString(1"fh4f#67$kl");
... 
2. Заносит на основании этих персов новых в таблицу phantoms

3. Удаляет исходных персонажей.
PHP код:
PlayerManager.deleteCharByObjId(info.obj_id); 
Раньше боты были в таблице characters, чтобы автоматически перенести их оттуда и был написан этот код.

Цитата:
Сообщение от flopix Посмотреть сообщение
Кто то мне может объяснить почему в объект PhantomInfo сохраняется все из таблицы phantoms кроме
поля `class_id` и при любом пуке оно его тянет из базы.

PHP код:
    public int getSubclassByObjId(int obj_id)
    {
....
            
statement con.prepareStatement("SELECT class_id FROM phantoms WHERE obj_Id=?");
... 
Цитата:
Сообщение от flopix Посмотреть сообщение
В методе рядом вообще ошибочно продублирован код из предыдущего метода:
PHP код:
    public boolean isHasEquip(int obj_id)
    {
        
int result 0;

        
Connection con null;
        
PreparedStatement statement null;
        
ResultSet rset null;
        try
        {
            
con DatabaseFactory.getInstance().getConnection();
            
statement con.prepareStatement("SELECT class_id FROM items WHERE char_obj_id=?");
            
statement.setInt(1obj_id);
            
rset statement.executeQuery();
            if(
rset.next())
                
result rset.getInt(1);
        }
        catch(
Exception e)
        {
            
_log.error("CharNameTable.getSubclassByObjId(Int): " ee);
        }
        
finally
        
{
            
DbUtils.closeQuietly(constatementrset);
        }

        return 
false;
    } 
Нерабочий метод, недоделанный. Зарубка на бота, умеющего качаться и одеваться по мере прокачки. Не было реализовано.

Цитата:
Сообщение от flopix Посмотреть сообщение
Зачем проверка? !PhantomSpawnParser.getSpawnLocs().isEmpty()
PHP код:
            if(PhantomSpawnParser.getSpawnLocs() != null && !PhantomSpawnParser.getSpawnLocs().isEmpty())
            {
                for(
PhantomSpawnObjectInfo spawn_object PhantomSpawnParser.getSpawnLocs())
                {
... 

Дареному коню как говорится в зубы не смотрят. Но у меня вопрос к автору - это точно рабочий код, а не промежуточный вариант?
Если нет спавнов то и не нужен спавн таск.
Код рабочий, всё работает, боты общаются, дерутся, дергаются по городам. По крайней мере у меня.

Цитата:
Сообщение от flopix Посмотреть сообщение
А это вообще интересный момент.

PHP код:
            // перебираем фантомов, пока на получим нужного по ИИ
            
while(fakeObjId == -|| PhantomsEngine.getInstance().isPhantomAlreadySpawned(fakeObjId))
                
fakeObjId getMatch(ai_type); 
Если фантома нужного класса нет в наличии то этот цикл будет исполнятся бесконечно, а внутри функции getMatch идет обращение к БД для получения класса.

И нет бы перебрать один раз весь список чтобы убедится что в нем есть или отсутствует еще не задействованный фантом нужного типа, но нет мы в цикле из всего списка тыкаем случайный индекс и каждый раз проверяем подходит ли он нам. Если нет - повторяем поиск. Если там например такой фантом даже и есть но только один тыкаться можно очень долго. Бред.
Нужно было спавнить единовременно 100-200 ботов при базе в 10к ботов. Чтобы хоть как-то работало было сделано так, а потом руки не дошли переделать. Да, ларчик просто открывался.

Цитата:
Сообщение от flopix Посмотреть сообщение
Ну что ж запустил эту систему на сборке l2open.

Фантом персонаж как заводной бегает вокруг заданной точки периодически используя на себе селфы.
Если видит в заданном радиусе игрока бежит и пытается его слить в ПК.
Мобов не трогает.

Со стороны выглядит очень странно. Наверно их еще стоит учить бить мобов.
Неверная работа, где-то косяк у вас.

Цитата:
Сообщение от flopix Посмотреть сообщение
Может это была другая фантом система?
Тут банально в методах нигде даже нет поиска мобов вокруг, только игроков.


Походу исходники недоделанные например файл PhantomLevelFarmParams.java пустой

PHP код:
package fakes.model;

/**
 * Created with IntelliJ IDEA.
 * User: Administrator
 * Date: 03.02.14
 * Time: 23:30
 * To change this template use File | Settings | File Templates.
 */
public class PhantomLevelFarmParams
{
    
//

Боты качающиеся с нуля и фармящие лут не были реализованы.

Цитата:
Сообщение от kpNemo Посмотреть сообщение
Странно на давнешнем видео видел, как они били мобов, юзали соски, пвп-шились.
Это не мои были. Видео моих ботов нет нигде, вот почему.
FaintSmile вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 27.05.2016, 00:49   #60
Пользователь

По умолчанию Re: Исходный код фантомов/ботов

[QUOTE='Connie;412735']Неверная работа, где-то косяк у вас.

Цитата:
Цитата:
Сообщение от flopix Посмотреть сообщение
Ну что ж запустил эту систему на сборке l2open.

Фантом персонаж как заводной бегает вокруг заданной точки периодически используя на себе селфы.
Если видит в заданном радиусе игрока бежит и пытается его слить в ПК.
Мобов не трогает.
Со стороны выглядит очень странно. Наверно их еще стоит учить бить мобов.

да вот в методе поиска цели getAndSetLockedTarget сделано так:

PHP код:
targets phantom.getAroundPlayers(radius600); 

покажите мне где тут поиск мобов вокруг?
flopix вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Unreal Engine 4 Полный исходный код OneThunder Программирование / Programming 60 23.03.2016 16:12
[Продам] Исходный код Lineage II High Five KilRoy Рынок / Marketplace 2 03.06.2015 21:27
[Продам] Исходный код L2Dream ddqx Рынок / Marketplace 4 20.11.2009 03:59


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 08:34. Часовой пояс GMT +3.

Вверх