#1 08-08-2010 18:56

[ED]Andr
Registered: 24-07-2010
Posts: 17

Здоровье шины

Всем привет,мне нужна ваша помощь,я делаю скрипт здоровье шин,вроде бы всё сделал,но почему-то цыфры выходят очень большие,в минусе,и одни цыфры наложены на другие,и в итоге получается не цыфры,а каша,сам проблему я не могу найти,прошу помогите,как сделать текст(цыфры) нормальным.

{$CLEO .cs}

//-------------MAIN---------------
thread "HEALTH_TIRE" 
33@ = 1000 

:HEALTH_TIRE_23
wait 1 
if 
   Player.Defined($PLAYER_CHAR)
else_jump @HEALTH_TIRE_23 
if 
   Actor.Driving($PLAYER_ACTOR)
else_jump @HEALTH_TIRE_23 
03C0: 5@ = actor $PLAYER_ACTOR car 
03E4: enable_text_draw_align_right 1 
033F: set_text_draw_letter_size 0.5 0.8 
0340: set_text_draw_RGBA 180 25 29 255 
081C: draw_text_outline 1 RGBA 0 0 0 55 
045A: draw_text_1number 559.0 98.0 GXT 'NUMBER' number 33@  // ~1~
if 
00E1:   player 0 pressed_key 6 
else_jump @HEALTH_TIRE_230 
33@ -= 1 
jump @HEALTH_TIRE_23 

:HEALTH_TIRE_162
wait 0 
if 
   not Actor.Driving($PLAYER_ACTOR)
else_jump @HEALTH_TIRE_162 
03F0: enable_text_draw 0 
Car.RemoveReferences(5@)
33@ = 1000 
jump @HEALTH_TIRE_23 

:HEALTH_TIRE_206
wait 0 
Car.RemoveReferences(5@)
33@ = 1000 
jump @HEALTH_TIRE_23 

:HEALTH_TIRE_230
wait 0 
if and
00E1:   player 0 pressed_key 16 
00E1:   player 0 pressed_key 14 
else_jump @HEALTH_TIRE_271 
33@ -= 2 
jump @HEALTH_TIRE_23 

:HEALTH_TIRE_271
wait 0 
0209: 19@ = random_int_in_ranges 0 10000 
if 
  19@ == 5 
else_jump @HEALTH_TIRE_23 
33@ -= 1 
jump @HEALTH_TIRE_23 

:HEALTH_TIRE_317
wait 0 
if 
   not 33@ >= 300 
else_jump @HEALTH_TIRE_317 
066B: 24@ = attach_particle "PRT_SMOKE_HUGE" to_car 5@ with_offset 1.0 -1.0 0.0 flag 1 
064C: make_particle 24@ visible 
066B: 25@ = attach_particle "PRT_SMOKE_HUGE" to_car 5@ with_offset -1.0 -1.0 0.0 flag 1 
064C: make_particle 25@ visible 
jump @HEALTH_TIRE_439 

:HEALTH_TIRE_439
wait 0 
if 
  33@ >= 300 
else_jump @HEALTH_TIRE_439 
0650: destroy_particle 24@ 
0650: destroy_particle 25@ 

:HEALTH_TIRE_472
wait 0 
if 
   not 33@ >= 1 
else_jump @HEALTH_TIRE_472 
if 
8496:   not tire 3 on_car 5@ deflated 
else_jump @HEALTH_TIRE_472 
0496:   tire 3 on_car 5@ deflated 
jump @HEALTH_TIRE_526 

:HEALTH_TIRE_526
wait 0 
if 
8496:   not tire 4 on_car 5@ deflated 
else_jump @HEALTH_TIRE_526 
0496:   tire 3 on_car 5@ deflated 
jump @HEALTH_TIRE_472 

:HEALTH_TIRE_562
wait 0 
16@ = Car.Health(5@)
if 
  16@ >= 1000 
else_jump @HEALTH_TIRE_562 
jump @HEALTH_TIRE_206

Offline

#2 09-08-2010 17:04

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

Re: Здоровье шины

омг что за бред?)) зачем случайные числа, вычитание из 1000...у шин нет здоровья, шина или есть, или её нету...
код ужас...метки, метки, метки...
цифры большие, потому что написано херовато grin

я так понял, ты хочешь убавлять мнимое здоровье шин при езде/сильнее при пробуксовке, а потом взрывать их? ну, это можно было и попроще сделать...

