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

Bogach

Активный
558
27
Ребят, мне нужно узнать ID игрока который пишет в чат и записать его в переменную. Как это сделать? Или если ID уже пишется в чате в скобках []. Как его из скобок вырезать и записать в чат?
Вроде бы как - то с помощью этого опкода можно сделать.
Код:
0B75: samp get_chat_string 1@ text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@
 

Ромашкааа

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

AWRage

Активный
642
141
Ребят, мне нужно узнать ID игрока который пишет в чат и записать его в переменную. Как это сделать? Или если ID уже пишется в чате в скобках []. Как его из скобок вырезать и записать в чат?
Я использовал такой способ. Можно еще сканированием строки.
CLEO:
{$CLEO}
0000:

while 8AFA:
wait 0
end

0AC8: 10@ = allocate_memory_size 64
0AC8: 11@ = allocate_memory_size 64
0AD3: 11@ = format "- qq all (Ivan_Molot)[733]" // Строка, из которой нужно извлечь ID.

0006: 0@ = -1
while 8C18: 0 = strstr string1 11@ string2 10@
000A: 0@ += 1
0AD3: 10@ = format "[%i]" 0@
end

0B78: log "ID -> %i" 0@

0AC9: free_allocated_memory 10@
0AC9: free_allocated_memory 11@
0A93: end_custom_thread
 
Последнее редактирование:

AWRage

Активный
642
141
Вопрос новичка. Какой код используется, что бы клео автоматически активировался без всяких нажатий
Убрать из кода ту его часть, которая отвечает за срабатывание при определенных игровых условиях. Если это нажатие на клавишу, то убери это условие в коде. Если проверка на наличие оружия, то убери это условие. И т.д.
 

Bogach

Активный
558
27
Да. Я Нажимал F6 и курсором кликал по элементу, так не выделяется, а если через ТАБ, то выделяется и работает, но суть не в этом.
Допустим, я хочу чтобы, нажав на первый элемент в чате появился один текст, нажав на другой элемент появился в чате совершенно другой текст, не название элемента, не какая - то характеристика элемента, а именно текст который будет указан, я в коде сделал такое для первого элемента, но текст при клике не показывается, подскажите, что я сделал не так? Заранее спасибо.
Код:
{$CLEO}
0000:

:Dialog_1
wait 300 ms
0AFA:  is_samp_available
jf @Dialog_1
0B34: samp register_client_command "dialog" to_label @Dialog_2

While true
wait 0 ms
if 0BAB:     dialog 0@ is_exists
then
    if 0B81: dialog 0@ pop_event_to 1@ control_id_to 1
    then
        if 1@ ==1793 // EVENT_LISTBOX_ITEM_DBLCLK
        then
            if 0B9B: dialog 0@ listbox 6 selected_element_to 1 elements_count_to 2
            then
                0AF8: samp add_message_to_chat "Выбран Element #1" color -1
             end
          end
      end
   end
end

              
:Dialog_2
0B80: dialog 0@ = create "тест"
0B84: dialog 0@ set_pos_XY 900 500 size 300 300
0B99: dialog 0@ add_listbox id 6 pos_XY 0 0 size 300 260
0B9A: dialog 0@ listbox 6 insert_element "Element #1" with_data 1 after -1
0B9A: dialog 0@ listbox 6 insert_element "Element #2" with_data 2 after -1
0B43: samp cmd_ret
 

AWRage

Активный
642
141
Почему не работает этот адресс памяти? Захожу на сервер с уровнем розыска, но в консоле всегда все по 0..
Также юзал опкод: 01C0: 0@ = player $PLAYER_CHAR wanted_level, тоже не работает.


CLEO:
{$CLEO}
0000:
wait 2000

while true
0A8D: 0@ = read_memory 0xBAA420 size 4 virtual_protect 0
log "%i" 0@
wait 3000
end
 

Bogach

Активный
558
27
Почему не работает этот адресс памяти? Захожу на сервер с уровнем розыска, но в консоле всегда все по 0..
Также юзал опкод: 01C0: 0@ = player $PLAYER_CHAR wanted_level, тоже не работает.


CLEO:
{$CLEO}
0000:
wait 2000

while true
0A8D: 0@ = read_memory 0xBAA420 size 4 virtual_protect 0
log "%i" 0@
wait 3000
end
Мне кажется это абсурд, такое будет работать наверное только в одиночной игре, а на мультиплеере такое работать, разве что, уж на слишком говнистом моде сервера.
 

Dark_Knight

