#2826 22-12-2010 10:15

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

d88 wrote:

Sergey81, я чё-то не пойму, почему бы не изменить имя потока на более короткое?

Это мэйн от Great Theft Car, во первых он не компилируется, во вторых если даже и скомпилился бы, сейвы старые не подойдут. Оно того не стоит.

Кстати, плагин для возврата аэро я написал, спс за наводки.

Offline

#2827 22-12-2010 10:15

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Sergey81, 0459: end_thread_named 'SPEEDOM' работает или нет?

Offline

#2828 22-12-2010 10:47

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

Den_spb wrote:

Sergey81, 0459: end_thread_named 'SPEEDOM' работает или нет?

Неа, пробовал по всякому, не получилось.

Offline

#2829 22-12-2010 12:02

Ruzel
Registered: 03-06-2010
Posts: 61

Re: Один вопрос

А как убрать блокады на мостах в начале оригинальной игры? Они - это объекты, которые надо удалить? или как

Offline

#2830 22-12-2010 13:09

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

В аттаче результат маленького эксперимента с аэро.
dll загружается через cleo, включает аэро, выгружается и скрипт завершается. Теперь, если свернуть SA, аэро будет работать. А вобще мне больше интересно было посмотреть, получится сделать или нет. smile

Offline

#2831 22-12-2010 13:19

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

Re: Один вопрос

разработчик ГТК по поводу твоей проблемы со спидометром:

кул

Last edited by 3Doomer (22-12-2010 13:19)


GIMS developer

Offline

#2832 22-12-2010 13:26

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

3Doomer wrote:

разработчик ГТК по поводу твоей проблемы со спидометром:

кул

Кул то, что проблема решаема хотя бы отключением одного спидометра:cool:

Offline

#2833 22-12-2010 16:51

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

Re: Один вопрос

offtop ololo
@3Вщщьук - а зачем такой большой юб ставить в подпись? Достаточно ссылки наверное.

Offline

#2834 22-12-2010 22:10

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Они - это объекты, которые надо удалить?

Да. Переменные этих объектов можно найти в мэйне.

Неа, пробовал по всякому, не получилось.

Возможно, дело в регистре букв названия потока. Можно попробовать декомпилировать тот мэйн, выставив регистр "Как есть" в опциях СБ. Первые 7 символов полученного названия скопировать в 0459

Offline

#2835 23-12-2010 04:49

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

Den_spb wrote:

Возможно, дело в регистре букв названия потока. Можно попробовать декомпилировать тот мэйн, выставив регистр "Как есть" в опциях СБ. Первые 7 символов полученного названия скопировать в 0459

Стоит и так "как есть", так что наверно не в этом дело.
Заюзал Memory Hacker.
febdc353113be6152a8d9a1400ccf25a.jpeg
Им тред прекрасно отключается, оставляя за собой только ноль в углу:
a50aee60457e040e42760ca1f28a5489.jpeg 
Название кстати содержит 8 символов.
P.S.
0459: end_thread_named 'SPEEDOME' не срабатывает тоже.

Last edited by Sergey81 (23-12-2010 04:58)

Offline

#2836 23-12-2010 16:14

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Один вопрос

@Sergey81 - давай для начала разберемся с 0AAA. При каких значениях этот опкод "находит" запущенный поток?

0AAA: 0@ = thread "SPEEDOME" pointer

0@ <> 0 ?

Если ты найдешь указатель на этот поток, то ты можешь либо вручную выставить флаг "неактивности", либо "скормить" указатель в метод CScriptThread::endThread.

Offline

#2837 23-12-2010 17:23

Ruzel
Registered: 03-06-2010
Posts: 61

Re: Один вопрос

А есть у клео скриптов какое-то ограничение на память или что-то вроде того?
Ато есть у меня один скрипт, выбирает случайные авто. так вот после нескольких выборов, примерно гдето на 6-7 раз, игра вылетает. Хотя RemoveReferences использую. С загрузкой и выгрузкой моделей создавемых объектов тоже все нормально... непонимаю почему так.
Может есть какие-нибудь опкоды, забивающие память? Или может дело вовсе не в памяти.

Last edited by Ruzel (23-12-2010 17:26)

Offline

#2838 23-12-2010 20:07

~AquaZ~
Registered: 01-03-2010
Posts: 726

Re: Один вопрос

выбирает случайные авто

Можно поточнЕе?

Offline

#2839 23-12-2010 23:28

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Ruzel, не посмотрев код сложно сказать что-то определённое.

