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

Избранный

Новичок
198
30
Ид диалога нужно указывать сразу в проверке. (0B3C: samp is_dialog_responded id 1488 button 2@ list_item 3@ input_text 4@)

так тож делал, проблема та-же
Код:
{$CLEO .cs}
0000: NOP
 
:n_1
wait 1000
0B4E: samp 1@ = get_current_dialog_id
if
1@ == 87
jf @n_1
 
:n_3
wait 0
if
0B3C:  samp is_dialog_responded id 87 button 2@ list_item 3@ input_text 4@
jf @n_3
if
2@ == 2
jf @n_1
0AF8: samp add_message_to_chat "dialog closed %d" 0xBA0FFF 1@
0A93: end_custom_thread
 

Wa3riX

Новичок
53
0
Код:
{$CLEO}
 
const
    N_SECOND = 5
end
 
0000:
0662: "by legend2360"
0662: "BlastHack - cheating is art"
 
while not SAMP.Available()
    wait 400
end
 
var
    0@ : int
    33@ : int
end
 
0A90: 0@ = N_SECOND * 1000
33@ = 0
 
while true
    wait 0
    if 33@ >= 0@
    then
        0B56: set_game_key 1 state 0xffff
        33@ = 0
    end
end

А можно ли так:
Код:
{$CLEO}
 
0AF0: 5@ = get_int_from_ini_file "CLEO\N_SECOND.ini" section "SETTINGS" key "SECOND"
const
    N_SECOND = 5@
end
 
0000:
0662: "by legend2360"
0662: "BlastHack - cheating is art"
 
while not SAMP.Available()
    wait 400
end
 
var
    0@ : int
    33@ : int
end
 
0A90: 0@ = N_SECOND * 1000
33@ = 0
 
while true
    wait 0
    if 33@ >= 0@
    then
        0B56: set_game_key 1 state 0xffff
        33@ = 0
    end
end
 

Wa3riX

Новичок
53
0
Код:
{$CLEO}
 
const
    N_SECOND = 5
end
 
0000:
0662: "by legend2360"
0662: "BlastHack - cheating is art"
 
while not SAMP.Available()
    wait 400
end
 
var
    0@ : int
    33@ : int
end
 
0A90: 0@ = N_SECOND * 1000
33@ = 0
 
while true
    wait 0
    if 33@ >= 0@
    then
        0B56: set_game_key 1 state 0xffff
        33@ = 0
    end
end

Он не ждет секунды, он просто идет без остановки
 

Избранный

Новичок
198
30
1. как переделать переменную с текстом в формате 1@v в обычный формат 1@? для того чтоб в этой функе использовать http://blasthack.net/threads/call-scm-funcs.897/#post-16744
06D2: 28@v = "LAPDAN1" // @v = string - этим получаю текст, а дальше хз че делать.

2. как записать в переменную, то что я ввел в диалог серверный?
0B3C: samp is_dialog_responded id 1@ button 2@ list_item 3@ input_text 4@ этим опкодом как ни пробовал, нихуя не получается, покажите на примере, если им можно записать
 

hnnssy

Известный
Друг
2,684
2,753
1. как переделать переменную с текстом в формате 1@v в обычный формат 1@? для того чтоб в этой функе использовать http://blasthack.net/threads/call-scm-funcs.897/#post-16744
06D2: 28@v = "LAPDAN1" // @v = string - этим получаю текст, а дальше хз че делать.

2. как записать в переменную, то что я ввел в диалог серверный?
0B3C: samp is_dialog_responded id 1@ button 2@ list_item 3@ input_text 4@ этим опкодом как ни пробовал, нихуя не получается, покажите на примере, если им можно записать
1.
PHP:
alloc 1@ 128
0AD3: 1@ = format "%s" 1@v
2.
PHP:
alloc 4@ 128
while true
wait 0
if and
0B3C: samp is_dialog_responded id 1488 button 2@ list_item 3@ input_text 4@
2@ == 1
then
msg "%s" -1 4@
end
end
 
  • Нравится
Реакции: Избранный

1Kr1K1

Новичок
6
0
Как сделать проверку, что я появился в определенных координатах?
 

Избранный

Новичок
198
30
1.
PHP:
alloc 1@ 128
0AD3: 1@ = format "%s" 1@v
2.
PHP:
alloc 4@ 128
while true
wait 0
if and
0B3C: samp is_dialog_responded id 1488 button 2@ list_item 3@ input_text 4@
2@ == 1
then
msg "%s" -1 4@
end
end

функ. гонщика не робит, можешь скомпилировать проверить, пишет "не найдено"
Код:
{$CLEO}
0000: NOP
alloc 0@ 128
alloc 1@ 128
 
:n_1
wait 1000
 
:n_2
wait 0
if
0ab0: 53
jf @n_2
wait 100
06D2: 0@v = "kto ne skachet tot moskal" // @v = string
0AD3: 0@ = format "%s" 0@v
wait 100
06D2: 1@v = "skachet" // @v = string
0AD3: 1@ = format "%s" 1@v
if
call @search_text_in_the_text 2 0@ 1@ // 0@ - текст, 1@ - слово
jf @n_3
0AF8: samp add_message_to_chat "найдено" 0xBA0FFF
wait 500
jump @n_2
 
:n_3
wait 0
0AF8: samp add_message_to_chat "не найдено" 0xBA0FFF
wait 500
jump @n_2
 
:search_text_in_the_text
var
    2@:int
    3@:int
    4@:int
    5@:int
    7@:int
    8@:int
end
7@ = 0
0C17: 4@ = strlen 0@
0C17: 8@ = strlen 1@
if or
8@ > 4@
8@ <= 0
then
    059A: return_false
    ret 0
