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

Dark_Knight

Me, me and me.
Друг
4,065
2,079
Вот ошибка.
Код:
actor.StorePos($PLAYER_ACTOR, 4@, 5@, 6@)
И в 0b44 поставь вместо -1 0
 

Vadik220v

Новичок
20
0
Вот ошибка.
Код:
actor.StorePos($PLAYER_ACTOR, 4@, 5@, 6@)
И в 0b44 поставь вместо -1 0
Если в место -1 ставлю 0, то вообще не работает (-1 - это id), точнее работает, но игра всеравно вылетает при тех же условиях. Ну а в actor.storepos запятые необязательны.
 

SR_team

like pancake
BH Team
4,720
6,372

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,460
Если активируешь несколько раз - это существенно. В одну переменную записываются все 3d тексты.
"Краш", после выхода из игры, это тоже существенно после создания 3d текста. Перед выходом из игры нужно удалить 3д текст.
Код:
{$CLEO}
 
wait 0
 
if 8AF7: get_samp_base_to 33@
then 0A93: end_custom_thread
end
repeat
    wait 400
until 0AFA: is_samp_structures_available
 
while true
    wait 0
    if 0adc: "1"
    then
        if 0B46: samp 3d_text 8@ defined
        then SAMP.Destroy3DText(8@)
        end
        actor.StorePos($PLAYER_ACTOR 4@ 5@ 6@)
        6@ += 1.0
        0B44: samp 8@ = create_3d_text "Метка 1" color 0xFFFF00FF position 4@ 5@ 6@ view_distance 50.0 show_behind_walls 1 attached_to_player -1 attached_to_vehicle -1
        //0B44: samp 8@ = create_3d_text "Метка №1" color 0xFFFF00FF position 4@ 5@ 6@ view_distance 50.0 show_behind_walls 1 attached_to_player -1 attached_to_vehicle -1
    end
end
 

Vadik220v

Новичок
20
0
"Краш", после выхода из игры, это тоже существенно после создания 3d текста. Перед выходом из игры нужно удалить 3д текст.
То-есть это не моя ошибка, это ошибка в SF? Почему это существенно? Может есть какие-то другие способы решения этой проблемы?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,460
То-есть это не моя ошибка, это ошибка в SF? Почему это существенно? Может есть какие-то другие способы решения этой проблемы?

Раз уж на то пошло, напиши в темке SF, что имеется баг с созданием 3d текста.
Помню, что гонщик давал мне оффсеты на textlabel, теперь я их использую для создания 3д текста.
Будет время, выложу оффсеты, хотя не хотелось бы.
 

MISTER_GONWIK

Всефорумный гонщик
Всефорумный модератор
1,260
1,740
То-есть это не моя ошибка, это ошибка в SF? Почему это существенно? Может есть какие-то другие способы решения этой проблемы?

проблема в твоих кривых руках
PHP:
:1
wait 0
if
0adc: "1"
jf @1
actor.StorePos($PLAYER_ACTOR 4@ 5@ 6@)
6@ += 1.0
0B44: samp 8@ = create_3d_text "Метка №1"  color 0xFFFF00FF position 4@ 5@ 6@ view_distance 50.0 show_behind_walls 1 attached_to_player -1 attached_to_vehicle -1
jump @1
у тебя создаётся просто куча 3д текстов в одном месте, т.к. опкод
PHP:
0adc: "1"
успевает обрабатываться несколько раз, а нужно обработать лишь первое нажатие и тем самым создать лишь 1 раз 3д текст
 

Vadik220v

Новичок
20
0
MISTER_GONWIK, это не 0ab0, а 0adc - он обрабатывается 1 раз за одно нажатие. Да и он вообще для читкодов предназначен.
p.s. Прямые у меня руки, изогнутые в самых нужных местах. Точно проблема не в этом.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,460
Крч, что-то и вправду глючит с 3д текстами через SF...
через клео, используя scm функции:
Код:
// Offsets on stTextLabelPool by MISTER_GONWIK // Thanks
:Create3dText
// call @Create3dText 9 text 0@ color 1@ X 2@ Y 3@ Z 4@ distance 5@ behind_walls 6@ to_player 7@ to_vehicle 8@ retr_id_3d 10@
// call @Create3dText 9 text 0@ color 0xFFFFFFFF X 0.0 Y 0.0 Z 0.0 distance 50.0 behind_walls 1 to_player -1 to_vehicle -1 retr_id_3d 1@
9@ = SAMP.Base()
9@ += 0x212A38
0A8D: 9@ = read_memory 9@ size 4 virtual_protect 0
9@ += 1003   
0A8D: 9@ = read_memory 9@ size 4 virtual_protect 0
 
for 10@ = 1 to 2048 step 1
    if call @3DTextDefine 1 10@
    then continue
    end
 
    0085: 11@ = 10@
    11@ *= 29
    005A: 9@ += 11@
    0C0D: struct 9@ offset 0 size 4 = 0@
    0C0D: struct 9@ offset 4 size 4 = 1@
    0C0D: struct 9@ offset 8 size 4 = 2@
    0C0D: struct 9@ offset 12 size 4 = 3@
    0C0D: struct 9@ offset 16 size 4 = 4@
    0C0D: struct 9@ offset 20 size 4 = 5@
    0C0D: struct 9@ offset 24 size 1 = 6@
    0C0D: struct 9@ offset 25 size 2 = 7@
    0C0D: struct 9@ offset 27 size 2 = 8@
 
    call @Set3dTextDefine 2 10@ 1
 
    ret 1 10@
    //break
end
ret 1 -1
 
:pIsListed
2@ = SAMP.Base()
2@ += 0x212A38
0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0
2@ += 1003   
0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0
2@ += 59392
 
0@ *= 4
005A: 2@ += 0@
return
 
:3DTextDefine
gosub @pIsListed
0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0
 
if 2@ == 1
then 0AB2: 0 1
end
0AB2: 0
 
:Set3dTextDefine
gosub @pIsListed
0A8C: write_memory 2@ size 4 value 0@ virtual_protect 0
ret 0

P.S. Найдены ошибки в коде. Кто знает какие, тот исправит.
 

Vadik220v

Новичок
20
0
Слухай, а мне кажется, что SF создает 3д текст под ид 0, через scm не получается создать с таким идом.
Быть не может, надо будет завтра поискать об этом информацию (надеюсь в собейте есть), да и самому по эксперементировать.
p.s. удалять то его хотя бы через SF?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,460
Быть не может, надо будет завтра поискать об этом информацию (надеюсь в собейте есть), да и самому по эксперементировать.
p.s. удалять то его хотя бы через SF?

Вряд ли удалишь.
Просто попробуй :Set3dTextDefine 2 0@ 0 - 0@ - id, 0 - bool(true/false)

На счёт 0 ид - всё в норме.