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

The Spark

Известный
655
680
Как сказать серверу то что к тебе сел челик в машину?
 
Последнее редактирование:

Carrentine

Потрачен
569
463
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

The Spark

Известный
655
680
Как вывести из консоли в чат? Например в консоль написало что-то и это в чат отписало.
 

AXE_CAMERON

Участник
66
0
Код:
{$CLEO}
{$NOSOURCE}
0000:

while not samp.Available()
wait 0
end

wait 200
0B6D: render 1@ = create_font "Arial" height 36 flags 0

while samp.Available()
wait 0
    0B4E: samp 0@ = get_current_dialog_id
    if
    0@ == 722
    then
        while true
        wait 0
            0B6F: render font 1@ draw_text "Диалог виден" pos 200 100 color -1
            if
            0B3C:  samp is_dialog_responded id 722 button 0 list_item 0 input_text 0
            then
                0AF8: samp add_message_to_chat "Диалог{00FFFF} 722{00FF00} ЗАВЕРШЕН" color -1
                break
            end
        end
    end
end
Так-с, 722 ид диалога- это диалог, созданный сервером. Почему когда я закрываю какой либо кнопкой диалог ид 722, цикл while не останавливается? Заранее спасибо!
 

Carrentine

Потрачен
569
463
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
{$CLEO}
{$NOSOURCE}
0000:

while not samp.Available()
wait 0
end

wait 200
0B6D: render 1@ = create_font "Arial" height 36 flags 0

while samp.Available()
wait 0
    0B4E: samp 0@ = get_current_dialog_id
    if
    0@ == 722
    then
        while true
        wait 0
            0B6F: render font 1@ draw_text "Диалог виден" pos 200 100 color -1
            if
            0B3C:  samp is_dialog_responded id 722 button 0 list_item 0 input_text 0
            then
                0AF8: samp add_message_to_chat "Диалог{00FFFF} 722{00FF00} ЗАВЕРШЕН" color -1
                break
            end
        end
    end
end
Так-с, 722 ид диалога- это диалог, созданный сервером. Почему когда я закрываю какой либо кнопкой диалог ид 722, цикл while не останавливается? Заранее спасибо!
Потому что тут не нужен цикл while.
И еще, перестань говнокодить, пожалуйста.

CLEO:
{$CLEO}

0000:

repeat
    wait 0
until SAMP.Available()

0B6D: render 0@ = create_font "Arial" height 36 flags 0

while true
    wait 0
    0B4E: samp 1@ = get_current_dialog_id
    if 1@ == 722
    then
        0B6F: render font 0@ draw_text "Dialog is visible" pos 200 100 color -1
        if 0B3C:  samp is_dialog_responded id 722 button 0 list_item 0 input_text 0
        then chatmsg "Dialog not visible" -1
        end
    end
end
 
  • Нравится
Реакции: Const

CLYDE

Известный
87
8
Можно как-то в скрипт добавить типо оповещения шоле, чтобы когда игрок заходит на сервер, мне к примеру на почту приходил его ник и IP сервера?
 

Royan_Millans

Известный
145
183
CLEO:
:movescrin
alloc 1@ 512
0AB1: @GetCurrentPcUserName 0 1@
alloc 2@ 512
alloc 3@ 512
0AD3: 2@ = format "C:\Users\%s\Documents\GTA San Andreas User Files\SAMP\screens\sa-mp-%d.png" params 1@ 0@
0AD3: 3@ = format "C:\Users\%s\Documents\GTA San Andreas User Files\SAMP\sa-mp-%d.png" 1@ 0@
if 0B02: movefile 2@ to 3@
then
   0AF8: samp add_message_to_chat "Óñïåøíî" color -1
else
   0AF8: samp add_message_to_chat "Ñîñè õåð" color -1
end
free 1@
free 2@
free 3@
ret 0

Почему не работает, сразу хрень происходит какая-то(CJ и камера в начало игры)

Lua:
function isCoordInArea2d(xW, yW, x1, y1, x2, y2)
    if (xW < x1) and (yW < y1) and (xW > x2) and (yW > y2) then
        return true
    elseif (xW > x1) and (yW > y1) and (xW < x2) and (yW < y2) then
        return true
    else
        return false
    end
end
Покажите пожалуйста как будет выглядеть на клео, спасибо
CLEO:
:isCoordInArea2d
/*
  0@ = xW
  1@ = yW
  2@ = x1
  3@ = y1
  4@ = x2
  5@ = y2
  6@ = 1/0 (return true/false)
  example: call @isCoordInArea2d 6 xW 0@ | yW 1@ | x1 2@ | y1 3@ | x2 4@ | y2 5@ | return 6@ 
*/
if and
0025:   2@ > 0@  // (float)
0025:   3@ > 1@  // (float)
0025:   0@ > 4@  // (float)
0025:   1@ > 5@  // (float)
then
6@ = 1
else
   if and
   0025:   0@ > 2@  // (float)
   0025:   1@ > 3@  // (float)
   0025:   4@ > 0@  // (float)
   0025:   5@ > 1@  // (float)
   then
      6@ = 1
   else
      6@ = 0
   end
