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

Leoten

Новичок
7
0
Перед получением LVL'а необходимо вызывать RPC_UPDATESCORESPINGSIPS. В СФ это должно срабатывать, вроде.
Дико извиняюсь за нубский вопрос, но поиск по форуму не дал ответа на вопрос "как вызвать RPC_UPDATESCORESPINGSIPS". Примерно представляю, как через SF Plugin вызвать, ибо там нормальный си, а вот как из клео это сделать - не знаю. Примеры отправки пакетов видел, но в структурах нигде не вижу намека на ЛВЛ.

Еще один нубский вопрос: нужно сделать команду, которая дождется выхода игрока из игры, после чего сообщит об этом в чат.
Код:
{$CLEO}
{$INCLUDE SF}

repeat
    wait 200
until 0AFA:  is_samp_available

0B34: samp register_client_command "qwe" to_label @qwe

32@ = false

while true
    wait 0
    if 32@ == true
    then
        0AF8: samp add_message_to_chat "Ждем отключения" color COLOR_DEBUG
        while 0B23: samp is_player_connected 2@
            wait 0
        end
        0AF8: samp add_message_to_chat "Отключился" color COLOR_DEBUG
        32@ = false
    else
        0AF8: samp add_message_to_chat "FLAG=false" color COLOR_DEBUG
    end    
end

:QWE
0B35: samp 0@ = get_last_command_params
0AD4: 1@ = scan_string 0@ format "%d %s" 2@ 10@v

0B36: samp 5@ = get_player_nickname 2@

if  1@ == 1
then  
        /*for 11@ = 0 to 100000
        if 0B23: samp is_player_connected 2@
        then
           
        end*/
    32@ = true
end
Если ставить задержку циклом в тело команды, игра замораживается на время прогона этого цикла. Если делать через флаг в основном цикле скрипта, вообще ничего не работает.
 
Последнее редактирование:

san0

Известный
Друг
411
267
У меня два вопроса:

1. Допустим, вот опкод на создание кнопки "0B82: dialog 0@ add_button id 1 text "Кнопка" pos_XY 2 150 size 100 30" Я, допустим хочу что бы эта кнопка была посредине экрана и меньше размером. Но как мне узнать координаты XY на экране? Я пользовался Cleo Developer by DupStep_ но там координаты курсора были неправильные, и получалось так, что у меня кнопка вообще не там где надо была.

2. Вообщем, по нажатию на кнопку "O" у меня появляется диалог, в нем есть чекбокс и кнопка "Закрыть". Далее я включил чекбокс (Появилась галочка, типа чекбокс активен), потом закрыл диалог, и снова открыл. Но чекбокс отключился (Галочка пропала). Может это из-за того что в кнопке "Закрыть" есть опкод "0BA4: dialog 0@ free"? Если это так, то чем можно заменить этот опкод?

1. Координаты считаются от верхнего левого угла заголовка диалога, точнее говоря диалогXY + posXY. Лучший способ легко и быстро настроить положение - поставить на кнопку перезагрузку скрипта и через альт-таб быстро подобрать нужные цифры.

2. Вместо уничтожения диалога просто скрой его.
 

TheOne6839

Новичок
2
0
Кто может, помогите пожалуйста, напишите мне скрипт для включения этих нопов
netPatch[] = "Spawn" "outcoming RPC" 52 &0 0
netPatch[] = "SetPlayerCameraLookAt" "incoming RPC" 158 &0 0
netPatch[] = "ResetPlayerWeapons" "incoming RPC" 21 &0 0
Заранее Спасибо.
 

san0

Известный
Друг
411
267
Дико извиняюсь за нубский вопрос, но поиск по форуму не дал ответа на вопрос "как вызвать RPC_UPDATESCORESPINGSIPS". Примерно представляю, как через SF Plugin вызвать, ибо там нормальный си, а вот как из клео это сделать - не знаю. Примеры отправки пакетов видел, но в структурах нигде не вижу намека на ЛВЛ.

Еще один нубский вопрос: нужно сделать команду, которая дождется выхода игрока из игры, после чего сообщит об этом в чат.
Код:
{$CLEO}
{$INCLUDE SF}

repeat
    wait 200
until 0AFA:  is_samp_available

0B34: samp register_client_command "qwe" to_label @qwe

32@ = false

while true
    wait 0
    if 32@ == true
    then
        0AF8: samp add_message_to_chat "Ждем отключения" color COLOR_DEBUG
        while 0B23: samp is_player_connected 2@
            wait 0
        end
        0AF8: samp add_message_to_chat "Отключился" color COLOR_DEBUG
        32@ = false
    else
        0AF8: samp add_message_to_chat "FLAG=false" color COLOR_DEBUG
    end   
end

:QWE
0B35: samp 0@ = get_last_command_params
0AD4: 1@ = scan_string 0@ format "%d %s" 2@ 10@v

0B36: samp 5@ = get_player_nickname 2@

