You are not logged in.
Pages: 1
Всем привет, я начинающий скриптер (клео) и хотел бы создать хелсометр транспортного средства, т.е. красную полоску, отображающую здоровье машины. Размещение на экране не важно. Если кто-то может, напишите скрипт с подробными (ну, простейшее можно не объяснять
) комментариями каждой строки. Заранее спасибо.
Offline
я подробно описать не могу, так как скрипт не мой, но выложу
thread 'CarWr'
{$CLEO}
wait 3500
:Begin
var
$PLAYER_CHAR: Player
$PLAYER_ACTOR: Actor
0@: Float // Переменная в процентах, 100.0 - max
1@: Float
2@: Float //X
3@: Float //Scale X
5@: Integer
6@: Integer
7@: Integer
8@: Integer
10@: Car
end
0@ = 100.0
while true
if $PLAYER_CHAR.Defined
then
if $PLAYER_ACTOR.Driving
then
03c0: 10@ = actor $PLAYER_ACTOR car
while $PLAYER_ACTOR.InCar(10@)
0@ = 10@.Health
{0@ -= 1
10@.Health = 0@}
0093: 0@ = integer 0@ to_float
0@ -= 250.0
if 0@ < 0.0
then
0@ = 0.0
end
if 0@ >= 750.0
then
0@ = 749.9
end
3@ = 0@
3@ /= 750.0
3@ *= 250.0 // Масштаб по X
2@ = 3@
2@ /= 2.0
2@ += 209.0 // X координата левого края
0@ /= 2.9411764705882352
0092: 7@ = float 0@ to_integer
if 7@ > 127
then
8@ = 255
7@ -= 127
7@ *= -2
7@ += 255
0513: show_text_box_1number 'NUMBER' number 7@
else
8@ = 7@
8@ *= 2
7@ = 255
end
5@ = 7@
6@ = 8@
5@ *= 0.5
6@ *= 0.5
03F0: enable_text_draw 1
038E: draw_box_position 334.0 409.27 size 254.0 14.0 RGBA 0 0 0 255
038E: draw_box_position 334.0 409.27 size 250.0 8.4 RGBA 5@ 6@ 0 255
038E: draw_box_position 2@ 409.27 size 3@ 8.4 RGBA 7@ 8@ 0 255
wait 0
end //While
10@.RemoveReferences
end // if Driving
end // if Def
wait 0
end
100 постов - 27 августа;
Offline
нафига ты начинающему такой сложный даёшь?)))
попроще дам:
{$VERSION 3.1.0027} //нужная фигня
{$CLEO .cs} //нужная фигня
0000: NOP //нужная фигня
thread 'CHEALBR' //обзываем поток(не обязательно)
:def
wait 0
if and
0256: player $PLAYER_CHAR defined //Проверка на созданность игрока
00DF: actor $PLAYER_ACTOR driving //Проверка на то что игрок за рулём
847A: not actor $PLAYER_ACTOR driving_bike //у великов здоровье не тратится
8241: not player $PLAYER_CHAR in_remote_mode //и у игрушек тоже
jf @def
03C0: 0@ = actor $PLAYER_ACTOR car //заносим машину игрока в переменную
:end
wait 0
0227: 1@ = car 0@ health //получаем её здоровье
008F: 1@ = integer 1@ to_float //превращаем число из целого в десятичное
1@ /= 7.5 //это для ровности чисел....изначально у машины здоровье = 750
03E3: set_texture_to_be_drawn_antialiased 1 //это чтобы нарисованное на экране нормально отображалось
038E: draw_box_position 320.0 400.0 size 1@ 10.0 RGBA 255 0 0 255 //выводим красный прямоугольничег с заданной шириной
03F0: enable_text_draw 0 //убираем прямоугольничег
if
80DF: not actor $PLAYER_ACTOR driving //проверка на то что игрок вылез из машины
jf @end //если нет, снова и снова показываем здоровье
01C3: remove_references_to_car 0@ //освобождаем память от хендла машины
jump @def //в начало
GIMS developer
Offline
А как сделать чтоб справа налево полоса уменьшалась?
Offline
Offline
Вах, спасибо всем)))
Ну я не совсем начинающий, уже несколько скриптов простеньких есть, в том числе и для сампа(угу, не говорите что клео не умеет определять игроков сампа
). Буду копить опыт, может со временем склею нечто действительно интересное))
EDIT______________________
сделал небольшой апдейт, по идее можно перемещать хелсбар нажатием H + стрелка вверх, вниз, влево, вправо, но чото непашет, в чем ошибка?
{$VERSION 3.1.0027}
{$CLEO .cs}
thread 'HP_meter'
1@ = 304477 //up, hi
2@ = 304478 //down, lo
3@ = 304478 //left, hi
4@ = 304479 //right, lo
6@ = 320.0 //iznachalno, x
7@ = 400.0 //iznachalno, y
8@ = 304538 //H, lo
:hp
wait 0
if and
0256: player $PLAYER_CHAR defined
00DF: actor $PLAYER_ACTOR driving
8241: not player $PLAYER_CHAR in_remote_mode
jf @hp
03C0: 0@ = actor $PLAYER_ACTOR car
:hp1
wait 0
0227: 5@ = car 0@ health
008F: 5@ = integer 5@ to_float
5@ /= 7.5
03E3: set_texture_to_be_drawn_antialiased 1
038E: draw_box_position 6@ 7@ size 1@ 10.0 RGBA 255 0 0 255
03F0: enable_text_draw 0
if
80DF: not actor $PLAYER_ACTOR driving
jf @hp1
01C3: remove_references_to_car 0@
:hp2_up
wait 10
if and
&0(1@,1i) == 0x00FF0000
&0(8@,1i) == 0xFF
jf @hp
7@ += 5
wait 10
:hp2_down
if and
&0(2@,1i) == 0xFF
&0(8@,1i) == 0xFF
jf @hp
7@ -= 5
wait 10
:hp2_left
if and
&0(3@,1i) == 0x00FF0000
&0(8@,1i) == 0xFF
jf @hp
6@ -= 5
wait 10
:hp2_right
if and
&0(4@,1i) == 0xFF
&0(8@,1i) == 0xFF
jf @hp
6@ += 5
wait 100
jump @hp
Last edited by Wire (19-08-2009 20:52)
Offline
оххх, я бы рад, так если б он у меня работал)
0AB0: key_pressed 0 такаято - непашет(
Offline
Offline
в справке к СБ смотри CLEO-> список значений кнопок
и коды можно писать не только в HEX но и в decimal
что для меня проще
хотя различий нет
100 постов - 27 августа;
Offline
а как сделать черный ободок вокруг полоски?
нашел какойто опкод, нето?
0937: text_draw_box_cornerA 62@ 74@ cornerB 86@ 98@ GXT_reference 'DUMMY' style 0
Offline
Offline
я не понял, что здесь означают переменные)
Offline
а ты создавай черный кубик чуть больше хеалз бара и размещай влево и повыше, будет как ободок 
100 постов - 27 августа;
Offline
а ты создавай черный кубик чуть больше хеалз бара и размещай влево и повыше, будет как ободок
Так и есть в первом скрипте)
Offline
я знаю 
100 постов - 27 августа;
Offline
спасибо всем, и отдельное 3думеру за руководство по асе)))
сделал наконецто, вот кому нужно:
http://dump.ru/file/3271463
Offline
тебе надо у великов здоровье убрать, потому что велики неуязвимы 
100 постов - 27 августа;
Offline
Pages: 1