Главная Форум Файлы Видео
[
 Регистрация 
 Выход   Вход 
]
 [  Новые сообщенияРадиоУчастникиПравила форумаПоискRSS ] 
  • Страница 1 из 1
  • 1
любителям рыбалки
voin_krovi Дата: Вторник, 01.05.2012, 17:15 | Сообщение # 1

-=Tpy_EE=-



Группа: Администраторы

Сообщений: 1571
« »
Бог сайта и форума За хорошую посещаемость на форуме

Статус: Offline
Принцип рыбалки.

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

Если спроектировать точки нахождения крючка и игрока на плоскость X0Y ("плоскость земли"), то расстояние между проекциями будет равно 300.

Затем определяется, какому месту рыбалки (fishing_place) соответствуют данные координаты крючка. При этом сперва игра пытается найти то место рыбалки, у которого параметр fishing_place_type равен fishing_place_type2. Если она такого не находит, то пытается найти место рыбалки с fishing_place_type = fishing_place_type1. Если и этого не находит, то ищет с fishing_place_type = fishing_place_default.

Далее игра проверяет: находится ли поплавок в воде. Если место рыбалки найдено и поплавок находится в воде, то игра смотрит, какое распределение (distribution) используется в данном месте рыбалки. Для этого считывается значения параметра distribution_id места рыбалки.
Всего определено 3 различных распределения, поэтому distribution_id может иметь значение 1, 2 или 3.

Места рыбалки с fishing_place_type = fishing_place_default имеют distribution_id = 1.
С fishing_place_type = fishing_place_type1 имеют distribution_id = 2.
С fishing_place_type = fishing_place_type2 имеют distribution_id = 3.

Большинство площади мира покрыто местами с distribution_id = 2. Прочие места есть только в ХС. Более того, место с distribution_id = 1 - всего одно в игре. Оно геометрически совпадает с одним из мест в Хот Спрингс с distribution_id = 3, то есть оно вообще не будет использоваться.

Также на рыбалку влияет время рыбалки, дневная или ночная.

Когда вы закидываете удочку - игра модифицирует значение специального счётчика (у игрока):
- Если расстояние между текущим и прошлым положением крючка меньше или равно значению параметра limit_grid места рыбалки, то значение счётчика уменьшается на 1.
- Если расстояние между текущим и прошлым положением крючка больше значения параметра limit_grid места рыбалки, то значение счётчика устанавливается равным параметру maintain_distribution_time места рыбалки.

Если этот счётчик имеет положительное значение, то в дальнейших расчётах используется default_distribution секция распределения, иначе - event_distribution секция.
Для всех мест рыбалки установлены значения limit_grid = 1000 и maintain_distribution_time = 60.

Стоит после каждых 60 закидываний удочки отходить на расстояние не менее 1000 и закидывать удочку там. При этом счётчик "освежится" и следующие 60 закидываний будут с нормальным уловом (а не с "истощённым"). Можно после этого даже вернуться на старое место.

Понятно, что НЦсофт "ложило" на других ботов-рыбальщиков, поэтому эти счетчики идут только у игрока, на других людей они никак не влияют.

Шансы клёва:
- В обычном состоянии водоёма - 95%
- В "истощённом" состоянии - 61%

fish_type_chance = 100 * distribution_type_value * lure_type_value / norm

distribution_type_value - значение для данного типа, константа. Скажем, easy_wide - 15. Если кому это нужно - могу скинуть табличку.

lure_type_value - значение для данного типа, заданное в описании приманки.

norm - сумма произведений distribution_type_value * lure_type_value для всех типов рыбы.

То есть приманка может увеличивать или уменьшать шансы поймать тот или иной тип рыбы.

После того, как игры вид рыбы уже определился на сервер, идет посчет уровня рыбы.
Рыба имеет от 1 до 27 лвл, это управляется параметром fish_level в описании рыбы.

Уровень рыбы - случайный, зависит от уровня Fishing Expertise:
- 50% шанс того, что будет fish_level = expertise_level
- 35% шанс того, что будет fish_level = expertise_level - 1
- 15% шанс того, что будет fish_level = expertise_level + 1

