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

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
не останавливаться если в 1 строчке максимум уже куплено
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
0B93: dialog 1@ set_background_color 2@
это для деикскуюит
 

Kristyan

Известный
165
16
Можно ставить проверку, если этот checkpoint будет на этом месте то срабатывало [/killcp] из сервера. Есть опкод для чего я прошу?
 

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Можно ставить проверку, если этот checkpoint будет на этом месте то срабатывало [/killcp] из сервера. Есть опкод для чего я прошу?
CLEO:
//RED CHECKPOINT
if
call @is_cp_active 0
then
call @get_cp_pos 0 0@ 1@ 2@
0af8: "RedCheckPointPos: %.2f - %.2f - %.2f" -1 0@ 1@ 2@
end
//RACE CHECKPOINT
if
call @is_racecp_active 0
then
call @get_racecp_pos 0 0@ 1@ 2@
0af8: "RaceCheckPointPos: %.2f - %.2f - %.2f" -1 0@ 1@ 2@
end

:is_cp_active
0AA2: 0@ = loadlib "samp.dll"
0A8E: 1@ = 0@ + 0x21A10C
0A8D: 1@ = readMem 1@ sz 4 vp 0
1@ += 0x24
0A8D: 1@ = readMem 1@ sz 4 vp 0
IF 1@ == TRUE
THEN 0485:  return_true
ELSE 059A:  return_false
END
0AA3: freelib 0@
0AB2: ret 0

:get_cp_pos
0AA2: 0@ = loadlib "samp.dll"
0A8E: 1@ = 0@ + 0x21A10C
0A8D: 1@ = readMem 1@ sz 4 vp 0
1@ += 0xC
0A8D: 2@ = readMem 1@ sz 4 vp 0
1@ += 0x4
0A8D: 3@ = readMem 1@ sz 4 vp 0
1@ += 0x4
0A8D: 4@ = readMem 1@ sz 4 vp 0
0AA3: freelib 0@
0AB2: ret 3 2@ 3@ 4@

:is_racecp_active
if 0AA2: 0@ = loadlib "samp.dll"
then 0A8E: 1@ = 0@ + 0x21A10C
0A8D: 1@ = readMem 1@ sz 4 vp 0
1@ += 0x49
0A8D: 1@ = readMem 1@ sz 4 vp 0
if 1@ == true
then 0485: return_true
else 059A: return_false
end
0AA3: freelib 0@
end
0AB2: ret 0

:get_racecp_pos
if 0AA2: 0@ = loadlib "samp.dll"
then 0A8E: 1@ = 0@ + 0x21A10C
0A8D: 1@ = readMem 1@ sz 4 vp 0
1@ += 0x2C
0A8D: 2@ = readMem 1@ sz 4 vp 0
1@ += 0x4
0A8D: 3@ = readMem 1@ sz 4 vp 0
1@ += 0x4
0A8D: 4@ = readMem 1@ sz 4 vp 0
0AA3: freelib 0@
end
0AB2: ret 3 2@ 3@ 4@
 
  • Нравится
Реакции: Kristyan

DDosOS

Новичок
8
0
Помогите пожалуйста решить проблему. Как перезапустить цикл по нажатию кнопки Q не дожидаясь конца цикла? Скрипт в данном виде вылетает когда доходит до строчки until false. В чем проблема? Укажите на ошибки, чтобы мне знать на будущее как и что делать. Если можно скиньте каких нибудь обучающих материалов. Очень надо.
 

Вложения

  • iBot+.cs
    18.8 KB · Просмотры: 5

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Помогите пожалуйста решить проблему. Как перезапустить цикл по нажатию кнопки Q не дожидаясь конца цикла? Скрипт в данном виде вылетает когда доходит до строчки until false. В чем проблема? Укажите на ошибки, чтобы мне знать на будущее как и что делать. Если можно скиньте каких нибудь обучающих материалов. Очень надо.

Для моментальной остановки бота лучше использовать перезапуск потока. У тебя не работал остановка т.к. скрипт не доходил до проверки что была нажата клавиша Q.

