Страница 1 из 2

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

Добавлено: Вс янв 21, 2007 5:28 pm
Click
лучше всего получить угол поворота тела относительно карты

Добавлено: Вс янв 21, 2007 9:02 pm
piroJOKE
"получить" - кому, в каком виде, для чего?

Добавлено: Вс янв 21, 2007 9:11 pm
kLabMouse
Click
Я чесно не догнал Зачем? Вообще-то в Коре есть две переменные $head и $body которые указывают куда мы смотрим.

Добавлено: Вс янв 21, 2007 9:24 pm
Click
неправильно задал вопрос

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

хочу сделать чтоб на карте направление чара отображалось)

Добавлено: Вс янв 21, 2007 9:26 pm
kLabMouse
Click
Смотри откудова передаётся значение в sendLook.

Вроде искать нуно здесь:
$char->{look}{head}
$char->{look}{body}

Добавлено: Вс янв 21, 2007 9:28 pm
Click
kLabMouse писал(а):Click
Смотри откудова передаётся значение в sendLook.

Вроде искать нуно здесь:
$char->{look}{head}
$char->{look}{body}
смотрел
если брать у плеера то работает, а у чара нифига, странно

Добавлено: Вс янв 21, 2007 9:38 pm
kLabMouse
Click
Видимо где-то ещё собака зарыта.

Добавлено: Вс янв 21, 2007 10:04 pm
piroJOKE
Флуд: вообще look имхо всегда работал и работает с багами...

Добавлено: Вс янв 21, 2007 10:38 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

Добавлено: Сб янв 27, 2007 12:28 am
Click
если задаешь значение, то оно ему и будет равняться и не изменяться пока опять не задашь
тоесть если написал look 1, то $char->{look}{body} так всегда и будет равняться 1 пока не напишешь look 2 или тп.
проверял, при ходьбе в разные стороны значение не меняется

Добавлено: Сб янв 27, 2007 1:09 am
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;

Добавлено: Сб янв 27, 2007 3:09 am
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;

нужно попросить, чтобы вот эти вот строчки нужно добавили в кору
Кто бы этим занялся?)

Добавлено: Сб янв 27, 2007 3:16 am
Click
возник маленький вопросик когда $char->{look}{body} eq 0 , то это в какую сторону перс смотрит?

хех, ещё косяк, когда перс завершает движение то он начинает смотреть на 8 вверх (север)
нашел почему: когда перс прибывает в конечную точку vectorToDegree(\%vec) принимает пустое значение "" не 0

Добавлено: Сб янв 27, 2007 9:36 am
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;
}

Добавлено: Сб янв 27, 2007 2:59 pm
Click
DInvalid писал(а): 0 вверх далее против часовой стрелки через 45 градусов,
__0__
_1..7_
2......6
_3..5_
__4__
он ещё и 8 принимает