Исходник Софт [CSF] Поиск сообщений и уведомления...

  • Автор темы Удалённый пользователь 144706
  • Дата начала
Статус
В этой теме нельзя размещать новые ответы.
У

Удалённый пользователь 144706

Гость
Автор темы
Данный скрипт ищет в чате определённые слова/строки и если находит, то посылает звуковой сигнал. Также умеет работать в свёрнутом режиме. В настройках можно указать любое количество строк для поиска (Шаблон для строк: m_[number]=[string]). Cleo работает через RakNet-хуки, так что не нагружает лишний раз игру циклами проверок.

Данный скрипт я написал по заказу одного человека, который впоследствии пропал куда-то. В общем, я попытался его продать, но никто не стал покупать, так что выкладываю в паблик.

CLEO:
{$CLEO .cs}
{$NOSOURCE}
0000: NOP

const
RPC_CLIENTMESSAGE = 93
FILE_CONFIG = "CLEO/csf.ini"
SOUND_FILE = "CLEO/sound.wav"
SECTION_CONFIGS = "Settings"
SECTION_MESSAGES = "Messages"

ARRAY = 0
LENGTH = 1
end

// Ждём SAMP
repeat
    wait 100
until SAMP.Available()

// --------------------------------------------------------

if or
    8AAB: not file_exists FILE_CONFIG
    8AAB: not file_exists SOUND_FILE
then
    chatmsg "Отсутствуют важные файлы!" -1
    0A93: end_custom_thread
end

gosub @ON_WINDOWED_MODE

alloc 10@ 256
1@ = 0

// Определяем количество строк
while true
    0AD3: 0@v = format "m_%d" 1@
    if 8AF4: not 10@ = read_string_from_ini_file FILE_CONFIG section SECTION_MESSAGES key 0@v
    then
        break
    end
    1@++
end

// Место для массива строк
0085: 3@ = 1@
3@ *= 4
alloc 5@ 3@
0AB3: var ARRAY = 5@
0AB3: var LENGTH = 1@

1@--
for 2@ = 0 to 1@
    0AD3: 0@v = format "m_%d" 2@
    0AF4: 10@ = read_string_from_ini_file FILE_CONFIG section SECTION_MESSAGES key 0@v
    0C17: 4@ = strlen 10@
    alloc 6@ 4@
    0C13: strcpy destination 6@ source 10@
    0085: 7@ = 2@
    7@ *= 4
    0C0D: struct 5@ offset 7@ size 4 = 6@
end

free 10@

// --------------------------------------------------------

// Вешаем хук и жмём на паузу
0BE3: raknet setup_incoming_rpc_hook @incoming_chat_string
0BDE: pause_thread 0

:incoming_chat_string
 
    0BE5: raknet 0@ = get_hook_param 1
    if 0@ == RPC_CLIENTMESSAGE
    then
        0BE5: raknet 0@ = get_hook_param 0
        0BF3: raknet 0@ = bit_stream 0@ get_data_ptr
        0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0  // Цвет текста
        0@ += 4
        0A8D: 2@ = read_memory 0@ size 4 virtual_protect 0  // Длина текста
        0@ += 4
    
        0AB4: 3@ = var ARRAY
        0AB4: 4@ = var LENGTH
    
        4@ *= 4
        005A: 4@ += 3@
        while 001D: 4@ > 3@
    
            0A8D: 6@ = read_memory 3@ size 4 virtual_protect 0
            3@ += 4
        
            0C18: 7@ = strstr string1 0@ string2 6@
            if 8039: not 7@ == FALSE
            then
                // Нашлась строка
                gosub @PLAY_SOUND
                break
            end
        end
    
    end
 
    0BE0: raknet hook_ret TRUE

// Включить работу в свёрнутом режиме
// --------------------------------------------------------
:ON_WINDOWED_MODE
    0A8C: write_memory 7634870 size 1 value 1 virtual_protect 1
    0A8C: write_memory 7635034 size 1 value 1 virtual_protect 1
    0C11: memset destination 7623723 value 144 size 8
    0C11: memset destination 5499528 value 144 size 6
    return
// --------------------------------------------------------

// Воспроизвести звук
// --------------------------------------------------------
:PLAY_SOUND
 
    0AA2: 1@ = load_library "Winmm.dll"
    if 8039: not 1@ == FALSE
    then
        0AA4: 2@ = get_proc_address "PlaySound" library 1@
        if 8039: not 2@ == FALSE
        then
            0AA7: call_function 2@ num_params 3 pop 0 0x0001 0 SOUND_FILE 3@
            else
            chatmsg "Не удалось найти функцию PlaySound" -1
        end
        0AA3: free_library 1@
        else
        chatmsg "Не удалось найти библиотеку Winmm.dll" -1
    end

    return
// --------------------------------------------------------
 

Вложения

  • csf.zip
    96.8 KB · Просмотры: 48
Последнее редактирование модератором:

Quit

Известный
209
53
допилил бы какое нибудь меню что бы сразу туда можно было бы вписывать необходимые слова для поиска, и смотреть уже вписанные слова, сразу редактировать их там, очень бы зашло
 
У

Удалённый пользователь 144706

Гость
Автор темы
допилил бы какое нибудь меню что бы сразу туда можно было бы вписывать необходимые слова для поиска, и смотреть уже вписанные слова, сразу редактировать их там, очень бы зашло
Исходный код открыт. Лицензия на него свободная. Так что если есть желание - вперёд, дописывать!
 
  • Нравится
Реакции: LiteMax

Mc.Reptar

Известный
33
3
Не работает в свёрнутом режиме или я не так настроил/использую. Только после захода сразу 5-6 уведомлений приходит в зависимости от того, сколько раз фраза в чате была до того, как свернул.
 
У

Удалённый пользователь 144706

Гость
Автор темы
Не работает в свёрнутом режиме или я не так настроил/использую. Только после захода сразу 5-6 уведомлений приходит в зависимости от того, сколько раз фраза в чате была до того, как свернул.
Исправил. Теперь должно работать.
 
Статус
В этой теме нельзя размещать новые ответы.

Похожие темы

  1. D
    Ответы
    11
    Просмотры
    3K