#1 Re: Вопросы по скриптингу » Один вопрос » 07-01-2011 15:05

Подскажите плиз, как можно проверить столкнулась ли машина с чем либо?
Нашел тоько вот этот опкод:

0897:   car 96@ collided_with_object 282@(42@,10i)

#2 Re: Вопросы по скриптингу » Угол повората "на ходу" » 06-01-2011 15:57

ой smile ну я стормозил...
Den_spb большое тебе спасибо)

#3 Re: Вопросы по скриптингу » Угол повората "на ходу" » 06-01-2011 15:12

Вот смотри, даже скриншот прилепил)

0A97: 2@ = car 1@ struct
0A8E: 3@ = 2@ + 68 // int
0A8E: 4@ = 3@ + 72 // int
0A8D: 3@ = read_memory 3@ size 4 virtual_protect 0
0A8D: 3@ = read_memory 4@ size 4 virtual_protect 0
0604: get_Z_angle_for_point 3@ 4@ store_to 5@ // возвращает угол между вектором {x;y} и глобальной осью Y
0092: 7@ = float 5@ to_integer 
  
03F0: enable_text_draw 1 
03E3: set_texture_to_be_drawn_antialiased 1 
038D: draw_texture 44 position 320.00 407.40 size 180.0 176.13 RGBA 255 255 255 255
03E3: set_texture_to_be_drawn_antialiased 1
074B: draw_texture 45 position 320.00 407.40 size 180.0 177.13 angle 5@ RGBA 255 255 255 255   
03E3: set_texture_to_be_drawn_antialiased 1
0340: set_text_draw_RGBA 180 180 180 255 
033F: set_text_draw_letter_size 0.7 2.6 
045A: draw_text_1number 320.00 407.40 GXT 'NUMBER' number 5@

076689cc6114t.jpg
Как не крутил машину, как не ездил, цыфры не изменились.

#4 Re: Вопросы по скриптингу » Угол повората "на ходу" » 06-01-2011 10:24

Den_spb  Опкод

 0604: get_Z_angle_for_point 2@ 3@ store_to 4@

возвращает постоянное число 270, которое всю игру одно и тоже, и от этого числа отнимаешь угол машины. Я ещё новичок и жестко туплю, но если вычислять угол между вектором скорости и направлением машины, угол должен быть не больше ±90 градусов.
Зачем нужно отнимать угол машины? Проблема в опкоде 0604, или я такой дурак, что он мне всегда выдает 270?

#5 Re: Вопросы по скриптингу » Угол повората "на ходу" » 05-01-2011 13:37

Заменил на локальные, заметил что  число меняется, но на очень маленькие числа, гдето около миллионных или даже бальше.

#6 Re: Вопросы по скриптингу » Угол повората "на ходу" » 05-01-2011 11:58

car.StorePos(1@,$X,$Y,$Z) 
  
0A8E: 4@ = $Y + 72.00

0604: get_Z_angle_for_point 4@ $Y store_to 5@

Селал вот так, но вычисления дают постоянное число. $Y и 4@ изменяются, проверял, а вот число после вычислений опкодом всегда одно...

#8 Re: Вопросы по скриптингу » Угол повората "на ходу" » 04-01-2011 16:51

Просмотрел все опкоды со словом car, вектора скорости вроде как нет. Нашел вот эти опкоды:

06BE: 274@ = car 95@ y_angle 
car.StorePos($Car,$X,$Y,$Z) - записать координаты машины в переменные $X, $Y и $Z
077D: $7513 = car 35@ x_angle 
083F: get_car 35@ vertical_deviation_to $7522

Как можно вычислиь
[q]угол отклонения продольной оси машины от вектора её скорости[/q] ?
Прошу прощенья за возможно глупый вопрос, заранее спасибо.

#9 Re: Вопросы по скриптингу » Угол повората "на ходу" » 04-01-2011 14:19

Проблема в том, что мне надо заставить стрелку двигаться с одним углом, как и машина, а так она стоит в одной позиции, которую мы задали. Как можно сделать, чтобы данные обновлял каждую секунду, ну или после нажатия на кнопки поворота??

#10 Вопросы по скриптингу » Угол повората "на ходу" » 04-01-2011 12:50

art-race74@yandex.ru
Replies: 17

Прошу помочь в написании скрипта. Смысл в том, что нужно отображать угол поворота на экране. График олжен поддерживать токо половину круга. Как вывести угол я разобрался, но как сделать так, чтобы Показывало только угол в зоне от (90;270)?? Стрелка показывающая угол, направлена вверх (в игре 180 градусов), при повороте направо отклоняется направо, налево-налево, потом возвращается в начальную позицию.
Вот,  настрочил, но не хочет отображаться(знаю, что оч коряво, я новичок):

{$CLEO}
0000:

:DRIFT1
wait 0
if and
   Actor.Driving($PLAYER_ACTOR)
  $ACTIVE_INTERIOR == 0 
  0038: $ONMISSION == 0
84C8:   not actor $PLAYER_ACTOR driving_flying_vehicle 
84A7:   not actor $PLAYER_ACTOR driving_boat 

jf @DRIFT1
0811: 1@ = actor $PLAYER_ACTOR car
0390: load_txd_dictionary 'DRIFT'
038F: load_texture "grad" as 44
038F: load_texture "ukaz" as 45
wait 1000
jump @DRIFT4

:DRIFT4
wait 0
if and
Actor.Driving($PLAYER_ACTOR)
$ACTIVE_INTERIOR == 0 
jf @DRIFT3       
0174: 18@ = car 1@ Z_angle    
0092: 27@ = float 18@ to_integer  
while true
wait 0
 if 27@ > 180
 then 
  if 27@ < 270
  then 
  0092: 16@ = float 27@ to_integer
  Break
  else
   if 27@ < 360
   then
   0A8F: 16@ = 27@ - 90.00
   Break
   else
   16@ = 180.00
   Break
   end
 else
 0A8F: 16@ = 27@ + 90.00
 Break
  end
 end
end
wait 0
03F0: enable_text_draw 1 
03E3: set_texture_to_be_drawn_antialiased 1 
038D: draw_texture 44 position 320.00 407.40 size 180.0 176.13 RGBA 255 255 255 255
03E3: set_texture_to_be_drawn_antialiased 1
074B: draw_texture 45 position 320.00 407.40 size 180.0 177.13 angle 16@ RGBA 255 255 255 255   
03E3: set_texture_to_be_drawn_antialiased 1
0340: set_text_draw_RGBA 180 180 180 255 
033F: set_text_draw_letter_size 0.7 2.6 
045A: draw_text_1number 320.00 407.40 GXT 'NUMBER' number 27@      
jump @DRIFT4

:DRIFT3
wait 0 
03F0: enable_text_draw 0 
0391: release_txd_dictionary
jump @DRIFT1

end_thread

Board footer

Powered by FluxBB