You are not logged in.
Pages: 1
Это не такой уж сложный и навороченный клео-скрипт, к тому же старая версия этого скрипта была сделана мной ещё в 2005 году, но может кому пригодится текстура.
Скрипт - 4-в-1: При повреждения здоровья и брони экран краснеет/
белеет мнгновенно (как в некоторых шутерах), при большом повреждении здоровья экран краснеет на 2 секунды и экран искажается, при малом здоровьи у СиДжея кружится голова (есть в каждом первом моде), идёт кровотечение, экран по краям окрашивается в красный цвет, при большом здоровьи раны заживают (если СиЖдей стоит на месте), при малом СиДжею всё хуже и хуже (Если не в машине и не стоит на месте).
Дополнительно нужно скопировать прикреплённую текстуру (10,5 КБ) в папку \Models\Txd.
{$CLEO} :PlHealth thread "Player_Health" var $Player_char: PLAYER $Player_Actor: ACTOR 0@: Integer 1@: Integer 2@: Integer 3@: Integer 4@: Integer 5@: Integer 6@: Integer 7@: Integer 33@: Integer end const PMaxHealth = 0@ Oldhealth = 1@ NewHealth = 2@ DeepWound = 3@ OldArmor = 4@ NewArmor = 5@ I = 6@ RHealth = 7@ BloodTexture = 1 Timer = 33@ end PMaxHealth = $Player_Actor.Health DeepWound = 0 wait 10000 $Player_Actor.Health = 45 :HLoops while true wait 25 if and $Player_char.Defined $ONMISSION == 0 then gosub @HLoopHealth gosub @HLoopArmor gosub @HLoopNearlyDead gosub @HLoopRegen else if not $ONMISSION == 1 then 0391: release_txd_dictionary end Oldhealth = PMaxHealth NewHealth = PMaxHealth DeepWound = 0 OldArmor = 0 NewArmor = 0 $Player_char.SetDrunkVisuals(0) 0332: set_actor $Player_Actor bleeding 0 0922: set_camera_zoom_in_factor 70.0 out_factor 70.0 timelimit 1000 mode 1 03F0: draw_toggle 1 03F0: draw_toggle 0 end end :HLoopHealth NewHealth = $Player_Actor.Health if OldHealth > NewHealth then OldHealth -= NewHealth if OldHealth >= 30 then // ýòîì ó÷àñòêå âîçìîæíû ãëþêè èç-çà FADE 0169: set_fade_color_RGB 255 0 0 fade 0 250 wait 500 0922: set_camera_zoom_in_factor 120.0 out_factor 70.0 timelimit 17000 mode 1 fade 1 2500 wait 3000 0169: set_fade_color_RGB 0 0 0 else 0169: set_fade_color_RGB 255 0 0 fade 0 500 wait 50 fade 1 100 wait 115 0169: set_fade_color_RGB 0 0 0 end else end OldHealth = $Player_Actor.Health return :HLoopArmor //NewArmor = $Player_Actor.Armour 04DD: NewArmor = actor $PLAYER_ACTOR armour if OldArmor > NewArmor then 0169: set_fade_color_RGB 255 255 255 fade 0 500 wait 50 fade 1 100 wait 115 0169: set_fade_color_RGB 0 0 0 else end //OldArmor = $Player_Actor.Armour 04DD: OldArmor = actor $PLAYER_ACTOR armour return :HLoopNearlyDead if Oldhealth < 50 then if DeepWound == 0 then 0169: set_fade_color_RGB 255 0 0 fade 0 250 wait 500 0922: set_camera_zoom_in_factor 120.0 out_factor 70.0 timelimit 25000 mode 1 052C: set_player $PLAYER_CHAR drunk_visuals 255 0390: load_txd_dictionary 'PHealth' 038F: load_texture "Blood" as BloodTexture 0332: set_actor $Player_Actor bleeding 1 038D: draw_texture BloodTexture position 160.0 112.0 size 320.0 224.0 RGBA 150 150 150 250 038D: draw_texture BloodTexture position 480.0 112.0 size -320.0 224.0 RGBA 150 150 150 250 038D: draw_texture BloodTexture position 480.0 336.0 size -320.0 -224.0 RGBA 150 150 150 250 038D: draw_texture BloodTexture position 160.0 336.0 size 320.0 -224.0 RGBA 150 150 150 250 fade 1 2500 wait 3000 0169: set_fade_color_RGB 0 0 0 DeepWound = 1 else end else if DeepWound == 1 then 0332: set_actor $Player_Actor bleeding 0 for I = 255 downto 0 if and $Player_char.Defined $ONMISSION == 0 then wait 30 03F0: draw_toggle 0 03F0: draw_toggle 1 //ß ïîñìîòðåë êàê ðèñóåòñÿ "ýêðàí àâòîìàòà" è êîîðäèíàòû âçÿë îòòòóäà 038D: draw_texture BloodTexture position 160.0 112.0 size 320.0 224.0 RGBA 150 150 150 I 038D: draw_texture BloodTexture position 480.0 112.0 size -320.0 224.0 RGBA 150 150 150 I 038D: draw_texture BloodTexture position 480.0 336.0 size -320.0 -224.0 RGBA 150 150 150 I 038D: draw_texture BloodTexture position 160.0 336.0 size 320.0 -224.0 RGBA 150 150 150 I 052C: set_player $PLAYER_CHAR drunk_visuals I gosub @HLoopHealth gosub @HLoopArmor else GoTo @HLoops break end end 03F0: draw_toggle 1 wait 500 0391: release_txd_dictionary DeepWound = 0 end end return :HLoopRegen RHealth = $Player_Actor.Health if and RHealth >= 80 RHealth < PMaxHealth $Player_Actor.Stopped Timer >= 1000 then Timer = 0 Rhealth += 1 $Player_Actor.Health = Rhealth else if and RHealth < 15 RHealth >= 0 not $Player_Actor.Stopped not $Player_Actor.Driving Timer >= 5000 then Timer = 0 Rhealth -= 1 $Player_Actor.Health = Rhealth end end return
[---]
Обновил скрипт.
Last edited by VcSaJen (25-06-2008 03:17)
[small][/small]
Offline
@VcSaJen -
03F0: draw_toggle 0 03F0: draw_toggle 1
Что тебе дают такие конструкции?
Почему 1 раз не включить, а в конце кода - отключить (или не отключать совсем)... ?
Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ
Offline
В мейне есть какой - то тред, который стирает все тектуры, поэтому приходится каждый раз перерисовывать. Два раза - потому - что если только Draw_Toggle 1, то всё нормально работает, но при выходе из раздевалки текстура которая каждый раз перерисовывается, накладывается друг на друга, и через несколько секунд игра зависает. Если draw_toggle, то кажется текстура вообще не будет отображатся. В stripped такой проблемы не было, один раз нарисовал - и текстура ходит до конца.
А ты как сделал, что - бы спидометр отображался по-нормальному?
[---]
В мейне нет никакого треда, который стирает текстуры (это я ступил), проблема решена наполовину - текстура теперь не перерисовывается каждый раз, но из-за чего - непонятно. Я просто убрал в начале и конце Text_Draw_Toggle, оставил в двух местах (там, где нужно стереть или перерисовать).
В оригинальном мейне опкод 03F0 никогда не используется подряд, как-же тогда перерисовываются текстуры там? И вообще 03F0 какой - то глючный (или может я не так понимаю?).
Last edited by VcSaJen (25-06-2008 03:19)
[small][/small]
Offline
@VcSaJen -
А ты как сделал, что - бы спидометр отображался по-нормальному?
1. старт работы спидометра - включаем draw_toggle 1
2. работает тред с нулевой задержкой (wait 0)
3. завершение работы спидометра (например игрок покинул машину) - отключаем draw_toggle 0
Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ
Offline
Нет, я имею ввиду как перерисовывается (стирается), ведь у спидометра стрелка движется? Если не стирая выводить на экран, то получится не одна стрелка, а очень много и игра зависнет.
[small][/small]
Offline
@VcSaJen -
Если не стирая выводить на экран, то получится не одна стрелка, а очень много
Почему много - одна, всёЖ рисуется в цикле, меняется лишь положение стрелки ...
Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ
Offline
@Capushon -
Почему 1 раз не включить [c]03F0: draw_toggle 1[/c]?
И всё же этот способ иногда даёт сбой, например у меня такое всегда при выходе из раздевалки (текстуры в этот момент почему-то перестают стираться, и игра зависает из-за переизбытка текстур).
[small][/small]
Offline
@VcSaJen -
этот способ иногда даёт сбой, например у меня такое всегда при выходе из раздевалки
Понятное дело - ты сам должен учитывать все возможные ситуации, при которых игра может включить draw_toggle 1 из других тредов и исключить их. Мой спидометр работает нормально, потому что он работает только в машине и в миссиях я его отключаю...
Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ
Offline
Pages: 1