end
ret 1 6@

Можно как-то в скрипт добавить типо оповещения шоле, чтобы когда игрок заходит на сервер, мне к примеру на почту приходил его ник и IP сервера?
Через wininet делай запрос на свой сервер, а потом на сервере обрабатывай и отсылай на мыло
PHP: mail - Manual(http://php.net/manual/ru/function.mail.php) - это для сервера(php), с wininet разберешься уже сам
 
  • Нравится
Реакции: CLYDE

Royan_Millans

Известный
145
183
уверен что это можно использовать для условий? и вообще мне кажется, что этот опкод работает только внутри папки с игрой.
Нет, всё работает если указать вместо переменных просто строки
Например: 0B02: movefile "C:\Users\Wlokas\Documents\GTA San Andreas User Files\SAMP\screens\sa-mp-123.png" to "C:\Users\Wlokas\Documents\GTA San Andreas User Files\SAMP\sa-mp-123.png"
Но как только я форматирую текст, и указываю переменные - происходит такая херня
 

astap_

Известный
Всефорумный модератор
626
601
Нет, всё работает если указать вместо переменных просто строки
Например: 0B02: movefile "C:\Users\Wlokas\Documents\GTA San Andreas User Files\SAMP\screens\sa-mp-123.png" to "C:\Users\Wlokas\Documents\GTA San Andreas User Files\SAMP\sa-mp-123.png"
Но как только я форматирую текст, и указываю переменные - происходит такая херня
проверь какая строка у тебя получается после форматирования, через chatmsg например.
если все нормально, попробуй выделить память таким образом
CLEO:
0C11: memset 1@ value 0x0 size 512
0C11: memset 2@ value 0x0 size 512
0C11: memset 3@ value 0x0 size 512
 
Последнее редактирование:

Royan_Millans

Известный
145
183
проверь какая строка у тебя получается после форматирования, через chatmsg например.
если все нормально, попробуй выделить память таким образом
CLEO:
0C11: memset 1@ value 0x0 size 512
0C11: memset 2@ value 0x0 size 512
0C11: memset 3@ value 0x0 size 512
не, всё так же
 

san0

Известный
Друг
411
268
уверен что это можно использовать для условий?
IF and SET же
попробуй выделить память таким образом
https://blast.hk/wiki/opcodes:0c11 Заполнение != выделение :)
Нет, всё работает если указать вместо переменных просто строки
Опкод не работает для строк, переданных через указатель. Попробуй так:
CLEO:
// ..
const
    MAX_PATH = 260
end
alloc 2@ MAX_PATH
alloc 3@ MAX_PATH
0AD3: 2@ = format "..."
0AD3: 3@ = format "..."
if call @WinAPI_MoveFile 2 2@ 3@
then
    0AF8: samp add_message_to_chat "Got it" color -1
else
    call @WinAPI_GetLastError 0 ret_to 4@
    0AF8: samp add_message_to_chat "Unfortunately last WinApi call failed with the following error code %u" color -1 4@
end
free 2@
free 3@
// ...
:WinAPI_MoveFile
0AA2: 2@ = load_library "Kernel32.dll"
0AA4: 3@ = get_proc_address "MoveFileA" library 2@
0AA7: call_function 3@ num_params 2 pop 0 1@ 0@ ret_to 4@
0AA3: free_library 3@
if 4@ == 0
then return_false
else return_true
end
0AB2: ret_from_scm 0

:WinAPI_GetLastError
0AA2: 2@ = load_library "Kernel32.dll"
0AA4: 3@ = get_proc_address "GetLastError" library 2@
0AA7: call_function 3@ num_params 0 pop 0 ret_to 4@
0AA3: free_library 3@
0AB2: ret_from_scm 1 4@
 
  • Нравится
Реакции: Royan_Millans и astap_

AXE_CAMERON

Участник
66
0
У меня есть строка, которую я ввожу в чат, но не отправил еще- "Здравствуйте1". В конце строки стоит единица ну или другой символ, я хочу удалить этот последний символ, при эмуляции нажатия backspace на задержку 0 стирается 2-3 символа последних. Каким образом можно стереть именно последний символ?)
 

Royan_Millans

Известный
145
183
У меня есть строка, которую я ввожу в чат, но не отправил еще- "Здравствуйте1". В конце строки стоит единица ну или другой символ, я хочу удалить этот последний символ, при эмуляции нажатия backspace на задержку 0 стирается 2-3 символа последних. Каким образом можно стереть именно последний символ?)
Код:
:delete_last_chars_from_string
// call @delete_last_chars_from_string call 2 0@ 5
var
0@: int
1@: int
2@: int
end
0C17: 2@ = strlen 0@
2@ -= 1@
0@ += 2@
0C11: memset 0@ 0 1@
ret 0

Получить строку из чата - 0B77: samp get_chat_input_text_to 0@
Установить строку в чат - 0B76: samp set_chat_input_text 0@