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