Offline

#2840 24-12-2010 03:23

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Один вопрос

Какой опкод ты используешь для поиска? Некоторые опкоды не изменяют значение флага Ref, и машина может в любой момент исчезнуть (например, после wait 1000), может, из-за этого?


[small][/small]

Offline

#2841 24-12-2010 05:33

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

Seemann wrote:

@Sergey81 - давай для начала разберемся с 0AAA. При каких значениях этот опкод "находит" запущенный поток?

0AAA: 0@ = thread "SPEEDOME" pointer

0@ <> 0 ?

Если ты найдешь указатель на этот поток, то ты можешь либо вручную выставить флаг "неактивности", либо "скормить" указатель в метод CScriptThread::endThread.

Сейчас у меня такой код:

{$CLEO}
0000:
0AAA: 0@ = thread "SPEEDOMETR_BYHARD_V2" pointer
if
0@ <> 0
then
wait 100
0ABA: end_custom_thread_named 'speed'
0459: end_thread_named 'NJOY'
else
0a93:
end
0a93:

Т.е. "SPEEDOMETR_BYHARD_V2" находится, тред 'NJOY' отключается, как и 'speed'(клео-спидометр).
--
А вот за CScriptThread::endThread спасибо, так работает, не оставляя за собой никаких следов.

{$CLEO}
0000:
0AAA: 0@ = thread "SPEEDOMETR_BYHARD_V2" pointer
if
0@ <> 0
then
wait 100
0AA6: call_method 0x465AA0 struct 0@ num_params 0 pop 0 
0459: end_thread_named 'NJOY'
else
0a93:
end
0a93:

e1fcfc7eea99aaa0e569bcc5b2405026.jpeg  da7ea5c0bb90ecf1dcaf2934f936564c.jpeg 
Надо будет куда-нить в неочевидные возможности запостить.

Last edited by Sergey81 (24-12-2010 05:40)

Offline

#2842 24-12-2010 06:50

ilyha
Registered: 24-12-2010
Posts: 6

Re: Один вопрос

помогите пожалуйста, всю голову сломал уже. модели не выгружаются по моему

{$CLEO .cs}

//-------------MAIN---------------
thread "folt"
wait 1000
:folt
if
player.defined($Player_char)
jf @folt
marker.CreateIconAndSphere($Mark,23,274.1831, 2505.5039, 16.4844)

:folt1
wait 0
if  
0101: actor $PLAYER_ACTOR stopped_near_point 274.2205 2505.5354 16.4844 radius 1.5 1.5 1.5 sphere 0
jf @folt1
marker.Disable($Mark)
wait 0
00C0: set_current_time_to 00 minutes_to 00
wait 0
model.Load(1@ 5713)
model.Load(2@ 5714)
model.Load(3@ 5715)
038B: load_requested_models
Jump @folt1_2 
 end_thread
 
:folt1_2
wait 0
if and
model.Available(1@ 5713)
model.Available(2@ 5714)
model.Available(3@ 5715)
jf @folt1_2
object.Create(1@,5713, 325.7908, 2506.9893, 14.5)
object.Angle(1@) = 270.0
object.Create(1@,5713, 412.2807, 2506.9893, 14.5)
object.Angle(1@) = 270.0
object.Create(2@,5714, 385.6027, 2506.9893, 14.5)
object.Angle(2@) = 270.0
object.Create(3@,5715, 350.7908, 2506.9893, 14.5)
object.Angle(3@) = 270.0
Jump @folt1_3
end_thread

:folt1_3
wait 0
model.Load(4@ 9833)
038B: load_requested_models
if
player.defined($Player_char)
jf @folt1_3
Jump @folt1_4 
 end_thread
 
 :folt1_4
 wait 0
if and
model.Available(4@ 9833)
jf @folt1_4
object.Create(4@,9833, 415.5789, 2506.9893, 14.5)
object.Angle(4@) = 270.0
Jump @folt2 

:folt2
wait 0
model.load(258) 
model.load(253)
model.load(260)
038B: load_requested_models

 :folt2_1
 wait 0
if and
model.available(258)
model.available(253)
model.available(260)
jf @folt2_1
Jump @folt2_2

:folt2_2
 wait 0