if  1@ == 1
then 
        /*for 11@ = 0 to 100000
        if 0B23: samp is_player_connected 2@
        then
          
        end*/
    32@ = true
end
Если ставить задержку циклом в тело команды, игра замораживается на время прогона этого цикла. Если делать через флаг в основном цикле скрипта, вообще ничего не работает.

Скрипты типа чекер круче сделать через хук, нежели так. И оптимизация и простота.
Сканировать стринг на стринг нельзя ( 0AD4: 1@ = scan_string 0@ format "%s" 2@ ), для этих целей используй https://www.blast.hk/threads/7486/
Чтобы получить никнейм игрока нужно выделить память :
0AC8: 0@ = allocate_memory_size 24 // в сампе максимальная длина ника 24 символа
0B36: samp 0@ = get_player_nickname ID
<использование ника>
0AC9: free_allocated_memory 0@
Переменные 32@ и 33@ являются таймерами, каждую секунду их значение увеличивается на 1000. Очевидно, что хранить в них информацию неразумно.
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
Кто может, помогите пожалуйста, напишите мне скрипт для включения этих нопов
netPatch[] = "Spawn" "outcoming RPC" 52 &0 0
netPatch[] = "SetPlayerCameraLookAt" "incoming RPC" 158 &0 0
netPatch[] = "ResetPlayerWeapons" "incoming RPC" 21 &0 0
Заранее Спасибо.
Не стол заказов это.
 

Leoten

Новичок
7
0
Скрипты типа чекер круче сделать через хук, нежели так. И оптимизация и простота.
И где бы про хуки почитать? :)
Сканировать стринг на стринг нельзя
там параметр от 3 до 5 символов, так что обхожусь без извращений. За ссылку спасибо
Переменные 32@ и 33@ являются таймерами, каждую секунду их значение увеличивается на 1000. Очевидно, что хранить в них информацию неразумно.
Хм, нигде не замечал, чтобы 32@ и 33@ были какими-то особыми переменными. Это объясняет, почему код не работает.
 

Vilance

Новичок
33
5
Помогите убрать эти строчки:
Код:
chatmsg "{00FF00}[PRIVATE] {ffffff}Скрипт{32CD32} выключен." 16777215 
и chatmsg "{00FF00}[PRIVATE] {ffffff}Скрипт{32CD32} включен." 16777215
Код:
// 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
0662: printstring "ebalscripti"

:NONAME_17
   not SAMP.Available
else_jump @NONAME_220
wait 1337
chatmsg "{00FF00}[PRIVATE] {ffffff}Активация: {00FF00}/gmp{ffffff}. Автор: {32CD32}Logan for Gotti." 16777215
chatmsg "{00FF00}[PRIVATE] {ffffff}Спасибо: {00FF00}SlonoBoyko{ffffff} за помощь." 16777215
jump @NONAME_17

:NONAME_220
0B34: samp register_client_command "gmp" to_label @NONAME_250
0BE2: raknet setup_outcoming_packet_hook -406

:NONAME_239
wait 0
jump @NONAME_239

:NONAME_250
0B12: 1@ = 1@ XOR 1
if
  1@ == 1
else_jump @NONAME_344
chatmsg "{00FF00}[PRIVATE] {ffffff}Скрипт{32CD32} включён." 16777215
jump @NONAME_404

:NONAME_344
chatmsg "{00FF00}[PRIVATE] {ffffff}Скрипт{32CD32} выключен." 16777215

:NONAME_404
SAMP.CmdRet
0BE5: raknet 10@ = get_hook_param 0
0BE5: raknet 11@ = get_hook_param 1
if and
  1@ == 1
  11@ == 206
else_jump @NONAME_450
0BE0: raknet hook_ret 0

:NONAME_450
0BE0: raknet hook_ret 1
 

Sire Like

Blanche Bier
Друг
487
232
Помогите убрать эти строчки:
Код:
chatmsg "{00FF00}[PRIVATE] {ffffff}Скрипт{32CD32} выключен." 16777215
и chatmsg "{00FF00}[PRIVATE] {ffffff}Скрипт{32CD32} включен." 16777215
Код:
// 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
0662: printstring "ebalscripti"

:NONAME_17
   not SAMP.Available
else_jump @NONAME_220
wait 1337
chatmsg "{00FF00}[PRIVATE] {ffffff}Активация: {00FF00}/gmp{ffffff}. Автор: {32CD32}Logan for Gotti." 16777215
chatmsg "{00FF00}[PRIVATE] {ffffff}Спасибо: {00FF00}SlonoBoyko{ffffff} за помощь." 16777215
jump @NONAME_17

:NONAME_220
0B34: samp register_client_command "gmp" to_label @NONAME_250
0BE2: raknet setup_outcoming_packet_hook -406

:NONAME_239
wait 0
jump @NONAME_239

:NONAME_250
0B12: 1@ = 1@ XOR 1
if
  1@ == 1
else_jump @NONAME_344
chatmsg "{00FF00}[PRIVATE] {ffffff}Скрипт{32CD32} включён." 16777215
jump @NONAME_404

