Другое С/С++ Вопрос - Ответ

writeline

Новичок
15
8
У меня работает
Можешь свой вариант кода скинуть пожалуйста?

Помогите, компилю, но текст не выводится (делаю на самп мобайл)
Адреса не одинаковые с ПК сампом что ли? На ПК адреса 0x69F1E0 и 0xC8D4C0
Я конечно в мобийл 0, но попробуй вот так

С++:
#include "pch.h"
#include <thread>
#include "main.h"
#include "armhook.h"

void AddMessageJumpQ(const char* text, unsigned int time, unsigned short flag, bool bPreviousBrief)
{
    ((void(__cdecl*)(const char*, unsigned int, unsigned short, bool))0x4D1EA4)(text, time, flag, bPreviousBrief);
}

void InitializeAndLoad() {
    while (*reinterpret_cast<unsigned char*>(0x9E75B8) != 9) {
        std::this_thread::sleep_for(std::chrono::milliseconds(100u));
    }
    AddMessageJumpQ("~Hello from blast.hk", 5000, 0, false);
}

}

Как можно получить ID процесса по его названию? Нашел такую функцию в интернете:
C++:
#include <psutil.h>

int main()
{
    int process_id = psutil::GetProcessId("process_name");
    return 0;
}
 
Последнее редактирование:

hhkiyuujv

Новичок
4
0
Как пользоваться сампфунксом? На вики удалили раздел со списком функций.
 

horacy

Известный
102
92
Как отключить функцию /NOP/patch в C++, найденную в IDA в samp.dll, чтобы она не работала в игре?
SAMP 03DL, пишет код в mod_sa.
sub_1006A2B0
1675866723170.png
 

horacy

Известный
102
92
Нет
Пиши плагин)
Я имел в виду, как переопределить эту функцию на C++, я пишу в проекте mod_sa, поэтому я хотел бы написать это там, если только по какой-то причине это не может. Можете ли вы привести пример кода, который заменяет sub пустой функцией?
 

ARMOR

kjor32 is legend
Модератор
4,851
6,079
Я имел в виду, как переопределить эту функцию на C++, я пишу в проекте mod_sa, поэтому я хотел бы написать это там, если только по какой-то причине это не может. Можете ли вы привести пример кода, который заменяет sub пустой функцией?
Так нопни нужный тебе вызов этой функции
 

!Sam#0235

Активный
122
40
Как я могу сделать то же самое, но на C++? (Я просто хочу научиться отправлять данные в дискорд)) (.asi — .sf)
Lua:
local encoding = require 'encoding' -- подключаем для корректной отправки русских букв
encoding.default = 'CP1251'
u8 = encoding.UTF8
local sampev = require 'lib.samp.events' -- подключаем для хука отправки ответа на диалог
local effil = require 'effil' -- для ассинхронных запросов

local url = 'URL'
local data = {
   ['content'] = '', -- текст (меняется через команду, так что можно оставить пустым)
   ['username'] = 'Sended from .lua script!', -- ник отправителя
   ['avatar_url'] = 'https://c.tenor.com/Z9mXH7-MlcsAAAAS/sexy-black-man-thirst-trap.gif', -- ссылка на аватарку (можно убрать, будет дефолтная)
   ['tts'] = false, -- tts - text to speech - читалка сообщений (true/false)
   -- так же можно сделать еще много чего, подробнее тут: https://discord.com/developers/docs/resources/webhook
}

function main()
   while not isSampAvailable() do wait(0) end
   sampRegisterChatCommand('ds.msg', function(arg)
      data['username'] = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) -- ник отправителя = ник в игре
      data['content'] = arg -- делаем что бы текст сообщения был равен тексту который мы ввели после команды
      -- отправляем запрос
      asyncHttpRequest('POST', url, {headers = {['content-type'] = 'application/json'}, data = u8(encodeJson(data))},
      function(response)
         print('[WebHook] [OK] отправлено!')
      end,
      function(err)
         print('[WebHook] [ERROR] error: '..err)
      end)
   end)
   wait(-1)
end

-- функция для отправки ассинхронных сообщений
function asyncHttpRequest(method, url, args, resolve, reject)
   local request_thread = effil.thread(function (method, url, args)
      local requests = require 'requests'
      local result, response = pcall(requests.request, method, url, args)
      if result then
         response.json, response.xml = nil, nil
         return true, response
      else
         return false, response
      end
   end)(method, url, args)
   -- Если запрос без функций обработки ответа и ошибок.
   if not resolve then resolve = function() end end
   if not reject then reject = function() end end
   -- Проверка выполнения потока
   lua_thread.create(function()
      local runner = request_thread
      while true do
         local status, err = runner:status()
         if not err then
            if status == 'completed' then
               local result, response = runner:get()
               if result then
                  resolve(response)
               else
                  reject(response)
               end
               return
            elseif status == 'canceled' then
               return reject(status)
            end
         else
            return reject(err)
         end
         wait(0)
      end
   end)
end
 
  • Эм
Реакции: writeline и Z3roKwq

Musaigen

abobusnik
Проверенный
1,583
1,302
Я имел в виду, как переопределить эту функцию на C++, я пишу в проекте mod_sa, поэтому я хотел бы написать это там, если только по какой-то причине это не может. Можете ли вы привести пример кода, который заменяет sub пустой функцией?
Покажи эпилог функции, где видно инструкцию ret/retn
 

kuzheren

Известный
484
445
Пакеты голосового чата на серверах идут через синхронизацию сампа или через сторонний сервер?
 

kuzheren

Известный
484
445
От реализации зависит
Ну тогда самый известный пример - арз. Как дела происходят там? Просто интересно, если я с их лаунчером и своим реплей модом зайду и сделаю запись, будут ли слышны голоса при повторе