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

0xNull_Dll

Известный
143
20
Подскажите адреса меткок, которые устанавливает сервер (типа /gps вводишь, выбираешь место и метка появляется)

Нужны адреса X, Y, Z и адрес цвета метки
 

imring

Ride the Lightning
Всефорумный модератор
2,355
2,516
Подскажите адреса меткок, которые устанавливает сервер (типа /gps вводишь, выбираешь место и метка появляется)

Нужны адреса X, Y, Z и адрес цвета метки
гоночный маркер: vec = 0xC7F168 + id * 56
простой: vec = 0xC7DD88 + id * 160
[float] vec + 0 - x
[float] vec + 4 - y
[float] vec + 8 - z
 

romanblinov2013

RB_PRO
Проверенный
212
196
Здарова, мужики.
Пишу dll d3d9, которое будет подгружать основной d3d9.dll от майкрософт. Только одна проблема.... Крашит при входе. Что делать, чтобы всё заработало?

C++:
#include <Windows.h>
#include <process.h>
#include <iostream>
#include <string.h>
#include <stdio.h>


void __cdecl MainThread(void *pArg)
{
    while (true)
    {
        Sleep(10);
        if (GetAsyncKeyState(VK_NUMPAD1)) {
        keybd_event('n', 0, 0, 0);
        keybd_event('n', 0, KEYEVENTF_KEYUP, 0);
        }
    }
}

BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ PVOID lpvReserved)
{
    if (fdwReason == DLL_PROCESS_ATTACH) {
        LoadLibrary("C:\\Windows\\System32\\d3d9.dll");
    _beginthread(MainThread, NULL, nullptr);
    }
    return TRUE;
}

Ошибка:
Код:
Серьезность    Код    Описание    Строка    Состояние подавления
Предупреждение    MSB8004    каталог Output заканчивается не косой чертой.  Этот экземпляр сборки добавит косую черту, поскольку она необходима для правильного определения каталога Output.    377
 

0xNull_Dll

Известный
143
20
гоночный маркер: vec = 0xC7F168 + id * 56
простой: vec = 0xC7DD88 + id * 160
[float] vec + 0 - x
[float] vec + 4 - y
[float] vec + 8 - z

Суть в том, что у меня почему-то их не видит до тех пор, пока они вне зоны прорисовки. Как только подходишь - сразу появляются их координаты.

Может, есть ещё какие-нибудь способы?
 

Orbit_123

Новичок
21
9
Пацаны, мне написали скрипт в формате dll который очень быстро нажимает на N. Я активирую его , он быстро нажимает только когда открываю в чат а на чекпоинте он не работает, почему?
 

imring

Ride the Lightning
Всефорумный модератор
2,355
2,516
Пацаны, мне написали скрипт в формате dll который очень быстро нажимает на N. Я активирую его , он быстро нажимает только когда открываю в чат а на чекпоинте он не работает, почему?
спрашивай у того, кто тебе сделал.
 

-raymond-

Известный
110
9
можно ли как-то отследить текстдравы которые показаны мне?
и получить о них какую-то информацию
например: цвет, ид шрифта, текст, расположение

крашит игру
C++:
float GetDistance(float X, float Y, float Z, float XX, float YY, float ZZ)
{
    return sqrt((X - XX) * (X - XX) + (Y - YY) * (Y - YY) + (Z - ZZ) * (Z - ZZ));
}

void CALLBACK steal_object(std::string param)
{
    float posobj[3];
    int obj_model;
    Log *pLog = new Log("objects.log");
    for (int i = 0; i < SAMP_MAX_OBJECTS; i++)
    {
        posobj[0] = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->fPos[0];
        posobj[1] = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->fPos[1];
        posobj[2] = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->fPos[2];
        if (GetDistance(PEDSELF->GetPosition()->fX, PEDSELF->GetPosition()->fY, PEDSELF->GetPosition()->fZ, posobj[0], posobj[1], posobj[2]) < 300)
        {
            obj_model = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->iModel;
            char str[256];
            sprintf(str, "CreateObject(%d)", obj_model);
            pLog->Write(str);
        }
    }
}
 
Последнее редактирование модератором:

CleanLegend

Известный
Всефорумный модератор
476
928
можно ли как-то отследить текстдравы которые показаны мне?
и получить о них какую-то информацию
например: цвет, ид шрифта, текст, расположение
Да, есть структура stTextdraw, путем перебора в цикле можешь выводить инфу

крашит игру
C++:
float GetDistance(float X, float Y, float Z, float XX, float YY, float ZZ)
{
    return sqrt((X - XX) * (X - XX) + (Y - YY) * (Y - YY) + (Z - ZZ) * (Z - ZZ));
}

void CALLBACK steal_object(std::string param)
{
    float posobj[3];
    int obj_model;
    Log *pLog = new Log("objects.log");
    for (int i = 0; i < SAMP_MAX_OBJECTS; i++)
    {
        posobj[0] = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->fPos[0];
        posobj[1] = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->fPos[1];
        posobj[2] = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->fPos[2];
        if (GetDistance(PEDSELF->GetPosition()->fX, PEDSELF->GetPosition()->fY, PEDSELF->GetPosition()->fZ, posobj[0], posobj[1], posobj[2]) < 300)
        {
            obj_model = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->iModel;
            char str[256];
            sprintf(str, "CreateObject(%d)", obj_model);
            pLog->Write(str);
        }
    }
}
Добавь проверку на валидность
C++:
if (SF->getSAMP()->getInfo()->pPools->pObject->iIsListed[i] != 1)
        continue;
    if (SF->getSAMP()->getInfo()->pPools->pObject->object[i] == NULL)
        continue;
    if (SF->getSAMP()->getInfo()->pPools->pObject->object[i]->pGTAEntity == NULL)
        continue;
 

-raymond-

Известный
110
9
У меня такой вопрос
Вот у меня вывело координату X объекта с большим количеством нулей
0.000000
как можно сделать проверку на эти самые нули, а также как заменить их одним нулем, и при этом не потерять нужные значения в других строках
 

Ranto

Участник
45
1
По какому принципу делают такие менюшки?
Скрытое содержимое доступно для зарегистрированных пользователей!
 

Вложения

  • upload_2018-8-4_20-53-7.png
    upload_2018-8-4_20-53-7.png
    8.7 KB · Просмотры: 128