if and
actor.Create(5@,4,258,323.0516, 2508.1335, 16.5039)
actor.Create(6@,4,253,322.8822, 2503.0637, 16.4844)
actor.Create(7@,4,260,323.1521, 2491.134, 16.4844)
actor.Create(8@,4,258,315.3968, 2493.405, 16.4844)
actor.Create(9@,4,253,315.1443, 2500.6709, 16.4844)
actor.Create(10@,4,260,315.0663, 2505.6206, 16.4844)
actor.Create(11@,4,258,315.0244, 2511.3728, 16.5594)
actor.Create(12@,4,253,314.6855, 2522.022, 16.7265)
actor.Create(13@,4,260,314.357, 2526.8503, 16.7849)
jf @folt2_2
Jump @folt2_3
 
:folt2_3
wait 0
if and 
Actor.SetImmunities(5@, 1, 1, 1, 1, 1)
Actor.SetImmunities(6@, 1, 1, 1, 1, 0)
Actor.SetImmunities(7@, 1, 1, 1, 1, 0)
Actor.SetImmunities(8@, 1, 1, 1, 1, 1)
Actor.SetImmunities(9@, 1, 1, 1, 1, 0)
Actor.SetImmunities(10@, 1, 1, 1, 1, 0)
Actor.SetImmunities(11@, 1, 1, 1, 1, 1)
Actor.SetImmunities(12@, 1, 1, 1, 1, 0)
Actor.SetImmunities(13@, 1, 1, 1, 1, 0)
jf @folt2_3
Actor.Health(5@) = 1000
Actor.Health(6@) = 1000
Actor.Health(7@) = 1000
Actor.Health(8@) = 1000
Actor.Health(9@) = 1000
Actor.Health(10@) = 1000
Actor.Health(11@) = 1000
Actor.Health(12@) = 1000
Actor.Health(13@) = 1000
if and
0245: set_actor 5@ walk_style_to "BLINDMAN" 
0245: set_actor 6@ walk_style_to "BLINDMAN" 
0245: set_actor 7@ walk_style_to "BLINDMAN"
0245: set_actor 8@ walk_style_to "BLINDMAN" 
0245: set_actor 9@ walk_style_to "BLINDMAN" 
0245: set_actor 10@ walk_style_to "BLINDMAN"
0245: set_actor 11@ walk_style_to "BLINDMAN" 
0245: set_actor 12@ walk_style_to "BLINDMAN" 
0245: set_actor 13@ walk_style_to "BLINDMAN"
jf @folt2_3
Jump @folt2_4

:folt2_4
wait 0
if
player.defined($Player_char)
jf @folt
05D6: clear_scmpath 
05D7: add_point_to_scmpath(1) 413.2871 2506.7603 16.4844
05D8: AS_assign_scmpath to_actor 5@ flags 4 0
05D8: AS_assign_scmpath to_actor 6@ flags 4 0
05D8: AS_assign_scmpath to_actor 7@ flags 4 0
05D8: AS_assign_scmpath to_actor 8@ flags 4 0
05D8: AS_assign_scmpath to_actor 9@ flags 4 0
05D8: AS_assign_scmpath to_actor 10@ flags 4 0
05D8: AS_assign_scmpath to_actor 11@ flags 4 0
05D8: AS_assign_scmpath to_actor 12@ flags 4 0
05D8: AS_assign_scmpath to_actor 13@ flags 4 0
Jump @folt2_5
end_thread

:folt2_5
wait 0
if or
00E1: key_pressed 0 17
00E1: key_pressed 0 6  
jf @folt2_5
Jump @folt2_6


:folt2_6
wait 1000
if and
actor.DestroyInstantly(5@)
actor.DestroyInstantly(6@)
actor.DestroyInstantly(7@)
actor.DestroyInstantly(8@)
actor.DestroyInstantly(9@)
actor.DestroyInstantly(10@)
actor.DestroyInstantly(11@)
actor.DestroyInstantly(12@)
actor.DestroyInstantly(13@) 
jf @folt2_6
Jump @folt2_7

:folt2_7
wait 0
if 
player.defined($Player_char)
jf @folt2_7
wait 0
model.load(258) 
model.load(253)
model.load(260)
038B: load_requested_models

:folt2_8
wait 0
if and
05D6: clear_scmpath 
00C0: set_current_time_to 00 minutes_to 00
01b6: set_weather 19
model.available(258)
model.available(253)
model.available(260)
jf @folt2_8
wait 0   
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 5.0 0.0
actor.Create(5@,4,258,$X1,$Y1,$Z1)
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 5.5 0.0
actor.Create(6@,4,253,$X1,$Y1,$Z1)
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 6.0 0.0
actor.Create(7@,4,260,$X1,$Y1,$Z1)
Actor.SetImmunities(5@, 1, 1, 1, 1, 0)
Actor.SetImmunities(6@, 1, 1, 1, 1, 0)
Actor.SetImmunities(7@, 1, 1, 1, 1, 0)
Actor.Health(5@) = 500
Actor.Health(6@) = 500
Actor.Health(7@) = 500
0850: AS_actor 5@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 5@ kill_actor $PLAYER_ACTOR 
0850: AS_actor 6@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 6@ kill_actor $PLAYER_ACTOR 
0850: AS_actor 7@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 7@ kill_actor $PLAYER_ACTOR
Jump @folt2_9

