Узнать куда смотрит мой перс? / изменение вгляда при движени
Модератор: 4epT
Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Направление туловища в sendLook может быть только 0..7Click писал(а):$direction &0x07; а помоему зря пусть он 8 принимает
Тем более что 0 и 8 означают одно и то же, "не надо множить сущьностей без необходимости"
См.
sub cmdBangBang {
my $bodydir = $char->{look}{body} - 1;
$bodydir = 7 if ($bodydir == -1);
sendLook($net, $bodydir, $char->{look}{head});
}
Если переходим через 0 то идем на 7...
8 не может быть.
Да, это баг... я не корректно проверил на 0 вектор.Click писал(а):остался маленький баг:
Надо так:
if (defined vectorToDegree(\%vec)) {
my $direction = int sprintf("%.0f", (360 - vectorToDegree(\%vec)) / 45);
$char->{look}{body} = $direction & 0x07;
$char->{look}{head} = 0;
}
Это первый момент, во вторых, нельзя присваивать переменной отвечающей за поворот туловища чара значение хз где, а именно в мапвьювере, иначе будут глюки при взаимодействии с другими командами изменяющими угол поворота.
это надо вставить в обработку события чарактетер_мовед в ресиве, если хочется их иметь правильными.
А для целей просто отрисовки при движении:
не надо ничего никуда записывать, просто вычисли угол как
my %vec;
getVector(\%vec, $char->{pos_to},$char->{pos});
if (defined vectorToDegree(\%vec)) {
$t = vectorToDegree(\%vec); #угол в градусах, по часовой стрелке, 0 вверху.
}
$dc->DrawRotatedText("V", $x+4, $y, $t);
- Click
- Разработчик
- Сообщения: 1564
- Зарегистрирован: Сб ноя 04, 2006 11:30 pm
- Сервер RO:: clickro.sytes.net
- Откуда: Великий Новгород
- Контактная информация:
это всёравно считаю не правильно, так как 8 есть, а ты его просто игноришьDInvalid писал(а):$direction & 0x07;
Лучше если восемь, то делать его нулём.
это я знаю но пока не не подправят ресив думаю лучше, это уж в wx сделать ИМХО.DInvalid писал(а): нельзя присваивать переменной отвечающей за поворот туловища чара значение хз где, а именно в мапвьювере, иначе будут глюки при взаимодействии с другими командами изменяющими угол поворота.
- Click
- Разработчик
- Сообщения: 1564
- Зарегистрирован: Сб ноя 04, 2006 11:30 pm
- Сервер RO:: clickro.sytes.net
- Откуда: Великий Новгород
- Контактная информация:
Пирожок, КМ я думаю, что это нужно добавить в коруDInvalid писал(а):в 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});
+ if (defined vectorToDegree(\%vec)) {
+ my $direction = int sprintf("%.0f", (360 - vectorToDegree(\%vec)) / 45);
+ $char->{look}{body} = $direction & 0x07;
+ $char->{look}{head} = 0;
+ }
протестил всё четко работает.
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
А вот тут: http://forums.openkore.com/viewforum.php?f=6 (Developers Corner)
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
Ну я там тоже какой то фигни понаписывал, в том топике, что ты, Click, создал...
http://forums.openkore.com/viewtopic.php?t=28230
http://forums.openkore.com/viewtopic.php?t=28230
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
Оффтоп.
Click
Да я тоже английский не особо. Я короче щас тебе секретную методику расскажу.
Берешь пишешь текст, запихиваешь в автоматический переводчег.
Потом то что он напереводил, запихиваешь ему обратно, и читаешь по-русски чо получилось.
Если это нечто вообще понять можно - публикуемся. Вот такая метода!
Click
Да я тоже английский не особо. Я короче щас тебе секретную методику расскажу.
Берешь пишешь текст, запихиваешь в автоматический переводчег.
Потом то что он напереводил, запихиваешь ему обратно, и читаешь по-русски чо получилось.
Если это нечто вообще понять можно - публикуемся. Вот такая метода!