Узнать куда смотрит мой перс? / изменение вгляда при движени
Модератор: 4epT
Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
- Click
- Разработчик
- Сообщения: 1564
- Зарегистрирован: Сб ноя 04, 2006 11:30 pm
- Сервер RO:: clickro.sytes.net
- Откуда: Великий Новгород
- Контактная информация:
Узнать куда смотрит мой перс? / изменение вгляда при движени
лучше всего получить угол поворота тела относительно карты
Что значит нифига?Click писал(а):смотрелkLabMouse писал(а):Click
Смотри откудова передаётся значение в sendLook.
Вроде искать нуно здесь:
$char->{look}{head}
$char->{look}{body}
если брать у плеера то работает, а у чара нифига, странно
Проверяю у себя:
look 1
eval (message($char->{look}{body}."\n"))
[console] 1
look 2
eval (message($char->{look}{body}."\n"))
[console] 2
look 4
eval (message($char->{look}{body}."\n"))
[console] 4
look 0
eval (message($char->{look}{body}."\n"))
[console] 0
bangbang
eval (message($char->{look}{body}."\n"))
[console] 7
bangbang
eval (message($char->{look}{body}."\n"))
[console] 6
bangbang
eval (message($char->{look}{body}."\n"))
[console] 5
bangbang
eval (message($char->{look}{body}."\n"))
[console] 4
Угу... не меняется.Click писал(а):если задаешь значение, то оно ему и будет равняться и не изменяться пока опять не задашь
тоесть если написал look 1, то $char->{look}{body} так всегда и будет равняться 1 пока не напишешь look 2 или тп.
проверял, при ходьбе в разные стороны значение не меняется
Меняеться только когда отсылаются пакеты sendLook
Надо вычислять их кстати при перемещении и обновлять...
Я думаю что это можно сделать в sub character_moves # Recieve.pm
...
my $dist = sprintf("%.1f", distance($char->{pos}, $char->{pos_to}));
debug "You're moving from ($char->{pos}{x}, $char->{pos}{y}) to ($char->{pos_to}{x}, $char->{pos_to}{y}) - distance $dist, unknown $args->{unknown}\n", "parseMsg_move";
$char->{time_move} = time;
# Correct the direction in which we're looking
my %vec;
getVector(\%vec, $char->{pos_to},$char->{pos});
my $direction = int sprintf("%.0f", (360 - vectorToDegree(\%vec)) / 45);
$char->{look}{body} = $direction;
$char->{look}{head} = 0;
0 вверх далее против часовой стрелки через 45 градусов,Click писал(а):возник маленький вопросик когда $char->{look}{body} eq 0 , то это в какую сторону перс смотрит?
хех, ещё косяк, когда перс завершает движение то он начинает смотреть на 8 вверх (север)
нашел почему: когда перс прибывает в конечную точку vectorToDegree(\%vec) принимает пустое значение "" не 0
__0__
_1..7_
2......6
_3..5_
__4__
Видимо когда он прибывает в конечную точку, то координаты "откуда" и "куда" совпадают = мы имеем нулевой вектор.
Добавим условие - если vectorToDegree(\%vec) определен, то устанавливаем переменные - если нет - то нет.
if (vectorToDegree(\%vec)) {
my $direction = int sprintf("%.0f", (360 - vectorToDegree(\%vec)) / 45);
$char->{look}{body} = $direction;
$char->{look}{head} = 0;
}