:folt2_9_1
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 6.5 0.0
actor.Create(8@,4,258,$X1,$Y1,$Z1)
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 7.0 0.0
actor.Create(9@,4,253,$X1,$Y1,$Z1)
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 7.5 0.0
actor.Create(10@,4,260,$X1,$Y1,$Z1)
Actor.SetImmunities(8@, 1, 1, 1, 1, 0)
Actor.SetImmunities(9@, 1, 1, 1, 1, 0)
Actor.SetImmunities(10@, 1, 1, 1, 1, 0)
Actor.Health(8@) = 500
Actor.Health(9@) = 500
Actor.Health(10@) = 500
0850: AS_actor 8@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 8@ kill_actor $PLAYER_ACTOR 
0850: AS_actor 9@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 9@ kill_actor $PLAYER_ACTOR 
0850: AS_actor 10@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 10@ kill_actor $PLAYER_ACTOR
jump @folt3

:folt2_9_2
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 8.0 0.0
actor.Create(11@,4,258,$X1,$Y1,$Z1)
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 8.5 0.0
actor.Create(12@,4,253,$X1,$Y1,$Z1)
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 9.0 0.0
actor.Create(13@,4,260,$X1,$Y1,$Z1)
Actor.SetImmunities(11@, 1, 1, 1, 1, 0)
Actor.SetImmunities(12@, 1, 1, 1, 1, 0)
Actor.SetImmunities(13@, 1, 1, 1, 1, 0)
Actor.Health(11@) = 500
Actor.Health(12@) = 500
Actor.Health(13@) = 500
0850: AS_actor 11@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 11@ kill_actor $PLAYER_ACTOR 
0850: AS_actor 12@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 12@ kill_actor $PLAYER_ACTOR 
0850: AS_actor 13@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 13@ kill_actor $PLAYER_ACTOR
jump @folt3_1
end_thread

:folt2_9
wait 0 
if and
Actor.Dead(5@)
Actor.Dead(6@)
Actor.Dead(7@)
jf @folt2_9
actor.DestroyInstantly(5@)
actor.DestroyInstantly(6@)
actor.DestroyInstantly(7@)
jump @folt2_9_1

:folt3
wait 0 
if and
Actor.Dead(8@)
Actor.Dead(9@)
Actor.Dead(10@)
jf @folt3
actor.DestroyInstantly(8@)
actor.DestroyInstantly(9@)
actor.DestroyInstantly(10@)
jump @folt2_9_2

:folt3_1
wait 0
if and
Actor.Dead(11@)
Actor.Dead(12@)
Actor.Dead(13@)
jf @folt3_1
actor.DestroyInstantly(11@)
actor.DestroyInstantly(12@)
actor.DestroyInstantly(13@)  
jump @folt4

end_thread

:folt4
wait 0 
if or
player.defined($Player_char)
wasted_or_busted
jf @folt4
 wait 2000
0394: play_music 2
01b6: set_weather 18
jump @folt4_1

:folt4_1
wait 5000
if and
model.destroy(258)
model.destroy(253)
model.destroy(260)
jf @folt4_1
jump @folt4_2

:folt4_2
wait 1000
if and 
Object.Destroy(1@ 5713) 
Object.Destroy(2@ 5714) 
Object.Destroy(3@ 5715) 
Object.Destroy(4@ 9833) 
jf @folt4_2
jump @folt

Offline

#2843 24-12-2010 10:21

Ruzel
Registered: 03-06-2010
Posts: 61

Re: Один вопрос

Выираю опкодом 0AE1. То, что  может исчезнуть, учел. Стоит проверка на not Actor.defined . Вопщем, выложу скрипт в разделе модификации. Скрипт называется "Личная Зона"

Last edited by Ruzel (24-12-2010 10:29)

Offline

#2844 24-12-2010 10:56

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

