#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,158

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

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

1
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. При каких значениях этот опкод "находит" запущенный поток?

1
0AAA: 0@ = thread "SPEEDOME" pointer

0@ <> 0 ?

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
{$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 спасибо, так работает, не оставляя за собой никаких следов.

1
2
3
4
5
6
7
8
9
10
11
12
13
{$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: Один вопрос

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
{$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, заинтересовался, начал писать, кое что получается, но вот с редактированием памяти и т.д. не всегда. Так вот, нашёл в скрипте сохранения следующий кусок (вроде он выводит на экран текст):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{$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. Ещё заметил, что ты не различаешь условия и команды - внимательно изучи соответствующие разделы в справке

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
{$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