You are not logged in.
Pages: 1
Как можно вычислить проеханное на машине расстояние? (для последующего отображения на экране)
Offline
Когда-то написал скрипт, выводящий на экран скорость перемещения игрока и расстояние, на которое он переместился (Y - включить счетчик, N -выключить и обнулить счетчик).
{$CLEO} wait 0 repeat wait 0 until player.Defined($PLAYER_CHAR) while true wait 0 repeat wait 0 until 00E1: player 0 pressed_key 11 wait 0 7@ = 0.0 // перемещение игрока actor.StorePos($PLAYER_ACTOR,0@,1@,2@) // записываем координаты в переменные repeat wait 0 actor.StorePos($PLAYER_ACTOR,3@,4@,5@) // записываем новые координаты 050A: 6@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 3@ 4@ 5@ // вычисляем перемещение 005B: 7@ += 6@ // (float) - прибавляем найденное перемещение к общему перемещению 0087: 0@ = 3@ // (float) - меняем старые значения координат на новые 0087: 1@ = 4@ // (float) 0087: 2@ = 5@ // (float) 0092: 8@ = float 7@ to_integer 06AC: 9@ = actor $PLAYER_ACTOR movement_speed 0092: 10@ = float 9@ to_integer 03F0: enable_text_draw 1 045A: draw_text_1number 5.0 5.0 GXT 'NUMBER' number 8@ 045A: draw_text_1number 5.0 20.0 GXT 'NUMBER' number 10@ until 00E1: player 0 pressed_key 10 // повторяем цикл, пока не нажата кнопка end
Если надо сделать, чтобы код работал только в машине, то надо добавить соответствующие проверки.
Offline
Спасибо!
Методом проб и ошибок, нашёл, что чтобы получить расстояние в километрах, надо разделить на 16 (по спидометру, тут где-то был выложен, скорость машны умножается на 3,7) - насколько это точно?
Last edited by WinuX (28-11-2009 21:03)
Offline
Единицы скорости и перемещения, используемые в скриптах - м/с и м. Чтобы выводить на экран скорость в км/ч, надо домножить значение на 3,6 перед округлением. Чтобы выводить перемещение в км, надо делить значение на 1000 перед округлением.
Offline
надо делить значение на 1000 перед округлением.
да нуу, много слишком, пусть будет 16
Offline
050A: 6@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 3@ 4@ 5@ // вычисляем перемещение
6@ *= 3.6 //////////////////////////////Чтобы сделать не мили, а километры в час, нужно вот это добавить между двумя строчками?
005B: 7@ += 6@ // (float) - прибавляем найденное перемещение к общему перемещение
Offline
050A: 6@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 3@ 4@ 5@ // вычисляем перемещение
6@ *= 3.6 //////////////////////////////Чтобы сделать не мили, а километры в час, нужно вот это добавить между двумя строчками?005B: 7@ += 6@ // (float) - прибавляем найденное перемещение к общему перемещение
стоп, стоп. мне нужна не скорость, а расстояние. Оно по умолчанию в чём?
Offline
короче не знаю, в чём оно, но чтобы километры получить, надо это что-то разделить на 16,8 (примерно)
стоп, или это спидометр брешет?
да нет, спидометр не брешет.
за час движения со скоростью 20 километров в час игрок пробегает 336 чего-то там
Last edited by WinuX (29-11-2009 11:15)
Offline
Я тебя не спрашиваю, с спрашиваю автора: Правильно ли я вставил, чтобы получить километры, а не мили?
Offline
Offline
050A: 6@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 3@ 4@ 5@ // вычисляем перемещение
6@ *= 3.6 //////////////////////////////Чтобы сделать не мили, а километры в час, нужно вот это добавить между двумя строчками?005B: 7@ += 6@ // (float) - прибавляем найденное перемещение к общему перемещение
Чтобы скорость выводилась в км/ч, а не в метрах в секунду, надо так сделать:
06AC: 9@ = actor $PLAYER_ACTOR movement_speed // значение записывается в метрах в секунду 9@ *= 3.6 // здесь домножаем (1 м/с = 3.6 км/ч) 0092: 10@ = float 9@ to_integer
за час движения со скоростью 20 километров в час игрок пробегает 336 чего-то там
Ты о внутриигровом времени говоришь? Я говорю о реальном времени.
Last edited by Den_spb (29-11-2009 13:09)
Offline
мда, видимо, ничего хорошего не получится из этой затеи. Всё время несостыковки получаются.
Offline
Ден, а откуда это число? Просто когда я бегу, у меня показывает 40 км/ч, разве это реально?
Offline
Присмотрись внимательнее: игрок на самом деле бежит нереально быстро, это относится и к езде на велосипеде (80 км/ч). То, что опкод выводит скорость в метрах в секунду, подтверждено экспериментами, в том числе и моими.
Last edited by Den_spb (30-11-2009 13:58)
Offline
Pages: 1