@ilyha - я бы для начала поменял thread "folt" на thread "FACEPALM.JPG"
@Ruzel - почему бы не воспользоваться сначала scmlog и лимит аджастером, а потом выложить их логи вылета вместе со скриптом?

Offline

#2845 24-12-2010 12:43

ilyha
Registered: 24-12-2010
Posts: 6

Re: Один вопрос

Sergey81 wrote:

@ilyha - я бы для начала поменял thread "folt" на thread "FACEPALM.JPG"

к сожалению это ничего не дало

Offline

#2846 24-12-2010 18:45

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

Re: Один вопрос

@ilyha - model.Load(1@ 5713)
это не правильная конструкция надо писать model.Load(5713)


I know everything and nothing...

Offline

#2847 24-12-2010 19:34

ilyha
Registered: 24-12-2010
Posts: 6

Re: Один вопрос

но ведь моя конструкция работает. просто в конце не исчезает одна из моделей, не пойму какая (1@? 2@? или 3@) и в конце когда встаеш на маркер игра вылетает. mfisto а как бы ты сделал на моем месте? помоги пожалуйста а то я новичек в скриптинге, по мануалу сб делал. но ведь там для маина а не клео

Offline

#2848 24-12-2010 20:59

Resager
Registered: 24-12-2010
Posts: 12

Re: Один вопрос

Раньше писал скрипты для SA, но когда всё было в одном файле main.scm, однако как появилось Cleo, заинтересовался, начал писать, кое что получается, но вот с редактированием памяти и т.д. не всегда. Так вот, нашёл в скрипте сохранения следующий кусок (вроде он выводит на экран текст):

thread 'SAVE_ANYWHERE' 
wait 5000 
0AB1: call_scm_func @SAVE_ANYWHERE_389 1 -454 
wait 5000 
0AB1: call_scm_func @SAVE_ANYWHERE_389 1 -509 
jump @SAVE_ANYWHERE_142 
0662: NOP "SAVE_ANYWHERE_MOD" 
0662: NOP "VERSION_1.1" 
0662: NOP "COPYRIGHT_2008-2009_ANDERSON_BRESSAN" 

...


:SAVE_ANYWHERE_337
wait 0 
if 
03D9:   save_done 
jf @SAVE_ANYWHERE_337 
fade 1 500 
gosub @SAVE_ANYWHERE_578 
Actor.LockInCurrentPosition($PLAYER_ACTOR) = False
Player.CanMove($PLAYER_CHAR) = True
jump @SAVE_ANYWHERE_142 

:SAVE_ANYWHERE_389
0A9F: 1@ = current_thread_pointer 
1@ += 16 
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 
0062: 1@ -= 0@ // (int) 
1@ += 4 
0AA5: call 5802976 4 pop 4 0 0 0 1@ 
0AB2: ret 0 
0900: unknown_set_object "Welcome to ~h~SAVE ANYWHERE MOD~w~ by ~h~Rapier~w~." 
0900: unknown_set_object "Type ~h~SAVE~w~ in your keyboard to display the save game menu." 
0000: NOP 

:SAVE_ANYWHERE_578
wait 0 
if 
   not fading 
jf @SAVE_ANYWHERE_578 
return

Но это у меня не работает (игра вылетает сразу). А впихнул я его в свой пробный код так:

{$CLEO .cs}
:SETSTATS
03A4: name_thread "SETSTATS"
wait 1000
0@ = 304531
0004: $BEEFYBARON_SCORE = 'TEXT'

:SETSTATS_1
wait 0
&0(0@,1i) == 0x00FF0000
jf @SETSTATS_1
wait  0
jump @SETSTATS_2

:SETSTATS_2
0@ = 362041
&0(0@,1i) = 0xFFFF0000
0627: change_stat 24 to 1000.0
Actor.Health($PLAYER_ACTOR) = 1000
02AB: set_actor $PLAYER_ACTOR immunities  1  1  1  1  1
if and
Actor.Driving($PLAYER_ACTOR)
jf @SETSTATS_1
0811: $10932 = actor $PLAYER_ACTOR car
02AC: set_car $10932 immunities  1  1  1  1  1
//0384: show_text_1string GXT 'AREA_1' Set  ~h~ACTOR AND CAR~w~ STATS to ~h~MAX~w~. 'IE16' time 5000 1
//wait 6000
//03C4: set_status_text $BEEFYBARON_SCORE type 0 GXT 'ZER2_43' 
0AB1: call_scm_func @SETSTATS_3 1 -454 
wait 5000 
0AB1: call_scm_func @SETSTATS_3 1 -509 
jump @SETSTATS_1

