счетчик

Статус
В этой теме нельзя размещать новые ответы.

pwned

Участник
Автор темы
142
5
Как сделать счетчик
Типо когда в чате появляется "Ты выполнил заказ"
Тебе писало "Ты сделал "123" заказов"
И чтобы его можно было как то обнулить
 

memir

🇷🇺
Всефорумный модератор
333
597
Как сделать счетчик
Типо когда в чате появляется "Ты выполнил заказ"
Тебе писало "Ты сделал "123" заказов"
И чтобы его можно было как то обнулить
Ну, делаешь ракнет хук на пакет чата, как только находишь нужную строку, то прибавляешь значение в переменную-счетчик.
 

pwned

Участник
Автор темы
142
5
Lua:
-- Структура пакета CLIENTMESSAGE - int32 цвет; int32 длина сообщения; string32 сообщение
counter = 0
function onReceiveRpc(id, bitStream)
  if id == 93 then
    raknetBitStreamSetReadOffset(bitStream, 32) -- 32 - смещение, после которого хранится значение длины сообщения
    local msglen = raknetBitStreamReadInt32(bitStream) --  читаем длину сообщения из пакета
    local message = raknetBitStreamReadString(bitStream, msglen) -- читаем само сообщение полученной ранее длины
    if (string.find(message, "BLASTHACK"))  then -- если в сообщении есть строка "BLASTHACK" - делаем следующее
      if (counter >= 10) then -- если счетчик больше или равен 10, то обнуляем его
        counter = 0
        return
      end
      counter = counter + 1 -- прибавляем счетчик, если он меньше 10
      sampAddChatMessage(string.format("Сообщение высветилось уже %d раз!", counter), 0xFFFFFF) -- объявляем о количестве сообщений, в которых нашли этот текст
    end
  end
end
function main()
    wait(-1)
end
Неверное выражение counter = 0.
Одна из переменных имеет неизвестный тип, либо их типы несовместимы.
 
1,417
1,029
Неверное выражение counter = 0.
Одна из переменных имеет неизвестный тип, либо их типы несовместимы.
тот код для луа

CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

0B34: samp register_client_command "clr" to_label @clear
0BE3: raknet setup_incoming_rpc_hook @hook
0BDE: pause_thread 0

:hook
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
IF 1@ == RPC_SCRCLIENTMESSAGE
THEN
    0BE5: raknet 1@ = get_hook_param PARAM_BITSTREAM
    0BE7: raknet 2@ = bit_stream_read 1@ type BS_TYPE_INT
    0BE7: raknet 3@ = bit_stream_read 1@ type BS_TYPE_INT
    0AC8: 4@ = allocate_memory_size 260
    0BE8: raknet bit_stream 1@ read_array 4@ size 3@
    0C1E: array 4@ element 3@ el_size 1 = 0
    IF 0C29: 30@ = stristr string1 4@ string2 "Ты выполнил заказ"    
    THEN
        000A: 5@ += 1
        0AF8: samp add_message_to_chat "Ты сделал %d заказ(-ов)." color -1 5@
    END
    0AC9: free_allocated_memory 4@
END
0BE0: raknet hook_ret TRUE

:clear
5@ = 0
0AF8: samp add_message_to_chat "Кол-во заказов очищено." color -1
cmdret
 

pwned

Участник
Автор темы
142
5
тот код для луа

CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

0B34: samp register_client_command "clr" to_label @clear
0BE3: raknet setup_incoming_rpc_hook @hook
0BDE: pause_thread 0

:hook
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
IF 1@ == RPC_SCRCLIENTMESSAGE
THEN
    0BE5: raknet 1@ = get_hook_param PARAM_BITSTREAM
    0BE7: raknet 2@ = bit_stream_read 1@ type BS_TYPE_INT
    0BE7: raknet 3@ = bit_stream_read 1@ type BS_TYPE_INT
    0AC8: 4@ = allocate_memory_size 260
    0BE8: raknet bit_stream 1@ read_array 4@ size 3@
    0C1E: array 4@ element 3@ el_size 1 = 0
    IF 0C29: 30@ = stristr string1 4@ string2 "Ты выполнил заказ"   
    THEN
        000A: 5@ += 1
        0AF8: samp add_message_to_chat "Ты сделал %d заказ(-ов)." color -1 5@
    END
    0AC9: free_allocated_memory 4@
END
0BE0: raknet hook_ret TRUE

:clear
5@ = 0
0AF8: samp add_message_to_chat "Кол-во заказов очищено." color -1
cmdret
Как сделать,чтобы он в не обнулял счетчик после перезахода?
 
Статус
В этой теме нельзя размещать новые ответы.