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

gotcha

Новичок
2
0
Почему в треде не работает последовательная задержка? Все выкидывается разом.
 

Вложения

  • sanny_2017-11-07_20-55-55.png
    sanny_2017-11-07_20-55-55.png
    23.3 KB · Просмотры: 354

ShadowBroker

Известный
110
27
CLEO:
{$CLEO}

0000:

repeat
wait 0
until samp.Available()

alloc 0@ 256
alloc 1@ 256
alloc 2@ 256

while true
wait 0
0B75: samp get_chat_string 99 text_to 0@ prefix_to 0 color_to 0 prefix_color_to 0
    if 0C18: 0 = strstr string1 0@ string2 "123"
    then
    0AA5: call_function 0x8220AD num_params 4 pop 4 | 2@v 1@ "%s[%d]" 0@
    wait 100
    0af8: "%d test" -1 2@
    end
end

Выдает какую-то дич, но если поставить ник вместо %s то срабатывает как надо
 
  • Нравится
Реакции: eiuhuth

Clopster

Известный
143
96
Не знаю как правильно юзать WinApi, пытаюсь научиться. Хочу из реестра взять параметр один, но из 4@ мне возвращает 0 все время, а из 5@ 87.

Инфу брал здесь RegGetValue function (Windows)(https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms724868(v=vs.85).aspx)

CLEO:
while true
wait 0
    if cheat "6"
    then  
    0AA2: 0@ = load_library "Advapi32.dll"
    0AA4: 1@ = get_proc_address "RegGetValueA" library 0@
    0AA7: call_function 1@ num_params 7 pop 0 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" 0 "InstallDate" 0 0 4@ 0 5@
    0AA3: free_library 0@
    msg "%d - 4" 0xff00ff 4@
    msg "%d - 5" 0xff00ff 5@
    end
end
 

LUCHARE

Известный
Друг
545
688
Как сделать что бы хук (0BE3) бесконечно выполнялся при 0ADC: test_cheat "BLOWUP" и отключался так же
Активацию запилить короче
CLEO:
0BE3: raknet setup_incoming_rpc_hook @hook

while true
    wait 0
    if 0ADC:   test_cheat "LEL"
    then 
        0B12: 0@ = 0@ XOR 1
    end
end

:hook
if 0@ == true
then 
    RakNet.HookRet(false)
end
RakNet.HookRet(true)
 
  • Нравится
Реакции: ShadowBroker

BlackKnigga

Известный
BH Team
922
444
Не знаю как правильно юзать WinApi, пытаюсь научиться. Хочу из реестра взять параметр один, но из 4@ мне возвращает 0 все время, а из 5@ 87.

Инфу брал здесь RegGetValue function (Windows)(https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms724868(v=vs.85).aspx)

CLEO:
while true
wait 0
    if cheat "6"
    then 
    0AA2: 0@ = load_library "Advapi32.dll"
    0AA4: 1@ = get_proc_address "RegGetValueA" library 0@
    0AA7: call_function 1@ num_params 7 pop 0 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" 0 "InstallDate" 0 0 4@ 0 5@
    0AA3: free_library 0@
    msg "%d - 4" 0xff00ff 4@
    msg "%d - 5" 0xff00ff 5@
    end
end
Параметры нужно передавать в обратном порядке
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Не знаю как правильно юзать WinApi
Наверно стоило это сделать сначала на консольном приложении.

из 4@ мне возвращает 0 все время, а из 5@ 87
Читаем справку:
upload_2017-11-8_12-39-29.png


ERROR_SUCCESS = 0, а у нас возвращает 87 => смотрим ошибку:
upload_2017-11-8_12-40-46.png

Хм, неправильный параметр. Почему же? Наверно бы стоило начать с основ C и несколько примеров из гугла, чтобы узнать как же вызывается функция, не говорим уже о порядке передачи параметров.

C++:
LONG WINAPI RegGetValue(
  _In_        HKEY    hkey,
  _In_opt_    LPCTSTR lpSubKey,
  _In_opt_    LPCTSTR lpValue,
  _In_opt_    DWORD   dwFlags,
  _Out_opt_   LPDWORD pdwType,
  _Out_opt_   PVOID   pvData,
  _Inout_opt_ LPDWORD pcbData
);
Т.к. это stdcall - параметры передаются справа налево, а значит:
pcbData - отсюда считывается размер pvData и сюда же возвращается количество записанных символов в pvData
pvData - буфер под значение
pdwType - судя по всему возвращается возможный тип значения, если не нужно - пишем 0
dwFlags - флаги/фильтрация значения, если значение не подходит под эти флаги - функция возвращает ошибку (вместо ERROR_SUCCESS)
lpValue - требуемое значение из ветки (указывается наименование ключа)
lpSubKey - ветка реестра
hkey - раздел (указывается тип HKEY (лонговый), а не строка):
upload_2017-11-8_12-51-26.png
 

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Можно как то обойти анти-флуд систему ? Раньше была тема ща хз где
 

ShadowBroker

Известный
110
27
CLEO:
{$CLEO}

0000:

repeat
wait 0
until samp.Available()

alloc 0@ 256
alloc 1@ 256
alloc 2@ 256

while true
wait 0
0B75: samp get_chat_string 99 text_to 0@ prefix_to 0 color_to 0 prefix_color_to 0
    if 0C18: 0 = strstr string1 0@ string2 "123"
    then
    0AA5: call_function 0x8220AD num_params 4 pop 4 | 2@v 1@ "%s[%d]" 0@
    wait 100
    0af8: "%d test" -1 2@
    end
end

Выдает какую-то дич, но если поставить ник вместо %s то срабатывает как надо
Хелп бойззз
 

enziweee

Участник
28
32
ку
нужно, чтобы при вводе /test он давал сразу всем актёрам 3д текст
сейчас он работает так: 1 раз ввёл /test - одному актёру дался 3д текст.
CLEO:
{$CLEO}

0000:

if
    8AF7: get_samp_base_to 10@
then
    0A93: end_custom_thread
end
repeat
    wait 100
until 0AFA: is_samp_structures_available
0B34: samp register_client_command "test" to_label @2

:10
wait 0
0A8E: 0@ = 0 + 0

while true
wait 0
end


:2
0A8E: 0@ = 0@ + 1                                                
8039:   not 0@ == 1001
jf @10
0B23:  samp is_player_connected 0@
jf @2
0B20: samp 1@ = actor_handle_by_samp_player_id 0@
056D:   actor 1@ defined
jf @2
02CB:   actor 1@ bounding_sphere_visible
jf @2
04C4: store_coords_to 5@ 6@ 7@ from_actor 1@ with_offset 0.0 0.0 0.8
0B55: convert_3D_coords 5@ 6@ 7@ to_screen 5@ 6@                
0AC8: 2@ 64 // Allocation of memory for the nickname
0AC8: 3@ 128 //
2@ = SAMP.GetPlayerNickname(0@) // Get nickname by player id
0AD3: 3@ = format "Player: %d" 0@ // Format
0B44: samp 4@ = create_3d_text 3@ color 0xFFFFFFFF position 0.0 0.0 0.2 { Over the player } view_distance 50.0 show_behind_walls true attached_to_player 0@ { Player ID } attached_to_vehicle -1
0AC9: 2@ // Free the memory
0AC9: 3@ // Free the memory
SAMP.CmdRet()
 

LUCHARE

Известный
Друг
545
688