:SETSTATS_3
0A9F: 1@ = current_thread_pointer 
1@ += 16 
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 
0062: 1@ -= 0@ // (int) 
1@ += 4 
0AA5: call 5802976 4 pop 4 0 0 0 1@ 
0AB2: ret 0 
0900: unknown_set_object "WWelcome to ~h~SAVE ANYWHERE MOD~w~ by ~h~Rapier~w~." 
0900: unknown_set_object "Type ~h~SAVE~w~ in your keyboard to display the save game menu." 
0000: NOP 

:SETSTATS_4
wait 0
return

Цель - вывести текст, находящийся непосредственно в скрипте. а не в файле *.гфх


WinHex,

Offline

#2849 25-12-2010 01:34

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

@ilyha, если ты новичок, то попробуй для начала написать более простой, но стабильно работающий скрипт. Что касается твоего кода: wasted or busted надо убрать, т.к. эта проверка применяется только в миссиях. Вместо глобальных переменных ($1, $2 ...) в клео надо применять локальные (0@, 1@ ...). Также в клео-скриптах не применяется опкод end thread - вместо него надо использовать 0A93: end_custom_thread. Ещё заметил, что ты не различаешь условия и команды - внимательно изучи соответствующие разделы в справке.

Цель - вывести текст, находящийся непосредственно в скрипте. а не в файле *.гфх

В клео4 есть опкоды, позволяющие выводить на экран любой текст одной командой без использования каких-либо файлов и плагинов. Сам текст указывается в опкоде. Подробности в справке к КЛЕО4.

Last edited by Den_spb (25-12-2010 01:40)

Offline

#2850 25-12-2010 06:53

ilyha
Registered: 24-12-2010
Posts: 6

Re: Один вопрос

Den_spb wrote:

@ilyha, если ты новичок, то попробуй для начала написать более простой, но стабильно работающий скрипт. Что касается твоего кода: wasted or busted надо убрать, т.к. эта проверка применяется только в миссиях. Вместо глобальных переменных ($1, $2 ...) в клео надо применять локальные (0@, 1@ ...). Также в клео-скриптах не применяется опкод end thread - вместо него надо использовать 0A93: end_custom_thread. Ещё заметил, что ты не различаешь условия и команды - внимательно изучи соответствующие разделы в справке

спасибо за подсказку. разобрался сам. начудил с одной из переменных в конце. теперь все работает отлично. и еще вопрос: мне интересно как бы этот скрипт выглядел в руках опытного скриптера

вот пепределаный скрипт

{$CLEO .cs}

//-------------MAIN---------------
thread "FACEPALM.JPG"
wait 1000
:folt
if
player.defined($Player_char)
jf @folt
marker.CreateIconAndSphere($Mark,23,274.1831, 2505.5039, 16.4844)

:folt1
wait 0
if  
0101: actor $PLAYER_ACTOR stopped_near_point 274.2205 2505.5354 16.4844 radius 1.5 1.5 1.5 sphere 0
jf @folt1
marker.Disable($Mark)
wait 0
00C0: set_current_time_to 00 minutes_to 00
wait 0
model.Load(5713)
model.Load(5714)
model.Load(5715)
model.Load(9833)
038B: load_requested_models
Jump @folt1_2 
 end_thread
 
:folt1_2
wait 0
if and
model.Available(5713)
model.Available(5714)
model.Available(5715)
model.Available(9833)
jf @folt1_2
object.Create(1@,5713, 325.7908, 2506.9893, 14.5)
object.Angle(1@) = 270.0
object.Create(2@,5713, 412.2807, 2506.9893, 14.5)
object.Angle(2@) = 270.0
object.Create(3@,5714, 385.6027, 2506.9893, 14.5)
object.Angle(3@) = 270.0
object.Create(4@,5715, 350.7908, 2506.9893, 14.5)
object.Angle(4@) = 270.0
object.Create(5@,9833, 415.5789, 2506.9893, 14.5)
object.Angle(5@) = 270.0
Jump @folt1_3

:folt1_3
wait 0
if
player.defined($Player_char)
jf @folt1_3
Jump @folt2 

:folt2
wait 0
model.load(258) 
model.load(253)
model.load(260)
038B: load_requested_models

 :folt2_1
 wait 0
if and
model.available(258)
model.available(253)
model.available(260)
jf @folt2_1
Jump @folt2_2

:folt2_2
 wait 0
