FakePlayer - Страница 5 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Работа со скриптами

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

Ответ
Опции темы
Непрочитано 12.01.2014, 21:22   #41
Аватар для xolseg
Хрен с горы

Автор темы (Топик Стартер) Re: FakePlayer

Цитата:
Сообщение от Pointer*Rage Посмотреть сообщение
Делайте новый класс ботов наследуясь от класса игрока, я уже писал об этом.
Ищите нужные события (которые Вы описали) и изменяете там переменную рейтов для конкретного игрока/бота. Если нужно выполнение с задержкой, то пилите опять же задачу и запускайте ее с помощью трид пула.
А можно для идиотов разжевать про "и изменяете там переменную рейтов для конкретного игрока/бота", а то сижу, вроде прочитал и всё понятно, а начинаю читать частями пост, так становится ещё более не понятнее...

Это получится что то типа
если { класс игрок, то рейт такой то}
если { класс фейк, то рейт такой то}

Или я что то опять не правильно понимаю?
Но опять же вопрос, как сделать плавающей цифру рейта? Я просто логику понять не моуг этих действий. :-(
xolseg вне форума Отправить сообщение для xolseg с помощью ICQ Отправить сообщение для xolseg с помощью Skype™ Ответить с цитированием
Непрочитано 12.01.2014, 21:26   #42
Аватар для n3k0nation
Antihero

По умолчанию Re: FakePlayer

Цитата:
Сообщение от xolseg Посмотреть сообщение
А можно для идиотов разжевать про "и изменяете там переменную рейтов для конкретного игрока/бота"
Если такой переменной нет в классе игрока (я же не знаю Ваших исходников), то ее придется создать. Логика ее работы в том, что она учитывается в расчетах дропа/адены/опыта/сп вместо глобальных рейтов. Легче всего такие места найти с помощью вывода иеархии вызовов переменных глобальных рейтов сервера или же просто поискать, где в классе игрока обрабатывается начисление (причем формула расчета) опыта/сп и всего остального.

Цитата:
Сообщение от xolseg Посмотреть сообщение
Это получится что то типа
если { класс игрок, то рейт такой то}
если { класс фейк, то рейт такой то}

Или я что то опять не правильно понимаю?
Но опять же вопрос, как сделать плавающей цифру рейта? Я просто логику понять не моуг этих действий. :-(
Ищем нужные методы, где нужно изменять значение рейтов (в прошлом сообщении описывал), делаем нечто вроде этого:
Код:
if(this instanceof Player) {
  if(killed.getSpawn().getRespawnTime() >= 120000) currentRateXp = 2;
  else if(killed.getSpawn().getRespawnTime() > 30000) currentRateXp = 1;
  else if(killed.getSpawn().getRespawnTime() <= 30000) currentRateXp = 0.5f;
  else currentRateXp = Config.SERVER_RATE_XP;
} else if(this instanceof FakePlayer) {
 ....
}
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 12.01.2014, 22:00   #43
Аватар для xolseg
Хрен с горы

Автор темы (Топик Стартер) Re: FakePlayer

Цитата:
Сообщение от Pointer*Rage Посмотреть сообщение
Если такой переменной нет в классе игрока (я же не знаю Ваших исходников), то ее придется создать. Логика ее работы в том, что она учитывается в расчетах дропа/адены/опыта/сп вместо глобальных рейтов. Легче всего такие места найти с помощью вывода иеархии вызовов переменных глобальных рейтов сервера или же просто поискать, где в классе игрока обрабатывается начисление (причем формула расчета) опыта/сп и всего остального.


Ищем нужные методы, где нужно изменять значение рейтов (в прошлом сообщении описывал), делаем нечто вроде этого:
Код:
if(this instanceof Player) {
  if(killed.getSpawn().getRespawnTime() >= 120000) currentRateXp = 2;
  else if(killed.getSpawn().getRespawnTime() > 30000) currentRateXp = 1;
  else if(killed.getSpawn().getRespawnTime() <= 30000) currentRateXp = 0.5f;
  else currentRateXp = Config.SERVER_RATE_XP;
} else if(this instanceof FakePlayer) {
 ....
}
Спасибо, все оказывается проще чем я думал.
Вот помощь как помощь. :-)
xolseg вне форума Отправить сообщение для xolseg с помощью ICQ Отправить сообщение для xolseg с помощью Skype™ Ответить с цитированием
Непрочитано 13.01.2014, 03:51   #44
Аватар для krisadr
Пользователь

По умолчанию Re: FakePlayer

для ботов делал отдельный пул который работает независимо от игроков по близости.
а какой смысл плодить много потоков, когда можно сувать ботов в ArryList или нечто подобное а потом прогонять их в for(one:list) с проверкой на стостояние - допиустим если уровень бота меньше 3 то ищем таргеты и качаемся, ну и так дальше

Добавлено через 3 минуты
тут самое главное переопределить в вашем классе ботов, который должен расширять L2Player(L2PcInstance)
PHP код:
    @Override
    
public void sendPacket(final L2GameServerPacket... packets)
    {} 
а то нпе замучают...

Добавлено через 59 минут
пока что столкнулся с проблемой, при moveToLocation(loc1, 0, true); для ботов не работает поиск пути,
при атаке на мобов он путь ищет, при обычном же moveToLocation(loc1, 0, true), нет.

Последний раз редактировалось krisadr; 13.01.2014 в 04:50. Причина: Добавлено сообщение
krisadr вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 13.01.2014, 05:50   #45
Аватар для xolseg
Хрен с горы

Автор темы (Топик Стартер) Re: FakePlayer

Цитата:
Сообщение от krisadr Посмотреть сообщение
для ботов делал отдельный пул который работает независимо от игроков по близости.
а какой смысл плодить много потоков, когда можно сувать ботов в ArryList или нечто подобное а потом прогонять их в for(one:list) с проверкой на стостояние - допиустим если уровень бота меньше 3 то ищем таргеты и качаемся, ну и так дальше

Добавлено через 3 минуты
тут самое главное переопределить в вашем классе ботов, который должен расширять L2Player(L2PcInstance)
PHP код:
    @Override
    
public void sendPacket(final L2GameServerPacket... packets)
    {} 
а то нпе замучают...

Добавлено через 59 минут
пока что столкнулся с проблемой, при moveToLocation(loc1, 0, true); для ботов не работает поиск пути,
при атаке на мобов он путь ищет, при обычном же moveToLocation(loc1, 0, true), нет.
Я хочу сделать несколько иначе, я про поиск пути, хочу разбить карту на квадраты, т.е..... блин.... как бы объяснить
1. фейк игрок заходит в игру проверяя свой уровень
2. фейк игрок проверяет мобов относительно своего уровня (кроме некрополисов и прочих инстов/данжей)
3. фейк переносит в ту зону админ командой, так как будет с правами на пользование телепортом либо свитком или каким то иным способом(способ перехода в конечную точку не однозначен и требует доработки)
4. квадрат куда прилетает фейк игрок имеет определенный размер, обзор у фейка будет равен 12000 единиц и 360 градусов
4.1. сканирование местности 1 раз в 20 секунд на предмет пк
4.1.1. про появление пк, сравнение по базе, т.е. вызов по нику и сравнение уровней, классов
4.2. сканирование местности 1 раз в 20 секунд на предмет игроков
4.2.1. сравнение персонажей с фейком: уровень, счетчик пк, класс
4.3. сканирование местности на мобов(все знаем что в локе мобы от х уровня до у уровня

4.4. Передвижение по местности, фейк игрок перемещается по местности исходя из точек респа для мобов, т.е. x,y,z - первого моба, x,y,z - второго моба и так далее. В данный момент это лучший выход, пока не разобрался с нейросетью и обучением фейкигрока перехода между мобами и выбором оптимального пути следования между точкой А и точкой Б.
Этот метод будет работать(условие) только в том случае если по близости нету ни одного живого моба.
xolseg вне форума Отправить сообщение для xolseg с помощью ICQ Отправить сообщение для xolseg с помощью Skype™ Ответить с цитированием
Непрочитано 13.01.2014, 06:26   #46
Аватар для n3k0nation
Antihero

По умолчанию Re: FakePlayer

Цитата:
Сообщение от krisadr Посмотреть сообщение
для ботов делал отдельный пул который работает независимо от игроков по близости.
а какой смысл плодить много потоков, когда можно сувать ботов в ArryList или нечто подобное а потом прогонять их в for(one:list) с проверкой на стостояние - допиустим если уровень бота меньше 3 то ищем таргеты и качаемся, ну и так дальше

Добавлено через 3 минуты
тут самое главное переопределить в вашем классе ботов, который должен расширять L2Player(L2PcInstance)
PHP код:
    @Override
    
public void sendPacket(final L2GameServerPacket... packets)
    {} 
а то нпе замучают...

Добавлено через 59 минут
пока что столкнулся с проблемой, при moveToLocation(loc1, 0, true); для ботов не работает поиск пути,
при атаке на мобов он путь ищет, при обычном же moveToLocation(loc1, 0, true), нет.
Я понял, значит у Вас все таки не однопоточная реализация, а событийная и однопоточный менеджер
По поводу активного АИ, все еще интересует вопрос: 100 АИ были реально активны (ведь глобальное АИ может иметь статус инактив, если игроков нет поблизости) или же нет?

Извиняюсь, что так допытываю и мучаю, просто интересна сторона оптимизации всего этого дела.


Цитата:
Сообщение от xolseg Посмотреть сообщение
Этот метод будет работать(условие) только в том случае если по близости нету ни одного живого моба.
Для этого Вам придется урезать статус инактив, чтобы боты не могли в него войти, да и вообще переработать вызов этого статуса и вызов деатачей АИ.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 13.01.2014, 06:36   #47
Аватар для xolseg
Хрен с горы

Автор темы (Топик Стартер) Re: FakePlayer

Цитата:
Сообщение от Pointer*Rage Посмотреть сообщение
ля этого Вам придется урезать статус инактив, чтобы боты не могли в него войти, да и вообще переработать вызов этого статуса и вызов деатачей АИ.
Ну это и работа не на один день и даже неделю.. задумка через чур глобальна, что бы за раз сесть и всё сделать. :-(
xolseg вне форума Отправить сообщение для xolseg с помощью ICQ Отправить сообщение для xolseg с помощью Skype™ Ответить с цитированием
Непрочитано 13.01.2014, 06:56   #48
Аватар для krisadr
Пользователь

По умолчанию Re: FakePlayer

UP до сих пор не могу разобраться почему не работает поиск пути у moveToLocation(loc1, 0, true) для L2FakePlayer extends L2Player....
krisadr вне форума Ответить с цитированием
Непрочитано 13.01.2014, 06:58   #49
Аватар для n3k0nation
Antihero

По умолчанию Re: FakePlayer

Цитата:
Сообщение от krisadr Посмотреть сообщение
UP до сих пор не могу разобраться почему не работает поиск пути у moveToLocation(loc1, 0, true) для L2FakePlayer extends L2Player....
Вы так пишите, как будто мы знаем, что у Вас там за код...
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Непрочитано 13.01.2014, 07:11   #50
Аватар для xolseg
Хрен с горы

Автор темы (Топик Стартер) Re: FakePlayer

Цитата:
Сообщение от Pointer*Rage Посмотреть сообщение
Вы так пишите, как будто мы знаем, что у Вас там за код...
А как же ванга мод?
xolseg вне форума Отправить сообщение для xolseg с помощью ICQ Отправить сообщение для xolseg с помощью Skype™ Ответить с цитированием
Ответ


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

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

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

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


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

Вверх