CLEO:
{$CLEO}
0000:
while not Samp.Available()
    wait 0
end
0B34: samp register_client_command "ibot" to_label @ibot
0B34: samp register_client_command "reload" to_label @reload

while true
    wait 0
    if 0@ == 1
        then
        Actor.PutAt($Player_Actor, 1970.91, -1064.89, 975.97)
        wait 1000
        Actor.PutAt($Player_Actor, 1980.49, -1044.09, 975.97)
        wait 7000
        Actor.PutAt($Player_Actor, 1987.98, -1025.39, 976.51)
        wait 2000
        Actor.PutAt($Player_Actor, 1964.91, -1065.25, 975.97)
        wait 1000
        Actor.PutAt($Player_Actor, 1980.49, -1044.09, 975.97)
        wait 7000
        Actor.PutAt($Player_Actor, 1987.98, -1025.39, 976.51)
        wait 2000  
    end  
end      
              
:ibot
0B12: 0@ = 0@ XOR 1
if 0@ == true
    then
    chatmsg "iBot активен | для активации нажмите Q | для деактивации удерживать Q (долго)" 0xFF0FFF
else
    chatmsg "iBot декативирован" 0xFF0FFF
end
SAMP.CmdRet()

:reload
0A92: create_custom_thread "НАЗВАНИЕ ФАЙЛА.cs"
0A93: end_custom_thread
SAMP.CmdRet()
 

DDosOS

Новичок
8
0
Для моментальной остановки бота лучше использовать перезапуск потока. У тебя не работал остановка т.к. скрипт не доходил до проверки что была нажата клавиша Q.

CLEO:
{$CLEO}
0000:
while not Samp.Available()
    wait 0
end
0B34: samp register_client_command "ibot" to_label @ibot
0B34: samp register_client_command "reload" to_label @reload

while true
    wait 0
    if 0@ == 1
        then
        Actor.PutAt($Player_Actor, 1970.91, -1064.89, 975.97)
        wait 1000
        Actor.PutAt($Player_Actor, 1980.49, -1044.09, 975.97)
        wait 7000
        Actor.PutAt($Player_Actor, 1987.98, -1025.39, 976.51)
        wait 2000
        Actor.PutAt($Player_Actor, 1964.91, -1065.25, 975.97)
        wait 1000
        Actor.PutAt($Player_Actor, 1980.49, -1044.09, 975.97)
        wait 7000
        Actor.PutAt($Player_Actor, 1987.98, -1025.39, 976.51)
        wait 2000
    end
end    
            
:ibot
0B12: 0@ = 0@ XOR 1
if 0@ == true
    then
    chatmsg "iBot активен | для активации нажмите Q | для деактивации удерживать Q (долго)" 0xFF0FFF
else
    chatmsg "iBot декативирован" 0xFF0FFF
end
SAMP.CmdRet()

:reload
0A92: create_custom_thread "НАЗВАНИЕ ФАЙЛА.cs"
0A93: end_custom_thread
SAMP.CmdRet()

Спасибо! А по нажатию клавиши возможно?

И еще хотелось бы узнать что означает в цикле while условие true?:scratch:
 

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Спасибо! А по нажатию клавиши возможно?

И еще хотелось бы узнать что означает в цикле while условие true?:scratch:
Да, если у тебя не было задержки.

while true - бесконечный цикл
 

DDosOS

Новичок
8
0
Да, если у тебя не было задержки.

while true - бесконечный цикл

Ну без задержки тут никак. Спасибо.

Да, если у тебя не было задержки.

while true - бесконечный цикл

При перезагрузке скрипт отключается. В чем проблема? не совсем понял что писать в этой строке 0A92: create_custom_thread "НАЗВАНИЕ ФАЙЛА.cs"
 
Последнее редактирование модератором:

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
При перезагрузке скрипт отключается. В чем проблема? не совсем понял что писать в этой строке 0A92: create_custom_thread "НАЗВАНИЕ ФАЙЛА.cs"
Код:
 0A92: create_custom_thread "iBot+.cs"
 

DDosOS