if and
actor.Create(6@,4,253,322.8822, 2503.0637, 16.4844)
actor.Create(7@,4,260,323.1521, 2491.134, 16.4844)
actor.Create(8@,4,258,315.3968, 2493.405, 16.4844)
actor.Create(9@,4,253,315.1443, 2500.6709, 16.4844)
actor.Create(10@,4,260,315.0663, 2505.6206, 16.4844)
actor.Create(11@,4,258,315.0244, 2511.3728, 16.5594)
actor.Create(12@,4,253,314.6855, 2522.022, 16.7265)
actor.Create(13@,4,260,314.357, 2526.8503, 16.7849)
actor.Create(14@,4,258,323.0516, 2508.1335, 16.5039)
jf @folt2_2
Jump @folt2_3
 
:folt2_3
wait 0
if and 
Actor.SetImmunities(6@, 1, 1, 1, 1, 0)
Actor.SetImmunities(7@, 1, 1, 1, 1, 0)
Actor.SetImmunities(8@, 1, 1, 1, 1, 1)
Actor.SetImmunities(9@, 1, 1, 1, 1, 0)
Actor.SetImmunities(10@, 1, 1, 1, 1, 0)
Actor.SetImmunities(11@, 1, 1, 1, 1, 1)
Actor.SetImmunities(12@, 1, 1, 1, 1, 0)
Actor.SetImmunities(13@, 1, 1, 1, 1, 0)
Actor.SetImmunities(14@, 1, 1, 1, 1, 1)
jf @folt2_3
Actor.Health(6@) = 1000
Actor.Health(7@) = 1000
Actor.Health(8@) = 1000
Actor.Health(9@) = 1000
Actor.Health(10@) = 1000
Actor.Health(11@) = 1000
Actor.Health(12@) = 1000
Actor.Health(13@) = 1000
Actor.Health(14@) = 1000
if and
0245: set_actor 6@ walk_style_to "BLINDMAN" 
0245: set_actor 7@ walk_style_to "BLINDMAN"
0245: set_actor 8@ walk_style_to "BLINDMAN" 
0245: set_actor 9@ walk_style_to "BLINDMAN" 
0245: set_actor 10@ walk_style_to "BLINDMAN"
0245: set_actor 11@ walk_style_to "BLINDMAN" 
0245: set_actor 12@ walk_style_to "BLINDMAN" 
0245: set_actor 13@ walk_style_to "BLINDMAN"
0245: set_actor 14@ walk_style_to "BLINDMAN" 
jf @folt2_3
Jump @folt2_4

:folt2_4
wait 0
if
player.defined($Player_char)
jf @folt
05D6: clear_scmpath 
05D7: add_point_to_scmpath(1) 413.2871 2506.7603 16.4844
05D8: AS_assign_scmpath to_actor 6@ flags 4 0
05D8: AS_assign_scmpath to_actor 7@ flags 4 0
05D8: AS_assign_scmpath to_actor 8@ flags 4 0
05D8: AS_assign_scmpath to_actor 9@ flags 4 0
05D8: AS_assign_scmpath to_actor 10@ flags 4 0
05D8: AS_assign_scmpath to_actor 11@ flags 4 0
05D8: AS_assign_scmpath to_actor 12@ flags 4 0
05D8: AS_assign_scmpath to_actor 13@ flags 4 0
05D8: AS_assign_scmpath to_actor 14@ flags 4 0
Jump @folt2_5
end_thread

:folt2_5
wait 0
if or
00E1: key_pressed 0 17
00E1: key_pressed 0 6  
jf @folt2_5
Jump @folt2_6


:folt2_6
wait 1000
if and
actor.DestroyInstantly(6@)
actor.DestroyInstantly(7@)
actor.DestroyInstantly(8@)
actor.DestroyInstantly(9@)
actor.DestroyInstantly(10@)
actor.DestroyInstantly(11@)
actor.DestroyInstantly(12@)
actor.DestroyInstantly(13@)
actor.DestroyInstantly(14@)
jf @folt2_6
Jump @folt2_7

:folt2_7
wait 0
if 
player.defined($Player_char)
jf @folt2_7
wait 0
model.load(258) 
model.load(253)
model.load(260)
038B: load_requested_models
Jump @folt2_8