:NONAME_344
chatmsg "{00FF00}[PRIVATE] {ffffff}Скрипт{32CD32} выключен." 16777215

:NONAME_404

if and
  1@ == 1
  11@ == 206
else_jump @NONAME_450
0BE0: raknet hook_ret 0

:NONAME_450
0BE0: raknet hook_ret 1

Код:
// 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
0662: printstring "ebalscripti"

:NONAME_17
   not SAMP.Available
else_jump @NONAME_220
wait 1337
chatmsg "{00FF00}[PRIVATE] {ffffff}Активация: {00FF00}/gmp{ffffff}. Автор: {32CD32}Logan for Gotti." 16777215
chatmsg "{00FF00}[PRIVATE] {ffffff}Спасибо: {00FF00}SlonoBoyko{ffffff} за помощь." 16777215
jump @NONAME_17

:NONAME_220
0B34: samp register_client_command "gmp" to_label @NONAME_250
0BE2: raknet setup_outcoming_packet_hook -406

:NONAME_239
wait 0
jump @NONAME_239

:NONAME_250
0B12: 1@ = 1@ XOR 1
if
  1@ == 1
else_jump @NONAME_344
jump @NONAME_404

:NONAME_344

:NONAME_404
SAMP.CmdRet
0BE5: raknet 10@ = get_hook_param 0
0BE5: raknet 11@ = get_hook_param 1
if and
  1@ == 1
  11@ == 206
else_jump @NONAME_450
0BE0: raknet hook_ret 0

:NONAME_450
0BE0: raknet hook_ret 1
 

Vilance

Новичок
33
5
Код:
// 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
0662: printstring "ebalscripti"

:NONAME_17
   not SAMP.Available
else_jump @NONAME_220
wait 1337
chatmsg "{00FF00}[PRIVATE] {ffffff}Активация: {00FF00}/gmp{ffffff}. Автор: {32CD32}Logan for Gotti." 16777215
chatmsg "{00FF00}[PRIVATE] {ffffff}Спасибо: {00FF00}SlonoBoyko{ffffff} за помощь." 16777215
jump @NONAME_17

:NONAME_220
0B34: samp register_client_command "gmp" to_label @NONAME_250
0BE2: raknet setup_outcoming_packet_hook -406

:NONAME_239
wait 0
jump @NONAME_239

:NONAME_250
0B12: 1@ = 1@ XOR 1
if
  1@ == 1
else_jump @NONAME_344
jump @NONAME_404

:NONAME_344

:NONAME_404
SAMP.CmdRet
0BE5: raknet 10@ = get_hook_param 0
0BE5: raknet 11@ = get_hook_param 1
if and
  1@ == 1
  11@ == 206
else_jump @NONAME_450
0BE0: raknet hook_ret 0

:NONAME_450
0BE0: raknet hook_ret 1
Тупо удалить все строчки я пробывал, крашит.
 

DubStep_

Известный
292
52
Бля, что за говнокод у тебя?(Уж прости меня но это так)
Щас прикреплю исправленую версию к этому посту.

====================

PHP:
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP

:NONAME_17
wait 400
0AFA:  is_samp_available
jf @NONAME_17
jump @NONAME_220

:NONAME_220
0B34: samp register_client_command "gmp" to_label @NONAME_250
0BE2: raknet setup_outcoming_packet_hook -406
0BDE: pause_thread 0

:NONAME_250
wait 0
0B12: 1@ = 1@ XOR 1
if
1@ == 1
jf @NONAME_250
jump @NONAME_404

:NONAME_404
SAMP.CmdRet
0BE5: raknet 10@ = get_hook_param 0
0BE5: raknet 11@ = get_hook_param 1
if and
1@ == 1
11@ == 206
jf @NONAME_450
0BE0: raknet hook_ret 0

:NONAME_450
0BE0: raknet hook_ret 1
Попробуй это
о боже
 

Vilance

Новичок
33
5
Бля, что за говнокод у тебя?(Уж прости меня но это так)
Щас прикреплю исправленую версию к этому посту.

====================

PHP:
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP

:NONAME_17
wait 400
0AFA:  is_samp_available
jf @NONAME_17
jump @NONAME_220

:NONAME_220
0B34: samp register_client_command "gmp" to_label @NONAME_250
0BE2: raknet setup_outcoming_packet_hook -406
0BDE: pause_thread 0

:NONAME_250
wait 0
0B12: 1@ = 1@ XOR 1
if
1@ == 1
jf @NONAME_250
jump @NONAME_404

:NONAME_404
SAMP.CmdRet
0BE5: raknet 10@ = get_hook_param 0
0BE5: raknet 11@ = get_hook_param 1
if and
1@ == 1
11@ == 206
jf @NONAME_450
0BE0: raknet hook_ret 0

:NONAME_450
0BE0: raknet hook_ret 1
Попробуй это
Это не мой скрипт ;)
 
  • Нравится
Реакции: _Viktor_