#1 19-08-2009 16:29

Wire
From: Днепр
Registered: 19-08-2009
Posts: 56

Хелсометр веникла

Всем привет, я начинающий скриптер (клео) и хотел бы создать хелсометр транспортного средства, т.е. красную полоску, отображающую здоровье машины. Размещение на экране не важно. Если кто-то может, напишите скрипт с подробными (ну, простейшее можно не объяснять grin) комментариями каждой строки. Заранее спасибо.

Offline

#2 19-08-2009 17:38

PIT
Registered: 08-09-2008
Posts: 224

Re: Хелсометр веникла

я подробно описать не могу, так как скрипт не мой, но выложу
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

#3 19-08-2009 18:18

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Хелсометр веникла

нафига ты начинающему такой сложный даёшь?)))
попроще дам:

{$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

#4 19-08-2009 19:37

bsstell
Registered: 05-08-2009
Posts: 25

Re: Хелсометр веникла

А как сделать чтоб справа налево полоса уменьшалась?

Offline

#5 19-08-2009 19:41

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Хелсометр веникла

Дык вроде тока направо.

Offline

#6 19-08-2009 20:10

Wire
From: Днепр
Registered: 19-08-2009
Posts: 56

Re: Хелсометр веникла

Вах, спасибо всем)))
Ну я не совсем начинающий, уже несколько скриптов простеньких есть, в том числе и для сампа(угу, не говорите что клео не умеет определять игроков сампа grin). Буду копить опыт, может со временем склею нечто действительно интересное))


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

#7 20-08-2009 00:37

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Хелсометр веникла

первая ошибка в неправильном методе обработки нажатий...используй просто опкод 0AB0\
остальные искать влом))


GIMS developer

Offline

#8 20-08-2009 08:24

Wire
From: Днепр
Registered: 19-08-2009
Posts: 56

Re: Хелсометр веникла

оххх, я бы рад, так если б он у меня работал)
0AB0: key_pressed 0 такаято    -     непашет(

Offline

#9 20-08-2009 08:39

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Хелсометр веникла

0AB0: key_pressed 0x(код_клавиши)

Offline

#10 20-08-2009 08:46

PIT
Registered: 08-09-2008
Posts: 224

Re: Хелсометр веникла

в справке к СБ смотри CLEO-> список значений кнопок
и коды можно писать не только в HEX но и в decimal
что для меня проще
хотя различий нет


100 постов - 27 августа;

Offline

#11 20-08-2009 10:04

Wire
From: Днепр
Registered: 19-08-2009
Posts: 56

Re: Хелсометр веникла

а как сделать черный ободок вокруг полоски?
нашел какойто опкод, нето?

0937: text_draw_box_cornerA 62@ 74@ cornerB 86@ 98@ GXT_reference 'DUMMY' style 0

Offline

#12 20-08-2009 11:04

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Хелсометр веникла

Побалуйся со значением style

Offline

#13 20-08-2009 11:53

Wire
From: Днепр
Registered: 19-08-2009
Posts: 56

Re: Хелсометр веникла

я не понял, что здесь означают переменные)

Offline

#14 20-08-2009 16:29

PIT
Registered: 08-09-2008
Posts: 224

Re: Хелсометр веникла

а ты создавай черный кубик чуть больше хеалз бара и размещай влево и повыше, будет как ободок smile


100 постов - 27 августа;

Offline

#15 20-08-2009 23:26

bsstell
Registered: 05-08-2009
Posts: 25

Re: Хелсометр веникла

PIT wrote:

а ты создавай черный кубик чуть больше хеалз бара и размещай влево и повыше, будет как ободок smile

Так и есть в первом скрипте)

Offline

#16 21-08-2009 07:54

PIT
Registered: 08-09-2008
Posts: 224

Re: Хелсометр веникла

я знаю grin


100 постов - 27 августа;

Offline

#17 21-08-2009 08:26

Wire
From: Днепр
Registered: 19-08-2009
Posts: 56

Re: Хелсометр веникла

спасибо всем, и отдельное 3думеру за руководство по асе)))
сделал наконецто, вот кому нужно:
http://dump.ru/file/3271463

Offline

#18 21-08-2009 08:38

PIT
Registered: 08-09-2008
Posts: 224

Re: Хелсометр веникла

тебе надо у великов здоровье убрать, потому что велики неуязвимы lol


100 постов - 27 августа;

Offline

Board footer

Powered by FluxBB