Узнать куда смотрит мой перс? / изменение вгляда при движени

Общие вопросы по OpenKore обсуждаются здесь. Можно сказать, что это - основной раздел форума.
Возник вопрос? Вам сюда.

Модератор: 4epT

Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Узнать куда смотрит мой перс? / изменение вгляда при движени

Сообщение Click »

лучше всего получить угол поворота тела относительно карты
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

"получить" - кому, в каком виде, для чего?
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

Click
Я чесно не догнал Зачем? Вообще-то в Коре есть две переменные $head и $body которые указывают куда мы смотрим.
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

неправильно задал вопрос

$head и $body можно получить у плаера который рядом, а мне нужно узнать значения боди моего чара
что-то постоянно пустое значение вытягию из коры

хочу сделать чтоб на карте направление чара отображалось)
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

Click
Смотри откудова передаётся значение в sendLook.

Вроде искать нуно здесь:
$char->{look}{head}
$char->{look}{body}
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

kLabMouse писал(а):Click
Смотри откудова передаётся значение в sendLook.

Вроде искать нуно здесь:
$char->{look}{head}
$char->{look}{body}
смотрел
если брать у плеера то работает, а у чара нифига, странно
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

Click
Видимо где-то ещё собака зарыта.
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Флуд: вообще look имхо всегда работал и работает с багами...
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid »

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
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

если задаешь значение, то оно ему и будет равняться и не изменяться пока опять не задашь
тоесть если написал look 1, то $char->{look}{body} так всегда и будет равняться 1 пока не напишешь look 2 или тп.
проверял, при ходьбе в разные стороны значение не меняется
DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid »

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;
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

+ 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;

нужно попросить, чтобы вот эти вот строчки нужно добавили в кору
Кто бы этим занялся?)
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

возник маленький вопросик когда $char->{look}{body} eq 0 , то это в какую сторону перс смотрит?

хех, ещё косяк, когда перс завершает движение то он начинает смотреть на 8 вверх (север)
нашел почему: когда перс прибывает в конечную точку vectorToDegree(\%vec) принимает пустое значение "" не 0
DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid »

Click писал(а):возник маленький вопросик когда $char->{look}{body} eq 0 , то это в какую сторону перс смотрит?

хех, ещё косяк, когда перс завершает движение то он начинает смотреть на 8 вверх (север)
нашел почему: когда перс прибывает в конечную точку vectorToDegree(\%vec) принимает пустое значение "" не 0
0 вверх далее против часовой стрелки через 45 градусов,
__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;
}
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

DInvalid писал(а): 0 вверх далее против часовой стрелки через 45 градусов,
__0__
_1..7_
2......6
_3..5_
__4__
он ещё и 8 принимает
Ответить