Новичок
8
0
{$CLEO} 0000: while not Samp.Available() wait 0 end 0B34: samp register_client_command "ibot" to_label @ibot 0B34: samp register_client_command "reload" to_label @reload while true wait 0 if 0@ == 1 then Actor.PutAt($Player_Actor, 1970.91, -1064.89, 975.97) wait 1000 Actor.PutAt($Player_Actor, 1980.49, -1044.09, 975.97) wait 7000 Actor.PutAt($Player_Actor, 1987.98, -1025.39, 976.51) wait 2000 Actor.PutAt($Player_Actor, 1964.91, -1065.25, 975.97) wait 1000 Actor.PutAt($Player_Actor, 1980.49, -1044.09, 975.97) wait 7000 Actor.PutAt($Player_Actor, 1987.98, -1025.39, 976.51) wait 2000 end end :ibot 0B12: 0@ = 0@ XOR 1 if 0@ == true then chatmsg "iBot активен | для активации нажмите Q | для деактивации удерживать Q (долго)" 0xFF0FFF else chatmsg "iBot декативирован" 0xFF0FFF end SAMP.CmdRet() :reload 0A92: create_custom_thread "НАЗВАНИЕ ФАЙЛА.cs" 0A93: end_custom_thread SAMP.CmdRet()
Сначала работал, теперь крашит.. Не понимаю от чего это зависит. Уже голова кругом.
 

san0

Известный
Друг
411
267
Сначала работал, теперь крашит.. Не понимаю от чего это зависит. Уже голова кругом.
Крутая задача
CLEO:
{$CLEO}

const
    bState          = 0@
    dwArrayMemBlock = 1@
    i               = 2@
    j               = 3@
    tmp             = 4@
    array           = 5@  
    array_X         = 5@
    array_Y         = 6@
    array_Z         = 7@
    array_Time      = 8@
  
    ARRAY_SIZE      = 80
    ARRAY_STEP      = 16
end

:EntryPoint
0000: NOP

while not Samp.Available()
    wait 40
end        

0B34: samp register_client_command "ibot" to_label @ibot

while true
    wait 0
    if bState == true
    then
        0AC6: dwArrayMemBlock = label @Array offset 
      
        for i = 0 to ARRAY_SIZE step ARRAY_STEP
            0A8E: tmp = dwArrayMemBlock + i
            for j = 0 to 4 step 1    
                0A8D: array(j,4f) = read_memory tmp size 4 virtual_protect 0
                000A: tmp += 4
            end  
            Actor.PutAt($PLAYER_ACTOR, array_X, array_Y, array_Z)
            if gosub @IsProcessNotBeingInterrupted
            jf break
        end
      
        bState = false
    end
end 

:Array
hex
1F 5D F6 44  7B 1C 85 C4  14 FE 73 44  E8 03 00 00
AE 8F F7 44  E1 82 82 C4  14 FE 73 44  58 1B 00 00
5C 7F F8 44  7B 2C 80 C4  A4 20 74 44  D0 07 00 00
1F 9D F5 44  00 28 85 C4  14 FE 73 44  E8 03 00 00
AE 8F F7 44  E1 82 82 C4  14 FE 73 44  58 1B 00 00
5C 7F F8 44  7B 2C 80 C4  A4 20 74 44  D0 07 00 00
end

:IsProcessNotBeingInterrupted
const
    timer = 33@
end
0006: timer = 0
while 001D: array_Time > timer
    wait 0
    if or
    0ab0: 0x51
    0039: bState == 0
    then
        return_false
        return
    end
end
return_true
return
             
:ibot
0B12: bState = bState XOR 1
if bState == true
then
    chatmsg "iBot активен | для активации нажмите Q | для деактивации удерживать Q (долго)" 0xFF0FFF
else
    chatmsg "iBot декативирован" 0xFF0FFF
end
SAMP.CmdRet()
while условие true?
С такими вопросами обычно F12 нажимают в Sanny Builder'е ну и гайды посмотреть CLEO(https://blast.hk/forums/12/?prefix_id=39) + wiki