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

Dark_Knight

Me, me and me.
Друг
4,056
2,074
Счетчики они сами по себе увеличиваются на одиницу. Обнулять их тоже можно.
 

unInstance

Новичок
Проверенный
311
222
Допустим, я хочу что-то рендерить и мне нужно чтобы это "что-то" было прижато к левому ребру экрана. Как мне вычислить эти координаты учитывая, что у каждого разное разрешение?
 

san0

Известный
Друг
411
267
Допустим, я хочу что-то рендерить и мне нужно чтобы это "что-то" было прижато к левому ребру экрана. Как мне вычислить эти координаты учитывая, что у каждого разное разрешение?
Есть разновидность Game и Window координат и опкоды для конвертации туда и обратно
0B5F: convert_window_screen_coords 1@ 2@ to_game_screen_coords 3@ 4@
0B60: convert_game_screen_coords 1@ 2@ to_window_screen_coords 3@ 4@
 

AWRage

Активный
642
141
Как узнать ID пикапа?
Как повторно подобрать пикап, стоя на нем? (То есть, чтобы не отходить от него и не подбирать снова)
 

C&J

Известный
41
22
Скажите пожалуйста почему не работает данная проверка? выводит всегда "Работает",хотя выходил из программы "Skype".
Код:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP
const
Skype = "Skype.exe"
end
:Noname_15
   not SAMP.Available
jf @Noname_36
wait 400
goto @Noname_15

:Noname_36

0B34: samp register_client_command "ter" to_label @start

while true
wait 10
end

:Start
if
call @Test 1 Skype
jf @FF1
chatmsg "Работает" -1
SAMP.CmdRet

:FF1
chatmsg "Нет!" -1
SAMP.CmdRet

:Test
10@ = -1
0AA2: 25@ = load_library "Kernel32.DLL" // IF and SET
0AA4: 26@ = get_proc_address "CreateToolhelp32Snapshot" library 25@ // IF and SET
0AA7: call_function 26@ num_params 2 pop 0 10@ "TH32CS_SNAPTHREAD" 27@ 
0AA3: free_library 25@ 
if
10@ == -1
jf @Str
ret 0

:Str
if
call @Test1 1 10@ 11@
jf @Rete
    if
    0C14: strcmp string1 0@ string2 11@
    jf @Chik
    ret 0     
    :Chik
    wait 0
        if call @Test2 1 10@ 11@
        jf @Chik
        if
        0C14: strcmp string1 0@ string2 11@
        then
        ret 0
        end
:Rete
ret 0

:Test1
0AA2: 25@ = load_library "Kernel32.DLL" // IF and SET
0AA4: 26@ = get_proc_address "Thread32First" library 25@ // IF and SET
0AA7: call_function 26@ num_params 2 pop 0 1@ 0@ 27@ 
0AA3: free_library 25@
ret  1 1@

:Test2
0AA2: 25@ = load_library "Kernel32.DLL" // IF and SET
0AA4: 26@ = get_proc_address "Thread32Next" library 25@ // IF and SET
0AA7: call_function 26@ num_params 2 pop 0 1@ 0@ 27@ 
0AA3: free_library 25@
ret  1 1@
 

Xample

Новичок
89
1
CLEO:
{$CLEO}
{$I SF}
0000:
repeat
wait 707
until $707 > 15 //SF > 5.2.*
0BE3: raknet setup_incoming_rpc_hook @Hook

0BDE: pause_thread 0

:Hook
0BE5: raknet 2@ = get_hook_param PARAM_PACKETID
if
2@ == RPC_CHAT
    then 018C: play_sound 1052 at 0.0 0.0 0.0
end
0BE0: raknet hook_ret 1


не хочет пиликать

а вот так реагирует на все чаты (мне надо только IC чат) 2@ ==RPC_ScrClientMessage



пока сделал вот так:
Код:
{$CLEO}
{$INCLUDE SF}
0001: wait 0 ms
while not SAMP.Available()
wait 400
end

0AC8: 1@ = allocate_memory_size 144
0AC8: 2@ = allocate_memory_size 32
0AAC: 11@ = load_audiostream "CLEO\sounds\1.mp3"
0ABC: set_audiostream 11@ volume 1.0

repeat
wait 707
until $707 > 15 //SF > 5.2.*

0BE3: raknet setup_incoming_rpc_hook @in_rpc // подготавливаем хук
0BDE: pause_thread 0 // Бесконечный цикл нам не нужен, поэтому просто поставим скрипт на "паузу". Хуки, вызовы команды и т.п. будут работать в это время
:in_rpc
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID // Получаем ИД RPC
wait 0
if        
    0@ == RPC_ScrClientMessage // сверяем с необходимым ИДом
