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

Perojek)0

Известный
205
3
Как узнать IP сервера, к которому подключён, или как это проверить?

И как отсюда можно что-то считать? Это не текстдрав
TqkCkl7.jpg
 
Последнее редактирование:

PaHaNjkee

Новичок
13
0
Использую DXUT диалоги в скрипте. Как активировать мышку для использования диалогов?
И еще вопрос. Как создать второй поток и передать в него переменную?
Код:
{$CLEO .cs}
{$INCLUDE SF}
0000:

var
  0@: int
end

repeat
  wait 300
until 0AFA:  is_samp_available

wait 0

0C6A: 2@ = create_custom_thread_at_label @thread 0@ // создаю поток и передаю в него переменную

0B34: samp register_client_command "show" to_label @show

0B80: dialog 1@ = create "Dialog"
0B84: dialog 1@ set_pos_XY 45 380 size 280 120
0B91: dialog 1@ add_static id 1 text "0" pos_XY 10 10 size 300 20
0B91: dialog 1@ add_static id 2 text "$0" pos_XY 10 30 size 300 20
0B82: dialog 1@ add_button id 3 text "Start" pos_XY 10 55 size 120 30
0B82: dialog 1@ add_button id 4 text "Stop" pos_XY 150 55 size 120 30
0B86: dialog 1@ set_visible 0

while true
  wait 0
  if 0B81: dialog 1@ pop_event_to 3@ control_id_to 4@
  then
  if 3@ == 257
  then
  if 4@ == 3
  then
  0AF8: samp add_message_to_chat "1232" color -1 params
  end
  if 4@ == 4
  then
  0AF8: samp add_message_to_chat "1231" color -1 params
  end
  end
  end
end

:show
  wait 0
  if 0@ == 0
  then
  0B86: dialog 1@ set_visible 1
  0@ = 1 
  else
  0B86: dialog 1@ set_visible 0
  0@ = 0 
  end
0B43: samp cmd_ret

:thread
wait 0
  while true
  wait 2500
  log "%d" 0@ // поток работает, НО тут всегда 0, даже если в переменной 1
  end
jump @thread
 
Последнее редактирование:

iTz_WEEZY

Известный
298
87
Как правильно использовать опкод:
CLEO:
0B28: samp disconnect_with_reason 0
Он дает рестарт сервера и Крэшь, а нужно именно "Server closed Connect"
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,976
Возможно ли в клео без sampFuncs реализовать world_to_screen? (как в собейте на M, где расположение игроков показывает относительно игрока)
И если да, то как? (пример вывода информации на эти координаты, если можно, тоже покажите)


CLEO:
:getScreenXYFrom3DCoords
0AC7: 14@ = var 0@ offset
0AC7: 15@ = var 3@ offset
0AC7: 16@ = var 6@ offset
0AC7: 17@ = var 9@ offset
0AA5: call 0x70CE30 num_params 6 pop 6 {18@ 18@} 0 0 17@ 16@ 15@ 14@
0007: 12@ = 640.0
0007: 13@ = 448.0
0A8D: 14@ = read_memory 0xC17044 size 4 virtual_protect 0
0A8D: 15@ = read_memory 0xC17048 size 4 virtual_protect 0
0093: 14@ = integer 14@ to_float
0093: 15@ = integer 15@ to_float
0073: 12@ /= 14@
0073: 13@ /= 15@
006B: 3@ *= 12@
006B: 4@ *= 13@
0AB2: ret 2 3@ 4@
 

PaHaNjkee

Новичок
13
0
Как создать второй поток и передать в него переменную?
Или подскажите альтернативный вариант. Как хочу сделать я: 1 поток для проверки нажатия кнопок в DXUT диалоге, который работает без задержки, а второй поток для работы самого бота. Проверку нажатия кнопок и работу бота не могу сделать в одном потоке, потому что бот работает с задержками, а кнопку могут нажать в любой момент.
Код:
{$CLEO .cs}
{$INCLUDE SF}
0000:

var
  0@: int
end

repeat
  wait 300
until 0AFA:  is_samp_available

wait 0

0C6A: 2@ = create_custom_thread_at_label @thread 0@ // создаю поток и передаю в него переменную

0B34: samp register_client_command "show" to_label @show