:folt2_8
wait 0
if and
05D6: clear_scmpath 
00C0: set_current_time_to 00 minutes_to 00
01b6: set_weather 19
model.available(258)
model.available(253)
model.available(260)
jf @folt2_8
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 -5.5 0.0
actor.Create(6@,4,253,$X1,$Y1,$Z1)
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 -6.0 0.0
actor.Create(7@,4,260,$X1,$Y1,$Z1)
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 -6.5 0.0
actor.Create(8@,4,258,$X1,$Y1,$Z1)
Actor.SetImmunities(6@, 1, 1, 1, 1, 0)
Actor.SetImmunities(7@, 1, 1, 1, 1, 0)
Actor.SetImmunities(8@, 1, 1, 1, 1, 0)
Actor.Health(6@) = 500
Actor.Health(7@) = 500
Actor.Health(8@) = 500 
0850: AS_actor 6@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 6@ kill_actor $PLAYER_ACTOR 
0850: AS_actor 7@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 7@ kill_actor $PLAYER_ACTOR
0850: AS_actor 8@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 8@ kill_actor $PLAYER_ACTOR
Jump @folt2_9

:folt2_9_1
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 -5.0 0.0
actor.Create(9@,4,253,$X1,$Y1,$Z1)
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 -6.5 0.0
actor.Create(10@,4,260,$X1,$Y1,$Z1)
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 -7.0 0.0
actor.Create(11@,4,258,$X1,$Y1,$Z1) 
Actor.SetImmunities(9@, 1, 1, 1, 1, 0)
Actor.SetImmunities(10@, 1, 1, 1, 1, 0)
Actor.SetImmunities(11@, 1, 1, 1, 1, 0)
Actor.Health(9@) = 500
Actor.Health(10@) = 500
Actor.Health(11@) = 500 
0850: AS_actor 9@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 9@ kill_actor $PLAYER_ACTOR 
0850: AS_actor 10@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 10@ kill_actor $PLAYER_ACTOR
0850: AS_actor 11@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 11@ kill_actor $PLAYER_ACTOR 
jump @folt3

:folt2_9_2
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 -5.5 0.0
actor.Create(12@,4,253,$X1,$Y1,$Z1)
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 -6.0 0.0
actor.Create(13@,4,260,$X1,$Y1,$Z1)
wait 0
04C4: create_coordinate $X1 $Y1 $Z1 from_actor $PLAYER_ACTOR offset 0.0 -6.5 0.0
actor.Create(14@,4,258,$X1,$Y1,$Z1)
Actor.SetImmunities(12@, 1, 1, 1, 1, 0)
Actor.SetImmunities(13@, 1, 1, 1, 1, 0)
Actor.SetImmunities(14@, 1, 1, 1, 1, 0)
Actor.Health(12@) = 500
Actor.Health(13@) = 500
Actor.Health(14@) = 500
0850: AS_actor 12@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 12@ kill_actor $PLAYER_ACTOR 
0850: AS_actor 13@ follow_actor $PLAYER_ACTOR 
05E2: AS_actor 13@ kill_actor $PLAYER_ACTOR
0850: AS_actor 14@ follow_actor $PLAYER_ACTOR
05E2: AS_actor 14@ kill_actor $PLAYER_ACTOR
jump @folt3_1
end_thread

:folt2_9
wait 0 
if and
Actor.Dead(6@)
Actor.Dead(7@)
Actor.Dead(8@)
jf @folt2_9
actor.DestroyInstantly(6@)
actor.DestroyInstantly(7@)
actor.DestroyInstantly(8@)
jump @folt2_9_1

:folt3
wait 0 
if and
Actor.Dead(9@)
Actor.Dead(10@)
Actor.Dead(11@)
jf @folt3
actor.DestroyInstantly(9@)
actor.DestroyInstantly(10@)
actor.DestroyInstantly(11@)
jump @folt2_9_2

:folt3_1
wait 0
if and
Actor.Dead(12@)
Actor.Dead(13@)
Actor.Dead(14@)
jf @folt3_1
actor.DestroyInstantly(12@)
actor.DestroyInstantly(13@)
actor.DestroyInstantly(14@)  
jump @folt4

end_thread

:folt4
wait 0 
if 
player.defined($Player_char)
jf @folt4
 wait 2000
0394: play_music 2
01b6: set_weather 18
jump @folt4_1

:folt4_1
wait 5000
if and
model.destroy(258)
model.destroy(253)
model.destroy(260)
jf @folt4_1
jump @folt4_2

:folt4_2
wait 1000
if and
Object.Destroy(1@ 5713) 
Object.Destroy(2@ 5713) 
Object.Destroy(3@ 5714) 
Object.Destroy(4@ 5715) 
Object.Destroy(5@ 9833)
jf @folt4_2
jump @folt

Offline

Board footer

Powered by FluxBB