then
    0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 3@ prefix_color_to 0

if and
0C18: 0 = strstr string1 1@ string2 "- "
0C18: 0 = strstr string1 1@ string2 "("
0C18: 0 = strstr string1 1@ string2 ")"
0C18: 0 = strstr string1 1@ string2 "["
0C18: 0 = strstr string1 1@ string2 "]" 
    then
0ACC: show_text_lowpriority "MESSAGE" time 1000   

0AAD: set_mp3 11@ perform_action 1
        
   end
end
0BE0: raknet hook_ret true // принимаем RPC, false - не принимать
но это не правильно
 
Последнее редактирование:

SR_team

like pancake
BH Team
4,707
6,347
не хочет пиликать

а вот так реагирует на все чаты (мне надо только IC чат) 2@ ==RPC_ScrClientMessage



пока сделал вот так:
Код:
{$CLEO}
{$INCLUDE SF}
0001: wait 0 ms
while not SAMP.Available()
wait 400
end

0AC8: 1@ = allocate_memory_size 144
0AC8: 2@ = allocate_memory_size 32
0AAC: 11@ = load_audiostream "CLEO\sounds\1.mp3"
0ABC: set_audiostream 11@ volume 1.0

repeat
wait 707
until $707 > 15 //SF > 5.2.*

0BE3: raknet setup_incoming_rpc_hook @in_rpc // подготавливаем хук
0BDE: pause_thread 0 // Бесконечный цикл нам не нужен, поэтому просто поставим скрипт на "паузу". Хуки, вызовы команды и т.п. будут работать в это время
:in_rpc
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID // Получаем ИД RPC
wait 0
if       
    0@ == RPC_ScrClientMessage // сверяем с необходимым ИДом
then
    0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 3@ prefix_color_to 0

if and
0C18: 0 = strstr string1 1@ string2 "- "
0C18: 0 = strstr string1 1@ string2 "("
0C18: 0 = strstr string1 1@ string2 ")"
0C18: 0 = strstr string1 1@ string2 "["
0C18: 0 = strstr string1 1@ string2 "]"
    then
0ACC: show_text_lowpriority "MESSAGE" time 1000  

0AAD: set_mp3 11@ perform_action 1
       
   end
end
0BE0: raknet hook_ret true // принимаем RPC, false - не принимать
но это не правильно
чем ic отличается от обычного?
 

SR_team

like pancake
BH Team
4,707
6,347
Скажите пожалуйста почему не работает данная проверка? выводит всегда "Работает",хотя выходил из программы "Skype".
Код:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP
const
Skype = "Skype.exe"
end
:Noname_15
   not SAMP.Available
jf @Noname_36
wait 400
goto @Noname_15

:Noname_36

0B34: samp register_client_command "ter" to_label @start

while true
wait 10
end

:Start
if
call @Test 1 Skype
jf @FF1
chatmsg "Работает" -1
SAMP.CmdRet

:FF1
chatmsg "Нет!" -1
SAMP.CmdRet

:Test
10@ = -1
0AA2: 25@ = load_library "Kernel32.DLL" // IF and SET
0AA4: 26@ = get_proc_address "CreateToolhelp32Snapshot" library 25@ // IF and SET
0AA7: call_function 26@ num_params 2 pop 0 10@ "TH32CS_SNAPTHREAD" 27@
0AA3: free_library 25@
if
10@ == -1
jf @Str
ret 0

:Str
if
call @Test1 1 10@ 11@
jf @Rete
    if
    0C14: strcmp string1 0@ string2 11@
    jf @Chik
    ret 0    
    :Chik
    wait 0
        if call @Test2 1 10@ 11@
        jf @Chik
        if
        0C14: strcmp string1 0@ string2 11@
        then
        ret 0
        end
:Rete
ret 0

:Test1
0AA2: 25@ = load_library "Kernel32.DLL" // IF and SET
0AA4: 26@ = get_proc_address "Thread32First" library 25@ // IF and SET
0AA7: call_function 26@ num_params 2 pop 0 1@ 0@ 27@
0AA3: free_library 25@
ret  1 1@

:Test2
0AA2: 25@ = load_library "Kernel32.DLL" // IF and SET
0AA4: 26@ = get_proc_address "Thread32Next" library 25@ // IF and SET
0AA7: call_function 26@ num_params 2 pop 0 1@ 0@ 27@
0AA3: free_library 25@
ret  1 1@
вызывай GetProcessHandle из kernel32.dll. операнд — указатель на имя программы