0B80: dialog 1@ = create "Dialog"
0B84: dialog 1@ set_pos_XY 45 380 size 280 120
0B91: dialog 1@ add_static id 1 text "0" pos_XY 10 10 size 300 20
0B91: dialog 1@ add_static id 2 text "$0" pos_XY 10 30 size 300 20
0B82: dialog 1@ add_button id 3 text "Start" pos_XY 10 55 size 120 30
0B82: dialog 1@ add_button id 4 text "Stop" pos_XY 150 55 size 120 30
0B86: dialog 1@ set_visible 0

while true
  wait 0
  if 0B81: dialog 1@ pop_event_to 3@ control_id_to 4@
  then
  if 3@ == 257
  then
  if 4@ == 3
  then
  0AF8: samp add_message_to_chat "1232" color -1 params
  end
  if 4@ == 4
  then
  0AF8: samp add_message_to_chat "1231" color -1 params
  end
  end
  end
end

:show
  wait 0
  if 0@ == 0
  then
  0B86: dialog 1@ set_visible 1
  0@ = 1 
  else
  0B86: dialog 1@ set_visible 0
  0@ = 0 
  end
0B43: samp cmd_ret

:thread
wait 0
  while true
  wait 2500
  log "%d" 0@ // поток работает, НО тут всегда 0, даже если в переменной 1
  end
jump @thread
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,976
А собственно почему там должно быть не 0? Ты передал переменную в которой было 0, что по твоему там должно быть?
 

Сэнд

Известный
Проверенный
436
213
CLEO:
{$CLEO .cs}
0000:

repeat
    wait 0
until SAMP.Available()

const
FCR_BOLD = 4
FCR_CHADOW = 8
end

while true
    wait 0
    if and
        8118: NOT actor $PLAYER_ACTOR dead
        0AD2: 0@ = player $PLAYER_CHAR targeted_actor
    then
        1@ = SAMP.GetSAMPPlayerIDByActorHandle(0@)
            0B36: samp 6@ = get_player_nickname 1@
            0AD3: 7@ = format "%d[%d]" 6@ 1@
            0B6D: render 4@ = create_font "Arial" height 8 flags 12
    end                                                     
end

:render
wait 0
0ab0: 01
jf @render
0B6F: render font 4@ draw_text 7@ pos 150 150 color 0x8B00FF
jump @render

Сначала не работает, потом крашит. В чём ошибка?
 

hnnssy

Известный
Друг
2,684
2,757
Как создать второй поток и передать в него переменную?
Или подскажите альтернативный вариант. Как хочу сделать я: 1 поток для проверки нажатия кнопок в DXUT диалоге, который работает без задержки, а второй поток для работы самого бота. Проверку нажатия кнопок и работу бота не могу сделать в одном потоке, потому что бот работает с задержками, а кнопку могут нажать в любой момент.
Код:
{$CLEO .cs}
{$INCLUDE SF}
0000:

var
  0@: int
end

repeat
  wait 300
until 0AFA:  is_samp_available

wait 0

0C6A: 2@ = create_custom_thread_at_label @thread 0@ // создаю поток и передаю в него переменную

0B34: samp register_client_command "show" to_label @show

0B80: dialog 1@ = create "Dialog"
0B84: dialog 1@ set_pos_XY 45 380 size 280 120
0B91: dialog 1@ add_static id 1 text "0" pos_XY 10 10 size 300 20
0B91: dialog 1@ add_static id 2 text "$0" pos_XY 10 30 size 300 20
0B82: dialog 1@ add_button id 3 text "Start" pos_XY 10 55 size 120 30
0B82: dialog 1@ add_button id 4 text "Stop" pos_XY 150 55 size 120 30
0B86: dialog 1@ set_visible 0

while true
  wait 0
  if 0B81: dialog 1@ pop_event_to 3@ control_id_to 4@
  then
  if 3@ == 257
  then
  if 4@ == 3
  then
  0AF8: samp add_message_to_chat "1232" color -1 params
  end
  if 4@ == 4
  then
  0AF8: samp add_message_to_chat "1231" color -1 params
  end
  end
  end
end

:show
  wait 0
  if 0@ == 0
  then
  0B86: dialog 1@ set_visible 1
  0@ = 1
  else
  0B86: dialog 1@ set_visible 0
  0@ = 0
  end
0B43: samp cmd_ret

:thread
wait 0
  while true
  wait 2500
  log "%d" 0@ // поток работает, НО тут всегда 0, даже если в переменной 1
  end
jump @thread
глобальные переменные сф есть
 
  • Нравится
Реакции: PaHaNjkee