Вопросы по CLEO-скриптингу

ishi

Известный
493
110
Хм...тоесть сначало получаем хэндл по id, заносим в переменную,допустим, 0@ и после пишем:
CLEO:
04E5: object 0@ near_point 200.0 300.0 radius 5.0 5.0 sphere 0
Опкод на получение хэндла по id обьекта же есть?)
0b50
только желательно провернить, шо выдаёт когда объект не прогружен, и если это что-то аля -1, то сделать проверку на такой результат, чтоб не вписывало его - а то крашнуть может
 
  • Нравится
Реакции: RusFatal

RusFatal

Новичок
114
10
Хм... а я думал этот опкод вставлять, что он делает?
CLEO:
0AE3: 1@ = random_object_near_point X.X Y.Y Z.Z in_radius 5.0 find_next 1
 

ishi

Известный
493
110
Хм... а я думал этот опкод вставлять, что он делает?
CLEO:
0AE3: 1@ = random_object_near_point X.X Y.Y Z.Z in_radius 5.0 find_next 1
0b50 - получение хендла объекта по иду.
0ae3 - это переборщик объектов, грубо говоря. Используется чтобы искать объекты путём перебора, иного применения ему не встречал
 
  • Нравится
Реакции: RusFatal

RusFatal

Новичок
114
10
Куда его будет правильнее всего вписать?
CLEO:
0000: NOP
thread 'choto'
                                                                                                                     
while not SAMP.Available()                                                                                             
wait 100
end  
  
0B50: samp 1@ = object_handle_by_id 1732

while true                                                                                                           
wait 0
if
04E5: object 1@ near_point -1084.74 -1295.90 radius 5.0 5.0 sphere 0
then
chatmsg "Обьект вижу" -1
jf break
end
end
 

ishi

Известный
493
110
Возникает вполне логичный вопрос, что за бесовщина предстала моим глазам? Х)
Я же сказал, проверить надо, правильный ли хендл, прежде чем пхать его в другую функу.
Тебе нужна оповещалка о том что такой объект появился? Тогда можно сделать так:
CLEO:
{$CLEO .cs}
0000:

while not samp.available()
wait 100
end

while true
wait 0
0B50: samp 1@ = object_handle_by_id 1732
if 1@ <> 0
then
0af8: "object streamed" 555555
break
end
end
(насчёт брейка не уверен, за клео не сидел давно, но на плюсах так можно было остановить неугодный более цикл. Если выдаст ошибку, удали его)
 
  • Нравится
Реакции: RusFatal

hnnssy

Известный
Друг
2,684
2,768
Куда его будет правильнее всего вписать?
CLEO:
0000: NOP
thread 'choto'
                                                                                                                    
while not SAMP.Available()                                                                                            
wait 100
end 
 
0B50: samp 1@ = object_handle_by_id 1732

while true                                                                                                          
wait 0
if
04E5: object 1@ near_point -1084.74 -1295.90 radius 5.0 5.0 sphere 0
then
chatmsg "Обьект вижу" -1
jf break
end
end
бля, открой вики и глянь по опкодам инфу хоть, плис
 

hnnssy

Известный
Друг
2,684
2,768
Возникает вполне логичный вопрос, что за бесовщина предстала моим глазам? Х)
Я же сказал, проверить надо, правильный ли хендл, прежде чем пхать его в другую функу.
Тебе нужна оповещалка о том что такой объект появился? Тогда можно сделать так:
CLEO:
{$CLEO .cs}
0000:

while not samp.available()
wait 100
end

while true
wait 0
0B50: samp 1@ = object_handle_by_id 1732
if 1@ <> 0
then
0af8: "object streamed" 555555
break
end
end
(насчёт брейка не уверен, за клео не сидел давно, но на плюсах так можно было остановить неугодный более цикл. Если выдаст ошибку, удали его)
и ты тоже почитай
 
  • Нравится
Реакции: RusFatal

Boyenerji

Известный
97
1
ага, да, хорошо
почитай в справке о цикле for

В справке показан пример с двумя переменными, а мне нужно только 15@ увеличивать.

вот:
CLEO:
:plcol
for 15@ = 1 to 15@ step 1000
    if Samp.IsPlayerConnected(15@)
    then
    16@ = Samp.GetActorHandleByPlayerID(15@)
        if 056D: actor 16@ defined
        then
        0619: enable_actor 16@ collision_detection 0
        end
    end
end
0AB2: ret 0
 

RusFatal

Новичок
114
10
Вообщем, прописал я
CLEO:
{$CLEO .cs}
0000:

while not samp.available()
wait100
end

while true
wait 0
0B50: samp 1@ = object_handle_by_id 922
if1@ <> 0
then
0af8: "object streamed"555555
end
end
Но надписи в чат "Object streamed" нет :(
code]
BBcDkIt.png
 

ishi

Известный
493
110
Пробел то поставил после if?
если бы он не поставил, выдало бы ошибку при компиляции, всё под контролем :king:
@RusFatal Тебе стоит знать, что при рестартах и изменениях мода (а иногда и в процессе игры, на ходу) иды имеют свойство меняться, так что если делаешь что-то на публику, а не для личного пользования, лучше перестрахуйся и определи, что в объекте не меняется (например, его позиция) и задай максимально короткий радиус в котором оно находится, и через него проверяй валидность ида. Уот.
 
Последнее редактирование:
  • Нравится
Реакции: RusFatal