end
0AC8: 6@ = 1024
0C11: memset destination 6@ value 0 size 1024
0C10: memcpy destination 6@ source 1@ size 8@
for 5@ = 0 to 4@
0A8D: 2@ = read_memory 0@ size 1 virtual_protect 0
0A8D: 3@ = read_memory 1@ size 1 virtual_protect 0
    if 2@ == 3@
    then
        inc(1@)
        inc(7@)
    else
        7@ = 0
        0C10: memcpy destination 1@ source 6@ size 8@
    end
    if 7@ == 8@
    then
        0485: return_true
        ret 0
    end
inc(0@)
end
059A: return_false
0AC9: 6@
ret 0

а с диалогом, твой скрипт скомпилировал - не работает, попробовал свой переделать, и вот что узнал. "проверка 1" в чат пишется, а проверка 2 нихуя. т.е. никак не работает этот опкод. если без первого пункта еще обойдусь, то текст из диалога пиздец как нужен для создания моего мегаскрипта. помогите кто может.
Код:
{$CLEO .cs}
0000: NOP
alloc 4@ 128
 
:n_1
wait 1000
0B4E: samp 1@ = get_current_dialog_id
if
1@ == 24 // диалог репорта на самп-рп
jf @n_1
0AF8: samp add_message_to_chat "проверка 1" 0xBA0FFF //это пишет
 
:n_3
wait 0
if
0B3C:  samp is_dialog_responded id 24 button 2@ list_item 3@ input_text 4@
jf @n_3
0AF8: samp add_message_to_chat "проверка 2" 0xBA0FFF // до этой строки не доходит скрипт
if
2@ == 1
jf @n_1
0AF8: samp add_message_to_chat "dialog closed %s" 0xBA0FFF 4@
0A93: end_custom_thread
 

hnnssy

Известный
Друг
2,684
2,753
функ. гонщика не робит, можешь скомпилировать проверить, пишет "не найдено"
Код:
{$CLEO}
0000: NOP
alloc 0@ 128
alloc 1@ 128
 
:n_1
wait 1000
 
:n_2
wait 0
if
0ab0: 53
jf @n_2
wait 100
06D2: 0@v = "kto ne skachet tot moskal" // @v = string
0AD3: 0@ = format "%s" 0@v
06D2: 1@v = "skachet" // @v = string
0AD3: 1@ = format "%s" 1@v
if
call @search_text_in_the_text 2 0@ 1@ // 0@ - текст, 1@ - слово
jf @n_3
0AF8: samp add_message_to_chat "найдено" 0xBA0FFF
wait 500
jump @n_2
 
:n_3
wait 0
0AF8: samp add_message_to_chat "не найдено" 0xBA0FFF
wait 500
jump @n_2
 
:search_text_in_the_text
var
    2@:int
    3@:int
    4@:int
    5@:int
    7@:int
    8@:int
end
7@ = 0
0C17: 4@ = strlen 0@
0C17: 8@ = strlen 1@
if or
8@ > 4@
8@ <= 0
then
    059A: return_false
    ret 0
end
0AC8: 6@ = 1024
0C11: memset destination 6@ value 0 size 1024
0C10: memcpy destination 6@ source 1@ size 8@
for 5@ = 0 to 4@
0A8D: 2@ = read_memory 0@ size 1 virtual_protect 0
0A8D: 3@ = read_memory 1@ size 1 virtual_protect 0
    if 2@ == 3@
    then
        inc(1@)
        inc(7@)
    else
        7@ = 0
        0C10: memcpy destination 1@ source 6@ size 8@
    end
    if 7@ == 8@
    then
        0485: return_true
        ret 0
    end
inc(0@)
end
059A: return_false
0AC9: 6@
ret 0

а с диалогом, твой скрипт скомпилировал - не работает, попробовал свой переделать, и вот что узнал. "проверка 1" в чат пишется, а проверка 2 нихуя. т.е. никак не работает этот опкод. если без первого пункта еще обойдусь, то текст из диалога пиздец как нужен для создания моего мегаскрипта. помогите кто может.
Код:
{$CLEO .cs}
0000: NOP
alloc 4@ 128
 
:n_1
wait 1000
0B4E: samp 1@ = get_current_dialog_id
if
1@ == 24 // диалог репорта на самп-рп
jf @n_1
0AF8: samp add_message_to_chat "проверка 1" 0xBA0FFF //это пишет
 
:n_3
wait 0
if
0B3C:  samp is_dialog_responded id 24 button 2@ list_item 3@ input_text 4@
jf @n_3
0AF8: samp add_message_to_chat "проверка 2" 0xBA0FFF // до этой строки не доходит скрипт
if
2@ == 1
jf @n_1
0AF8: samp add_message_to_chat "dialog closed %s" 0xBA0FFF 4@
0A93: end_custom_thread
1. А зачем использовать его функцию, если есть опкод в СФ для поиска подстроки в строке?
2. Как оказалось, с новым СФ этот опкод работает только с локальнми диалогами.
 
  • Нравится
Реакции: Избранный

Избранный

Новичок
198
30
1. А зачем использовать его функцию, если есть опкод в СФ для поиска подстроки в строке?
2. Как оказалось, с новым СФ этот опкод работает только с локальнми диалогами.

да, нашел опкод, оказывается все так просто, а я тут голову ломал)

Хелп, как заставить гг выпрыгнуть из машины? - 0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 2239.367 -1261.939 22.9375
 

Wa3riX

Новичок
53
0
да, нашел опкод, оказывается все так просто, а я тут голову ломал)
а серверные диалоги значит адресами памяти можно записать только?

Хелп, как заставить гг выпрыгнуть из машины? - 0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 2239.367 -1261.939 22.9375

Мне не надо его помещать куда - то, просто чтоб он вышел из машины, и встал рядом (как при нажатии enter)