Другое SAMPFUNCS | API C++

ishi

Известный
493
110
как создать коллбек на событие в игре?
ну, как "хуки" сетевые, только на внутриигровые события (любое действие, совершённое/спровоцированное игроком)
 

memir

🇷🇺
Всефорумный модератор
340
611
Как сделать проверку на существование машины в зоне стрима?
 

mkrn

Известный
67
63
Как сделать проверку на существование машины в зоне стрима?

C++:
if (SF->getSAMP()->getVehicles()->iIsListed[id] != 1) return;
if (SF->getSAMP()->getVehicles()->iIsListed2[id] != 1) return;
if (SF->getSAMP()->getVehicles()->pSAMP_Vehicle[id] == NULL) return;
if (SF->getSAMP()->getVehicles()->pSAMP_Vehicle[id]->pGTA_Vehicle == NULL) return;
 
  • Нравится
Реакции: memir

iAmerican

Известный
Друг
614
260
How can I check if an object position is inside my Screen coords? To avoid this: https://s.put.re/dhMA9MZ.mp4

C++:
void CalcScreenCoors(D3DXVECTOR3 *vecWorld, D3DXVECTOR3 *vecScreen)
{

    D3DXMATRIX    m((float *)(0xB6FA2C));
    DWORD        *dwLenX = (DWORD *)(0xC17044);
    DWORD        *dwLenY = (DWORD *)(0xC17048);

    vecScreen->x = (vecWorld->z * m._31) + (vecWorld->y * m._21) + (vecWorld->x * m._11) + m._41;
    vecScreen->y = (vecWorld->z * m._32) + (vecWorld->y * m._22) + (vecWorld->x * m._12) + m._42;
    vecScreen->z = (vecWorld->z * m._33) + (vecWorld->y * m._23) + (vecWorld->x * m._13) + m._43;

    double    fRecip = (double)1.0 / vecScreen->z;
    vecScreen->x *= (float)(fRecip * (*dwLenX));
    vecScreen->y *= (float)(fRecip * (*dwLenY));
}

C++:
D3DXVECTOR3 vecPos;        
vecPos.x = object[x]
vecPos.y = object[y]      
vecPos.z = object[z]   
D3DXVECTOR3 screenPos;        
CalcScreenCoors(&vecPos, &screenPos);

if (screenPos.z < 1.f) {
// RENDER

}
 

iAmerican

Известный
Друг
614
260

Вложения

  • Безымянный.png
    Безымянный.png
    5.9 KB · Просмотры: 284
Последнее редактирование:

2Shae

Известный
149
8
Как и у игрока без маски
Если под маской ты имеешь в виду скрытый неймтег
Мне нужно чтобы у игроков со скрытыми никами - их отображало (PAWN > ShowPlayerNameTagForPlayer).
"Домашнее" WH, так сказать.

p.s. Рисовать ники не горю желанием.
 

BlackKnigga

Известный
BH Team
922
446
Мне нужно чтобы у игроков со скрытыми никами - их отображало (PAWN > ShowPlayerNameTagForPlayer).
"Домашнее" WH, так сказать.

p.s. Рисовать ники не горю желанием.
В структуре игрока есть что то вроде bShowNameTag. Пробегись по всем и включай отображение у тех, у кого выключено
 

ЯedЯuM

Malware Maker
242
302
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как нарисовать трейсер пули посредством SF API?
В мта классах порылся и нашел Fire, FireBullet, FireInstantHit но кроме FireBullet не разобрался только она почему-то его не рисует.
Если можна как-то по другому скиньте плез, буду благодарен!
 

iAmerican

Известный
Друг
614
260
Как нарисовать трейсер пули посредством SF API?
В мта классах порылся и нашел Fire, FireBullet, FireInstantHit но кроме FireBullet не разобрался только она почему-то его не рисует.
Если можна как-то по другому скиньте плез, буду благодарен!
https://www.blast.hk/threads/13607/
тут же и сурс есть
 

ЯedЯuM

Malware Maker
242
302
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
https://www.blast.hk/threads/13607/
тут же и сурс есть
я хочу готовое решение) я уверен ты откроешь ради меня сурс и всё предоставишь

https://www.blast.hk/threads/13607/
тут же и сурс есть
Ладно шутеечки в сторону, ты меня не совсем правильно понял.
Мне не нужно рендерить линию выстрела - я хочу про эмулировать гта выстрел, а точнее оригинальный трейсер пули который исчезнит сам. В мта классах есть три метода Fire, FireBullet и FireInstantHit но я не разобрался как их использовать.
 
Последнее редактирование модератором:

ЯedЯuM

Malware Maker
242
302
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Помогите с хуком на трассер пуль. Ср тим делал такую шнягу как HOOKS ну вообщем я попробовал по его видеоуроку разработки буллет конфига и позаимствовал хук на BULLET_TO - что я хочу? Перезаписывать все трассеры пулек в свою сторону.
Не суть вообщем, почему то во время выстрела я получаю краш(
C++:
#include "HOOKS.h"
CHOOKS *Hook = new CHOOKS();
#define ADDR_BULLET_TO 0x007238B4
DWORD dwBullet_addr, jaddr1;
CVector BulletEnd;
// В хуке исходящей буллет синхры читаю коорды с fTarget
BulletEnd = *(CVector*)bullet.fTarget + *(CVector*)bullet.fCenter; // так если byteType != 1
BulletEnd = *(CVector*)bullet.fTarget; // так если пули летели бы в чела
void _declspec(naked) BulletHOOK()
{
    __asm
    {
        pushad
        pushfd
        mov dwBullet_addr, esi
    }
  *(CVector*)dwBullet_addr = BulletEnd;
    __asm
    {
        popfd
        popad
        jmp jAddr1
    }
}
// в моем mainloop`e
jAddr1 = Hook->CreateHOOK(ADDR_BULLET_TO, (DWORD)BulletHOOK, Jump, 8);
// в моем деструкторе
delete Hook;