и ещё, для взрыва шины лучше использовать не проверочный опкод 0496, а предназначенный для этого...не помню, какой, поищи по слову "tire" со словарём в руке)))

и имя потока задавать не обязательно, но если уж делаешь, оно не должно превышать 7 символов

и ещё, неплохо бы привязывать дым прямо к колёсам, а не тупо на шару +1 -1 от центра машины...хотя, надо будет из памяти их координаты читать, а это уже сложнее))

вот так бы сделал я...если что непонятно, спрашивай:crazy:

{$CLEO .cs}
wait 1000
while true
    wait 100
    while Player.Defined($PLAYER_CHAR)
        wait 100
        while Actor.Driving($PLAYER_ACTOR)
            wait 100
            1@=1000.0
            5@=0
            6@=0
            03C0: 0@ = actor $PLAYER_ACTOR car 
            if and
                0496:   tire 1 on_car 0@ deflated 
                0496:   tire 3 on_car 0@ deflated 
            then
                1@=0
            end
            while Actor.Driving($PLAYER_ACTOR)
                wait 0
                gosub @drawtext
                while 00E1:   player 0 pressed_key 6 
                    wait 0
                    gosub @drawtext
                    gosub @getspeed
                    if
                        2@>20
                    then
                        1@-=1.0
                    end
                end
                if and
                    00E1:   player 0 pressed_key 16
                    00E1:   player 0 pressed_key 14 
                then
                    gosub @getspeed
                    if
                        2@<3
                    then
                        1@-=2.0
                    end
                end
                if and
                    6@==0
                    1@<1.0
                then
                    04FE: deflate_tire 1 on_car 0@ 
                    04FE: deflate_tire 3 on_car 0@
                    6@=1
                end
                if and 
                    5@==0
                    1@<=300.0
                then
                    066B: 3@ = attach_particle "prt_smokeII_3_expand" to_car 0@ with_offset 1.0 -1.0 -0.5 flag 1 
                    066B: 4@ = attach_particle "prt_smokeII_3_expand" to_car 0@ with_offset -1.0 -1.0 -0.5 flag 1 
                    064C: make_particle 3@ visible
                    064C: make_particle 4@ visible 
                    5@=1
                end
                if
                    6@==1
                then
                    1@=0.0
                end
            end //driving cycle
            if
                5@==1
            then
                0650: destroy_particle 3@
                0650: destroy_particle 4@
            end
            064F: remove_references_to_particle 3@ 
            064F: remove_references_to_particle 4@ 
            01C3: remove_references_to_car 0@
        end //in car
    end //pldef
end //cycle

:getspeed
02E3: 2@ = car 0@ speed
2@*=3.6
0092: 2@ = float 2@ to_integer
return

:drawtext
03E4: enable_text_draw_align_right 1 
033F: set_text_draw_letter_size 0.5 0.8 
0340: set_text_draw_RGBA 180 25 29 255 
081C: draw_text_outline 1 RGBA 0 0 0 55 
0092: 7@ = float 1@ to_integer
045A: draw_text_1number 559.0 98.0 GXT 'NUMBER' number 7@
03F0: enable_text_draw 0 
return

Last edited by 3Doomer (09-08-2010 19:58)


GIMS developer

Offline

#3 09-08-2010 19:42

[ED]Andr
Registered: 24-07-2010
Posts: 17

Re: Здоровье шины

Да чё тут спрашивать,что бы ты снова начал осуждать,и вообще я в скриптинге 1 мес и не знаю Then,end и т.п,и ещё я всё сам сделал,я поменял локальную переменную,на глобальную(и ещё пару вещей),и всё ок стало.

Offline

#4 09-08-2010 19:59

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

Re: Здоровье шины

ну вот, учись, совершенствуйся, then..end и пр. конструкции легче понять, причём не только разработчику, но и посторонним людям...


GIMS developer

Offline

#5 10-08-2010 08:59

[ED]Andr
Registered: 24-07-2010
Posts: 17

Re: Здоровье шины

Ну всё равно,спасибо!Чё не получится,обращусь снова.

Offline

#6 16-08-2010 06:11

jackkids
Registered: 11-08-2010
Posts: 2

Re: Здоровье шины

причём не только разработчику

Offline

Board footer

Powered by FluxBB