Me, me and me.
Друг
4,067
2,081
Почему не работает этот адресс памяти? Захожу на сервер с уровнем розыска, но в консоле всегда все по 0..
Также юзал опкод: 01C0: 0@ = player $PLAYER_CHAR wanted_level, тоже не работает.


CLEO:
{$CLEO}
0000:
wait 2000

while true
0A8D: 0@ = read_memory 0xBAA420 size 4 virtual_protect 0
log "%i" 0@
wait 3000
end
Читай один байт, а не 4
 

Niko

Известный
Проверенный
230
268
Как с помощью структуры OnFootData нажать на клавишу ALT? Модифицирую RakSamp, хочу сделать эмуляцию нажатия клавиши.
 

woksonal

Известный
Проверенный
268
154
Как с помощью структуры OnFootData нажать на клавишу ALT? Модифицирую RakSamp, хочу сделать эмуляцию нажатия клавиши.
PACKET_PLAYER_SYNC = 207 | +109
// struct stOnFootData ( size = 68 )
//ushort LeftRightKeys; +0
//ushort UpDownKeys; +2
//ushort Keys; +4 - нажатые клавиши
//floatvec Position[3]; +6
//floatquat Quaternion[4]; +18
//byte Health; +34
//byte Armor; +35
//byte CurrentWeapon; +36
//byte SpecialAction; +37
//floatvec MoveSpeed[3]; +38
//floatvec SurfingOffsets[3]; +50
//ushort SurfingVehicleID; +62
//ushort CurrentAnimationID; +64
//ushort AnimFlags; +66

через raklogger надо смотреть что ты отправляешь в этих 2 байтах
 
  • Нравится
Реакции: Niko

Bogach

Активный
558
27
Ребят. Я когда добавляю в локальных диалогах при использовании листбокса 6-ой пункт списка (наименования на русском языке) На конце названия 6-го списка у меня появляются какие - то каракули, в игре имеется ввиду. Это что? Баг какой - то?
 

artF

Новичок
24
0
Код:
{$CLEO}
{$NOSOURCE}

0000:

while true
wait 0
    if 0AB0: key_pressed 0x73//F4
    then
    0ac8: 0@ = 512
    0ab1: call @getChatEntryText 1 99 to 0@
    0af8: "%s" 0xFF00FF 0@
        while 0AB0: key_pressed 0x73//F4
        wait 0
        end
    0ac9: 0@
    end
end


:getChatEntryText
// 0AB1: call @getChatEntryText 1 id 0@ to 1@
{ In 0@ - number of chat line. 99 line is last.
Out 1@ - line text }
1@ = samp.Base()
1@ += 0x212A6C
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x136
0@ *= 252 // size of stChatEntry
005A: 1@ += 0@ // (int)
1@ += 28
0AB2: ret 1 1@
Варнинги шлет, и в итоге крашит, кто может помочь понять почему?
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x61962B6F
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x0
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x0
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x486DDF
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x61962B6F
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x0
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x0
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x486DDF
[19:59:31] Warning(s007): Exception 0xC0000005 at 0x61962B6F
[19:59:31] Warning(s007): Exception 0xC0000005 at 0x0
[19:59:31] Warning(s007): Exception 0xC0000005 at 0x0
 

woksonal

Известный
Проверенный
268
154
Код:
{$CLEO}
{$NOSOURCE}

0000:

while true
wait 0
    if 0AB0: key_pressed 0x73//F4
    then
    0ac8: 0@ = 512
    0ab1: call @getChatEntryText 1 99 to 0@
    0af8: "%s" 0xFF00FF 0@
        while 0AB0: key_pressed 0x73//F4
        wait 0
        end
    0ac9: 0@
    end
end


:getChatEntryText
// 0AB1: call @getChatEntryText 1 id 0@ to 1@
{ In 0@ - number of chat line. 99 line is last.
Out 1@ - line text }
1@ = samp.Base()
1@ += 0x212A6C
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x136
0@ *= 252 // size of stChatEntry
005A: 1@ += 0@ // (int)
1@ += 28
0AB2: ret 1 1@
Варнинги шлет, и в итоге крашит, кто может помочь понять почему?
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x61962B6F
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x0
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x0
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x486DDF
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x61962B6F
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x0
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x0
[19:59:27] Warning(s007): Exception 0xC0000005 at 0x486DDF
[19:59:31] Warning(s007): Exception 0xC0000005 at 0x61962B6F
[19:59:31] Warning(s007): Exception 0xC0000005 at 0x0
[19:59:31] Warning(s007): Exception 0xC0000005 at 0x0

оффсет не тот
вот для 0.3.7
#define SAMP_CHAT_INFO_OFFSET 0x21A0E4
 
  • Нравится
Реакции: artF