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

SR_team

like pancake
BH Team
4,807
6,491
Здарова, мужики.
Пишу 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
Ты должен реализовать в библиотеке все интерфейсы оригинально библиотеки и пробрасывать их. Это тебе не Linux, что бы все так просто было с прокси-либой
 

_=Gigant=_

Известный
144
225
1.
for (int other_players = 0; other_players < SAMP_MAX_PLAYERS; other_players++)
{
actor_info *actor = getGTAPedFromSAMPPlayerID(other_players);

how to get skin id for other_players

2.
and how to make text draw only on other_players and not on my player

for (int other_players = 0; other_players < SAMP_MAX_PLAYERS; other_players++)
{
actor_info *actor = getGTAPedFromSAMPPlayerID(other_players);
//actor_info * my_ac = actor_info_get(ACTOR_SELF, NULL);

if (!actor)
continue;

D3DXVECTOR3 player_pos, screenposs;

float * f_pos = &actor->base.matrix[4 * 3];
player_pos.x = f_pos[0];
player_pos.y = f_pos[1];
player_pos.z = f_pos[2];
CalcScreenCoors(&player_pos, &screenposs);

char pos[256], ping[256], hparmw[256], pnameid[256] ;

if (screenposs.z < 1.f)
continue;

// this text below is showed on my player also how to make it show only on other_players

_snprintf_s(skin, sizeof(skin) - 1, "Skin");
pD3DFont_sampStuff->PrintShadow(screenposs.x, screenposs.y - 12, COLOR_WHITE(255), skin);

thanks for help !
 

CleanLegend

Известный
Всефорумный модератор
481
937
1.
for (int other_players = 0; other_players < SAMP_MAX_PLAYERS; other_players++)
{
actor_info *actor = getGTAPedFromSAMPPlayerID(other_players);

how to get skin id for other_players

2.
and how to make text draw only on other_players and not on my player

for (int other_players = 0; other_players < SAMP_MAX_PLAYERS; other_players++)
{
actor_info *actor = getGTAPedFromSAMPPlayerID(other_players);
//actor_info * my_ac = actor_info_get(ACTOR_SELF, NULL);

if (!actor)
continue;

D3DXVECTOR3 player_pos, screenposs;

float * f_pos = &actor->base.matrix[4 * 3];
player_pos.x = f_pos[0];
player_pos.y = f_pos[1];
player_pos.z = f_pos[2];
CalcScreenCoors(&player_pos, &screenposs);

char pos[256], ping[256], hparmw[256], pnameid[256] ;

if (screenposs.z < 1.f)
continue;

// this text below is showed on my player also how to make it show only on other_players

_snprintf_s(skin, sizeof(skin) - 1, "Skin");
pD3DFont_sampStuff->PrintShadow(screenposs.x, screenposs.y - 12, COLOR_WHITE(255), skin);

thanks for help !
1)
C++:
actor->base.model_alt_id;
2) test it
C++:
player_pos.x = actor->base.matrix[12];
player_pos.y = actor->base.matrix[13];
player_pos.z = actor->base.matrix[14];
 
  • Нравится
Реакции: _=Gigant=_

Revalto

Известный
532
225
Можно ли как то визуально переместить объект?
vWp_f91S_xw.jpg
 

CleanLegend

Известный
Всефорумный модератор
481
937
Можно ли как то визуально переместить объект?
vWp_f91S_xw.jpg
C++:
g_SAMP->pPools->pObject->object[id]->pGTAEntity->base.matrix[12] = X;
 g_SAMP->pPools->pObject->object[id]->pGTAEntity->base.matrix[13] = Y;
 g_SAMP->pPools->pObject->object[id]->pGTAEntity->base.matrix[14] = Z;
 
  • Нравится
Реакции: Revalto

_=Gigant=_

Известный
144
225
how to get other_players weapon i tried

_snprintf_s(buf, sizeof(buf) - 1, "Weapon %u", g_Players->pRemotePlayer->pPlayerData->onFootData.byteCurrentWeapon);

but it crash idk why i also used g_SAMP->pPools etcc.. also crash
 

ALF

Известный
Проверенный
320
539
g_Players->pRemotePlayer[player id]->pPlayerData->onFootData.byteCurrentWeapon
 

_=Gigant=_

Известный
144
225
need little help, how to get position for vehicles ?

here what i did

void render()
{
for (int i = 0; i < SAMP_MAX_VEHICLES; i++)
{
actor_info * player = actor_info_get(ACTOR_SELF, NULL); // define my actor
vehicle_info *vehicle = getGTAVehicleFromSAMPVehicleID(i); // samp max vehs

if (!vehicle)
continue;

D3DXVECTOR3 vehicle_pos, screenposs;
D3DCOLOR color;

color = samp_color_get(i);

CVector mySpinePoss, TargetVehPos;

CPed *pPedSelf = pGameInterface->GetPools()->GetPed((DWORD*)player);
CVehicle *pVeh = pGameInterface->GetPools()->GetVehicle((DWORD*)vehicle); // i found this for vehicle

pPedSelf->GetBonePosition(BONE_SPINE1, &mySpinePoss); // here is used BONE

pVeh->GetPosition(); // now i don't know how to do for vehicle like for pPedSelf

if (screenposs.z < 1.f)
continue;

if (enabled)
{
render->DrawLine(CVecToD3DXVEC(mySpinePoss), CVecToD3DXVEC(TargetVehPos), color);
}
}
}

thanks for help !