Поймать рыбу, уровень которой на 2 (или больше) выше или ниже уровня вашей экспертизы - невозможно.

Далее подсчет время появления рыбы после заброса:
start_combat_time_final = (special_random(-3, 3) + start_combat_time) / revision_number

start_combat_time - константа и равна 20.

revision_number - число, зависящее от приманки. Лучше приманка - фармить рыбу можно будет быстрее.

Этот то место, где используется схожий корейский рандом, но конченный или конченый - кому как приятнее выбрать правильную часть речи:
По такой формуле (на С).

trunc(6.0 * ((double)rand() / 32767.0) - 3.0)

trunc - отбрасывает дробную часть от числа.

Такой рандом вернет 3 и -3, когда БСВ (базовая случайная величина) попадет на границы - то есть очень и очень редко. Поэтому он написал галимо и несколько ограничивает возможные варианты, благо это как бы безразлично.

А в результате получается вот что:
-3 1/32767
-2 ~1/6
-1 ~1/6
0 ~1/3
1 ~1/6
2 ~1/6
3 1/32767

Вот это действительно по-корейски.

Если же ничего не клюнуло, то об этом сообщается через 30 секунд.

У рыбы есть fish_hp.

combat_duration - параметр того, сколько дается времени на фарм. Тоже зависит от рыбы.

Каждые guts_check_time секунд рыба может изменить своё состояние. С шансом guts_check_probability устанавливается состояние guts, с шансом (100 - guts_check_probability) - устанавливается обычное состояние.
guts_check_time и guts_check_probability - опять-таки индивидуальные параметры рыбы

В состоянии guts рыба хилиться на trunc(2 * hp_regen). hp_regen - тоже константа, занесена в файлы.

Если здоровье рыбы достигает 2 * fish_hp, то фарм закончен не в вашу пользу.

Понятно, как работают Pumping и Reeling по гатсу и по обычному состоянию.

Дамаг (или хил, если не угадали):
damage = (pumping_or_reeling_parameter + expertise_parameter) * rod_damage * grade_penalty * (1 + fishshot_parameter / 100) * MIN(MAX(100 - skills_lvl_diff_penalty, 0), 100) / 100

pumping_or_reeling_parameter и expertise_parameter - константы для каждого уровня.

При прокачке выше трех считают по формуле:
1.55 + 0.15 * (skill_level - 4)

rod_damage - дамаг от удочки. Эс-грейд - 39, А-грейд 35, НГ - 20.

grade_penalty - штраф. По умолчанию его нету, то есть равен 1.0, если же есть - то 0.5 устанавливается.

fishshot_parameter - соулшот, 100 - если есть, 0 - если нету.

Если фиш экспертиза на 3 и более уровней отстала от прокачки скиллов, то:
skills_lvl_diff_penalty = 5 * (pumping_or_reeling_level - expertise_level) - 10

Скиллы Pumping и Reeling имеют 5% шанс не сработать.

стырил тут





8. Поставь себе в подпись и нас будет больше!
 
AdenCrush Дата: Среда, 02.05.2012, 07:40 | Сообщение # 2
Член семьи



Группа: Модераторы

Сообщений: 1168
« »
Бог форума За хорошую посещаемость на форуме

Статус: Offline
Не знал что место нужно менять каждые 60 забросов


Любимая музыка: нет
Любимые фильмы: нет
Любимые книги: нет
Любимые игры: lineage2
 
voin_krovi Дата: Среда, 02.05.2012, 22:35 | Сообщение # 3

-=Tpy_EE=-



Группа: Администраторы

Сообщений: 1571
« »
Бог сайта и форума За хорошую посещаемость на форуме

Статус: Offline
я тоже по ссылке в конце первого поста ещё больше интересного




8. Поставь себе в подпись и нас будет больше!
 
  • Страница 1 из 1
  • 1
Поиск:
[ Новые сообщенияУчастникиПравила форумаПоискRSS ]
Были недавно
За сегодня: 0 | За неделю: 0 | За месяц: 0