This commit is contained in:
gabrielkheisa
2020-11-06 18:55:46 +07:00
commit 8e431a3e95
42 changed files with 25647 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
#pragma once
#ifndef __CALLBACK_PROXY_H__
#define __CALLBACK_PROXY_H__
//Tobject:<3A><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>Tparam<61>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
template<typename Tobject, typename Tparam>
class CallbackProxy
{
typedef void (Tobject::* CbFun)(Tparam*);
public:
void Set(Tobject* pInstance, CbFun pFun);
bool Exec(Tparam* pParam);
private:
CbFun pCbFun; //<2F>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
Tobject* m_pInstance; //<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
};
//<2F><><EFBFBD>õ<EFBFBD><C3B5>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
template<typename Tobject, typename Tparam>
void CallbackProxy<Tobject, Tparam>::Set(Tobject* pInstance, CbFun pFun)
{
m_pInstance = pInstance;
pCbFun = pFun;
};
//<2F><><EFBFBD>ûص<C3BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
template<typename Tobject, typename Tparam>
bool CallbackProxy<Tobject, Tparam>::Exec(Tparam* pParam)
{
(m_pInstance->*pCbFun)(pParam);
return true;
}
extern std::map<int, CallbackProxy<hack, float>*>* g_pCBMap;
#endif

141
subVersion/ColorDef.h Normal file
View File

@@ -0,0 +1,141 @@
#pragma once
#define CLR_LIGHTPINK RGB(255, 182, 193) // dz<>ۺ<EFBFBD>
#define CLR_PINK RGB(255, 192, 203) // <20>ۺ<EFBFBD>
#define CLR_CRIMSON RGB(220, 20, 60) // <20>ɺ<EFBFBD> (<28><><EFBFBD><EFBFBD>)
#define CLR_LAVENDERBLUSH RGB(255, 240, 245) // <20><><EFBFBD>Ϻ<EFBFBD>
#define CLR_PALEVIOLETRED RGB(219, 112, 147) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_HOTPINK RGB(255, 105, 180) // <20><><EFBFBD><EFBFBD><EFBFBD>ķۺ<C4B7>
#define CLR_DEEPPINK RGB(255, 20, 147) // <20><><EFBFBD>ۺ<EFBFBD>
#define CLR_MEDIUMVIOLETRED RGB(199, 21, 133) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_ORCHID RGB(218, 112, 214) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_THISTLE RGB(216, 191, 216) // <20><>
#define CLR_PLUM RGB(221, 160, 221) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_VIOLET RGB(238, 130, 238) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_MAGENTA RGB(255, 0, 255) // <20><><EFBFBD><EFBFBD> (Ʒ<><C6B7> õ<><C3B5><EFBFBD><EFBFBD>)
#define CLR_FUCHSIA RGB(255, 0, 255) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Ϻ<EFBFBD>ɫ)
#define CLR_DARKMAGENTA RGB(139, 0, 139) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_PURPLE RGB(128, 0, 128) // <20><>ɫ
#define CLR_MEDIUMORCHID RGB(186, 85, 211) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_DARKVIOLET RGB(148, 0, 211) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_DARKORCHID RGB(153, 50, 204) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_INDIGO RGB( 75, 0, 130) // <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>ɫ)
#define CLR_BLUEVIOLET RGB(138, 43, 226) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_MEDIUMPURPLE RGB(147, 112, 219) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_MEDIUMSLATEBLUE RGB(123, 104, 238) // <20>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD>
#define CLR_SLATEBLUE RGB(106, 90, 205) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_DARKSLATEBLUE RGB( 72, 61, 139) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_LAVENDER RGB(230, 230, 250) // Ѭ<>²ݵ<C2B2><DDB5><EFBFBD>
#define CLR_GHOSTWHITE RGB(248, 248, 255) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_BLUE RGB( 0, 0, 255) // <20><><EFBFBD><EFBFBD>
#define CLR_MEDIUMBLUE RGB( 0, 0, 205) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_MIDNIGHTBLUE RGB( 25, 25, 112) // <20><>ҹ<EFBFBD><D2B9>
#define CLR_DARKBLUE RGB( 0, 0, 139) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_NAVY RGB( 0, 0, 128) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_ROYALBLUE RGB( 65, 105, 225) // <20>ʼ<EFBFBD><CABC><EFBFBD> (<28><><EFBFBD><EFBFBD>)
#define CLR_CORNFLOWERBLUE RGB(100, 149, 237) // ʸ<><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_LIGHTSTEELBLUE RGB(176, 196, 222) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_LIGHTSLATEGRAY RGB(119, 136, 153) // <20><>ʯ<EFBFBD><CAAF><EFBFBD><EFBFBD>
#define CLR_SLATEGRAY RGB(112, 128, 144) // ʯ<><CAAF><EFBFBD><EFBFBD>
#define CLR_DODGERBLUE RGB( 30, 144, 255) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_ALICEBLUE RGB(240, 248, 255) // <20><><EFBFBD><EFBFBD>˿<EFBFBD><CBBF>
#define CLR_STEELBLUE RGB( 70, 130, 180) // <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>)
#define CLR_LIGHTSKYBLUE RGB(135, 206, 250) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
#define CLR_SKYBLUE RGB(135, 206, 235) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_DEEPSKYBLUE RGB( 0, 191, 255) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_LIGHTBLUE RGB(173, 216, 230) // <20><><EFBFBD><EFBFBD>
#define CLR_POWDERBLUE RGB(176, 224, 230) // <20><>ҩ<EFBFBD><D2A9>
#define CLR_CADETBLUE RGB( 95, 158, 160) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_AZURE RGB(240, 255, 255) // ε<><CEB5>ɫ
#define CLR_LIGHTCYAN RGB(224, 255, 255) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_PALETURQUOISE RGB(175, 238, 238) // <20><><EFBFBD>̱<EFBFBD>ʯ
#define CLR_CYAN RGB( 0, 255, 255) // <20><>ɫ
#define CLR_AQUA RGB( 0, 255, 255) // ˮɫ
#define CLR_DARKTURQUOISE RGB( 0, 206, 209) // <20><><EFBFBD>̱<EFBFBD>ʯ
#define CLR_DARKSLATEGRAY RGB( 47, 79, 79) // <20><>ʯ<EFBFBD><CAAF><EFBFBD><EFBFBD>
#define CLR_DARKCYAN RGB( 0, 139, 139) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_TEAL RGB( 0, 128, 128) // ˮѼɫ
#define CLR_MEDIUMTURQUOISE RGB( 72, 209, 204) // <20><><EFBFBD>̱<EFBFBD>ʯ
#define CLR_LIGHTSEAGREEN RGB( 32, 178, 170) // dz<><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_TURQUOISE RGB( 64, 224, 208) // <20>̱<EFBFBD>ʯ
#define CLR_AQUAMARINE RGB(127, 255, 212) // <20><>ʯ<EFBFBD><CAAF><EFBFBD><EFBFBD>
#define CLR_MEDIUMAQUAMARINE RGB(102, 205, 170) // <20>б<EFBFBD>ʯ<EFBFBD><CAAF><EFBFBD><EFBFBD>
#define CLR_MEDIUMSPRINGGREEN RGB( 0, 250, 154) // <20>д<EFBFBD><D0B4><EFBFBD>ɫ
#define CLR_MINTCREAM RGB(245, 255, 250) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_SPRINGGREEN RGB( 0, 255, 127) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_MEDIUMSEAGREEN RGB( 60, 179, 113) // <20>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
#define CLR_SEAGREEN RGB( 46, 139, 87) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_HONEYDEW RGB(240, 255, 240) // <20>۹<EFBFBD>ɫ
#define CLR_LIGHTGREEN RGB(144, 238, 144) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_PALEGREEN RGB(152, 251, 152) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_DARKSEAGREEN RGB(143, 188, 143) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_LIMEGREEN RGB( 50, 205, 50) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_LIME RGB( 0, 255, 0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_FORESTGREEN RGB( 34, 139, 34) // ɭ<><C9AD><EFBFBD><EFBFBD>
#define CLR_GREEN RGB( 0, 128, 0) // <20><><EFBFBD><EFBFBD>
#define CLR_DARKGREEN RGB( 0, 100, 0) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_CHARTREUSE RGB(127, 255, 0) // <20><><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD> (<28><><EFBFBD><EFBFBD>ɫ)
#define CLR_LAWNGREEN RGB(124, 252, 0) // <20><>ƺ<EFBFBD><C6BA>
#define CLR_GREENYELLOW RGB(173, 255, 47) // <20>̻<EFBFBD>ɫ
#define CLR_DARKOLIVEGREEN RGB( 85, 107, 47) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_YELLOWGREEN RGB(154, 205, 50) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_OLIVEDRAB RGB(107, 142, 35) // <20><><EFBFBD>ɫ
#define CLR_BEIGE RGB(245, 245, 220) // <20><>ɫ(<28><><EFBFBD><EFBFBD>ɫ)
#define CLR_LIGHTGOLDENRODYELLOW RGB(250, 250, 210) // <20><><EFBFBD>ջ<EFBFBD>
#define CLR_IVORY RGB(255, 255, 240) // <20><><EFBFBD><EFBFBD>
#define CLR_LIGHTYELLOW RGB(255, 255, 224) // dz<><C7B3>ɫ
#define CLR_YELLOW RGB(255, 255, 0) // <20><><EFBFBD><EFBFBD>
#define CLR_OLIVE RGB(128, 128, 0) // <20><><EFBFBD><EFBFBD>
#define CLR_DARKKHAKI RGB(189, 183, 107) // <20>ߴ<EEBFA8><DFB4>
#define CLR_LEMONCHIFFON RGB(255, 250, 205) // <20><><EFBFBD>ʳ<EFBFBD>
#define CLR_PALEGOLDENROD RGB(238, 232, 170) // <20>Ҿջ<D2BE>
#define CLR_KHAKI RGB(240, 230, 140) // <20><>ߴ<EFBFBD><DFB4>
#define CLR_GOLD RGB(255, 215, 0) // <20><>ɫ
#define CLR_CORNSILK RGB(255, 248, 220) // <20><><EFBFBD><EFBFBD>˿ɫ
#define CLR_GOLDENROD RGB(218, 165, 32) // <20><><EFBFBD>ջ<EFBFBD>
#define CLR_DARKGOLDENROD RGB(184, 134, 11) // <20><><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>
#define CLR_FLORALWHITE RGB(255, 250, 240) // <20><><EFBFBD>İ<EFBFBD>ɫ
#define CLR_OLDLACE RGB(253, 245, 230) // <20><><EFBFBD><EFBFBD>˿
#define CLR_WHEAT RGB(245, 222, 179) // С<><D0A1>ɫ
#define CLR_MOCCASIN RGB(255, 228, 181) // ¹Ƥѥ
#define CLR_ORANGE RGB(255, 165, 0) // <20><>ɫ
#define CLR_PAPAYAWHIP RGB(255, 239, 213) // <20><>ľ<EFBFBD><C4BE>
#define CLR_BLANCHEDALMOND RGB(255, 235, 205) // <20><><EFBFBD>׵<EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD>ɫ
#define CLR_NAVAJOWHITE RGB(255, 222, 173) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_ANTIQUEWHITE RGB(250, 235, 215) // <20>Ŷ<EFBFBD><C5B6><EFBFBD>
#define CLR_TAN RGB(210, 180, 140) // <20><>ɫ
#define CLR_BURLYWOOD RGB(222, 184, 135) // Ӳľɫ
#define CLR_BISQUE RGB(255, 228, 196) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_DARKORANGE RGB(255, 140, 0) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_LINEN RGB(250, 240, 230) // <20><><EFBFBD>
#define CLR_PERU RGB(205, 133, 63) // <20><>³
#define CLR_PEACHPUFF RGB(255, 218, 185) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_SANDYBROWN RGB(244, 164, 96) // ɳ<><C9B3>ɫ
#define CLR_CHOCOLATE RGB(210, 105, 30) // <20>ɿ<EFBFBD><C9BF><EFBFBD>
#define CLR_SADDLEBROWN RGB(139, 69, 19) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
#define CLR_SEASHELL RGB(255, 245, 238) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_SIENNA RGB(160, 82, 45) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
#define CLR_LIGHTSALMON RGB(255, 160, 122) // dz<><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
#define CLR_CORAL RGB(255, 127, 80) // ɺ<><C9BA>
#define CLR_ORANGERED RGB(255, 69, 0) // <20>Ⱥ<EFBFBD>ɫ
#define CLR_DARKSALMON RGB(233, 150, 122) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>
#define CLR_TOMATO RGB(255, 99, 71) // <20><><EFBFBD>Ѻ<EFBFBD>
#define CLR_MISTYROSE RGB(255, 228, 225) // <20><><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>
#define CLR_SALMON RGB(250, 128, 114) // <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>
#define CLR_SNOW RGB(255, 250, 250) // ѩ
#define CLR_LIGHTCORAL RGB(240, 128, 128) // <20><>ɺ<EFBFBD><C9BA>ɫ
#define CLR_ROSYBROWN RGB(188, 143, 143) // õ<><C3B5><EFBFBD><EFBFBD>ɫ
#define CLR_INDIANRED RGB(205, 92, 92) // ӡ<>Ⱥ<EFBFBD>
#define CLR_RED RGB(255, 0, 0) // <20><><EFBFBD><EFBFBD>
#define CLR_BROWN RGB(165, 42, 42) // <20><>ɫ
#define CLR_FIREBRICK RGB(178, 34, 34) // <20>ͻ<EFBFBD>ש
#define CLR_DARKRED RGB(139, 0, 0) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_MAROON RGB(128, 0, 0) // <20><>ɫ
#define CLR_WHITE RGB(255, 255, 255) // <20><><EFBFBD><EFBFBD>
#define CLR_WHITESMOKE RGB(245, 245, 245) // <20><><EFBFBD><EFBFBD>
#define CLR_GAINSBORO RGB(220, 220, 220) // <20><>˹<EFBFBD><CBB9><EFBFBD>޻<EFBFBD>ɫ
#define CLR_LIGHTGREY RGB(211, 211, 211) // dz<><C7B3>ɫ
#define CLR_SILVER RGB(192, 192, 192) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_DARKGRAY RGB(169, 169, 169) // <20><><EFBFBD><EFBFBD>ɫ
#define CLR_GRAY RGB(186, 183, 186) // <20><>ɫ(*)
#define CLR_DIMGRAY RGB(105, 105, 105) // <20><><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>ɫ
#define CLR_BLACK RGB( 0, 0, 0) // <20><><EFBFBD><EFBFBD>

298
subVersion/D3D9Render.cpp Normal file
View File

@@ -0,0 +1,298 @@
/*
Copyright 2016-2017 sub1to
This file is part of subVersion GTA:O SC External Hack.
subVersion GTA:O SC External Hack is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
subVersion GTA:O SC External Hack is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
*/
#include "stdafx.h"
D3D9Render::D3D9Render() :
m_nFont(0)
{
}
D3D9Render::~D3D9Render()
{
this->releaseFont();
m_pVertexBuffer->Release(); //close and release vertex buffer
m_pD3dDev->Release(); // close and release the 3D device
m_pD3d->Release(); // close and release Direct3D
}
bool D3D9Render::init(HWND hWnd)
{
m_pD3d = Direct3DCreate9(D3D_SDK_VERSION); //create d3d9 interface
ZeroMemory(&m_d3dParam, sizeof(m_d3dParam)); //clear the struct
m_d3dParam.Windowed = true;
m_d3dParam.SwapEffect = D3DSWAPEFFECT_DISCARD;
m_d3dParam.hDeviceWindow = hWnd;
m_d3dParam.BackBufferHeight = m_screen.h;
m_d3dParam.BackBufferWidth = m_screen.w;
m_d3dParam.MultiSampleQuality = D3DMULTISAMPLE_NONE;
m_d3dParam.BackBufferFormat = D3DFMT_A8R8G8B8;
m_pD3d->CreateDevice( D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&m_d3dParam,
&m_pD3dDev);
//create vertex buffer
m_pD3dDev->CreateVertexBuffer( 4 * sizeof(Vertex),
0,
VERTEX_FORMAT,
D3DPOOL_DEFAULT, //managed = video ram; D3DPOOL_DEFAULT = auto
&m_pVertexBuffer, //vertex buffer interface
NULL);
this->createFont("Verdana", 14, true, false);
this->createFont("Verdana", 14, false, false);
this->createFont("Verdana", 18, true, false);
m_pD3dDev->SetFVF(VERTEX_FORMAT);// select which vertex format to use
return true;
}
static std::string floatToString(float val) {
auto res = std::to_string(val);
const std::string format("$1");
std::regex r("(\\d*)\\.0{6}|");
std::regex r2("(\\d*\\.{1}0*[^0]+)0*");
res = std::regex_replace(res, r2, format);
res = std::regex_replace(res, r, format);
return res;
}
bool D3D9Render::render()
{
m_pD3dDev->Clear(0, nullptr, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0,0,0,0), 1.f, 0);
m_pD3dDev->BeginScene();
if(g_pSettings->isMenuActive() && g_pMemMan->getWindow() == GetForegroundWindow())
{
//Draw header
this->drawBoxBorder(0, 0, LAYOUT_ELEMENT_WIDTH, LAYOUT_ELEMENT_HEIGHT, LAYOUT_BORDER_SIZE, LAYOUT_COLOR_BACKGROUND, LAYOUT_COLOR_BORDER);
this->drawText(m_szWindowTitle, 0, 0, LAYOUT_ELEMENT_WIDTH, LAYOUT_ELEMENT_HEIGHT, 2, LAYOUT_COLOR_TEXT, DT_CENTER | DT_VCENTER);
if (this->m_bMBShowing)
{
this->drawBoxBorder(LAYOUT_ELEMENT_WIDTH + 10, 0, LAYOUT_MB_WIDTH, LAYOUT_ELEMENT_HEIGHT, LAYOUT_BORDER_SIZE, LAYOUT_COLOR_BACKGROUND, LAYOUT_COLOR_BORDER);
this->drawText(this->m_sTitle, LAYOUT_ELEMENT_WIDTH + 10, 0, LAYOUT_MB_WIDTH, LAYOUT_ELEMENT_HEIGHT, 2, LAYOUT_COLOR_TEXT, DT_CENTER | DT_VCENTER);
this->drawBoxBorder(LAYOUT_ELEMENT_WIDTH + 10, LAYOUT_ELEMENT_HEIGHT, LAYOUT_MB_WIDTH, LAYOUT_MB_HEIGHT, LAYOUT_BORDER_SIZE, LAYOUT_COLOR_BACKGROUND, LAYOUT_COLOR_BORDER);
this->drawText(this->m_sDetail, LAYOUT_ELEMENT_WIDTH + 10, LAYOUT_ELEMENT_HEIGHT, LAYOUT_MB_WIDTH , LAYOUT_MB_HEIGHT, 0, LAYOUT_COLOR_TEXT, DT_CENTER | DT_VCENTER);
}
//prevent race conditions
while(!g_pSettings->lockFeatureCur())
Sleep(1);
//draw tabs
for(int i = 0; i < g_pSettings->getFeatureCategoryCount(); i++)
{
featCat* tab = g_pSettings->getFeatureCategory(i);
int x = (LAYOUT_ELEMENT_WIDTH / g_pSettings->getFeatureCategoryCount()) * i,
y = LAYOUT_ELEMENT_HEIGHT * 1,
w = LAYOUT_ELEMENT_WIDTH / g_pSettings->getFeatureCategoryCount(),
h = LAYOUT_ELEMENT_HEIGHT;
this->drawBoxBorder( x, y, w, h, LAYOUT_BORDER_SIZE,
(i == g_pSettings->getActiveCat()) ? LAYOUT_COLOR_ACTIVE_BG : LAYOUT_COLOR_BACKGROUND,
(i == g_pSettings->getActiveCat()) ? LAYOUT_COLOR_ACTIVE_BORDER : LAYOUT_COLOR_BORDER);
this->drawText(tab->m_szName, x, y, w - 1, h, 0, LAYOUT_COLOR_TEXT, DT_CENTER | DT_VCENTER);
}
//draw features
int n = g_pSettings->getFeatureCurCount(),
active = g_pSettings->getActiveFeature();
this->drawBoxBorder( 0, //draw bg for all features
LAYOUT_ELEMENT_HEIGHT * 2,
LAYOUT_ELEMENT_WIDTH,
(n > MAX_MENU_FEATURES_DISPLAYED) ? MAX_MENU_FEATURES_DISPLAYED * LAYOUT_ELEMENT_HEIGHT : LAYOUT_ELEMENT_HEIGHT * n,
LAYOUT_BORDER_SIZE,
LAYOUT_COLOR_BACKGROUND,
LAYOUT_COLOR_BORDER);
for(int i = 0, j = g_pSettings->getDisplayOffset(); i < n && i < MAX_MENU_FEATURES_DISPLAYED; i++, j++)
{
feat* feature = g_pSettings->getFeatureCur(j);
int x = 8,
y = LAYOUT_ELEMENT_HEIGHT * (i + 2);
//selected box
if(j == active)
this->drawBoxBorder( x - 6,
y + 2,
LAYOUT_ELEMENT_WIDTH - (LAYOUT_BORDER_SIZE * 2),
LAYOUT_ELEMENT_HEIGHT - (LAYOUT_BORDER_SIZE * 2),
LAYOUT_BORDER_SIZE,
LAYOUT_COLOR_ACTIVE_BG,
LAYOUT_COLOR_SELECTED);
//checkbox
if(feature->m_type == feat_toggle || feature->m_type == feat_slider)
{
this->drawBoxBorder( x - 2,
y + 5,
LAYOUT_ELEMENT_HEIGHT - (LAYOUT_BORDER_SIZE * 5),
LAYOUT_ELEMENT_HEIGHT - (LAYOUT_BORDER_SIZE * 5),
LAYOUT_BORDER_SIZE,
(feature->m_bOn == true) ? LAYOUT_COLOR_SELECTED : LAYOUT_COLOR_BACKGROUND,
(feature->m_bOn == true) ? LAYOUT_COLOR_ACTIVE_BORDER : LAYOUT_COLOR_BORDER);
x += (LAYOUT_ELEMENT_HEIGHT - (LAYOUT_BORDER_SIZE * 3));
}
this->drawText(feature->m_szName, x, y, 0, LAYOUT_ELEMENT_HEIGHT, 1, LAYOUT_COLOR_TEXT, DT_VCENTER);
//slider
if(feature->m_type == feat_slider)
{
featSlider* slider = static_cast<featSlider*>(feature);
int x = (int) (LAYOUT_ELEMENT_WIDTH * .5f),
y = (LAYOUT_ELEMENT_HEIGHT * (i + 2)) + 5,
w = (int) ((LAYOUT_ELEMENT_WIDTH * .5f) - (LAYOUT_BORDER_SIZE * 2)),
h = LAYOUT_ELEMENT_HEIGHT - (LAYOUT_BORDER_SIZE * 5);
float mod = (slider->m_fValue - slider->m_fMin) / (slider->m_fMax - slider->m_fMin);
this->drawBoxBorder(x, y, w, h, LAYOUT_BORDER_SIZE, LAYOUT_COLOR_SLIDER_BG, LAYOUT_COLOR_BORDER);
this->drawBoxBorder(x + (int) (mod * (w - h)), y, h, h, LAYOUT_BORDER_SIZE, LAYOUT_COLOR_SLIDER_BTN, LAYOUT_COLOR_BORDER);
//this->drawText(floatToString(slider->m_fValue), x, y, w - 1, h, 0, LAYOUT_COLOR_VALUE_TEXT, DT_CENTER | DT_VCENTER);
}
}
//draw scrollbar
int max = n - MAX_MENU_FEATURES_DISPLAYED; //number of features that are not displayed
if(max > 0)
{
int space = LAYOUT_ELEMENT_HEIGHT * (MAX_MENU_FEATURES_DISPLAYED + 2),
height = (space / max <= space / 2) ? space / max : space / 2;
space -= height;
float mod = (g_pSettings->getDisplayOffset() / (float) max);
this->drawBoxBorder(LAYOUT_ELEMENT_WIDTH + LAYOUT_BORDER_SIZE , (int) (space * mod), LAYOUT_SCROLLBAR_WIDTH, height, LAYOUT_BORDER_SIZE, LAYOUT_COLOR_BACKGROUND, LAYOUT_COLOR_BORDER);
}
g_pSettings->unlockFeatureCur();
}
m_pD3dDev->EndScene();
m_pD3dDev->Present(nullptr, nullptr, nullptr, nullptr);
return true;
}
bool D3D9Render::createFont(char *name, int size, bool bold, bool italic)
{
if(m_nFont >= FONT_BUFFER_SIZE)
return false;
D3DXCreateFont(m_pD3dDev, size, 0, (bold) ? FW_BOLD : FW_NORMAL, 0, (italic) ? 1 : 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH, name, &m_pFont[m_nFont]);
m_nFont++;
return true;
}
void D3D9Render::releaseFont()
{
for(int i = 0; i < m_nFont; i++)
if(m_pFont[i] != nullptr)
m_pFont[i]->Release();
m_nFont = 0;
return;
}
bool D3D9Render::getViewport()
{
RECT rectWnd;
GetWindowRect(g_pMemMan->getWindow(), &rectWnd);
m_screen.w = LAYOUT_ELEMENT_WIDTH * 2 + LAYOUT_SCROLLBAR_WIDTH + LAYOUT_BORDER_SIZE;
m_screen.h = LAYOUT_ELEMENT_HEIGHT * (MAX_MENU_FEATURES_DISPLAYED + 2); //300
m_screen.x = rectWnd.left + LAYOUT_PADDING_LEFT;
m_screen.y = rectWnd.top + LAYOUT_PADDING_TOP;
return 1;
}
void D3D9Render::showMessageBox(std::wstring title,std::wstring detail)
{
this->m_sTitle = title;
this->m_sDetail = detail;
std::thread t([this] {
m_bMBShowing = true;
Sleep(3000);
m_bMBShowing = false;
});
t.detach();
}
void D3D9Render::drawBox(int x, int y, int w, int h, D3DCOLOR color)
{
/*Vertex vertex[] =
{
{(float) x, (float) y + h, 1.0f, 1.0f, color},
{(float) x, (float) y, 1.0f, 1.0f, color},
{(float) x + w, (float) y + h, 1.0f, 1.0f, color},
{(float) x + w, (float) y, 1.0f, 1.0f, color}
};
void* pvBuffer; //pointer to the buffer
m_pVertexBuffer->Lock(0, 0, (void**) &pvBuffer, 0);
memcpy(pvBuffer, vertex, sizeof(vertex));
m_pVertexBuffer->Unlock();
// select the vertex buffer to display
m_pD3dDev->SetStreamSource(0, m_pVertexBuffer, 0, sizeof(Vertex));
// copy the vertex buffer to the back buffer
m_pD3dDev->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);*/
D3DRECT rect {x, y, x + w, y + h};
m_pD3dDev->Clear(1, &rect, D3DCLEAR_TARGET, color, 1.f, 0);
return;
}
void D3D9Render::drawBoxInline(int x, int y, int w, int h, int size, D3DCOLOR color)
{
this->drawBox(x, y, w, size, color); //top
this->drawBox(x + w - size, y, size, h, color); //right
this->drawBox(x, y + h - size, w, size, color); //bottom
this->drawBox(x, y, size, h, color); //left
return;
}
void D3D9Render::drawBoxBorder(int x, int y, int w, int h, int borderSize, D3DCOLOR color, D3DCOLOR borderColor)
{
this->drawBox(x, y, w, h, borderColor);
this->drawBox(x + borderSize, y + borderSize, w - (borderSize * 2), h - (borderSize * 2), color);
}
void D3D9Render::drawText(std::wstring str, int x, int y, int font, D3DCOLOR color)
{
LPCWSTR pszStr = str.c_str();
RECT pos;
pos.left = x;
pos.top = y;
m_pFont[font]->DrawTextW(nullptr, pszStr, (int) lstrlenW(pszStr), &pos, DT_NOCLIP, color);
}
//void drawText (std::string str, float x, float y, float w, float h, int font, D3DCOLOR color, DWORD flags = NULL)
void D3D9Render::drawText(std::wstring str, int x, int y, int w, int h, int font, D3DCOLOR color, DWORD flags)
{
LPCWSTR pszStr = str.c_str();
RECT pos;
pos.left = x;
pos.right = x + w;
pos.top = y;
pos.bottom = y + h;
m_pFont[font]->DrawTextW(nullptr, pszStr, (int) lstrlenW(pszStr), &pos, flags | DT_NOCLIP, color);
}

109
subVersion/D3D9Render.h Normal file
View File

@@ -0,0 +1,109 @@
/*
Copyright 2016-2017 sub1to
This file is part of subVersion GTA:O SC External Hack.
subVersion GTA:O SC External Hack is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
subVersion GTA:O SC External Hack is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#ifndef D3D9_RENDER
#define D3D9_RENDER
#define FONT_BUFFER_SIZE 0x10 //max amount of fonts
#define VERTEX_FORMAT (D3DFVF_XYZRHW | D3DFVF_DIFFUSE) //custom vertex format
//Layout defines
#define LAYOUT_PADDING_TOP 50
#define LAYOUT_PADDING_LEFT 50
#define LAYOUT_BORDER_SIZE 2
#define LAYOUT_ELEMENT_WIDTH 300
#define LAYOUT_ELEMENT_HEIGHT 25
#define LAYOUT_MB_WIDTH 300
#define LAYOUT_MB_HEIGHT 100
#define LAYOUT_SCROLLBAR_WIDTH 0x08
#define LAYOUT_SCROLLBAR_HEIGHT 0x40
#define uuu 0xaa
#define merah 0x78, 0x38, 0x38
#define merah_aktif 0xac, 0x85, 0x85
#define biru 0x38, 0x78, 0xe2
#define biru_aktif 0x85, 0xac, 0xed
#define hijau 0x38, 0xe2, 0x78
#define hijau_aktif 0x85, 0xed, 0xac
#define LAYOUT_COLOR_BACKGROUND D3DCOLOR_ARGB(uuu, 0x38, 0xe2, 0x78)//
#define LAYOUT_COLOR_BORDER D3DCOLOR_ARGB(uuu, 1, 1, 1)
#define LAYOUT_COLOR_TEXT D3DCOLOR_ARGB(uuu, 1, 1, 1)
#define LAYOUT_COLOR_VALUE_TEXT D3DCOLOR_ARGB(uuu, 255,255,255)
#define LAYOUT_COLOR_SLIDER_BG D3DCOLOR_ARGB(uuu, 0x28, 0x28, 0x28)
#define LAYOUT_COLOR_SLIDER_BTN D3DCOLOR_ARGB(uuu, 0x73, 0x73, 0x73)
#define LAYOUT_COLOR_ACTIVE_BG D3DCOLOR_ARGB(uuu, 0x85, 0xed, 0xac)//
#define LAYOUT_COLOR_ACTIVE_BORDER D3DCOLOR_ARGB(uuu, 1, 1, 1)
#define LAYOUT_COLOR_SELECTED D3DCOLOR_ARGB(uuu, 0xff, 0xff, 0xff)
struct Vertex
{
FLOAT x, y, z, rhw; // from the D3DFVF_XYZRHW flag
DWORD color; // from the D3DFVF_DIFFUSE flag
};
class D3D9Render
{
public:
struct scrnVars
{
int w = 800, //screen width
h = 600,
x = 0,
y = 0; //screen height
} m_screen;
std::wstring m_szWindowTitle;
bool m_bMBShowing;
std::wstring m_sTitle;
std::wstring m_sDetail;
D3D9Render ();
~D3D9Render ();
bool init (HWND hWnd);
bool render ();
bool createFont (char *font, int size, bool bold, bool italic);
void releaseFont ();
bool getViewport ();
void showMessageBox(std::wstring title, std::wstring detail);
void drawBox (int x, int y, int w, int h, D3DCOLOR color);
void drawBoxInline (int x, int y, int w, int h, int size, D3DCOLOR color);
void drawBoxBorder (int x, int y, int w, int h, int borderSize, D3DCOLOR color, D3DCOLOR borderColor);
void drawText (std::wstring str, int x, int y, int font, D3DCOLOR color);
void drawText (std::wstring str, int x, int y, int w, int h, int font, D3DCOLOR color, DWORD flags = NULL);
protected:
LPDIRECT3D9 m_pD3d; // the pointer to Direct3D interface
LPDIRECT3DDEVICE9 m_pD3dDev; // the pointer to the device
LPDIRECT3DVERTEXBUFFER9 m_pVertexBuffer; //pointer to the vertex buffer interface
LPD3DXFONT m_pFont[FONT_BUFFER_SIZE];
int m_nFont;
D3DPRESENT_PARAMETERS m_d3dParam; //d3d9 device params
};
extern D3D9Render* g_pD3D9Render;
#endif

71
subVersion/GTA d3d9.rc Normal file
View File

@@ -0,0 +1,71 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>й<EFBFBD>) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""winres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1 ICON "mask.ico"
#endif // <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>й<EFBFBD>) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

811
subVersion/VehiclePreview.h Normal file
View File

@@ -0,0 +1,811 @@
#pragma once
#include<vector>
struct VehiclePreview {
std::wstring VName;
char* VCode;
char* TexDict;
char* TexName;
};
static std::vector<VehiclePreview> Super{
{L"Pfister 811","Pfister811","lgm_dlc_executive1","pfister811"},
{L"Adder","Adder","lgm_default","adder"},
{L"Autarch","autarch","lgm_dlc_xmas2017","autarch_b"},
{L"Banshee 900R","Banshee2","lsc_jan2016","banshee2"},
{L"Bullet","Bullet","lgm_default","bullet"},
{L"Cheetah","Cheetah","lgm_default","cheetah"},
{L"Cyclone","cyclone","lgm_dlc_smuggler","cyclone"},
{L"Cyclone","cyclone","lgm_dlc_smuggler","cyclone"},
{L"Deveste 8","DEVESTE","lgm_dlc_arena","deveste"},
{L"Emperor ETR1","Sheava","lgm_dlc_stunt","sheava"},
{L"Emerus","emerus","lgm_dlc_vinewood","emerus"},
{L"Entity XXR","entity2","lgm_dlc_assault","entity2"},
{L"Entity XF","Entityxf","lgm_default","entityxf"},
{L"FMJ","Fmj","lgm_dlc_executive1","fmj"},
{L"Furia","furia","lgm_dlc_casinoheist","furia"},
{L"Progen GP1","gp1","lgm_dlc_specialraces","gp1"},
{L"Infernus","Infernus","sssa_default","infernus"},
{L"Itali GTB Custom","italigtb2","lsc_dlc_import_export","italigtb2"},
{L"Itali GTB","Italigtb","lsc_dlc_import_export","italigtb"},
{L"Krieger","krieger","lgm_dlc_vinewood","krieger"},
{L"Nero Custom","Nero2","lsc_dlc_import_export","nero2_b"},
{L"Nero","Nero","lsc_dlc_import_export","nero2_a"},
{L"Osiris","Osiris","lgm_dlc_luxe","Osiris"},
{L"Penetrator","Penetrator","lgm_dlc_importexport","penetrator"},
{L"Annis RE-7B","Le7b","lgm_dlc_stunt","le7b"},
{L"Reaper","Reaper","lgm_dlc_executive1","reaper"},
{L"Rocket Voltic","voltic2","candc_importexport","voltic2"},
{L"Annis S80RR","s80","lgm_dlc_vinewood","s80"},
{L"Ubermacht SC1","sc1","lgm_dlc_xmas2017","sc1_b"},
{L"Scramjet","Scramjet","candc_battle","scramjet"},
{L"Sultan RS","Sultanrs","lsc_jan2016","sultan2_a"},
{L"Progen T20","T20","lgm_dlc_luxe","t20"},
{L"Taipan","taipan","lgm_dlc_assault","taipan"},
{L"Tempesta","Tempesta","lgm_dlc_importexport","tempesta"},
{L"Tezeract","tezeract","lgm_dlc_assault","tezeract"},
{L"Thrax","thrax","lgm_dlc_vinewood","thrax"},
{L"Turismo R","turismor","lgm_dlc_business","turismor"},
{L"Tyrant","TYRANT","lgm_dlc_assault","tyrant"},
{L"Tyrus","Tyrus","lgm_dlc_stunt","tyrus"},
{L"Vacca","Vacca","lgm_default","vacca"},
{L"Vagner","Vagner","lgm_dlc_gunrunning","vagner"},
{L"Vigilante","Vigilante","candc_smuggler","vigilante"},
{L"Visione","visione","lgm_dlc_smuggler","visione"},
{L"Voltic","Voltic","lgm_default","voltic_tless"},
{L"Proto X80 ","Prototipo","lgm_dlc_executive1","prototipo"},
{L"Ocelot XA-21","xa21","lgm_dlc_gunrunning","xa21"},
{L"Zentorno","Zentorno","lgm_dlc_business2","zentorno"},
{L"Zorusso","zorrusso","lgm_dlc_vinewood","zorrusso"}
};
static std::vector<VehiclePreview> Sports{
{L"Albany Alpha","Alpha","lgm_dlc_business","alpha"},
{L"Banshee Topless","Banshee","lgm_dlc_business2","banshee_tless"},
{L"Dinka Blista","Blista2","sssa_dlc_mp_to_sp","blista2"},
{L"Grotti Bestia GTS","Bestiagts","lgm_dlc_executive1","bestiagts"},
{L"Dinka Blista(GO GO Monkey)","blista3","",""},
{L"Bravado Buffalo Sprunk","Buffalo2","sssa_dlc_hipster","buffalo"},
{L"Bravado Buffalo S ","Buffalo3","sssa_dlc_mp_to_sp","buffalo3"},
{L"Bravado Buffalo","Buffalo","sssa_dlc_hipster","buffalo"},
{L"Grotti Carbonizzare","Carbonizzare","lgm_default","carboniz"},
{L"Pfister Comet Retro Custom","Comet3","lsc_dlc_import_export","comet3"},
{L"Pfister Comet","Comet2","sssa_default","comet2"},
{L"Pfister Comet Safari","comet4","lgm_dlc_xmas2017","comet4_b"},
{L"Pfister Comet SR","comet5","lgm_dlc_xmas2017","comet5_b"},
{L"Invetero Coquette","Coquette","lgm_default","coquette"},
{L"Obey 8F Drafter","drafter","lgm_dlc_vinewood","drafter"},
{L"Declasse Drift Tampa","tampa2","sssa_dlc_stunt","tampa2"},
{L"Elegy RH8","Elegy2","lgm_default","elegy2"},
{L"Annis Elegy Retro Custom","Elegy","lsc_dlc_import_export","elegy"},
{L"Benefactor Feltzer","Feltzer2","",""},
{L"Formula PR4", "formula", "lgm_dlc_casinoheist", "formula"},
{L"Formula R88", "formula2", "lgm_dlc_casinoheist", "formula2"},
{L"Vapid Flash GT","flashgt","lgm_dlc_assault","flashgt"},
{L"Lampadati Furore GT","Furoregt","lgm_dlc_lts_creator","furore"},
{L"Schyster Fusilade","Fusilade","sssa_dlc_business2","fusilade"},
{L"Karin Futo","futo","sssa_dlc_battle","futo"},
{L"Vapid GB200","gb200","lgm_dlc_assault","gb200"},
{L"Declasse Hotring Sabre","hotring","sssa_dlc_assault","hotring"},
{L"Overflod Imorgon","imorgon","lgm_dlc_casinoheist","imorgon"},
{L"Issi Sport","issi7","sssa_dlc_vinewood","issi7"},
{L"Grotti Itali GTO","ITALIGTO","lgm_dlc_arena","italigto"},
{L"Dinka Jester(Racecar)","jester2","sssa_dlc_christmas_2","jester2"},
{L"Dinka Jester Classic","jester3","lgm_dlc_assault","jester3"},
{L"Dinka Jester","Jester","lgm_dlc_business","jester"},
{L"Ocelot Jugular","jugular","lgm_dlc_vinewood","jugular"},
{L"Hijak Khamelion","Khamelion","",""},
{L"Lampadati Komoda","komoda","lgm_dlc_casinoheist","komoda"},
{L"Karin Kuruma(Armored)","kuruma2","sssa_dlc_heist","kuruma2"},
{L"Karin Kuruma","kuruma","sssa_dlc_heist","kuruma"},
{L"Ocelot Locust","locust","lgm_dlc_vinewood","locust"},
{L"Ocelot Lynx","lynx","lgm_dlc_stunt","lynx"},
{L"Dewbauchee Massacro (Race)","Massacro2","sssa_dlc_christmas_2","massacro2"},
{L"Dewbauchee Massacro","Massacro","lgm_dlc_business2","massacro"},
{L"Vysser Neo","neo","lgm_dlc_vinewood","neo"},
{L"Pfister Neon","neon","lgm_dlc_xmas2017","neon_b"},
{L"Obey 9F Cabrio","Ninef2","lgm_default","ninef2"},
{L"Obey 9F","Ninef","sssa_default","ninef"},
{L"Obey Omnis","Omnis","sssa_dlc_stunt","omnis"},
{L"Enus Paragon R","paragon","lgm_dlc_vinewood","paragon"},
{L"Enus Paragon R (Armored)","paragon2","lgm_dlc_vinewood","paragon"},
{L"Ocelot Pariah","pariah","lgm_dlc_xmas2017","pariah_b"},
{L"Maibatsu Penumbra","Penumbra","sssa_dlc_business2","penumbra"},
{L"Coil Raiden","raiden","lgm_dlc_xmas2017","raiden_b"},
{L"Dewbauchee Rapid GT Cabrio","rapidgt2","lgm_default","rapidgt2"},
{L"Dewbauchee Rapid GT","Rapidgt","lgm_default","rapidgt"},
{L"BF Raptor","raptor","lgm_dlc_biker","raptor"},
{L"Ubermacht Revolter","revolter","lgm_dlc_xmas2017","revolter_b"},
{L"Hijak Ruston","ruston","lgm_dlc_specialraces","ruston"},
{L"Benefactor Schafter LWB","schafter4","lgm_dlc_apartments","schafter4"},
{L"Benefactor Schafter V12","schafter3","lgm_dlc_apartments","schafter3"},
{L"Benefactor Schlagen GT","SCHLAGEN","lgm_dlc_arena","schlagen"},
{L"Benefactor Schwarter","schwarzer","sssa_default","schwarze"},
{L"Ubermacht Sentine Classic","sentinel3","sssa_dlc_xmas2017","sentinel3_b"},
{L"Dewbauchee Seven 70","Seven70","lgm_dlc_executive1","seven70"},
{L"Dewbauchee Specter","specter","lsc_dlc_import_export","specter2_a"},
{L"Dewbauchee Specter Custom","specter2","lsc_dlc_import_export","specter2_b"},
{L"Benefactor Streiter","streiter","lgm_dlc_xmas2017","streiter_b"},
{L"Dinka Sugoi","sugoi","sssa_dlc_casinoheist","sugoi"},
{L"Karin Sultan","Sultan","lsc_jan2016","sultan2_a"},
{L"Karin Sultan Classic","sultan2","sssa_dlc_casinoheist","sultan2"},
{L"Benefactor Surano","surano","lgm_default","surano_convertable"},
{L"Lampadati Tropos Rallye","tropos","sssa_dlc_stunt","tropos"},
{L"Albany V-STR","vstr","lgm_dlc_casinoheist","vstr"},
{L"Bravado Verlierer","Verlierer2","lgm_dlc_apartments","verlier"},
{L"Annis Future Shock ZR380","ZR3802","mba_vehicles","zr3802"},
{L"Annis Nightmare ZR380","ZR3803","mba_vehicles","zr3803"},
{L"Annis Apocalypse ZR380","ZR380","mba_vehicles","zr3801"}
};
static std::vector<VehiclePreview> SportsClassics{
{L"Ocelot Ardent","Ardent","candc_gunrunning","ardent"},
{L"Lampadati Casco","casco","lgm_dlc_heist","casco"},
{L"Rune Cheburek","cheburek","sssa_dlc_assault","cheburek"},
{L"Grotti Cheetah Classic","Cheetah2","lgm_dlc_gunrunning","cheetah2"},
{L"Invetero Coquette Classic","coquette2","lgm_dlc_pilot","coquette2"},
{L"Imponte Deluxo","deluxo","candc_xmas2017","deluxo_b"},
{L"Weeny Dynasty","dynasty","sssa_dlc_vinewood","dynasty"},
{L"Vulcar Fagaloa ","fagaloa","sssa_dlc_assault","fagaloa"},
{L"Grotti GT500","gt500","lgm_dlc_xmas2017","gt500_b"},
{L"Pegassi Infernus Classic","Infernus2","lgm_dlc_specialraces","infernus2"},
{L"Dewbauchee JB 700","jb700","lgm_default","jb700"},
{L"Dewbauchee JB 700W","jb7002","lgm_default","jb700"},
{L"Declasse Mamba","mamba","lgm_dlc_apartments","mamba"},
{L"Albany Manana","manana","",""},
{L"Lampadati Michelli GT","michelli","sssa_dlc_assault","michelli"},
{L"Pegassi Monroe","monroe","lgm_default","monroe"},
{L"Vulcar Nebula Turbo","nebula","sssa_dlc_vinewood","nebula"},
{L"Vapid Peyote","Peyote","",""},
{L"Lampadati Pigalle","pigalle","sssa_dlc_hipster","pigalle"},
{L"Dewbauchee Rapid GT Classic","rapidgt3","lgm_dlc_smuggler","rapidgt3"},
{L"Vapid Retinue Mk II","retinue2","sssa_dlc_casinoheist","retinue2"},
{L"Vapid Retinue","Retinue","",""},
{L"Vapid Retinue","Retinue","sssa_dlc_smuggler","retinue_b"},
{L"Albany Franken Strange","btype2","sssa_dlc_halloween","btype2"},
{L"Albany Roosevelt Valor","btype3","lgm_dlc_valentines2","roosevelt2"},
{L"Albany Roosevelt","btype","lgm_dlc_valentines","roosevelt"},
{L"Annis Savestra","savestra","lgm_dlc_xmas2017","savestra_b"},
{L"Grotti Stinger GT","stingergt","lgm_default","stingerg"},
{L"Grotti Stinger","stinger","lgm_default","stinger"},
{L"Benefactor Stirling GT","Feltzer3","lgm_dlc_luxe","feltzer3"},
{L"Ocelot Stromberg","stromberg","candc_xmas2017","stromberg_b"},
{L"Ocelot Swinger","Swinger","lgm_dlc_battle","swinger"},
{L"Pegassi Torero","torero","lgm_dlc_gunrunning","torero"},
{L"Declasse Tornado","Tornado","",""},
{L"Declasse Tornado Convertible","Tornado2","",""},
{L"Declasse Tornado Gang","Tornado3","",""},
{L"Declasse Tornado Convertible Gang","Tornado4","",""},
{L"Declasse Tornado Custom","Tornado5","lsc_lowrider2","tornado5_a"},
{L"Declasse Tornado Rat Rod","tornado6","sssa_dlc_biker","tornado6"},
{L"Grotti Turismo Classic","turismo2","lgm_dlc_specialraces","turismo2"},
{L"Lampadati Viseris","viseris","lgm_dlc_xmas2017","viseris_b"},
{L"Truffade Z-Type","ztype","lgm_default","ztype"},
{L"Karin 190z","z190","lgm_dlc_xmas2017","z190_b"},
{L"Ubermacht Zion Classic","zion3","sssa_dlc_vinewood","zion3"}
};
static std::vector<VehiclePreview> Coupes{
{L"Enus Cognoscenti Cabrio","cogcabrio","lgm_default","cogcabri"},
{L"Dewbauchee Exemplar","Exemplar","sssa_default","exemplar"},
{L"Ocelot F620","F620","sssa_dlc_business2","f620"},
{L"Lampadati Felon","Felon","sssa_default","felon"},
{L"Lampadati Felon GT","Felon2","sssa_default","felon2"},
{L"Ocelot Jackal","Jackal","sssa_dlc_heist","jackal"},
{L"Ubermacht Oracle","Oracle","sssa_default","oracle"},
{L"Ubermacht Oracle Mk2","oracle2","sssa_dlc_heist","oracle1"},
{L"Ubermacht Sentinel XS","Sentinel","sssa_dlc_business2","sentinel"},
{L"Ubermacht Sentinel","Sentinel2","sssa_dlc_business2","sentinel"},
{L"Enus Windsor","Windsor","lgm_dlc_luxe","windsor"},
{L"Enus Windsor Drop","Windsor2","",""},
{L"Ubermacht Zion","Zion","sssa_default","zion"},
{L"Ubermacht Zion Cabrio","Zion2","sssa_default","zion2"}
};
static std::vector<VehiclePreview> Muscle{
{L"Vapid Blade","Blade","sssa_dlc_hipster","blade"},
{L"Imponte Ruiner 2000","ruiner3","",""},
{L"Albany Buccaaneer Custom","Buccaneer2","lsc_default","buccaneer2_b"},
{L"Albany Buccaaneer","Buccaneer","lsc_default","buccaneer2_a"},
{L"Vapid Chino Custom","Chino2","lsc_default","chino2_a"},
{L"Vapid Chino","Chino","lgm_dlc_luxe","chino"},
{L"Vapid Clique","CLIQUE","lgm_dlc_arena","clique"},
{L"Invetero Coquette Blackfin","coquette3","lgm_dlc_luxe","coquette3"},
{L"Schyster Deviant","DEVIANT","lgm_dlc_arena","deviant"},
{L"Vapid Dominator GTX","dominator3","sssa_dlc_assault","dominator3"},
{L"Vapid Apocalypse Dominator","DOMINATOR4","mba_vehicles","dominato_c_1"},
{L"Vapid Future Shock Dominator","DOMINATOR5","mba_vehicles","dominato_c_2"},
{L"Vapid Nightmare Dominator","DOMINATOR6","mba_vehicles","dominato_c_3"},
{L"Vapid Dominator","Dominator","sssa_dlc_business2","dominato"},
{L"Imponte Dukes of Death","Dukes2","candc_default","dukes"},
{L"Imponte Dukes","Dukes","sssa_dlc_mp_to_sp","dukes"},
{L"Vapid Ellie","ellie","sssa_dlc_assault","ellie"},
{L"Williard Faction Custom Donk","Faction3","lsc_lowrider2","faction3_b"},
{L"Williard Faction Custom","Faction2","lsc_lowrider2","faction3_a"},
{L"Williard Faction","Faction","lsc_default","faction2_a"},
{L"Bravado Redwood Gauntlet","Gauntlet2","sssa_dlc_mp_to_sp","gauntlet2"},
{L"Bravado Gauntlet Classic Custom","gauntlet3","sssa_dlc_vinewood","gauntlet3"},
{L"Bravado Gauntlet Hellfire","gauntlet4","sssa_dlc_vinewood","gauntlet4"},
{L"Bravado Gauntlet","Gauntlet","sssa_default","gauntlet"},
{L"Albany Hermes","hermes","sssa_dlc_xmas2017","hermes_b"},
{L"Vapid Hotknife","Hotknife","lgm_default","hotknife"},
{L"Vapid Hustler","hustler","lgm_dlc_xmas2017","hustler_b"},
{L"Declasse Impaler","IMPALER","mba_vehicles","impaler"},
{L"Declasse Impaler","impaler","sssa_dlc_vinewood","impaler"},
{L"Declasse Apocalypse Impaler","IMPALER2","mba_vehicles","impaler_c_1"},
{L"Declasse Future Shock Impaler","IMPALER3","mba_vehicles","impaler_c_2"},
{L"Declasse Nightmare Impaler","IMPALER4","mba_vehicles","impaler_c_3"},
{L"Vapid Future Shock Imperator","IMPERATOR2","mba_vehicles","imperator2"},
{L"Vapid Nightmare Imperator","IMPERATOR3","mba_vehicles","imperator3"},
{L"Vapid Apocalypse Imperator","IMPERATOR","mba_vehicles","imperator1"},
{L"Albany Lurcher","lurcher","sssa_dlc_halloween","lurcher"},
{L"Declasse Moonbeam Custom","Moonbeam2","lsc_default","moonbeam2"},
{L"Declasse Moonbeam","Moonbeam","",""},
{L"Imponte Nightsade","nightshade","lgm_dlc_apartments","niteshad"},
{L"Vapid Peyote Gasser","peyote2","sssa_dlc_vinewood","peyote2"},
{L"Imponte Phoenix","phoenix","",""},
{L"Cheval Picador","picador","sssa_dlc_hipster","picador"},
{L"Vapid Pisswaser Dominator","Dominator2","sssa_dlc_mp_to_sp","dominator2"},
{L"Bravado Rat Loader","ratloader","sssa_dlc_valentines","rloader"},
{L"Bravado Rat truck","ratloader2","sssa_dlc_christmas_2","rloader2"},
{L"Imponte Ruiner 2000","ruiner2","candc_importexport","ruiner2"},
{L"Imponte Ruiner","ruiner","sssa_dlc_battle","ruiner"},
{L"Declasse Sabre Turbo","Sabregt","",""},
{L"Declasse Sabre Turbo Custom","Sabregt2","lsc_lowrider2","sabregt2_a"},
{L"Vapid Slamvan LostMC","Slamvan2","",""},
{L"Vapid Slamvan Custom","Slamvan3","lsc_lowrider2","slamvan3_b"},
{L"Vapid Apocalypse Slamvan ","SLAMVAN4","mba_vehicles","slamvan_c_1"},
{L"Vapid Future Shock Slamvan","SLAMVAN5","mba_vehicles","slamvan_c_2"},
{L"Vapid Nightmare Slamvan","SLAMVAN6","mba_vehicles","slamvan_c_3"},
{L"Vapid Slamvan","Slamvan","sssa_dlc_christmas_2","slamvan"},
{L"Declasse Burgershot Stallion","stalion2","sssa_dlc_mp_to_sp","stalion2"},
{L"Declasse Stallion","Stalion","sssa_dlc_mp_to_sp","stallion"},
{L"Declasse Weaponized Tampa","tampa3","candc_gunrunning","tampa3"},
{L"Declasse Tampa","Tampa","sssa_dlc_christmas_3","tampa"},
{L"Declasse Tulip","TULIP","sssa_dlc_arena","tulip"},
{L"Declasse Vamos","VAMOS","sssa_dlc_arena","vamos"},
{L"Declasse Vigero","Vigero","sssa_default","vigero"},
{L"Dundreary Virgo Classic Custom","Virgo2","lsc_lowrider2","virgo2_a"},
{L"Dundreary Virgo Classic","Virgo3","lsc_lowrider2","virgo2_b"},
{L"Dundreary Virgo","Virgo","lgm_dlc_luxe","virgo"},
{L"Declasse Voodoo Custom","Voodoo2","lsc_default","voodoo_b"},
{L"Declasse Voodoo","Voodoo","lsc_default","voodoo_a"},
{L"Declasse Yosemite","yosemite","sssa_dlc_xmas2017","yosemite_b"},
{L"Declasse Drift Yosemite","yosemite2","sssa_dlc_casinoheist","yosemite2"}
};
static std::vector<VehiclePreview> Offroad{
{L"BF Injection","bfinjection","sssa_default","bfinject"},
{L"BF Bifta","Bifta","sssa_default","bifta"},
{L"Nagasaki Hotrod Blazer","Blazer3","sssa_dlc_hipster","blazer3"},
{L"Nagasaki Blazer Aqua","Blazer5","candc_importexport","blazer5"},
{L"Nagasaki Blazer Lifeguard","Blazer2","",""},
{L"Nagasaki Blazer","Blazer","sssa_default","blazer"},
{L"Nagasaki Street Blazer","Blazer4","sssa_dlc_biker","blazer4"},
{L"Canis Bodhi","Bodhi2","sssa_default","bodhi2"},
{L"Coil Brawler","Brawler","lgm_dlc_luxe","brawler"},
{L"Benefactor Future Shock Bruiser","BRUISER2","mba_vehicles","bruiser_c_2"},
{L"Benefactor Nightmare Bruiser","BRUISER3","mba_vehicles","bruiser_c_3"},
{L"Benefactor Apocalypse Bruiser","BRUISER","mba_vehicles","bruiser_c_1"},
{L"Declasse Future Shock Brutus","BRUTUS2","mba_vehicles","brutus2"},
{L"Declasse Nightmare Brutus","BRUTUS3","mba_vehicles","brutus3"},
{L"Declasse Apocalypse Brutus","BRUTUS","mba_vehicles","brutus1"},
{L"Vapid Caracara 4x4","caracara2","sssa_dlc_vinewood","caracara2"},
{L"Vapid Caracara","caracara","candc_assault","caracara"},
{L"Benefactor Dubsta 6x6","Dubsta3","candc_default","dubsta3"},
{L"BF Dune FAV","Dune3","candc_gunrunning","dune3"},
{L"MTL Dune","Dune","sssa_default","dune"},
{L"BF Duneloader","Dloader","",""},
{L"Karin Everin","everon","sssa_dlc_casinoheist","everon"},
{L"Karin Freecrawler","Freecrawler","lgm_dlc_battle","freecrawler"},
{L"Annis Hellion","hellion","sssa_dlc_vinewood","hellion"},
{L"HVY Insurgent PickUp Custom","Insurgent3","",""},
{L"HVY Insurgent PickUp Custom","Insurgent3","ua_generic","ua_unlock_11"},
{L"HVY Insurgent","Insurgent","candc_default","insurgent"},
{L"HVY Insurgent PickUp","Insurgent2","candc_default","insurgent"},
{L"Canis Kalahari","Kalahari","sssa_default","kalahari"},
{L"Canis Kamacho","kamacho","sssa_dlc_xmas2017","kamacho_b"},
{L"Cheval Marshall","marshall","candc_default","marshall"},
{L"HVY Menacer","Menacer","candc_battle","menacer"},
{L"Canis Mesa (Merryweather)","Mesa3","candc_default","mesa3"},
{L"Bravado Apocalypse Sasquatch","MONSTER3","mba_vehicles","monster_c_1"},
{L"Bravado Future Shock Sasquatch","MONSTER4","mba_vehicles","monster_c_2"},
{L"Bravado Nightmare Sasquatch","MONSTER5","mba_vehicles","monster_c_3"},
{L"HVY Nightshark","nightshark","candc_gunrunning","nightshark"},
{L"Nagasaki Outlaw","outlaw","sssa_dlc_casinoheist","outlaw"},
{L"BF Dune Buggy","Dune4","",""},
{L"Dune","Dune5","candc_importexport","dune5"},
{L"Declasse Rancher XL","Rancherxl2","",""},
{L"Declasse Yosemite Rancher","Rancherxl","sssa_dlc_business","rancherx"},
{L"RC Bandito","RCBANDITO","sssa_dlc_arena","rcbandito"},
{L"Karin Rusty Rebel","Rebel2","sssa_dlc_hipster","rebel2"},
{L"Karin Rebel","Rebel","sssa_default","rebel"},
{L"Vapid Riata","riata","sssa_dlc_xmas2017","riata_b"},
{L"Vapid Sandking XL","Sandking","sssa_default","sandking_b"},
{L"Vapid Sandking SWB","Sandking2","sssa_default","sandkin_2b"},
{L"Dune2","Dune2","",""},
{L"Karin Technical modified edition","Technical3","",""},
{L"Karin Technical Aqua","Technical2","candc_importexport","technical2"},
{L"Karin Technical Custom","Technical3","ua_generic","ua_unlock_15"},
{L"Karin Technical","Technical","candc_default","technical"},
{L"Vapid Liberator","monster","candc_default","monster"},
{L"Vapid Desert Raid","TrophyTruck2","sssa_dlc_stunt","trophy2"},
{L"Vapid Trophy Truck","TrophyTruck","sssa_dlc_stunt","trophy"},
{L"Maxwell Vagrant","vagrant","sssa_dlc_casinoheist","vagrant"},
{L"Rune Zhaba","Zhaba","",""},
};
static std::vector<VehiclePreview> Motorcycles{
{L"Dinka Akuma","Akuma","sssa_default","akuma"},
{L"LCC Avarus","Avarus","sssa_dlc_biker","avarus"},
{L"Nagasaki BF400","BF400","sssa_dlc_stunt","bf400"},
{L"Western Bagger","Bagger","sssa_dlc_biker","bagger"},
{L"Pegassi Bati 801RR","BATI2","sssa_default","bati2"},
{L"Pegassi Bati 801","BATI","sssa_default","bati"},
{L"Nagasaki Carbon RS","CARBONRS","lgm_default","carbon"},
{L"Nagasaki Chimera","CHIMERA","sssa_dlc_biker","chimera"},
{L"Western Cliffhanger","CLIFFHANGER","sssa_dlc_stunt","cliffhanger"},
{L"Western Daemon Custom","DAEMON2","sssa_dlc_biker","daemon2"},
{L"Western Daemon","DAEMON","",""},
{L"Western Future Shock Deathbike","DEATHBIKE2","mba_vehicles","deathbike_c_2"},
{L"Western Nightmare Deathbike","DEATHBIKE3","mba_vehicles","deathbike_c_3"},
{L"Western Apocalypse Deathbike ","DEATHBIKE","mba_vehicles","deathbike_c_1"},
{L"Shitzu Defiler","DEFILER","sssa_dlc_biker","defiler"},
{L"Principe Diabolus Custom","DIABLOUS2","lsc_dlc_import_export","diablous2"},
{L"Principe Diabolus","DIABLOUS","",""},
{L"Dinka Double-T","DOUBLE","sssa_default","double"},
{L"Dinka Enduro","ENDURO","sssa_dlc_heist","enduro"},
{L"Pegassi Esskey","ESSKEY","sssa_dlc_biker","esskey"},
{L"Pegassi FCR 1000 Custom","FCR2","lsc_dlc_import_export","fcr2_b"},
{L"Pegassi FCR 1000","FCR","lsc_dlc_import_export","fcr2_a"},
{L"Pegassi Faggio Mod","FAGGIO3","sssa_dlc_biker","faggio3"},
{L"Pegassi Faggio","FAGGIO","sssa_default","faggio"},
{L"Pegassi Faggio Sport","FAGGIO2","sssa_dlc_biker","faggion"},
{L"Western Gargoyle","GARGOYLE","sssa_dlc_stunt","gargoyle"},
{L"Shitzu Hakuchou Dragbike","HAKUCHOU2","lgm_dlc_biker","hakuchou2"},
{L"Shitzu Hakuchou","HAKUCHOU","sssa_dlc_lts_creator","hakuchou"},
{L"LCC Hexer","HEXER","sssa_default","hexer"},
{L"LCC Innovation","INNOVATION","sssa_dlc_lts_creator","innovation"},
{L"Principe Lectro","LECTRO","lgm_dlc_heist","lectro"},
{L"Maibatsu Manchez","MANCHEZ","sssa_dlc_biker","manchez"},
{L"Principe Nemesis","NEMESIS","sssa_dlc_heist","nemesis"},
{L"Western Nightblade","NIGHTBLADE","sssa_dlc_biker","nightblade"},
{L"Opressor Mk II","Oppressor2","candc_battle","oppressor2"},
{L"Opressor Mk I","Oppressor","candc_gunrunning","oppressor"},
{L"PCJ 600","PCJ","sssa_default","pcj"},
{L"Western Ratbike","RATBIKE","sssa_dlc_biker","ratbike"},
{L"Western Rampant Rocket Tricycle","rrocket","lgm_dlc_vinewood","rrocket"},
{L"Pegassi Rufian","RUFFIAN","sssa_default","ruffian"},
{L"Maibatsu Sanchez","SANCHEZ2","sssa_default","sanchez2"},
{L"Maibatsu Sanchez Livery","SANCHEZ","sssa_default","sanchez"},
{L"LCC Sanctus","SANCTUS","sssa_dlc_biker","sanctus"},
{L"Nagasaki Shotaro","SHOTARO","lgm_dlc_biker","shotaro"},
{L"Western Sovereign","SOVEREIGN","",""},
{L"Nagasaki Stryder","stryder","lgm_dlc_casinoheist","stryder"},
{L"Dinka Thrust","THRUST","lgm_dlc_business2","thrust"},
{L"Shitzu Vader","VADER","sssa_default","vader"},
{L"Dinka Vindicator","VINDICATOR","lgm_dlc_luxe","vindicator"},
{L"Pegassi Vortex","VORTEX","sssa_dlc_biker","vortex"},
{L"Western Wolfsbane","WOLFSBANE","sssa_dlc_biker","wolfsbane"},
{L"Western Zombie Chopper","ZOMBIEB","sssa_dlc_biker","zombieb"},
{L"Western Zombie Bobber","ZOMBIEA","sssa_dlc_biker","zombiea"}
};
static std::vector<VehiclePreview> Military{
{L"HVY APC","apc","candc_gunrunning","apc"},
{L"Trailer","Trailersmall2","candc_gunrunning","trsmall2"},
{L"Barracks 3","Barracks3","",""},
{L"Barracks 2","Barracks","candc_default","barracks"},
{L"Barrage","barrage","candc_xmas2017","barrage_b"},
{L"Chernobog","chernobog","candc_xmas2017","chernobog_b"},
{L"Crusader","Crusader","candc_default","crusader"},
{L"Halftrack","halftrack","candc_gunrunning","halftrack"},
{L"Bangjali","khanjali","candc_xmas2017","khanjali_b"},
{L"Rhino","Rhino","candc_default","rhino"},
{L"HVY Scarab 1","SCARAB2","mba_vehicles","scarab2"},
{L"HVY Scarab 2","SCARAB3","mba_vehicles","scarab3"},
{L"HVY Scarab 3","SCARAB","mba_vehicles","scarab1"},
{L"Thruster","thruster","candc_xmas2017","thruster_b"},
{L"HVY Barracks 2","Barracks2","",""}
};
static std::vector<VehiclePreview> Emergency{
{L"Ambulans","Ambulance","",""},
{L"FIB","Fbi","",""},
{L"Damkar","Firetruk","",""},
{L"FIB SUV","Fbi2","",""},
{L"Lifeguard","Lguard","",""},
{L"Pranger","Pranger","",""},
{L"Polisi 3","Police3","",""},
{L"Cab Polisi","Policeb","",""},
{L"Polisi 2","Police2","",""},
{L"Polisi 1","Police","",""},
{L"Polisi tua 1","Policeold1","",""},
{L"Polisi tua 2","Policeold2","",""},
{L"Riot","Riot","",""},
{L"Policet","Policet","",""},
{L"Pbus","Pbus","candc_default","pbus"},
{L"Riot 2","riot2","candc_xmas2017","riot2_b"},
{L"Sheriff","Sheriff","",""},
{L"Sheriff SUV","Sheriff2","",""},
{L"Polisi 4","Police4","",""}
};
static std::vector<VehiclePreview> Service{
{L"Airbus","Airbus","candc_default","airbus"},
{L"MTL Brickade","Brickade","candc_executive1","brickade"},
{L"Bus","Bus","candc_default","bus"},
{L"Coach","Coach","candc_default","coach"},
{L"MTL Rally","Rallytruck","sssa_dlc_stunt","rallytruck"},
{L"pbus","Pbus2","sssa_dlc_battle","pbus2"},
{L"Rentbus","Rentalbus","candc_default","rentbus"},
{L"Taxi","Taxi","",""},
{L"Tourbus","Tourbus","",""},
{L"Trash","Trash2","",""},
{L"Trash 2","Trash","",""},
{L"MTL Wastelander","Wastelander","candc_importexport","wastlndr"},
};
static std::vector<VehiclePreview> Sedans{
{L"Declasse Asea Custom","Asea2","",""},
{L"Declasse Asea","Asea","sssa_dlc_business","asea"},
{L"Karin Asterope","Asterope","sssa_dlc_business","astrope"},
{L"Enus Cognoscenti 55","Cog55","lgm_dlc_apartments","cognosc"},
{L"Enus Cognoscenti 55 (Armored)","Cog552","",""},
{L"Declasse Premier","Premier","sssa_dlc_business","premier"},
{L"Emperor Modif 1 (破旧版)","Emperor2","",""},
{L"Emperor modif 2 (雪地版)","Emperor3","",""},
{L"Albany Emperor","Emperor","",""},
{L"Enus Super Diamond","Superd","sssa_default","superd"},
{L"Cheval Fugitive","Fugitive","sssa_default","fugitive"},
{L"Benefactor Glendale","Glendale","sssa_dlc_hipster","glendale"},
{L"Karin Intruder","Intruder","sssa_dlc_business","intruder"},
{L"Benefactor Turreted Limo","Limo2","",""},
{L"Dundreary Stretch","Stretch","sssa_default","stretch"},
{L"Albany Primo Custom","Primo2","",""},
{L"Albany Primo","Primo","sssa_dlc_hipster","primo"},
{L"Dundreary Regina","Regina","sssa_dlc_hipster","regina"},
{L"Mobil Jenazah","Romero","sssa_dlc_battle","Romero"},
{L"Benefactor Schafter V12 Armored","Schafter5","lgm_dlc_apartments","schafter3"},
{L"Benefactor Schafter LWB Armored","Schafter6","lgm_dlc_apartments","schafter4"},
{L"Benefactor Schafter","Schafter2","sssa_dlc_heist","schafter2"},
{L"Enus Stafford","Stafford","lgm_dlc_battle","stafford"},
{L"Vapid Stanier","Stanier","sssa_dlc_business","stanier"},
{L"Zirconium Stratum","Stratum","sssa_dlc_business","stratum"},
{L"Cheval Surge","Surge","sssa_dlc_heist","surge"},
{L"Obey Tailgater","Tailgater","sssa_dlc_hipster","tailgater"},
{L"Vulcar Ingot","Ingot","sssa_dlc_business","ingot"},
{L"Vulcar Warrener","Warrener","sssa_dlc_hipster","warrener"},
{L"Albany Washington","Washington","sssa_dlc_business","washingt"}
};
static std::vector<VehiclePreview> Industrial{
{L"HVY Bulldozer","Bulldozer","",""},
{L"HVY Cutter","Cutter","",""},
{L"Handler","Handler","",""},
{L"HVY Dump","Dump","candc_default","dump"},
{L"MTL Flatbed","Flatbed","",""},
{L"Guardian","Guardian","sssa_dlc_heist","guardian"},
{L"HVY Mixer2","Mixer2","",""},
{L"HVY Mixer","Mixer","",""},
{L"Rubble","Rubble","",""},
{L"Tiptruck 2","Tiptruck","",""},
{L"Tip Truck","Tiptruck2","",""}
};
static std::vector<VehiclePreview> Compacts{
{L"Asbo","asbo","sssa_dlc_casinoheist","asbo"},
{L"Dinka Blista","Blista","",""},
{L"Karin Dilettante (FlyUS)","Dilettante2","",""},
{L"Karin Dilettante","Dilettante","sssa_default","dilettan"},
{L"Grotti Brioso R/A","Brioso","sssa_dlc_stunt","brioso"},
{L"Weeny Issi Classic","issi3","sssa_dlc_assault","issi3"},
{L"Issi Apocalypse","ISSI4","mba_vehicles","issi3_c_1"},
{L"Issi Future Shock","ISSI5","mba_vehicles","issi3_c_2"},
{L"Issi Nightmare","ISSI6","mba_vehicles","issi3_c_3"},
{L"Dinka Blista Kanjo","kanjo","sssa_dlc_casinoheist","kanjo"},
{L"Benefactor Panto","Panto","sssa_dlc_hipster","panto"},
{L"Bollokan Prairie","Prairie","sssa_dlc_battle","prairie"},
{L"Declasse Rhapsody","Rhapsody","sssa_dlc_hipster","rhapsody"},
{L"Weeny Issi","Issi2","sssa_default","issi2"}
};
static std::vector<VehiclePreview> Commercial{
{L"Vapid Benson","Benson","",""},
{L"MTL Future Shock Cerberus","CERBERUS2","mba_vehicles","cerberus2"},
{L"MTL Nightmare Cerberus","CERBERUS3","mba_vehicles","cerberus3"},
{L"MTL Appocalypse Cerberus","CERBERUS","mba_vehicles","cerberus1"},
{L"HVY Biff","Biff","",""},
{L"JoBuilt Hauler","Hauler","",""},
{L"JoBuilt Hauler Custom","Hauler2","candc_truck","cab_1"},
{L"MTL Packer","Packer","",""},
{L"Maibatsu Mule Custom","Mule2","",""},
{L"Maibatu Mule Custom1","Mule3","candc_default","mule3"},
{L"Maibatsu Mule Custom2","Mule4","candc_battle","mule4"},
{L"Maibatsu Mule","Mule","candc_default","mule"},
{L"JoBuilt Phantom Custom","phantom3","candc_truck","cab_0"},
{L"JoBuilt Phantom Wedge","Phantom2","candc_importexport","phantom2"},
{L"JoBuilt Phantom","Phantom","",""},
{L"MTL Pounder Custom","Pounder2","candc_battle","pounder2"},
{L"MTL Pounder","Pounder","",""},
{L"Stockade Custom","Stockade3","",""},
{L"Stockade","Stockade","",""},
{L"Terrobyte","Terbyte","",""}
};
static std::vector<VehiclePreview> Planes{
{L"Alpha Z1","alphaz1","elt_dlc_smuggler","alphaz1"},
{L"Avenger","avenger","candc_chopper","banner_5"},
{L"Avenger 2","avenger2","candc_chopper","banner_4"},
{L"Besra","Besra","elt_dlc_pilot","besra"},
{L"Blimp","Blimp2","",""},
{L"Blimp 2","Blimp","",""},
{L"Blimp 3","blimp3","elt_dlc_battle","blimp3"},
{L"RM-10 Bombushka","Bombushka","candc_smuggler","bombushka"},
{L"Antonov","Cargoplane","",""},
{L"Cuban 800","Cuban800","elt_default","cuban800"},
{L"Dodo","Dodo","elt_default","dodo"},
{L"Duster","Duster","elt_default","duster"},
{L"Howard NX-25","Howard","elt_dlc_smuggler","howard"},
{L"Hydra","Hydra","candc_default","hydra"},
{L"B747","Jet","",""},
{L"Luxor Deluxe","Luxor2","elt_dlc_executive1","luxor2"},
{L"Luxor","Luxor","elt_default","luxor"},
{L"Mammatus","Mammatus","elt_default","mammatus"},
{L"Microlight","Microlight","elt_dlc_smuggler","microlight"},
{L"Miljet","Miljet","elt_dlc_pilot","miljet"},
{L"Mogul","Mogul","candc_smuggler","mogul"},
{L"V-65 Molotok","Molotok","candc_smuggler","molotok_b"},
{L"Nimbus","Nimbus","elt_dlc_executive1","nimbus"},
{L"Nokota","Nokota","candc_smuggler","nokota"},
{L"P-996 Lazer","Lazer","candc_smuggler","lazer"},
{L"Pyro","Pyro","candc_smuggler","pyro"},
{L"Rogue","Rogue","candc_smuggler","rogue"},
{L"Seabreeze","Seabreeze","elt_dlc_smuggler","seabreeze"},
{L"Shamal","Shamal","elt_default","shamal"},
{L"LF-22 Starling","starling","candc_smuggler","starling"},
{L"B-11 Strikeforce","Strikeforce","candc_battle","strikeforce"},
{L"Stunt","Stunt","elt_default","stunt"},
{L"Titan","Titan","elt_default","titan"},
{L"Tula","tula","candc_smuggler","tula"},
{L"Velum","Velum2","elt_default","velum2"},
{L"Velum 2","Velum","elt_default","velum"},
{L"Vestra","Vestra","",""},
{L"Volatol (Kontol)","volatol","candc_xmas2017","volatol_b"}
};
static std::vector<VehiclePreview> Utility{
{L"Airtug","Airtug","",""},
{L"ArmyTrailer (1)","Armytrailer","",""},
{L"ArmyTrailer (2)","Armytrailer2","",""},
{L"ArmyTanker","Armytanker","",""},
{L"Trailer3","Tr3","",""},
{L"BoatTrailer","Boattrailer","",""},
{L"Caddy","Caddy","",""},
{L"Caddy2","Caddy2","foreclosures_bunker","transportation_2"},
{L"Caddy3","Caddy3","foreclosures_bunker","transportation_1"},
{L"Trailer2","Tr2","",""},
{L"Trailer4","Tr4","",""},
{L"Trailer (Pibwasser)","Trailers2","",""},
{L"Trailer (Big Good)","Trailers3","",""},
{L"Trailer4","Trailers4","",""},
{L"Dock Trailer","Docktrailer","",""},
{L"Dock Tug","Docktug","",""},
{L"TV Trailer (Fame or Shame)","Tvtrailer","",""},
{L"Tractor3","Tractor3","",""},
{L"Tractor2","Tractor2","",""},
{L"Freight Trailer","Freighttrailer","",""},
{L"Flat Trailer","Trflat","",""},
{L"HVY Forklift","Forklift","",""},
{L"Graintraler","Graintrailer","",""},
{L"Bale Trailer","Baletrailer","",""},
{L"Trailer Logs","Trailerlogs","",""},
{L"Prop Trailer","Proptrailer","",""},
{L"Trailer Larger","trailerlarge","candc_truck","banner_2"},
{L"Tanker","Tanker2","",""},
{L"Tanker(RON)","Tanker","",""},
{L"Ultility Truck","Utillitruck3","",""},
{L"Trailers","Trailers","",""},
{L"Ultility Truck 2","Utillitruck2","",""},
{L"Rake Trailer","Raketrailer","",""},
{L"Ripley","Ripley","",""},
{L"Scrap","Scrap","",""},
{L"Trailer Small","Trailersmall","",""},
{L"Mower","Mower","",""},
{L"Utility Truck 3","Utillitruck","",""},
{L"Tow Truck","Towtruck","",""},
{L"Tow Truck (2)","Towtruck2","",""},
{L"Tractor","Tractor","",""},
{L"Sadler 2","Sadler2","",""},
{L"Sadler","Sadler","sssa_default","sadler"},
};
static std::vector<VehiclePreview> Helicopters{
{L"Akula","akula","candc_xmas2017","akula_b"},
{L"Annihilator","Annihilator","elt_default","annihl"},
{L"Nagasaki Buzzard Attack Chopper","Buzzard","candc_default","buzzard"},
{L"Nagasaki Buzzard","Buzzard2","",""},
{L"Cargobob custom","Cargobob4","",""},
{L"Western Cargobob Jetsam","Cargobob2","",""},
{L"Western Cargobob (TPE)","Cargobob3","",""},
{L"Western Cargobob","Cargobob","candc_default","cargobob"},
{L"Frogger","Frogger","elt_default","frogger"},
{L"Frogger(FIB)","Frogger2","",""},
{L"Havok","havok","elt_dlc_smuggler","havok"},
{L"FH-1 Hunter","hunter","candc_smuggler","hunter"},
{L"Maverick","Maverick","elt_default","maverick"},
{L"Police Maverick","Polmav","",""},
{L"Savage","Savage","candc_default","savage"},
{L"Sea Sparrow","SEASPARROW","elt_dlc_assault","sparrow"},
{L"HVY Skylift","Skylift","",""},
{L"Buckingham Supervolito Carbon","Supervolito2","",""},
{L"Buckingham Supervolito","Supervolito","",""},
{L"Buckingham Swift Deluxe","Swift2","elt_dlc_executive1","swift2"},
{L"Buckingham Swift","Swift","elt_dlc_pilot","swift"},
{L"Valkyrie","Valkyrie2","",""},
{L"Valkyrie (Custom)","Valkyrie","candc_default","valkyrie"},
{L"Volatus","Volatus","elt_dlc_executive1","volatus"},
};
static std::vector<VehiclePreview> Vans{
{L"BF Surfer (Custom)","Surfer2","",""},
{L"BF Surfer","Surfer","sssa_dlc_hipster","surfer"},
{L"Bravado Bison (BackupRack)","Bison2","",""},
{L"Bravado Bison (Rack)","Bison3","",""},
{L"Bravado Bison","Bison","sssa_default","bison"},
{L"Bobcat XL","Bobcatxl","sssa_dlc_business","bobcatxl"},
{L"Boxville (armored)","Boxville5","candc_importexport","boxville5"},
{L"Boxville (Go Postal)","Boxville2","",""},
{L"Boxville (Humane)","Boxville3","",""},
{L"Boxville (Post OP)","Boxville4","candc_default","boxville4"},
{L"Boxville (W & P)","Boxville","",""},
{L"Brute Pony (Business)","Pony","",""},
{L"Brute Pony (Store)","Pony2","",""},
{L"Burrito (Bug Stars)","Burrito2","",""},
{L"Burrito (Construction)","Burrito4","",""},
{L"Burrito (Gang)","Gburrito2","sssa_dlc_heist","gburrito2"},
{L"Burrito (The Lost MC)","Gburrito","",""},
{L"Burriot 5","Burrito5","",""},
{L"Burrito 3","Burrito3","",""},
{L"Burrito (Graphics)","Burrito","",""},
{L"Camper","Camper","",""},
{L"Journey","Journey","candc_default","journey"},
{L"MiniVan Custom","Minivan2","lsc_lowrider2","minivan2_b"},
{L"MiniVAN","Minivan","sssa_dlc_business","minivan"},
{L"Paradise","Paradise","sssa_default","paradise"},
{L"Rumpo (Armored)","Rumpo3","sssa_dlc_executive_1","rumpo3_b"},
{L"Rumpo (Deludamol)","Rumpo2","",""},
{L"Rumpo (Weazel News)","Rumpo","sssa_dlc_heist","rumpo"},
{L"Speedo 3","Speedo4","",""},
{L"Speedo 2","Speedo2","",""},
{L"Speedo","Speedo","",""},
{L"Taco","Taco","",""},
{L"Bravado Youga Custom","Youga2","sssa_dlc_biker","youga2"},
{L"Bravado Youga","Youga","sssa_dlc_hipster","youga"}
};
static std::vector<VehiclePreview> Boats{
{L"Nagasaki Dinghy","Dinghy","",""},
{L"Nagasaki Dinghy (2-Seater)","Dinghy2","",""},
{L"Nagasaki Dinghy (Robbery)","Dinghy3","dock_default","dinghy3"},
{L"Nagasaki Dinghy (Black&White)","Dinghy4","",""},
{L"Shitzu Jetmax","Jetmax","dock_default","jetmax"},
{L"Dinka Marquis","Marquis","dock_default","marquis"},
{L"Police Predator","Predator","",""},
{L"Seashark","Seashark","dock_default","seashark"},
{L"Seashark (Lifeguard)","Seashark2","",""},
{L"Seashark (Charged)","Seashark3","",""},
{L"Pegassi Speeder","Speeder","dock_default","speeder"},
{L"Pegassi Speeder (Custom)","Speeder2","",""},
{L"Shitzu Squalo","Squalo","dock_default","squalo"},
{L"Submersible","Submersible","",""},
{L"Kraken Submersible (Kraken)","Submersible2","dock_default","sub2"},
{L"Shitzu Suntrap","Suntrap","dock_default","suntrap"},
{L"Lampadati Toro","Toro","dock_default","toro"},
{L"Lampadati Toro (Custom)","Toro2","",""},
{L"Shitzu Tropic","Tropic","dock_default","tropic"},
{L"Shitu Tropic (Custom)","Tropic2","",""},
{L"Tug","Tug","",""}
};
static std::vector<VehiclePreview> Cycles{
{L"BMX","Bmx","pandm_default","bmx"},
{L"Cruiser","Cruiser","pandm_default","cruiser"},
{L"Tribike2","Tribike2","pandm_default","tribike2"},
{L"Fixter","Fixter","",""},
{L"Scorcher","Scorcher","pandm_default","scorcher"},
{L"Tribike2","Tribike3","pandm_default","tribike3"},
{L"Tribike1","Tribike","pandm_default","tribike"}
};
static std::vector<VehiclePreview> Trains{
{L"CableCar","Cablecar","",""},
{L"Gerbong1","Freightcont1","",""},
{L"Gerbong2","Freightcont2","",""},
{L"Freightcar","Freightcar","",""},
{L"Freight","Freight","",""},
{L"Kereta Api","Freightgrain","",""},
{L"Metro Train","Metrotrain","",""},
{L"TankerCar","Tankercar","",""}
};
static std::vector<VehiclePreview> Trailer{
{L"Army Tanker", "Armytanker", "", "" },
{L"Army Trailer", "Armytrailer", "", "" },
{L"Army Trailer 2", "Armytrailer2", "", "" },
{L"Bale Trailer", "Baletrailer", "", "" },
{L"Boat Trailer", "Boattrailer", "", "" },
{L"Dock Trailer", "Docktrailer", "", "" },
{L"Freight Trailer", "Freighttrailer", "", "" },
{L"Grain Trailer", "Graintrailer", "", "" },
{L"Prop Trailer", "Proptrailer", "", "" },
{L"Rake Trailer", "Raketrailer", "", "" },
{L"Tanker (RON)", "Tanker", "", "" },
{L"Tanker (2)", "Tanker2", "", "" },
{L"Tanker (3)", "Tr2", "", "" },
{L"Tanker (4)", "Tr3", "", "" },
{L"Tanker (5)", "Tr4", "", "" },
{L"Trailer Logs", "Trailerlogs", "", "" },
{L"Trailer entah", "Trailers", "", "" },
{L"Trailer (Pibwasser)", "Trailers2", "", "" },
{L"Trailer (Big Goods)", "Trailers3", "", "" },
{L"Trailer 4", "Trailers4", "", "" },
{L"Trailer Small", "Trailersmall", "", "" },
{L"Trailer Large", "trailerlarge", "", "" },
{L"Trailer Flat", "Trflat", "", "" },
{L"TV Trailer (Fame or Shame)", "Tvtrailer", "", "" }
};
static std::vector<VehiclePreview> SUV{
{L"Gallivanter Baller (CEO)","Baller6","",""},
{L"Gallivanter Baller 2","Baller2","sssa_default","baller2"},
{L"Gallivanter Baller LE (Armored)","Baller5","",""},
{L"Gallivanter Baller LE LWB","Baller4","lgm_dlc_apartments","baller4"},
{L"Gallivanter Baller LE","Baller3","lgm_dlc_apartments","baller3"},
{L"Gallivanter Baller","Baller","",""},
{L"BeeJay XL","Bjxl","sssa_dlc_battle","bjxl"},
{L"Canis Seminole Frontier","Seminole","sssa_dlc_heist","seminole"},
{L"Albany Cavalcade Mk2","CAVALCADE2","sssa_dlc_business","cavcade2"},
{L"Albany Cavalcade","CAVALCADE","sssa_default","cavcade"},
{L"Vapid Contender","Contender","sssa_dlc_stunt","contender"},
{L"Benefactor Dubsta2","Dubsta2","",""},
{L"Benefactor Dubsta","Dubsta","",""},
{L"Emperor Habanero","Habanero","sssa_dlc_battle","habanero"},
{L"Enus Huntley S","Huntley","lgm_dlc_business2","huntley"},
{L"Fathom FQ 2","fq2","sssa_dlc_battle","fq2"},
{L"Declasse Granger","Granger","sssa_dlc_business","granger"},
{L"Bravado Gresley","Gresley","sssa_dlc_heist","gresley"},
{L"Dundreary Landstalker","Landstalker","sssa_dlc_heist","landstalker"},
{L"Mammoth Patriot","Patriot","sssa_dlc_battle","patriot"},
{L"Cannis Mesa (Custom)","Mesa2","",""},
{L"Cannis Mesa SUV","Mesa","candc_default","mesa"},
{L"Lampadati Novak","novak","lgm_dlc_vinewood","novak"},
{L"Mammoth Patriot Stretch","Patriot2","sssa_dlc_battle","patriot2"},
{L"Vapid Radius","Radi","sssa_dlc_business","radi"},
{L"Ubermacht Rebla GTS","rebla","lgm_dlc_casinoheist","rebla"},
{L"Obey Rocoto","Rocoto","sssa_default","rocoto"},
{L"Benefactor Serrano","Serrano","sssa_dlc_battle","serrano"},
{L"Pegassi Toros","TOROS","lgm_dlc_arena","toros"},
{L"Benefactor XLS(Armored)","Xls2","",""},
{L"Benefactor XLS","Xls","lgm_dlc_executive1","xls"}
};
static std::vector<std::pair<std::wstring, std::vector<VehiclePreview>>> vehiclePreview{
{L"Super >>",Super},
{L"Sport >>",Sports},
{L"SportClassic >>",SportsClassics},
{L"Coupe >>",Coupes},
{L"Muscle >>",Muscle},
{L"Offroad >>",Offroad},
{L"Motor >>",Motorcycles},
{L"Militer >>",Military},
{L"Emergency >>",Emergency},
{L"Service >>",Service},
{L"Sedan >>",Sedans},
{L"Industri >>",Industrial},
{L"Compact >>",Compacts},
{L"Commercial >>",Commercial},
{L"Pesawat >>",Planes},
{L"Utility >>",Utility},
{L"Helikopter >>",Helicopters},
{L"Van >>",Vans},
{L"Perahu >>",Boats},
{L"Sepeda >>",Cycles},
{L"Kereta >>",Trains},
{L"Trailer >>",Trailer},
{L"SUV >>",SUV},
};
static unsigned int joaat(std::string input)
{
unsigned int num1 = 0U;
for (char c : input)
{
unsigned int num2 = num1 + (unsigned int)tolower(c);
unsigned int num3 = num2 + (num2 << 10);
num1 = num3 ^ num3 >> 6;
}
unsigned int num4 = num1 + (num1 << 3);
unsigned int num5 = num4 ^ num4 >> 11;
return num5 + (num5 << 15);
}

2791
subVersion/d3d9/d3d9.h Normal file

File diff suppressed because it is too large Load Diff

BIN
subVersion/d3d9/d3d9.lib Normal file

Binary file not shown.

78
subVersion/d3d9/d3dx9.h Normal file
View File

@@ -0,0 +1,78 @@
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dx9.h
// Content: D3DX utility library
//
//////////////////////////////////////////////////////////////////////////////
#ifdef __D3DX_INTERNAL__
#error Incorrect D3DX header used
#endif
#ifndef __D3DX9_H__
#define __D3DX9_H__
// Defines
#include <limits.h>
#define D3DX_DEFAULT ((UINT) -1)
#define D3DX_DEFAULT_NONPOW2 ((UINT) -2)
#define D3DX_DEFAULT_FLOAT FLT_MAX
#define D3DX_FROM_FILE ((UINT) -3)
#define D3DFMT_FROM_FILE ((D3DFORMAT) -3)
#ifndef D3DXINLINE
#ifdef _MSC_VER
#if (_MSC_VER >= 1200)
#define D3DXINLINE __forceinline
#else
#define D3DXINLINE __inline
#endif
#else
#ifdef __cplusplus
#define D3DXINLINE inline
#else
#define D3DXINLINE
#endif
#endif
#endif
// Includes
#include "d3d9.h"
#include "d3dx9math.h"
#include "d3dx9core.h"
#include "d3dx9xof.h"
#include "d3dx9mesh.h"
#include "d3dx9shader.h"
#include "d3dx9effect.h"
#include "d3dx9tex.h"
#include "d3dx9shape.h"
#include "d3dx9anim.h"
// Errors
#define _FACDD 0x876
#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
enum _D3DXERR {
D3DXERR_CANNOTMODIFYINDEXBUFFER = MAKE_DDHRESULT(2900),
D3DXERR_INVALIDMESH = MAKE_DDHRESULT(2901),
D3DXERR_CANNOTATTRSORT = MAKE_DDHRESULT(2902),
D3DXERR_SKINNINGNOTSUPPORTED = MAKE_DDHRESULT(2903),
D3DXERR_TOOMANYINFLUENCES = MAKE_DDHRESULT(2904),
D3DXERR_INVALIDDATA = MAKE_DDHRESULT(2905),
D3DXERR_LOADEDMESHASNODATA = MAKE_DDHRESULT(2906),
D3DXERR_DUPLICATENAMEDFRAGMENT = MAKE_DDHRESULT(2907),
D3DXERR_CANNOTREMOVELASTITEM = MAKE_DDHRESULT(2908),
};
#endif //__D3DX9_H__

BIN
subVersion/d3d9/d3dx9.lib Normal file

Binary file not shown.

1114
subVersion/d3d9/d3dx9anim.h Normal file

File diff suppressed because it is too large Load Diff

753
subVersion/d3d9/d3dx9core.h Normal file
View File

@@ -0,0 +1,753 @@
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dx9core.h
// Content: D3DX core types and functions
//
///////////////////////////////////////////////////////////////////////////
#include "d3dx9.h"
#ifndef __D3DX9CORE_H__
#define __D3DX9CORE_H__
///////////////////////////////////////////////////////////////////////////
// D3DX_SDK_VERSION:
// -----------------
// This identifier is passed to D3DXCheckVersion in order to ensure that an
// application was built against the correct header files and lib files.
// This number is incremented whenever a header (or other) change would
// require applications to be rebuilt. If the version doesn't match,
// D3DXCheckVersion will return FALSE. (The number itself has no meaning.)
///////////////////////////////////////////////////////////////////////////
#define D3DX_VERSION 0x0902
#define D3DX_SDK_VERSION 43
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
BOOL WINAPI
D3DXCheckVersion(UINT D3DSdkVersion, UINT D3DXSdkVersion);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// D3DXDebugMute
// Mutes D3DX and D3D debug spew (TRUE - mute, FALSE - not mute)
//
// returns previous mute value
//
///////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
BOOL WINAPI
D3DXDebugMute(BOOL Mute);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// D3DXGetDriverLevel:
// Returns driver version information:
//
// 700 - DX7 level driver
// 800 - DX8 level driver
// 900 - DX9 level driver
///////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
UINT WINAPI
D3DXGetDriverLevel(LPDIRECT3DDEVICE9 pDevice);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// ID3DXBuffer:
// ------------
// The buffer object is used by D3DX to return arbitrary size data.
//
// GetBufferPointer -
// Returns a pointer to the beginning of the buffer.
//
// GetBufferSize -
// Returns the size of the buffer, in bytes.
///////////////////////////////////////////////////////////////////////////
typedef interface ID3DXBuffer ID3DXBuffer;
typedef interface ID3DXBuffer *LPD3DXBUFFER;
// {8BA5FB08-5195-40e2-AC58-0D989C3A0102}
DEFINE_GUID(IID_ID3DXBuffer,
0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
#undef INTERFACE
#define INTERFACE ID3DXBuffer
DECLARE_INTERFACE_(ID3DXBuffer, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXBuffer
STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
};
//////////////////////////////////////////////////////////////////////////////
// D3DXSPRITE flags:
// -----------------
// D3DXSPRITE_DONOTSAVESTATE
// Specifies device state is not to be saved and restored in Begin/End.
// D3DXSPRITE_DONOTMODIFY_RENDERSTATE
// Specifies device render state is not to be changed in Begin. The device
// is assumed to be in a valid state to draw vertices containing POSITION0,
// TEXCOORD0, and COLOR0 data.
// D3DXSPRITE_OBJECTSPACE
// The WORLD, VIEW, and PROJECTION transforms are NOT modified. The
// transforms currently set to the device are used to transform the sprites
// when the batch is drawn (at Flush or End). If this is not specified,
// WORLD, VIEW, and PROJECTION transforms are modified so that sprites are
// drawn in screenspace coordinates.
// D3DXSPRITE_BILLBOARD
// Rotates each sprite about its center so that it is facing the viewer.
// D3DXSPRITE_ALPHABLEND
// Enables ALPHABLEND(SRCALPHA, INVSRCALPHA) and ALPHATEST(alpha > 0).
// ID3DXFont expects this to be set when drawing text.
// D3DXSPRITE_SORT_TEXTURE
// Sprites are sorted by texture prior to drawing. This is recommended when
// drawing non-overlapping sprites of uniform depth. For example, drawing
// screen-aligned text with ID3DXFont.
// D3DXSPRITE_SORT_DEPTH_FRONTTOBACK
// Sprites are sorted by depth front-to-back prior to drawing. This is
// recommended when drawing opaque sprites of varying depths.
// D3DXSPRITE_SORT_DEPTH_BACKTOFRONT
// Sprites are sorted by depth back-to-front prior to drawing. This is
// recommended when drawing transparent sprites of varying depths.
// D3DXSPRITE_DO_NOT_ADDREF_TEXTURE
// Disables calling AddRef() on every draw, and Release() on Flush() for
// better performance.
//////////////////////////////////////////////////////////////////////////////
#define D3DXSPRITE_DONOTSAVESTATE (1 << 0)
#define D3DXSPRITE_DONOTMODIFY_RENDERSTATE (1 << 1)
#define D3DXSPRITE_OBJECTSPACE (1 << 2)
#define D3DXSPRITE_BILLBOARD (1 << 3)
#define D3DXSPRITE_ALPHABLEND (1 << 4)
#define D3DXSPRITE_SORT_TEXTURE (1 << 5)
#define D3DXSPRITE_SORT_DEPTH_FRONTTOBACK (1 << 6)
#define D3DXSPRITE_SORT_DEPTH_BACKTOFRONT (1 << 7)
#define D3DXSPRITE_DO_NOT_ADDREF_TEXTURE (1 << 8)
//////////////////////////////////////////////////////////////////////////////
// ID3DXSprite:
// ------------
// This object intends to provide an easy way to drawing sprites using D3D.
//
// Begin -
// Prepares device for drawing sprites.
//
// Draw -
// Draws a sprite. Before transformation, the sprite is the size of
// SrcRect, with its top-left corner specified by Position. The color
// and alpha channels are modulated by Color.
//
// Flush -
// Forces all batched sprites to submitted to the device.
//
// End -
// Restores device state to how it was when Begin was called.
//
// OnLostDevice, OnResetDevice -
// Call OnLostDevice() on this object before calling Reset() on the
// device, so that this object can release any stateblocks and video
// memory resources. After Reset(), the call OnResetDevice().
//////////////////////////////////////////////////////////////////////////////
typedef interface ID3DXSprite ID3DXSprite;
typedef interface ID3DXSprite *LPD3DXSPRITE;
// {BA0B762D-7D28-43ec-B9DC-2F84443B0614}
DEFINE_GUID(IID_ID3DXSprite,
0xba0b762d, 0x7d28, 0x43ec, 0xb9, 0xdc, 0x2f, 0x84, 0x44, 0x3b, 0x6, 0x14);
#undef INTERFACE
#define INTERFACE ID3DXSprite
DECLARE_INTERFACE_(ID3DXSprite, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXSprite
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
STDMETHOD(GetTransform)(THIS_ D3DXMATRIX *pTransform) PURE;
STDMETHOD(SetTransform)(THIS_ CONST D3DXMATRIX *pTransform) PURE;
STDMETHOD(SetWorldViewRH)(THIS_ CONST D3DXMATRIX *pWorld, CONST D3DXMATRIX *pView) PURE;
STDMETHOD(SetWorldViewLH)(THIS_ CONST D3DXMATRIX *pWorld, CONST D3DXMATRIX *pView) PURE;
STDMETHOD(Begin)(THIS_ DWORD Flags) PURE;
STDMETHOD(Draw)(THIS_ LPDIRECT3DTEXTURE9 pTexture, CONST RECT *pSrcRect, CONST D3DXVECTOR3 *pCenter, CONST D3DXVECTOR3 *pPosition, D3DCOLOR Color) PURE;
STDMETHOD(Flush)(THIS) PURE;
STDMETHOD(End)(THIS) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateSprite(
LPDIRECT3DDEVICE9 pDevice,
LPD3DXSPRITE* ppSprite);
#ifdef __cplusplus
}
#endif //__cplusplus
//////////////////////////////////////////////////////////////////////////////
// ID3DXFont:
// ----------
// Font objects contain the textures and resources needed to render a specific
// font on a specific device.
//
// GetGlyphData -
// Returns glyph cache data, for a given glyph.
//
// PreloadCharacters/PreloadGlyphs/PreloadText -
// Preloads glyphs into the glyph cache textures.
//
// DrawText -
// Draws formatted text on a D3D device. Some parameters are
// surprisingly similar to those of GDI's DrawText function. See GDI
// documentation for a detailed description of these parameters.
// If pSprite is NULL, an internal sprite object will be used.
//
// OnLostDevice, OnResetDevice -
// Call OnLostDevice() on this object before calling Reset() on the
// device, so that this object can release any stateblocks and video
// memory resources. After Reset(), the call OnResetDevice().
//////////////////////////////////////////////////////////////////////////////
typedef struct _D3DXFONT_DESCA
{
INT Height;
UINT Width;
UINT Weight;
UINT MipLevels;
BOOL Italic;
BYTE CharSet;
BYTE OutputPrecision;
BYTE Quality;
BYTE PitchAndFamily;
CHAR FaceName[LF_FACESIZE];
} D3DXFONT_DESCA, *LPD3DXFONT_DESCA;
typedef struct _D3DXFONT_DESCW
{
INT Height;
UINT Width;
UINT Weight;
UINT MipLevels;
BOOL Italic;
BYTE CharSet;
BYTE OutputPrecision;
BYTE Quality;
BYTE PitchAndFamily;
WCHAR FaceName[LF_FACESIZE];
} D3DXFONT_DESCW, *LPD3DXFONT_DESCW;
#ifdef UNICODE
typedef D3DXFONT_DESCW D3DXFONT_DESC;
typedef LPD3DXFONT_DESCW LPD3DXFONT_DESC;
#else
typedef D3DXFONT_DESCA D3DXFONT_DESC;
typedef LPD3DXFONT_DESCA LPD3DXFONT_DESC;
#endif
typedef interface ID3DXFont ID3DXFont;
typedef interface ID3DXFont *LPD3DXFONT;
// {D79DBB70-5F21-4d36-BBC2-FF525C213CDC}
DEFINE_GUID(IID_ID3DXFont,
0xd79dbb70, 0x5f21, 0x4d36, 0xbb, 0xc2, 0xff, 0x52, 0x5c, 0x21, 0x3c, 0xdc);
#undef INTERFACE
#define INTERFACE ID3DXFont
DECLARE_INTERFACE_(ID3DXFont, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXFont
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *ppDevice) PURE;
STDMETHOD(GetDescA)(THIS_ D3DXFONT_DESCA *pDesc) PURE;
STDMETHOD(GetDescW)(THIS_ D3DXFONT_DESCW *pDesc) PURE;
STDMETHOD_(BOOL, GetTextMetricsA)(THIS_ TEXTMETRICA *pTextMetrics) PURE;
STDMETHOD_(BOOL, GetTextMetricsW)(THIS_ TEXTMETRICW *pTextMetrics) PURE;
STDMETHOD_(HDC, GetDC)(THIS) PURE;
STDMETHOD(GetGlyphData)(THIS_ UINT Glyph, LPDIRECT3DTEXTURE9 *ppTexture, RECT *pBlackBox, POINT *pCellInc) PURE;
STDMETHOD(PreloadCharacters)(THIS_ UINT First, UINT Last) PURE;
STDMETHOD(PreloadGlyphs)(THIS_ UINT First, UINT Last) PURE;
STDMETHOD(PreloadTextA)(THIS_ LPCSTR pString, INT Count) PURE;
STDMETHOD(PreloadTextW)(THIS_ LPCWSTR pString, INT Count) PURE;
STDMETHOD_(INT, DrawTextA)(THIS_ LPD3DXSPRITE pSprite, LPCSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) PURE;
STDMETHOD_(INT, DrawTextW)(THIS_ LPD3DXSPRITE pSprite, LPCWSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
#ifdef __cplusplus
#ifdef UNICODE
HRESULT GetDesc(D3DXFONT_DESCW *pDesc) { return GetDescW(pDesc); }
HRESULT PreloadText(LPCWSTR pString, INT Count) { return PreloadTextW(pString, Count); }
#else
HRESULT GetDesc(D3DXFONT_DESCA *pDesc) { return GetDescA(pDesc); }
HRESULT PreloadText(LPCSTR pString, INT Count) { return PreloadTextA(pString, Count); }
#endif
#endif //__cplusplus
};
#ifndef GetTextMetrics
#ifdef UNICODE
#define GetTextMetrics GetTextMetricsW
#else
#define GetTextMetrics GetTextMetricsA
#endif
#endif
#ifndef DrawText
#ifdef UNICODE
#define DrawText DrawTextW
#else
#define DrawText DrawTextA
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateFontA(
LPDIRECT3DDEVICE9 pDevice,
INT Height,
UINT Width,
UINT Weight,
UINT MipLevels,
BOOL Italic,
DWORD CharSet,
DWORD OutputPrecision,
DWORD Quality,
DWORD PitchAndFamily,
LPCSTR pFaceName,
LPD3DXFONT* ppFont);
HRESULT WINAPI
D3DXCreateFontW(
LPDIRECT3DDEVICE9 pDevice,
INT Height,
UINT Width,
UINT Weight,
UINT MipLevels,
BOOL Italic,
DWORD CharSet,
DWORD OutputPrecision,
DWORD Quality,
DWORD PitchAndFamily,
LPCWSTR pFaceName,
LPD3DXFONT* ppFont);
#ifdef UNICODE
#define D3DXCreateFont D3DXCreateFontW
#else
#define D3DXCreateFont D3DXCreateFontA
#endif
HRESULT WINAPI
D3DXCreateFontIndirectA(
LPDIRECT3DDEVICE9 pDevice,
CONST D3DXFONT_DESCA* pDesc,
LPD3DXFONT* ppFont);
HRESULT WINAPI
D3DXCreateFontIndirectW(
LPDIRECT3DDEVICE9 pDevice,
CONST D3DXFONT_DESCW* pDesc,
LPD3DXFONT* ppFont);
#ifdef UNICODE
#define D3DXCreateFontIndirect D3DXCreateFontIndirectW
#else
#define D3DXCreateFontIndirect D3DXCreateFontIndirectA
#endif
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// ID3DXRenderToSurface:
// ---------------------
// This object abstracts rendering to surfaces. These surfaces do not
// necessarily need to be render targets. If they are not, a compatible
// render target is used, and the result copied into surface at end scene.
//
// BeginScene, EndScene -
// Call BeginScene() and EndScene() at the beginning and ending of your
// scene. These calls will setup and restore render targets, viewports,
// etc..
//
// OnLostDevice, OnResetDevice -
// Call OnLostDevice() on this object before calling Reset() on the
// device, so that this object can release any stateblocks and video
// memory resources. After Reset(), the call OnResetDevice().
///////////////////////////////////////////////////////////////////////////
typedef struct _D3DXRTS_DESC
{
UINT Width;
UINT Height;
D3DFORMAT Format;
BOOL DepthStencil;
D3DFORMAT DepthStencilFormat;
} D3DXRTS_DESC, *LPD3DXRTS_DESC;
typedef interface ID3DXRenderToSurface ID3DXRenderToSurface;
typedef interface ID3DXRenderToSurface *LPD3DXRENDERTOSURFACE;
// {6985F346-2C3D-43b3-BE8B-DAAE8A03D894}
DEFINE_GUID(IID_ID3DXRenderToSurface,
0x6985f346, 0x2c3d, 0x43b3, 0xbe, 0x8b, 0xda, 0xae, 0x8a, 0x3, 0xd8, 0x94);
#undef INTERFACE
#define INTERFACE ID3DXRenderToSurface
DECLARE_INTERFACE_(ID3DXRenderToSurface, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXRenderToSurface
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
STDMETHOD(GetDesc)(THIS_ D3DXRTS_DESC* pDesc) PURE;
STDMETHOD(BeginScene)(THIS_ LPDIRECT3DSURFACE9 pSurface, CONST D3DVIEWPORT9* pViewport) PURE;
STDMETHOD(EndScene)(THIS_ DWORD MipFilter) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateRenderToSurface(
LPDIRECT3DDEVICE9 pDevice,
UINT Width,
UINT Height,
D3DFORMAT Format,
BOOL DepthStencil,
D3DFORMAT DepthStencilFormat,
LPD3DXRENDERTOSURFACE* ppRenderToSurface);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// ID3DXRenderToEnvMap:
// --------------------
// This object abstracts rendering to environment maps. These surfaces
// do not necessarily need to be render targets. If they are not, a
// compatible render target is used, and the result copied into the
// environment map at end scene.
//
// BeginCube, BeginSphere, BeginHemisphere, BeginParabolic -
// This function initiates the rendering of the environment map. As
// parameters, you pass the textures in which will get filled in with
// the resulting environment map.
//
// Face -
// Call this function to initiate the drawing of each face. For each
// environment map, you will call this six times.. once for each face
// in D3DCUBEMAP_FACES.
//
// End -
// This will restore all render targets, and if needed compose all the
// rendered faces into the environment map surfaces.
//
// OnLostDevice, OnResetDevice -
// Call OnLostDevice() on this object before calling Reset() on the
// device, so that this object can release any stateblocks and video
// memory resources. After Reset(), the call OnResetDevice().
///////////////////////////////////////////////////////////////////////////
typedef struct _D3DXRTE_DESC
{
UINT Size;
UINT MipLevels;
D3DFORMAT Format;
BOOL DepthStencil;
D3DFORMAT DepthStencilFormat;
} D3DXRTE_DESC, *LPD3DXRTE_DESC;
typedef interface ID3DXRenderToEnvMap ID3DXRenderToEnvMap;
typedef interface ID3DXRenderToEnvMap *LPD3DXRenderToEnvMap;
// {313F1B4B-C7B0-4fa2-9D9D-8D380B64385E}
DEFINE_GUID(IID_ID3DXRenderToEnvMap,
0x313f1b4b, 0xc7b0, 0x4fa2, 0x9d, 0x9d, 0x8d, 0x38, 0xb, 0x64, 0x38, 0x5e);
#undef INTERFACE
#define INTERFACE ID3DXRenderToEnvMap
DECLARE_INTERFACE_(ID3DXRenderToEnvMap, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXRenderToEnvMap
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
STDMETHOD(GetDesc)(THIS_ D3DXRTE_DESC* pDesc) PURE;
STDMETHOD(BeginCube)(THIS_
LPDIRECT3DCUBETEXTURE9 pCubeTex) PURE;
STDMETHOD(BeginSphere)(THIS_
LPDIRECT3DTEXTURE9 pTex) PURE;
STDMETHOD(BeginHemisphere)(THIS_
LPDIRECT3DTEXTURE9 pTexZPos,
LPDIRECT3DTEXTURE9 pTexZNeg) PURE;
STDMETHOD(BeginParabolic)(THIS_
LPDIRECT3DTEXTURE9 pTexZPos,
LPDIRECT3DTEXTURE9 pTexZNeg) PURE;
STDMETHOD(Face)(THIS_ D3DCUBEMAP_FACES Face, DWORD MipFilter) PURE;
STDMETHOD(End)(THIS_ DWORD MipFilter) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateRenderToEnvMap(
LPDIRECT3DDEVICE9 pDevice,
UINT Size,
UINT MipLevels,
D3DFORMAT Format,
BOOL DepthStencil,
D3DFORMAT DepthStencilFormat,
LPD3DXRenderToEnvMap* ppRenderToEnvMap);
#ifdef __cplusplus
}
#endif //__cplusplus
///////////////////////////////////////////////////////////////////////////
// ID3DXLine:
// ------------
// This object intends to provide an easy way to draw lines using D3D.
//
// Begin -
// Prepares device for drawing lines
//
// Draw -
// Draws a line strip in screen-space.
// Input is in the form of a array defining points on the line strip. of D3DXVECTOR2
//
// DrawTransform -
// Draws a line in screen-space with a specified input transformation matrix.
//
// End -
// Restores device state to how it was when Begin was called.
//
// SetPattern -
// Applies a stipple pattern to the line. Input is one 32-bit
// DWORD which describes the stipple pattern. 1 is opaque, 0 is
// transparent.
//
// SetPatternScale -
// Stretches the stipple pattern in the u direction. Input is one
// floating-point value. 0.0f is no scaling, whereas 1.0f doubles
// the length of the stipple pattern.
//
// SetWidth -
// Specifies the thickness of the line in the v direction. Input is
// one floating-point value.
//
// SetAntialias -
// Toggles line antialiasing. Input is a BOOL.
// TRUE = Antialiasing on.
// FALSE = Antialiasing off.
//
// SetGLLines -
// Toggles non-antialiased OpenGL line emulation. Input is a BOOL.
// TRUE = OpenGL line emulation on.
// FALSE = OpenGL line emulation off.
//
// OpenGL line: Regular line:
// *\ *\
// | \ / \
// | \ *\ \
// *\ \ \ \
// \ \ \ \
// \ * \ *
// \ | \ /
// \| *
// *
//
// OnLostDevice, OnResetDevice -
// Call OnLostDevice() on this object before calling Reset() on the
// device, so that this object can release any stateblocks and video
// memory resources. After Reset(), the call OnResetDevice().
///////////////////////////////////////////////////////////////////////////
typedef interface ID3DXLine ID3DXLine;
typedef interface ID3DXLine *LPD3DXLINE;
// {D379BA7F-9042-4ac4-9F5E-58192A4C6BD8}
DEFINE_GUID(IID_ID3DXLine,
0xd379ba7f, 0x9042, 0x4ac4, 0x9f, 0x5e, 0x58, 0x19, 0x2a, 0x4c, 0x6b, 0xd8);
#undef INTERFACE
#define INTERFACE ID3DXLine
DECLARE_INTERFACE_(ID3DXLine, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// ID3DXLine
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
STDMETHOD(Begin)(THIS) PURE;
STDMETHOD(Draw)(THIS_ CONST D3DXVECTOR2 *pVertexList,
DWORD dwVertexListCount, D3DCOLOR Color) PURE;
STDMETHOD(DrawTransform)(THIS_ CONST D3DXVECTOR3 *pVertexList,
DWORD dwVertexListCount, CONST D3DXMATRIX* pTransform,
D3DCOLOR Color) PURE;
STDMETHOD(SetPattern)(THIS_ DWORD dwPattern) PURE;
STDMETHOD_(DWORD, GetPattern)(THIS) PURE;
STDMETHOD(SetPatternScale)(THIS_ FLOAT fPatternScale) PURE;
STDMETHOD_(FLOAT, GetPatternScale)(THIS) PURE;
STDMETHOD(SetWidth)(THIS_ FLOAT fWidth) PURE;
STDMETHOD_(FLOAT, GetWidth)(THIS) PURE;
STDMETHOD(SetAntialias)(THIS_ BOOL bAntialias) PURE;
STDMETHOD_(BOOL, GetAntialias)(THIS) PURE;
STDMETHOD(SetGLLines)(THIS_ BOOL bGLLines) PURE;
STDMETHOD_(BOOL, GetGLLines)(THIS) PURE;
STDMETHOD(End)(THIS) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
HRESULT WINAPI
D3DXCreateLine(
LPDIRECT3DDEVICE9 pDevice,
LPD3DXLINE* ppLine);
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__D3DX9CORE_H__

View File

@@ -0,0 +1,873 @@
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: d3dx9effect.h
// Content: D3DX effect types and Shaders
//
//////////////////////////////////////////////////////////////////////////////
#include "d3dx9.h"
#ifndef __D3DX9EFFECT_H__
#define __D3DX9EFFECT_H__
//----------------------------------------------------------------------------
// D3DXFX_DONOTSAVESTATE
// This flag is used as a parameter to ID3DXEffect::Begin(). When this flag
// is specified, device state is not saved or restored in Begin/End.
// D3DXFX_DONOTSAVESHADERSTATE
// This flag is used as a parameter to ID3DXEffect::Begin(). When this flag
// is specified, shader device state is not saved or restored in Begin/End.
// This includes pixel/vertex shaders and shader constants
// D3DXFX_DONOTSAVESAMPLERSTATE
// This flag is used as a parameter to ID3DXEffect::Begin(). When this flag
// is specified, sampler device state is not saved or restored in Begin/End.
// D3DXFX_NOT_CLONEABLE
// This flag is used as a parameter to the D3DXCreateEffect family of APIs.
// When this flag is specified, the effect will be non-cloneable and will not
// contain any shader binary data.
// Furthermore, GetPassDesc will not return shader function pointers.
// Setting this flag reduces effect memory usage by about 50%.
//----------------------------------------------------------------------------
#define D3DXFX_DONOTSAVESTATE (1 << 0)
#define D3DXFX_DONOTSAVESHADERSTATE (1 << 1)
#define D3DXFX_DONOTSAVESAMPLERSTATE (1 << 2)
#define D3DXFX_NOT_CLONEABLE (1 << 11)
#define D3DXFX_LARGEADDRESSAWARE (1 << 17)
//----------------------------------------------------------------------------
// D3DX_PARAMETER_SHARED
// Indicates that the value of a parameter will be shared with all effects
// which share the same namespace. Changing the value in one effect will
// change it in all.
//
// D3DX_PARAMETER_LITERAL
// Indicates that the value of this parameter can be treated as literal.
// Literal parameters can be marked when the effect is compiled, and their
// cannot be changed after the effect is compiled. Shared parameters cannot
// be literal.
//----------------------------------------------------------------------------
#define D3DX_PARAMETER_SHARED (1 << 0)
#define D3DX_PARAMETER_LITERAL (1 << 1)
#define D3DX_PARAMETER_ANNOTATION (1 << 2)
//----------------------------------------------------------------------------
// D3DXEFFECT_DESC:
//----------------------------------------------------------------------------
typedef struct _D3DXEFFECT_DESC
{
LPCSTR Creator; // Creator string
UINT Parameters; // Number of parameters
UINT Techniques; // Number of techniques
UINT Functions; // Number of function entrypoints
} D3DXEFFECT_DESC;
//----------------------------------------------------------------------------
// D3DXPARAMETER_DESC:
//----------------------------------------------------------------------------
typedef struct _D3DXPARAMETER_DESC
{
LPCSTR Name; // Parameter name
LPCSTR Semantic; // Parameter semantic
D3DXPARAMETER_CLASS Class; // Class
D3DXPARAMETER_TYPE Type; // Component type
UINT Rows; // Number of rows
UINT Columns; // Number of columns
UINT Elements; // Number of array elements
UINT Annotations; // Number of annotations
UINT StructMembers; // Number of structure member sub-parameters
DWORD Flags; // D3DX_PARAMETER_* flags
UINT Bytes; // Parameter size, in bytes
} D3DXPARAMETER_DESC;
//----------------------------------------------------------------------------
// D3DXTECHNIQUE_DESC:
//----------------------------------------------------------------------------
typedef struct _D3DXTECHNIQUE_DESC
{
LPCSTR Name; // Technique name
UINT Passes; // Number of passes
UINT Annotations; // Number of annotations
} D3DXTECHNIQUE_DESC;
//----------------------------------------------------------------------------
// D3DXPASS_DESC:
//----------------------------------------------------------------------------
typedef struct _D3DXPASS_DESC
{
LPCSTR Name; // Pass name
UINT Annotations; // Number of annotations
CONST DWORD *pVertexShaderFunction; // Vertex shader function
CONST DWORD *pPixelShaderFunction; // Pixel shader function
} D3DXPASS_DESC;
//----------------------------------------------------------------------------
// D3DXFUNCTION_DESC:
//----------------------------------------------------------------------------
typedef struct _D3DXFUNCTION_DESC
{
LPCSTR Name; // Function name
UINT Annotations; // Number of annotations
} D3DXFUNCTION_DESC;
//////////////////////////////////////////////////////////////////////////////
// ID3DXEffectPool ///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
typedef interface ID3DXEffectPool ID3DXEffectPool;
typedef interface ID3DXEffectPool *LPD3DXEFFECTPOOL;
// {9537AB04-3250-412e-8213-FCD2F8677933}
DEFINE_GUID(IID_ID3DXEffectPool,
0x9537ab04, 0x3250, 0x412e, 0x82, 0x13, 0xfc, 0xd2, 0xf8, 0x67, 0x79, 0x33);
#undef INTERFACE
#define INTERFACE ID3DXEffectPool
DECLARE_INTERFACE_(ID3DXEffectPool, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// No public methods
};
//////////////////////////////////////////////////////////////////////////////
// ID3DXBaseEffect ///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
typedef interface ID3DXBaseEffect ID3DXBaseEffect;
typedef interface ID3DXBaseEffect *LPD3DXBASEEFFECT;
// {017C18AC-103F-4417-8C51-6BF6EF1E56BE}
DEFINE_GUID(IID_ID3DXBaseEffect,
0x17c18ac, 0x103f, 0x4417, 0x8c, 0x51, 0x6b, 0xf6, 0xef, 0x1e, 0x56, 0xbe);
#undef INTERFACE
#define INTERFACE ID3DXBaseEffect
DECLARE_INTERFACE_(ID3DXBaseEffect, IUnknown)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// Descs
STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* pDesc) PURE;
STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE hParameter, D3DXPARAMETER_DESC* pDesc) PURE;
STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE hTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE hPass, D3DXPASS_DESC* pDesc) PURE;
STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE hShader, D3DXFUNCTION_DESC* pDesc) PURE;
// Handle operations
STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE hParameter, LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE hParameter, LPCSTR pSemantic) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE hTechnique, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE hTechnique, LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE hObject, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE hObject, LPCSTR pName) PURE;
// Get/Set Parameters
STDMETHOD(SetValue)(THIS_ D3DXHANDLE hParameter, LPCVOID pData, UINT Bytes) PURE;
STDMETHOD(GetValue)(THIS_ D3DXHANDLE hParameter, LPVOID pData, UINT Bytes) PURE;
STDMETHOD(SetBool)(THIS_ D3DXHANDLE hParameter, BOOL b) PURE;
STDMETHOD(GetBool)(THIS_ D3DXHANDLE hParameter, BOOL* pb) PURE;
STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE hParameter, CONST BOOL* pb, UINT Count) PURE;
STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE hParameter, BOOL* pb, UINT Count) PURE;
STDMETHOD(SetInt)(THIS_ D3DXHANDLE hParameter, INT n) PURE;
STDMETHOD(GetInt)(THIS_ D3DXHANDLE hParameter, INT* pn) PURE;
STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE hParameter, CONST INT* pn, UINT Count) PURE;
STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE hParameter, INT* pn, UINT Count) PURE;
STDMETHOD(SetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT f) PURE;
STDMETHOD(GetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT* pf) PURE;
STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE hParameter, CONST FLOAT* pf, UINT Count) PURE;
STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE hParameter, FLOAT* pf, UINT Count) PURE;
STDMETHOD(SetVector)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector) PURE;
STDMETHOD(GetVector)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector) PURE;
STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) PURE;
STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(SetString)(THIS_ D3DXHANDLE hParameter, LPCSTR pString) PURE;
STDMETHOD(GetString)(THIS_ D3DXHANDLE hParameter, LPCSTR* ppString) PURE;
STDMETHOD(SetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
STDMETHOD(GetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 *ppTexture) PURE;
STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 *ppPShader) PURE;
STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 *ppVShader) PURE;
//Set Range of an Array to pass to device
//Useful for sending only a subrange of an array down to the device
STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE hParameter, UINT uStart, UINT uEnd) PURE;
};
//----------------------------------------------------------------------------
// ID3DXEffectStateManager:
// ------------------------
// This is a user implemented interface that can be used to manage device
// state changes made by an Effect.
//----------------------------------------------------------------------------
typedef interface ID3DXEffectStateManager ID3DXEffectStateManager;
typedef interface ID3DXEffectStateManager *LPD3DXEFFECTSTATEMANAGER;
// {79AAB587-6DBC-4fa7-82DE-37FA1781C5CE}
DEFINE_GUID(IID_ID3DXEffectStateManager,
0x79aab587, 0x6dbc, 0x4fa7, 0x82, 0xde, 0x37, 0xfa, 0x17, 0x81, 0xc5, 0xce);
#undef INTERFACE
#define INTERFACE ID3DXEffectStateManager
DECLARE_INTERFACE_(ID3DXEffectStateManager, IUnknown)
{
// The user must correctly implement QueryInterface, AddRef, and Release.
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// The following methods are called by the Effect when it wants to make
// the corresponding device call. Note that:
// 1. Users manage the state and are therefore responsible for making the
// the corresponding device calls themselves inside their callbacks.
// 2. Effects pay attention to the return values of the callbacks, and so
// users must pay attention to what they return in their callbacks.
STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX *pMatrix) PURE;
STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9 *pMaterial) PURE;
STDMETHOD(SetLight)(THIS_ DWORD Index, CONST D3DLIGHT9 *pLight) PURE;
STDMETHOD(LightEnable)(THIS_ DWORD Index, BOOL Enable) PURE;
STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD Value) PURE;
STDMETHOD(SetTexture)(THIS_ DWORD Stage, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) PURE;
STDMETHOD(SetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) PURE;
STDMETHOD(SetNPatchMode)(THIS_ FLOAT NumSegments) PURE;
STDMETHOD(SetFVF)(THIS_ DWORD FVF) PURE;
STDMETHOD(SetVertexShader)(THIS_ LPDIRECT3DVERTEXSHADER9 pShader) PURE;
STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT RegisterIndex, CONST FLOAT *pConstantData, UINT RegisterCount) PURE;
STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT RegisterIndex, CONST INT *pConstantData, UINT RegisterCount) PURE;
STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT RegisterIndex, CONST BOOL *pConstantData, UINT RegisterCount) PURE;
STDMETHOD(SetPixelShader)(THIS_ LPDIRECT3DPIXELSHADER9 pShader) PURE;
STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT RegisterIndex, CONST FLOAT *pConstantData, UINT RegisterCount) PURE;
STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT RegisterIndex, CONST INT *pConstantData, UINT RegisterCount) PURE;
STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT RegisterIndex, CONST BOOL *pConstantData, UINT RegisterCount) PURE;
};
//////////////////////////////////////////////////////////////////////////////
// ID3DXEffect ///////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
typedef interface ID3DXEffect ID3DXEffect;
typedef interface ID3DXEffect *LPD3DXEFFECT;
// {F6CEB4B3-4E4C-40dd-B883-8D8DE5EA0CD5}
DEFINE_GUID(IID_ID3DXEffect,
0xf6ceb4b3, 0x4e4c, 0x40dd, 0xb8, 0x83, 0x8d, 0x8d, 0xe5, 0xea, 0xc, 0xd5);
#undef INTERFACE
#define INTERFACE ID3DXEffect
DECLARE_INTERFACE_(ID3DXEffect, ID3DXBaseEffect)
{
// ID3DXBaseEffect
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// Descs
STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* pDesc) PURE;
STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE hParameter, D3DXPARAMETER_DESC* pDesc) PURE;
STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE hTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE hPass, D3DXPASS_DESC* pDesc) PURE;
STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE hShader, D3DXFUNCTION_DESC* pDesc) PURE;
// Handle operations
STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE hParameter, LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE hParameter, LPCSTR pSemantic) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE hTechnique, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE hTechnique, LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE hObject, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE hObject, LPCSTR pName) PURE;
// Get/Set Parameters
STDMETHOD(SetValue)(THIS_ D3DXHANDLE hParameter, LPCVOID pData, UINT Bytes) PURE;
STDMETHOD(GetValue)(THIS_ D3DXHANDLE hParameter, LPVOID pData, UINT Bytes) PURE;
STDMETHOD(SetBool)(THIS_ D3DXHANDLE hParameter, BOOL b) PURE;
STDMETHOD(GetBool)(THIS_ D3DXHANDLE hParameter, BOOL* pb) PURE;
STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE hParameter, CONST BOOL* pb, UINT Count) PURE;
STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE hParameter, BOOL* pb, UINT Count) PURE;
STDMETHOD(SetInt)(THIS_ D3DXHANDLE hParameter, INT n) PURE;
STDMETHOD(GetInt)(THIS_ D3DXHANDLE hParameter, INT* pn) PURE;
STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE hParameter, CONST INT* pn, UINT Count) PURE;
STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE hParameter, INT* pn, UINT Count) PURE;
STDMETHOD(SetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT f) PURE;
STDMETHOD(GetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT* pf) PURE;
STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE hParameter, CONST FLOAT* pf, UINT Count) PURE;
STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE hParameter, FLOAT* pf, UINT Count) PURE;
STDMETHOD(SetVector)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector) PURE;
STDMETHOD(GetVector)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector) PURE;
STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) PURE;
STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(SetString)(THIS_ D3DXHANDLE hParameter, LPCSTR pString) PURE;
STDMETHOD(GetString)(THIS_ D3DXHANDLE hParameter, LPCSTR* ppString) PURE;
STDMETHOD(SetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
STDMETHOD(GetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 *ppTexture) PURE;
STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 *ppPShader) PURE;
STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 *ppVShader) PURE;
//Set Range of an Array to pass to device
//Usefull for sending only a subrange of an array down to the device
STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE hParameter, UINT uStart, UINT uEnd) PURE;
// ID3DXBaseEffect
// Pool
STDMETHOD(GetPool)(THIS_ LPD3DXEFFECTPOOL* ppPool) PURE;
// Selecting and setting a technique
STDMETHOD(SetTechnique)(THIS_ D3DXHANDLE hTechnique) PURE;
STDMETHOD_(D3DXHANDLE, GetCurrentTechnique)(THIS) PURE;
STDMETHOD(ValidateTechnique)(THIS_ D3DXHANDLE hTechnique) PURE;
STDMETHOD(FindNextValidTechnique)(THIS_ D3DXHANDLE hTechnique, D3DXHANDLE *pTechnique) PURE;
STDMETHOD_(BOOL, IsParameterUsed)(THIS_ D3DXHANDLE hParameter, D3DXHANDLE hTechnique) PURE;
// Using current technique
// Begin starts active technique
// BeginPass begins a pass
// CommitChanges updates changes to any set calls in the pass. This should be called before
// any DrawPrimitive call to d3d
// EndPass ends a pass
// End ends active technique
STDMETHOD(Begin)(THIS_ UINT *pPasses, DWORD Flags) PURE;
STDMETHOD(BeginPass)(THIS_ UINT Pass) PURE;
STDMETHOD(CommitChanges)(THIS) PURE;
STDMETHOD(EndPass)(THIS) PURE;
STDMETHOD(End)(THIS) PURE;
// Managing D3D Device
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
STDMETHOD(OnLostDevice)(THIS) PURE;
STDMETHOD(OnResetDevice)(THIS) PURE;
// Logging device calls
STDMETHOD(SetStateManager)(THIS_ LPD3DXEFFECTSTATEMANAGER pManager) PURE;
STDMETHOD(GetStateManager)(THIS_ LPD3DXEFFECTSTATEMANAGER *ppManager) PURE;
// Parameter blocks
STDMETHOD(BeginParameterBlock)(THIS) PURE;
STDMETHOD_(D3DXHANDLE, EndParameterBlock)(THIS) PURE;
STDMETHOD(ApplyParameterBlock)(THIS_ D3DXHANDLE hParameterBlock) PURE;
STDMETHOD(DeleteParameterBlock)(THIS_ D3DXHANDLE hParameterBlock) PURE;
// Cloning
STDMETHOD(CloneEffect)(THIS_ LPDIRECT3DDEVICE9 pDevice, LPD3DXEFFECT* ppEffect) PURE;
// Fast path for setting variables directly in ID3DXEffect
STDMETHOD(SetRawValue)(THIS_ D3DXHANDLE hParameter, LPCVOID pData, UINT ByteOffset, UINT Bytes) PURE;
};
//////////////////////////////////////////////////////////////////////////////
// ID3DXEffectCompiler ///////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
typedef interface ID3DXEffectCompiler ID3DXEffectCompiler;
typedef interface ID3DXEffectCompiler *LPD3DXEFFECTCOMPILER;
// {51B8A949-1A31-47e6-BEA0-4B30DB53F1E0}
DEFINE_GUID(IID_ID3DXEffectCompiler,
0x51b8a949, 0x1a31, 0x47e6, 0xbe, 0xa0, 0x4b, 0x30, 0xdb, 0x53, 0xf1, 0xe0);
#undef INTERFACE
#define INTERFACE ID3DXEffectCompiler
DECLARE_INTERFACE_(ID3DXEffectCompiler, ID3DXBaseEffect)
{
// ID3DXBaseEffect
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// Descs
STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* pDesc) PURE;
STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE hParameter, D3DXPARAMETER_DESC* pDesc) PURE;
STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE hTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE hPass, D3DXPASS_DESC* pDesc) PURE;
STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE hShader, D3DXFUNCTION_DESC* pDesc) PURE;
// Handle operations
STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE hParameter, LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE hParameter, LPCSTR pSemantic) PURE;
STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE hTechnique, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE hTechnique, LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR pName) PURE;
STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE hObject, UINT Index) PURE;
STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE hObject, LPCSTR pName) PURE;
// Get/Set Parameters
STDMETHOD(SetValue)(THIS_ D3DXHANDLE hParameter, LPCVOID pData, UINT Bytes) PURE;
STDMETHOD(GetValue)(THIS_ D3DXHANDLE hParameter, LPVOID pData, UINT Bytes) PURE;
STDMETHOD(SetBool)(THIS_ D3DXHANDLE hParameter, BOOL b) PURE;
STDMETHOD(GetBool)(THIS_ D3DXHANDLE hParameter, BOOL* pb) PURE;
STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE hParameter, CONST BOOL* pb, UINT Count) PURE;
STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE hParameter, BOOL* pb, UINT Count) PURE;
STDMETHOD(SetInt)(THIS_ D3DXHANDLE hParameter, INT n) PURE;
STDMETHOD(GetInt)(THIS_ D3DXHANDLE hParameter, INT* pn) PURE;
STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE hParameter, CONST INT* pn, UINT Count) PURE;
STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE hParameter, INT* pn, UINT Count) PURE;
STDMETHOD(SetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT f) PURE;
STDMETHOD(GetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT* pf) PURE;
STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE hParameter, CONST FLOAT* pf, UINT Count) PURE;
STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE hParameter, FLOAT* pf, UINT Count) PURE;
STDMETHOD(SetVector)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector) PURE;
STDMETHOD(GetVector)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector) PURE;
STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) PURE;
STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
STDMETHOD(SetString)(THIS_ D3DXHANDLE hParameter, LPCSTR pString) PURE;
STDMETHOD(GetString)(THIS_ D3DXHANDLE hParameter, LPCSTR* ppString) PURE;
STDMETHOD(SetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
STDMETHOD(GetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 *ppTexture) PURE;
STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 *ppPShader) PURE;
STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 *ppVShader) PURE;
//Set Range of an Array to pass to device
//Usefull for sending only a subrange of an array down to the device
STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE hParameter, UINT uStart, UINT uEnd) PURE;
// ID3DXBaseEffect
// Parameter sharing, specialization, and information
STDMETHOD(SetLiteral)(THIS_ D3DXHANDLE hParameter, BOOL Literal) PURE;
STDMETHOD(GetLiteral)(THIS_ D3DXHANDLE hParameter, BOOL *pLiteral) PURE;
// Compilation
STDMETHOD(CompileEffect)(THIS_ DWORD Flags,
LPD3DXBUFFER* ppEffect, LPD3DXBUFFER* ppErrorMsgs) PURE;
STDMETHOD(CompileShader)(THIS_ D3DXHANDLE hFunction, LPCSTR pTarget, DWORD Flags,
LPD3DXBUFFER* ppShader, LPD3DXBUFFER* ppErrorMsgs, LPD3DXCONSTANTTABLE* ppConstantTable) PURE;
};
//////////////////////////////////////////////////////////////////////////////
// APIs //////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//----------------------------------------------------------------------------
// D3DXCreateEffectPool:
// ---------------------
// Creates an effect pool. Pools are used for sharing parameters between
// multiple effects. For all effects within a pool, shared parameters of the
// same name all share the same value.
//
// Parameters:
// ppPool
// Returns the created pool.
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateEffectPool(
LPD3DXEFFECTPOOL* ppPool);
//----------------------------------------------------------------------------
// D3DXCreateEffect:
// -----------------
// Creates an effect from an ascii or binary effect description.
//
// Parameters:
// pDevice
// Pointer of the device on which to create the effect
// pSrcFile
// Name of the file containing the effect description
// hSrcModule
// Module handle. if NULL, current module will be used.
// pSrcResource
// Resource name in module
// pSrcData
// Pointer to effect description
// SrcDataSize
// Size of the effect description in bytes
// pDefines
// Optional NULL-terminated array of preprocessor macro definitions.
// Flags
// See D3DXSHADER_xxx flags.
// pSkipConstants
// A list of semi-colon delimited variable names. The effect will
// not set these variables to the device when they are referenced
// by a shader. NOTE: the variables specified here must be
// register bound in the file and must not be used in expressions
// in passes or samplers or the file will not load.
// pInclude
// Optional interface pointer to use for handling #include directives.
// If this parameter is NULL, #includes will be honored when compiling
// from file, and will error when compiling from resource or memory.
// pPool
// Pointer to ID3DXEffectPool object to use for shared parameters.
// If NULL, no parameters will be shared.
// ppEffect
// Returns a buffer containing created effect.
// ppCompilationErrors
// Returns a buffer containing any error messages which occurred during
// compile. Or NULL if you do not care about the error messages.
//
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateEffectFromFileA(
LPDIRECT3DDEVICE9 pDevice,
LPCSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
HRESULT WINAPI
D3DXCreateEffectFromFileW(
LPDIRECT3DDEVICE9 pDevice,
LPCWSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
#ifdef UNICODE
#define D3DXCreateEffectFromFile D3DXCreateEffectFromFileW
#else
#define D3DXCreateEffectFromFile D3DXCreateEffectFromFileA
#endif
HRESULT WINAPI
D3DXCreateEffectFromResourceA(
LPDIRECT3DDEVICE9 pDevice,
HMODULE hSrcModule,
LPCSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
HRESULT WINAPI
D3DXCreateEffectFromResourceW(
LPDIRECT3DDEVICE9 pDevice,
HMODULE hSrcModule,
LPCWSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
#ifdef UNICODE
#define D3DXCreateEffectFromResource D3DXCreateEffectFromResourceW
#else
#define D3DXCreateEffectFromResource D3DXCreateEffectFromResourceA
#endif
HRESULT WINAPI
D3DXCreateEffect(
LPDIRECT3DDEVICE9 pDevice,
LPCVOID pSrcData,
UINT SrcDataLen,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
//
// Ex functions that accept pSkipConstants in addition to other parameters
//
HRESULT WINAPI
D3DXCreateEffectFromFileExA(
LPDIRECT3DDEVICE9 pDevice,
LPCSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
LPCSTR pSkipConstants,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
HRESULT WINAPI
D3DXCreateEffectFromFileExW(
LPDIRECT3DDEVICE9 pDevice,
LPCWSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
LPCSTR pSkipConstants,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
#ifdef UNICODE
#define D3DXCreateEffectFromFileEx D3DXCreateEffectFromFileExW
#else
#define D3DXCreateEffectFromFileEx D3DXCreateEffectFromFileExA
#endif
HRESULT WINAPI
D3DXCreateEffectFromResourceExA(
LPDIRECT3DDEVICE9 pDevice,
HMODULE hSrcModule,
LPCSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
LPCSTR pSkipConstants,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
HRESULT WINAPI
D3DXCreateEffectFromResourceExW(
LPDIRECT3DDEVICE9 pDevice,
HMODULE hSrcModule,
LPCWSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
LPCSTR pSkipConstants,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
#ifdef UNICODE
#define D3DXCreateEffectFromResourceEx D3DXCreateEffectFromResourceExW
#else
#define D3DXCreateEffectFromResourceEx D3DXCreateEffectFromResourceExA
#endif
HRESULT WINAPI
D3DXCreateEffectEx(
LPDIRECT3DDEVICE9 pDevice,
LPCVOID pSrcData,
UINT SrcDataLen,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
LPCSTR pSkipConstants,
DWORD Flags,
LPD3DXEFFECTPOOL pPool,
LPD3DXEFFECT* ppEffect,
LPD3DXBUFFER* ppCompilationErrors);
//----------------------------------------------------------------------------
// D3DXCreateEffectCompiler:
// -------------------------
// Creates an effect from an ascii or binary effect description.
//
// Parameters:
// pSrcFile
// Name of the file containing the effect description
// hSrcModule
// Module handle. if NULL, current module will be used.
// pSrcResource
// Resource name in module
// pSrcData
// Pointer to effect description
// SrcDataSize
// Size of the effect description in bytes
// pDefines
// Optional NULL-terminated array of preprocessor macro definitions.
// pInclude
// Optional interface pointer to use for handling #include directives.
// If this parameter is NULL, #includes will be honored when compiling
// from file, and will error when compiling from resource or memory.
// pPool
// Pointer to ID3DXEffectPool object to use for shared parameters.
// If NULL, no parameters will be shared.
// ppCompiler
// Returns a buffer containing created effect compiler.
// ppParseErrors
// Returns a buffer containing any error messages which occurred during
// parse. Or NULL if you do not care about the error messages.
//
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateEffectCompilerFromFileA(
LPCSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTCOMPILER* ppCompiler,
LPD3DXBUFFER* ppParseErrors);
HRESULT WINAPI
D3DXCreateEffectCompilerFromFileW(
LPCWSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTCOMPILER* ppCompiler,
LPD3DXBUFFER* ppParseErrors);
#ifdef UNICODE
#define D3DXCreateEffectCompilerFromFile D3DXCreateEffectCompilerFromFileW
#else
#define D3DXCreateEffectCompilerFromFile D3DXCreateEffectCompilerFromFileA
#endif
HRESULT WINAPI
D3DXCreateEffectCompilerFromResourceA(
HMODULE hSrcModule,
LPCSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTCOMPILER* ppCompiler,
LPD3DXBUFFER* ppParseErrors);
HRESULT WINAPI
D3DXCreateEffectCompilerFromResourceW(
HMODULE hSrcModule,
LPCWSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTCOMPILER* ppCompiler,
LPD3DXBUFFER* ppParseErrors);
#ifdef UNICODE
#define D3DXCreateEffectCompilerFromResource D3DXCreateEffectCompilerFromResourceW
#else
#define D3DXCreateEffectCompilerFromResource D3DXCreateEffectCompilerFromResourceA
#endif
HRESULT WINAPI
D3DXCreateEffectCompiler(
LPCSTR pSrcData,
UINT SrcDataLen,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
DWORD Flags,
LPD3DXEFFECTCOMPILER* ppCompiler,
LPD3DXBUFFER* ppParseErrors);
//----------------------------------------------------------------------------
// D3DXDisassembleEffect:
// -----------------------
//
// Parameters:
//----------------------------------------------------------------------------
HRESULT WINAPI
D3DXDisassembleEffect(
LPD3DXEFFECT pEffect,
BOOL EnableColorCode,
LPD3DXBUFFER *ppDisassembly);
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__D3DX9EFFECT_H__

1796
subVersion/d3d9/d3dx9math.h Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

3007
subVersion/d3d9/d3dx9mesh.h Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,221 @@
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dx9shapes.h
// Content: D3DX simple shapes
//
///////////////////////////////////////////////////////////////////////////
#include "d3dx9.h"
#ifndef __D3DX9SHAPES_H__
#define __D3DX9SHAPES_H__
///////////////////////////////////////////////////////////////////////////
// Functions:
///////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//-------------------------------------------------------------------------
// D3DXCreatePolygon:
// ------------------
// Creates a mesh containing an n-sided polygon. The polygon is centered
// at the origin.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// Length Length of each side.
// Sides Number of sides the polygon has. (Must be >= 3)
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreatePolygon(
LPDIRECT3DDEVICE9 pDevice,
FLOAT Length,
UINT Sides,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateBox:
// --------------
// Creates a mesh containing an axis-aligned box. The box is centered at
// the origin.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// Width Width of box (along X-axis)
// Height Height of box (along Y-axis)
// Depth Depth of box (along Z-axis)
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateBox(
LPDIRECT3DDEVICE9 pDevice,
FLOAT Width,
FLOAT Height,
FLOAT Depth,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateCylinder:
// -------------------
// Creates a mesh containing a cylinder. The generated cylinder is
// centered at the origin, and its axis is aligned with the Z-axis.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// Radius1 Radius at -Z end (should be >= 0.0f)
// Radius2 Radius at +Z end (should be >= 0.0f)
// Length Length of cylinder (along Z-axis)
// Slices Number of slices about the main axis
// Stacks Number of stacks along the main axis
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateCylinder(
LPDIRECT3DDEVICE9 pDevice,
FLOAT Radius1,
FLOAT Radius2,
FLOAT Length,
UINT Slices,
UINT Stacks,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateSphere:
// -----------------
// Creates a mesh containing a sphere. The sphere is centered at the
// origin.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// Radius Radius of the sphere (should be >= 0.0f)
// Slices Number of slices about the main axis
// Stacks Number of stacks along the main axis
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateSphere(
LPDIRECT3DDEVICE9 pDevice,
FLOAT Radius,
UINT Slices,
UINT Stacks,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateTorus:
// ----------------
// Creates a mesh containing a torus. The generated torus is centered at
// the origin, and its axis is aligned with the Z-axis.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// InnerRadius Inner radius of the torus (should be >= 0.0f)
// OuterRadius Outer radius of the torue (should be >= 0.0f)
// Sides Number of sides in a cross-section (must be >= 3)
// Rings Number of rings making up the torus (must be >= 3)
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateTorus(
LPDIRECT3DDEVICE9 pDevice,
FLOAT InnerRadius,
FLOAT OuterRadius,
UINT Sides,
UINT Rings,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateTeapot:
// -----------------
// Creates a mesh containing a teapot.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// ppMesh The mesh object which will be created
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateTeapot(
LPDIRECT3DDEVICE9 pDevice,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency);
//-------------------------------------------------------------------------
// D3DXCreateText:
// ---------------
// Creates a mesh containing the specified text using the font associated
// with the device context.
//
// Parameters:
//
// pDevice The D3D device with which the mesh is going to be used.
// hDC Device context, with desired font selected
// pText Text to generate
// Deviation Maximum chordal deviation from true font outlines
// Extrusion Amount to extrude text in -Z direction
// ppMesh The mesh object which will be created
// pGlyphMetrics Address of buffer to receive glyph metric data (or NULL)
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateTextA(
LPDIRECT3DDEVICE9 pDevice,
HDC hDC,
LPCSTR pText,
FLOAT Deviation,
FLOAT Extrusion,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency,
LPGLYPHMETRICSFLOAT pGlyphMetrics);
HRESULT WINAPI
D3DXCreateTextW(
LPDIRECT3DDEVICE9 pDevice,
HDC hDC,
LPCWSTR pText,
FLOAT Deviation,
FLOAT Extrusion,
LPD3DXMESH* ppMesh,
LPD3DXBUFFER* ppAdjacency,
LPGLYPHMETRICSFLOAT pGlyphMetrics);
#ifdef UNICODE
#define D3DXCreateText D3DXCreateTextW
#else
#define D3DXCreateText D3DXCreateTextA
#endif
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__D3DX9SHAPES_H__

1735
subVersion/d3d9/d3dx9tex.h Normal file

File diff suppressed because it is too large Load Diff

299
subVersion/d3d9/d3dx9xof.h Normal file
View File

@@ -0,0 +1,299 @@
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dx9xof.h
// Content: D3DX .X File types and functions
//
///////////////////////////////////////////////////////////////////////////
#include "d3dx9.h"
#if !defined( __D3DX9XOF_H__ )
#define __D3DX9XOF_H__
#if defined( __cplusplus )
extern "C" {
#endif // defined( __cplusplus )
//----------------------------------------------------------------------------
// D3DXF_FILEFORMAT
// This flag is used to specify what file type to use when saving to disk.
// _BINARY, and _TEXT are mutually exclusive, while
// _COMPRESSED is an optional setting that works with all file types.
//----------------------------------------------------------------------------
typedef DWORD D3DXF_FILEFORMAT;
#define D3DXF_FILEFORMAT_BINARY 0
#define D3DXF_FILEFORMAT_TEXT 1
#define D3DXF_FILEFORMAT_COMPRESSED 2
//----------------------------------------------------------------------------
// D3DXF_FILESAVEOPTIONS
// This flag is used to specify where to save the file to. Each flag is
// mutually exclusive, indicates the data location of the file, and also
// chooses which additional data will specify the location.
// _TOFILE is paired with a filename (LPCSTR)
// _TOWFILE is paired with a filename (LPWSTR)
//----------------------------------------------------------------------------
typedef DWORD D3DXF_FILESAVEOPTIONS;
#define D3DXF_FILESAVE_TOFILE 0x00L
#define D3DXF_FILESAVE_TOWFILE 0x01L
//----------------------------------------------------------------------------
// D3DXF_FILELOADOPTIONS
// This flag is used to specify where to load the file from. Each flag is
// mutually exclusive, indicates the data location of the file, and also
// chooses which additional data will specify the location.
// _FROMFILE is paired with a filename (LPCSTR)
// _FROMWFILE is paired with a filename (LPWSTR)
// _FROMRESOURCE is paired with a (D3DXF_FILELOADRESOUCE*) description.
// _FROMMEMORY is paired with a (D3DXF_FILELOADMEMORY*) description.
//----------------------------------------------------------------------------
typedef DWORD D3DXF_FILELOADOPTIONS;
#define D3DXF_FILELOAD_FROMFILE 0x00L
#define D3DXF_FILELOAD_FROMWFILE 0x01L
#define D3DXF_FILELOAD_FROMRESOURCE 0x02L
#define D3DXF_FILELOAD_FROMMEMORY 0x03L
//----------------------------------------------------------------------------
// D3DXF_FILELOADRESOURCE:
//----------------------------------------------------------------------------
typedef struct _D3DXF_FILELOADRESOURCE
{
HMODULE hModule; // Desc
LPCSTR lpName; // Desc
LPCSTR lpType; // Desc
} D3DXF_FILELOADRESOURCE;
//----------------------------------------------------------------------------
// D3DXF_FILELOADMEMORY:
//----------------------------------------------------------------------------
typedef struct _D3DXF_FILELOADMEMORY
{
LPCVOID lpMemory; // Desc
SIZE_T dSize; // Desc
} D3DXF_FILELOADMEMORY;
#if defined( _WIN32 ) && !defined( _NO_COM )
// {cef08cf9-7b4f-4429-9624-2a690a933201}
DEFINE_GUID( IID_ID3DXFile,
0xcef08cf9, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
// {cef08cfa-7b4f-4429-9624-2a690a933201}
DEFINE_GUID( IID_ID3DXFileSaveObject,
0xcef08cfa, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
// {cef08cfb-7b4f-4429-9624-2a690a933201}
DEFINE_GUID( IID_ID3DXFileSaveData,
0xcef08cfb, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
// {cef08cfc-7b4f-4429-9624-2a690a933201}
DEFINE_GUID( IID_ID3DXFileEnumObject,
0xcef08cfc, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
// {cef08cfd-7b4f-4429-9624-2a690a933201}
DEFINE_GUID( IID_ID3DXFileData,
0xcef08cfd, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
#endif // defined( _WIN32 ) && !defined( _NO_COM )
#if defined( __cplusplus )
#if !defined( DECLSPEC_UUID )
#if _MSC_VER >= 1100
#define DECLSPEC_UUID( x ) __declspec( uuid( x ) )
#else // !( _MSC_VER >= 1100 )
#define DECLSPEC_UUID( x )
#endif // !( _MSC_VER >= 1100 )
#endif // !defined( DECLSPEC_UUID )
interface DECLSPEC_UUID( "cef08cf9-7b4f-4429-9624-2a690a933201" )
ID3DXFile;
interface DECLSPEC_UUID( "cef08cfa-7b4f-4429-9624-2a690a933201" )
ID3DXFileSaveObject;
interface DECLSPEC_UUID( "cef08cfb-7b4f-4429-9624-2a690a933201" )
ID3DXFileSaveData;
interface DECLSPEC_UUID( "cef08cfc-7b4f-4429-9624-2a690a933201" )
ID3DXFileEnumObject;
interface DECLSPEC_UUID( "cef08cfd-7b4f-4429-9624-2a690a933201" )
ID3DXFileData;
#if defined( _COM_SMARTPTR_TYPEDEF )
_COM_SMARTPTR_TYPEDEF( ID3DXFile,
__uuidof( ID3DXFile ) );
_COM_SMARTPTR_TYPEDEF( ID3DXFileSaveObject,
__uuidof( ID3DXFileSaveObject ) );
_COM_SMARTPTR_TYPEDEF( ID3DXFileSaveData,
__uuidof( ID3DXFileSaveData ) );
_COM_SMARTPTR_TYPEDEF( ID3DXFileEnumObject,
__uuidof( ID3DXFileEnumObject ) );
_COM_SMARTPTR_TYPEDEF( ID3DXFileData,
__uuidof( ID3DXFileData ) );
#endif // defined( _COM_SMARTPTR_TYPEDEF )
#endif // defined( __cplusplus )
typedef interface ID3DXFile ID3DXFile;
typedef interface ID3DXFileSaveObject ID3DXFileSaveObject;
typedef interface ID3DXFileSaveData ID3DXFileSaveData;
typedef interface ID3DXFileEnumObject ID3DXFileEnumObject;
typedef interface ID3DXFileData ID3DXFileData;
//////////////////////////////////////////////////////////////////////////////
// ID3DXFile /////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#undef INTERFACE
#define INTERFACE ID3DXFile
DECLARE_INTERFACE_( ID3DXFile, IUnknown )
{
STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
STDMETHOD( CreateEnumObject )( THIS_ LPCVOID, D3DXF_FILELOADOPTIONS,
ID3DXFileEnumObject** ) PURE;
STDMETHOD( CreateSaveObject )( THIS_ LPCVOID, D3DXF_FILESAVEOPTIONS,
D3DXF_FILEFORMAT, ID3DXFileSaveObject** ) PURE;
STDMETHOD( RegisterTemplates )( THIS_ LPCVOID, SIZE_T ) PURE;
STDMETHOD( RegisterEnumTemplates )( THIS_ ID3DXFileEnumObject* ) PURE;
};
//////////////////////////////////////////////////////////////////////////////
// ID3DXFileSaveObject ///////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#undef INTERFACE
#define INTERFACE ID3DXFileSaveObject
DECLARE_INTERFACE_( ID3DXFileSaveObject, IUnknown )
{
STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
STDMETHOD( GetFile )( THIS_ ID3DXFile** ) PURE;
STDMETHOD( AddDataObject )( THIS_ REFGUID, LPCSTR, CONST GUID*,
SIZE_T, LPCVOID, ID3DXFileSaveData** ) PURE;
STDMETHOD( Save )( THIS ) PURE;
};
//////////////////////////////////////////////////////////////////////////////
// ID3DXFileSaveData /////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#undef INTERFACE
#define INTERFACE ID3DXFileSaveData
DECLARE_INTERFACE_( ID3DXFileSaveData, IUnknown )
{
STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
STDMETHOD( GetSave )( THIS_ ID3DXFileSaveObject** ) PURE;
STDMETHOD( GetName )( THIS_ LPSTR, SIZE_T* ) PURE;
STDMETHOD( GetId )( THIS_ LPGUID ) PURE;
STDMETHOD( GetType )( THIS_ GUID* ) PURE;
STDMETHOD( AddDataObject )( THIS_ REFGUID, LPCSTR, CONST GUID*,
SIZE_T, LPCVOID, ID3DXFileSaveData** ) PURE;
STDMETHOD( AddDataReference )( THIS_ LPCSTR, CONST GUID* ) PURE;
};
//////////////////////////////////////////////////////////////////////////////
// ID3DXFileEnumObject ///////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#undef INTERFACE
#define INTERFACE ID3DXFileEnumObject
DECLARE_INTERFACE_( ID3DXFileEnumObject, IUnknown )
{
STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
STDMETHOD( GetFile )( THIS_ ID3DXFile** ) PURE;
STDMETHOD( GetChildren )( THIS_ SIZE_T* ) PURE;
STDMETHOD( GetChild )( THIS_ SIZE_T, ID3DXFileData** ) PURE;
STDMETHOD( GetDataObjectById )( THIS_ REFGUID, ID3DXFileData** ) PURE;
STDMETHOD( GetDataObjectByName )( THIS_ LPCSTR, ID3DXFileData** ) PURE;
};
//////////////////////////////////////////////////////////////////////////////
// ID3DXFileData /////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#undef INTERFACE
#define INTERFACE ID3DXFileData
DECLARE_INTERFACE_( ID3DXFileData, IUnknown )
{
STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
STDMETHOD( GetEnum )( THIS_ ID3DXFileEnumObject** ) PURE;
STDMETHOD( GetName )( THIS_ LPSTR, SIZE_T* ) PURE;
STDMETHOD( GetId )( THIS_ LPGUID ) PURE;
STDMETHOD( Lock )( THIS_ SIZE_T*, LPCVOID* ) PURE;
STDMETHOD( Unlock )( THIS ) PURE;
STDMETHOD( GetType )( THIS_ GUID* ) PURE;
STDMETHOD_( BOOL, IsReference )( THIS ) PURE;
STDMETHOD( GetChildren )( THIS_ SIZE_T* ) PURE;
STDMETHOD( GetChild )( THIS_ SIZE_T, ID3DXFileData** ) PURE;
};
STDAPI D3DXFileCreate( ID3DXFile** lplpDirectXFile );
/*
* DirectX File errors.
*/
#define _FACD3DXF 0x876
#define D3DXFERR_BADOBJECT MAKE_HRESULT( 1, _FACD3DXF, 900 )
#define D3DXFERR_BADVALUE MAKE_HRESULT( 1, _FACD3DXF, 901 )
#define D3DXFERR_BADTYPE MAKE_HRESULT( 1, _FACD3DXF, 902 )
#define D3DXFERR_NOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 903 )
#define D3DXFERR_NOTDONEYET MAKE_HRESULT( 1, _FACD3DXF, 904 )
#define D3DXFERR_FILENOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 905 )
#define D3DXFERR_RESOURCENOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 906 )
#define D3DXFERR_BADRESOURCE MAKE_HRESULT( 1, _FACD3DXF, 907 )
#define D3DXFERR_BADFILETYPE MAKE_HRESULT( 1, _FACD3DXF, 908 )
#define D3DXFERR_BADFILEVERSION MAKE_HRESULT( 1, _FACD3DXF, 909 )
#define D3DXFERR_BADFILEFLOATSIZE MAKE_HRESULT( 1, _FACD3DXF, 910 )
#define D3DXFERR_BADFILE MAKE_HRESULT( 1, _FACD3DXF, 911 )
#define D3DXFERR_PARSEERROR MAKE_HRESULT( 1, _FACD3DXF, 912 )
#define D3DXFERR_BADARRAYSIZE MAKE_HRESULT( 1, _FACD3DXF, 913 )
#define D3DXFERR_BADDATAREFERENCE MAKE_HRESULT( 1, _FACD3DXF, 914 )
#define D3DXFERR_NOMOREOBJECTS MAKE_HRESULT( 1, _FACD3DXF, 915 )
#define D3DXFERR_NOMOREDATA MAKE_HRESULT( 1, _FACD3DXF, 916 )
#define D3DXFERR_BADCACHEFILE MAKE_HRESULT( 1, _FACD3DXF, 917 )
/*
* DirectX File object types.
*/
#ifndef WIN_TYPES
#define WIN_TYPES(itype, ptype) typedef interface itype *LP##ptype, **LPLP##ptype
#endif
WIN_TYPES(ID3DXFile, D3DXFILE);
WIN_TYPES(ID3DXFileEnumObject, D3DXFILEENUMOBJECT);
WIN_TYPES(ID3DXFileSaveObject, D3DXFILESAVEOBJECT);
WIN_TYPES(ID3DXFileData, D3DXFILEDATA);
WIN_TYPES(ID3DXFileSaveData, D3DXFILESAVEDATA);
#if defined( __cplusplus )
} // extern "C"
#endif // defined( __cplusplus )
#endif // !defined( __D3DX9XOF_H__ )

1570
subVersion/entity.cpp Normal file

File diff suppressed because it is too large Load Diff

538
subVersion/entity.h Normal file
View File

@@ -0,0 +1,538 @@
/*
Copyright 2016-2017 sub1to
This file is part of subVersion GTA:O SC External Hack.
subVersion GTA:O SC External Hack is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
subVersion GTA:O SC External Hack is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#ifndef ENTITY_H
#define ENTITY_H
typedef struct
{
float cur, max;
} curmax;
class entity
{
public:
curmax m_cmHp;
v3 m_v3Pos;
float m_fCos,m_fSin;
BYTE m_btGod;
entity();
~entity();
virtual void getPos();
virtual void setPos(v3 dest);
virtual void getCos();
virtual void setCos(float value);
virtual void getSin();
virtual void setSin(float value);
virtual void getHealth();
virtual void setHealth(float hp);
virtual void getGod();
virtual void setGod(BYTE value);
DWORD_PTR m_dwpBase,
m_dwpPosBase;
};
class player : public entity
{
public:
float m_flArmor,
m_flRunSpd,
m_flSwimSpd,
m_flWantedCanChange,
m_flVehicleDamageMult;
DWORD m_dwWanted,
m_dwNpcIgnore,
m_dwFrameFlags;
BYTE m_btRagdoll,
m_btSeatbelt;
bool m_bIsInVehicle;
curmax m_cmStamina;
struct playerData
{
bool m_isInit;
DWORD m_dwWaterProof;
float m_maxHealth;
};
playerData m_playerDataRestore,//the original values will be stored here.
m_playerDataCur;
player();
~player();
virtual void getHealth();
virtual void setHealth(float hp, float armor);
bool loadPlayerData();
void restorePlayerData();
void getMaxHealth();
void setMaxHealth(float hp);
void getVehicleDamageMult();
void setVehicleDamageMult(float value);
void getWanted();
void setWanted(DWORD stars);
void getWantedCanChange();
void setWantedCanChange(float value);
void getInVehicle();
void getRunSpeed();
void setRunSpeed(float value);
void getSwimSpeed();
void setSwimSpeed(float value);
void getNpcIgnore();
void setNpcIgnore(DWORD value);
void getFrameFlags();
void setFrameFlags(DWORD value);
void getWaterProof();
void setWaterProof(DWORD value);
void getRagdoll();
void setRagdoll(BYTE value);
void getSeatbelt();
void setSeatbelt(BYTE value);
void getStamina();
void setStamina(float value);
DWORD_PTR m_dwpPlayerInfo;
};
class vehicle : public entity
{
public:
curmax m_cmHpVehicle;
float m_fBoost,
m_fRocketRechargeSpeed,
m_fGravity;
BYTE m_btBulletproofTires,
m_btEngineManagementSystem,
m_btBrakes,
m_btTransmission,
m_btSuspension,
m_btArmor,
m_btTurboTuning,
m_btNeonLightRed,
m_btNeonLightGreen,
m_btNeonLightBlue,
m_btNeonLightLeft,
m_btNeonLightRight,
m_btNeonLightFront,
m_btNeonLightBack,
m_btTyreSmoke,
m_btTyreSmokeRed,
m_btTyreSmokeGreen,
m_btTyreSmokeBlue,
m_btLimoWindows,
m_btVehicleMissles,
m_btAircraftBombs,
m_btAircraftCountermeasures,
m_btOppressorMK2Misseles,
m_btTampaMissles;
struct vehicleHandling
{
DWORD_PTR m_dwpHandling = 0;
float m_fMass,
m_fBuoyancy,
m_fAcceleration,
m_fUpShift,
m_fDownShift,
m_fBrakeForce,
m_fHandbrakeForce,
m_fTractionCurveMin,
m_fSuspensionForce,
m_fSuspensionHeigh,
m_fColisionDamageMult,
m_fWeaponDamageMult,
m_fDeformationDamageMult,
m_fEngineDamageMult;
};
vehicleHandling m_handlingRestore,
m_handlingCur;
vehicle();
~vehicle();
void getHealth();
void setHealth(float hp);
bool loadHandling();
void restoreHandling();
void getMass();
void setMass(float value);
void getBuoyancy();
void setBuoyancy(float value);
void getAcceleration();
void setAcceleration(float value);
void getBrakeForce();
void setBrakeForce(float value);
void getHandbrakeForce();
void setHandbrakeForce(float value);
void getTractionCurveMin();
void setTractionCurveMin(float value);
void getGravity();
void setGravity(float value);
void getBoost();
void setBoost(float value);
void getRocketRechargeSpeed();
void setRocketRechargeSpeed(float value);
void getBulletproofTires();
void setBulletproofTires(BYTE value);
void getEngineManagementSystem();
void setEngineManagementSystem(BYTE value);
void getBrakes();
void setBrakes(BYTE value);
void getTransmission();
void setTransmission(BYTE value);
void getSuspension();
void setSuspension(BYTE value);
void getArmor();
void setArmor(BYTE value);
void getTurboTuning();
void setTurboTuning(BYTE value);
void getNeonLightRed();
void setNeonLightRed(BYTE value);
void getNeonLightGreen();
void setNeonLightGreen(BYTE value);
void getNeonLightBlue();
void setNeonLightBlue(BYTE value);
void getNeonLightLeft();
void setNeonLightLeft(BYTE value);
void getNeonLightRight();
void setNeonLightRight(BYTE value);
void getNeonLightFront();
void setNeonLightFront(BYTE value);
void getNeonLightBack();
void setNeonLightBack(BYTE value);
void getTyreSmoke();
void setTyreSmoke(BYTE value);
void getTyreSmokeRed();
void setTyreSmokeRed(BYTE value);
void getTyreSmokeGreen();
void setTyreSmokeGreen(BYTE value);
void getTyreSmokeBlue();
void setTyreSmokeBlue(BYTE value);
void getLimoWindows();
void setLimoWindows(BYTE value);
void getVehicleMissles();
void setVehicleMissles(BYTE value);
void getAircraftBombs();
void setAircraftBombs(BYTE value);
void getAircraftCountermeasures();
void setAircraftCountermeasures(BYTE value);
void getOppressorMK2Misseles();
void setOppressorMK2Misseles(BYTE value);
void getTampaMissles();
void setTampaMissles(BYTE value);
void getDeformationDamageMult();
void setDeformationDamageMult(float value);
void getUpShift();
void setUpShift(float value);
void getSuspensionForce();
void setSuspensionForce(float value);
void getSuspensionHeigh();
void setSuspensionHeigh(float value);
void getColisionDamageMult();
void setColisionDamageMult(float value);
void getWeaponDamageMult();
void setWeaponDamageMult(float value);
void getEngineDamageMult();
void setEngineDamageMult(float value);
void getDownShift();
void setDownShift(float value);
};
enum ImpactTypeEnum
{
Fists = 2,
Bullets = 3,
Explosives = 5,
};
enum ImpactExplosionEnum
{
DefaultBullets = 4294967295,
GrenadeExplosion = 1,
StickyBombExplosion = 2,
MoltovCoctailExplosion = 3,
SuperLauncher = 59,
LightningExplosion = 58,
BigExplosion = 4,
MediumExplosion = 40,
TinyExplosion = 25,
BigFireyExplosion = 5,
SmallWaterSpray = 11,
SmallFireSpray = 12,
BigWaterSpray = 13,
BigFireSpray = 14,
MK2ExplosiveBullets = 18,
SmokeGrenade = 19,
TearGas = 20,
TearGas2 = 21,
RedFlareSmoke = 22,
CoolGroundExplosion = 23,
CRAZYSHOCKWAVEEXPLOSION = 26,
HUGEFireyExplosion = 28,
MassiveBlimpExplosion = 29,
MassiveBlimpExplosion2 = 37,
LargeExplosionFallingDebris = 31,
FireBallExplosion = 32,
FireworkExplosion = 38,
SnowballHit = 39,
TinyExplosions2 = 33,
JustScreenShake = 41,
SPOOFEXPLOSION = 99
};
class weapon
{
public:
DWORD m_dwCurAmmo,
m_dwMaxAmmo,
m_dwHash; //name hash
struct weaponData
{
DWORD m_dwHash = 0,
m_dwBulletBatch,
m_dwImpactType,
m_dwImpactExplosion;
DWORD_PTR m_dwpWeapon = 0;
float m_fSpread,
m_fRecoil,
m_fDamage,
m_fReload,
m_fReloadVeh,
m_fRange,
m_fSpinUp,
m_fSpin,
m_fMuzzleVelocity,
m_fPenetration,
m_fForceOnPed,
m_fForceOnVehicle,
m_fForceOnHeli;
};
weaponData m_weapDataRestore,//the original values will be stored here.
m_weapDataCur;
weapon();
~weapon();
bool loadWeapon();
void restoreWeapon();
void getReloadSpeed();
void setReloadSpeed(float value);
void getReloadVehicle();
void setReloadVehicle(float value);
void getBulletDamage();
void setBulletDamage(float value);
void getRecoil();
void setRecoil(float value);
void getSpread();
void setSpread(float value);
void getRange();
void setRange(float value);
void getSpinUp();
void setSpinUp(float value);
void getSpin();
void setSpin(float value);
void getForceOnPed();
void setForceOnPed(float value);
void getForceOnVehicle();
void setForceOnVehicle(float value);
void getForceOnHeli();
void setForceOnHeli(float value);
void getHash();
bool findAmmoBase();
void getCurAmmo();
void setCurAmmo(DWORD ammo);
void getMaxAmmo();
void getBulletBatch();
void setBulletBatch(DWORD value);
void getImpactType();
void setImpactType(DWORD value);
void getImpactExplosion();
void setImpactExplosion(DWORD value);
void getMuzzleVelocity();
void setMuzzleVelocity(float value);
DWORD_PTR m_dwpAmmoInfo,
m_dwpCurAmmoBase;
};
class tunable
{
public:
float m_fRpMult,
m_fApMult,
m_fMinMissionPayout;
DWORD m_dwOrbitalCannonCooldown,
m_dwBunkerResearch,
m_dwAntiIdleKick1,
m_dwAntiIdleKick2,
m_dwAntiIdleKick3,
m_dwAntiIdleKick4;
tunable();
~tunable();
void restoreTunable();
void getRpMult();
void setRpMult(float value);
void getApMult();
void setApMult(float value);
void getMinMissionPayout();
void setMinMissionPayout(float value);
void getOrbitalCannonCooldown();
void setOrbitalCannonCooldown(DWORD value);
void getBunkerResearch();
void setBunkerResearch(DWORD value);
void getAntiIdleKick1();
void setAntiIdleKick1(DWORD value);
void getAntiIdleKick2();
void setAntiIdleKick2(DWORD value);
void getAntiIdleKick3();
void setAntiIdleKick3(DWORD value);
void getAntiIdleKick4();
void setAntiIdleKick4(DWORD value);
DWORD_PTR m_dwpTunableBase;
};
class global
{
public:
DWORD_PTR m_dwpStatHash,
m_dwpStatValue,
m_dwpStatCall,
m_dwpMoneyObject,
m_dwpMoneyVal,
m_dwpMoneyPosX,
m_dwpMoneyPosY,
m_dwpMoneyPosZ,
m_dwpMoneyCall,
m_dwpSessionTransition,
m_dwpSessionID,
m_dwpIntoPersonalVehicle,
m_dwpVehicleSpawn1,
m_dwpVehicleSpawn2,
m_dwpVehicleHash,
m_dwpVehicleKickPrevent1,
m_dwpVehicleKickPrevent2,
m_dwpVehicleX,
m_dwpVehicleY,
m_dwpVehicleZ,
m_dwpPrimaryColor,
m_dwpSecondaryColor;
unsigned int m_dwStatHash,
m_dwVehicleHash,
m_dwStatHashSet;
int m_dwStatValue,
m_dwStatCall,
m_dwMoneyVal,
m_dwSessionTransition,
m_dwSessionID,
m_dwIntoPersonalVehicle,
m_dwVehicleSpawn1,
m_dwVehicleSpawn2,
m_dwVehicleKickPrevent1,
m_dwVehicleKickPrevent2;
float m_fMoneyPosX,
m_fMoneyPosY,
m_fMoneyPosZ,
m_fVehicleX,
m_fVehicleY,
m_fVehicleZ;
BYTE m_btMoneyObject,
m_btMoneyCall,
m_btPrimaryColor,
m_btSecondaryColor;
global();
~global();
bool initStatPtr(HMODULE base);
bool initMoneyPtr(HMODULE base);
bool initSessionPtr(HMODULE base);
bool initIntoPVPtr(HMODULE base);
bool initVehiclePtr(HMODULE base);
bool findMoneyPtr(HMODULE base);
void getStatHash();
void setStatHash(unsigned int value);
void getStatValue();
void setStatValue(int value);
void getStatCall();
void setStatCall(int value);
void getMoneyObject();
void setMoneyObject(BYTE value);
void getMoneyVal();
void setMoneyVal(int value);
void getMoneyPosX();
void setMoneyPosX(float value);
void getMoneyPosY();
void setMoneyPosY(float value);
void getMoneyPosZ();
void setMoneyPosZ(float value);
void getMoneyCall();
void setMoneyCall(BYTE value);
void getSessionTransition();
void setSessionTransition(int value);
void getSessionID();
void setSessionID(int value);
void getIntoPersonalVehicle();
void setIntoPersonalVehicle(int value);
void getVehicleSpawn1();
void setVehicleSpawn1(int value);
void getVehicleSpawn2();
void setVehicleSpawn2(int value);
void getVehicleHash();
void setVehicleHash(unsigned int value);
void getVehicleKickPrevent1();
void setVehicleKickPrevent1(int value);
void getVehicleKickPrevent2();
void setVehicleKickPrevent2(int value);
void getVehiclePosX();
void setVehiclePosX(float value);
void getVehiclePosY();
void setVehiclePosY(float value);
void getVehiclePosZ();
void setVehiclePosZ(float value);
void getPrimaryColor();
void setPrimaryColor(BYTE value);
void getSecondaryColor();
void setSecondaryColor(BYTE value);
DWORD_PTR getGlobal(int value, HMODULE base);
DWORD_PTR m_dwpGlobalBase;
};
class replayInterface
{
public:
entity *g_pPedList[256];
DWORD dw_curPedNum;
replayInterface();
~replayInterface();
void initPeds();
DWORD_PTR m_dwpReplayInterfaceBase,
m_dwpPedInterface,
m_dwpPedList;
};
#endif

2109
subVersion/hack.cpp Normal file

File diff suppressed because it is too large Load Diff

191
subVersion/hack.h Normal file
View File

@@ -0,0 +1,191 @@
/*
Copyright 2016-2017 sub1to
This file is part of subVersion GTA:O SC External Hack.
subVersion GTA:O SC External Hack is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
subVersion GTA:O SC External Hack is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include<map>
#ifndef HACK_H
#define HACK_H
#define INITPTR_INVALID_WORLD 1 << 0
#define INITPTR_INVALID_PLAYER 1 << 1
#define INITPTR_INVALID_VEHICLE 1 << 2
#define INITPTR_INVALID_WEAPON 1 << 3
#define INITPTR_INVALID_TUNABLE 1 << 4
#define INITPTR_INVALID_GLOBAL 1 << 5
#define INITPTR_INVALID_PLAYER_LIST 1 << 6
#define INITPTR_INVALID_REPLAY_INTERFACE 1 << 7
class trainer
{
public:
clock_t m_keyTmr;
trainer();
~trainer();
bool checkKeyState(int key);
virtual void checkKeys();
};
class hack : public trainer
{
public:
v2 m_v2Waypoint;
v3 m_v3Objective;
player m_player;
vehicle m_vehicle;
weapon m_weapon;
tunable m_tunable;
global m_global;
replayInterface m_replayInterface;
std::string m_mpId;
std::deque<std::pair<unsigned int,int>> m_dStat;
ImpactExplosionEnum m_explosion;
HMODULE m_hModule;
hack();
~hack();
void checkKeys();
BYTE initPointers();
void teleport(v3 v);
bool teleportWaypoint();
bool teleportObjective();
void restoreHealth();
void restoreVehicleHealth();
void restoreStamina();
void notWanted();
void killNpc();
void fillAmmo();
void consumeStatQueue();
void killAllNpc(float* arg);
void renderPlayerList(int parent, int playerList[32]);
void setImpactExplosion(float* arg);
void fillAllAmmo(float* arg);
void healVehicle(float* arg);
void healPlayer(float* arg);
void suicide(float* arg);
void fillAmmo(float* arg);
void fillSkillLevels(float* arg);
void fillAllSnacks(float* arg);
void casinoStat(float* arg);
void casinoStatBitSet1(float* arg);
void casinoStatBitSet2(float* arg);
void unlockHeistCars(float* arg);
void unlockLSC(float* arg);
void unlockWeaponCamos(float* arg);
//void unlockWeapon(float* arg);
void unlockAllAwards(float* arg);
void unlockClothes(float* arg);
void intoPV(float* arg);
void loadSession(float* arg);
void forwardTeleport(float* arg);
void spawnVehicle(float* arg);
void selfDropMoney(feat* feature);
void waterProof(feat* feature);
void undeadOffradar(feat* feature);
void superPunch(feat* feature);
void noSpread(feat* feature);
void noRecoil(feat* feature);
void quickReload(feat* feature);
void bulletDamage(feat* feature);
void weaponRange(feat* feature);
void weaponSpin(feat* feature);
void weaponForceOnPed(feat* feature);
void weaponForceOnVehicle(feat* feature);
void weaponForceOnHeli(feat* feature);
void weaponBulletEdit(feat* feature);
void runSpeed(feat* feature);
void swimSpeed(feat* feature);
void npcIgnore(feat* feature);
void godMode(feat* feature);
void frameFlags(feat* featSuperJump, feat* featExplosiveMelee, feat* featFireAmmo, feat* featExplosiveAmmo);
void vehicleGod(feat* feature);
void infAmmo(feat* feature);
void noReload(feat* feature);
void seatbelt(feat* feature);
void noRagdoll(feat* feature);
void vehicleAccel(feat* feature);
void vehicleBrake(feat* feature);
void neverWanted(feat* feature);
void vehicleTraction(feat* feature);
void vehicleGravity(feat* feature);
void vehicleBulletproofTires(feat* feature);
void wanted(feat* feature);
void bulletBatch(feat* feature);
void muzzleVelocity(feat* feature);
void vehicleDeformation(feat* feature);
void vehicleUpShift(feat* feature);
void vehicleSuspensionForce(feat* feature);
void vehicleDownShift(feat* feature);
void vehicleMass(feat* feature);
void vehicleBuoyancy(feat* feature);
void vehicleHandbrakeForce(feat* feature);
void boost(feat* feature);
void vehicleRocketRechargeSpeed(feat* feature);
void vehicleSuspensionHeigh(feat* feature);
void vehicleColisionDamageMult(feat* feature);
void vehicleWeaponDamageMult(feat* feature);
void vehicleEngineDamageMult(feat* feature);
void tunableRpMult(feat* feature);
void tunableApMult(feat* feature);
void tunableMissionPayout(feat* feature);
void tunableOrbitalCannonCooldown(feat* feature);
void tunableBunkerResearch(feat* feature);
void tunableAntiIdleKick(feat* feature);
void about(float* arg);
void cabut(float* arg);
private:
DWORD_PTR m_dwpWorldBase,
m_dwpPlayerBase,
m_dwpVehicleBase,
m_dwpAttackerBase,
m_dwpWeaponManager,
m_dwpWeaponCur,
m_dwpAmmoInfo,
m_dwpWeaponBase,
m_dwpTunableBase,
m_dwpGlobalBase,
m_dwpPlayerListBase,
m_dwpReplayInterfaceBase;
bool m_bInit,m_bSelfDropInit;
void getWaypoint();
void getObjective();
void dStatPushBack(unsigned int hash, int value);
unsigned int string_to_hash(std::string input,std::string pre = "MP0_")
{
unsigned int num1 = 0U;
input = pre + input;
for (char c : input)
{
unsigned int num2 = num1 + (unsigned int)tolower(c);
unsigned int num3 = num2 + (num2 << 10);
num1 = num3 ^ num3 >> 6;
}
unsigned int num4 = num1 + (num1 << 3);
unsigned int num5 = num4 ^ num4 >> 11;
return num5 + (num5 << 15);
}
};
extern hack* g_pHack;
#endif

587
subVersion/main.cpp Normal file
View File

@@ -0,0 +1,587 @@
/*
Copyright 2016-2017 sub1to
This file is part of subVersion GTA:O SC External Hack.
subVersion GTA:O SC External Hack is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
subVersion GTA:O SC External Hack is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
*/
#include "stdafx.h"
//global vars
HWND g_hWnd;
hack* g_pHack;
settings* g_pSettings;
memManager* g_pMemMan;
D3D9Render* g_pD3D9Render;
std::map<int, CallbackProxy<hack, float>*>* g_pCBMap;
int g_iFeature[MAX_MENU_FEATURES] = {};
int g_iIndex;
int g_iFeaturePlayerList[32];
std::pair<int, std::wstring> tbl_SessionMItems[] = {
{-1,L"Ke GTA offline"},{0,L"Join public"},{1,L"Bikin Solo Public"},{12,L"Join temen"},
{2,L"Bikin friend only"},{3,L"Gang war?"},{9,L"Add sbg teman"},{6,L"Close friend"},
{10,L"Solo"},{11,L"Sesi invite only"}
};
bool g_bKillSwitch = false;
bool g_bKillRender = false;
bool g_bKillAttach = false;
bool g_bKillHack = false;
long ADDRESS_WORLD = 0;
long ADDRESS_BLIP = 0;
long ADDRESS_AMMO = 0;
long ADDRESS_MAGAZINE = 0;
long ADDRESS_TUNABLE = 0;
long ADDRESS_WEAPON = 0;
long ADDRESS_GLOBAL = 0;
long ADDRESS_PLAYER_LIST = 0;
long ADDRESS_REPLAY_INTERFACE = 0;
//fuction prototypes
LRESULT __stdcall WindowProc(HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam);
int addFeature(int cat,
int parent,
std::wstring name,
featType type,
void (hack::* fun)(float*),
float arg);
DWORD __stdcall threadAttach(LPVOID lpParam);
DWORD __stdcall threadRender(LPVOID lpParam);
DWORD __stdcall threadHack(LPVOID lpParam);
void iklan();
int __stdcall WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
if (FindWindow("sub1toOverlay", nullptr)) //make sure the hack is not already running
exit(0);
g_iIndex = 0;
g_pMemMan = new memManager;
g_pSettings = new settings;
g_pD3D9Render = new D3D9Render;
g_pHack = new hack;
g_pCBMap = new std::map<int, CallbackProxy<hack, float>*>;
LPCSTR szWindowTitleTarget = "Grand Theft Auto V";
LPCWSTR szWindowTitle = L"Wahyu anekdot mk2";
//v 1.3.1
g_pMemMan->setWindowName(szWindowTitleTarget);
g_pD3D9Render->m_szWindowTitle = szWindowTitle;
g_pSettings->addFeatureCategory(L"Pemain"); //0
g_pSettings->addFeatureCategory(L"Senjata"); //1
g_pSettings->addFeatureCategory(L"Mobil"); //2
g_pSettings->addFeatureCategory(L"Teleport"); //3
g_pSettings->addFeatureCategory(L"dll"); //4
g_iFeature[FEATURE_P_TRUEGOD] = g_pSettings->addFeature(0, -1, L"Tuhan", feat_toggle, "trueGodMode");
g_iFeature[FEATURE_P_GOD] = g_pSettings->addFeature(0, -1, L"Dewa", feat_toggle, "godMode");
g_iFeature[FEATURE_P_HEAL] = addFeature(0, -1, L"ngobat", feat_btn, &hack::healPlayer, -1.f);
g_iFeature[FEATURE_P_SUICIDE] = addFeature(0, -1, L"Bunuh diri", feat_btn, &hack::suicide, -1.f);
g_iFeature[FEATURE_P_WANTED] = g_pSettings->addFeature(0, -1, L"Wanted", feat_slider, "wanted", 0.f, 5.f, .2f);
g_iFeature[FEATURE_P_NEVERWANTED] = g_pSettings->addFeature(0, -1, L"Polisi Damai", feat_toggle, "neverWanted");
//addFeature(0, -1, "ɱ<><C9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NPC", feat_btn, &hack::killAllNpc, -1.f);
g_iFeature[FEATURE_P_ANTINPC] = g_pSettings->addFeature(0, -1, L"bunuh NPC", feat_toggle, "antiNpc");
g_iFeature[FEATURE_P_NPC_IGNORE] = g_pSettings->addFeature(0, -1, L"NPC cuek", feat_toggle, "npcIgnore");
g_iFeature[FEATURE_P_RUNSPD] = g_pSettings->addFeature(0, -1, L"kecepatan Lari", feat_slider, "runSpd", 1.f, 5.f);
g_iFeature[FEATURE_P_SWIMSPD] = g_pSettings->addFeature(0, -1, L"kecepatan Renang", feat_slider, "swimSpd", 1.f, 5.f);
g_iFeature[FEATURE_P_SUPER_PUNCH] = g_pSettings->addFeature(0, -1, L"Tinju Budha", feat_slider, "superPunch", 0.f, 1000.f, (float)1.f / 10.f);
g_iFeature[FEATURE_P_SUPERJUMP] = g_pSettings->addFeature(0, -1, L"Lompat Kanguru", feat_toggle, "superJump");
g_iFeature[FEATURE_P_EXPLOSIVEMELEE] = g_pSettings->addFeature(0, -1, L"Tinju Ledak Budha", feat_toggle, "explMelee");
g_iFeature[FEATURE_P_UNDEAD_OFFRADAR] = g_pSettings->addFeature(0, -1, L"anti RadarUndead", feat_toggle, "undeadOffradar");
g_iFeature[FEATURE_P_NORAGDOLL] = g_pSettings->addFeature(0, -1, L"anti Ragdoll", feat_toggle, "noRagdoll");
g_iFeature[FEATURE_P_WATER_PROOF] = g_pSettings->addFeature(0, -1, L"anti Aer", feat_toggle, "waterProof");
g_iFeature[FEATURE_P_STAMINA] = g_pSettings->addFeature(0, -1, L"Stamina Dewa", feat_toggle, "infStam");
//g_iFeature[FEATURE_W_FILL_ALL_AMMO] = addFeature(1, -1, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҩ", feat_btn, &hack::fillAllAmmo, -1.f);
g_iFeature[FEATURE_W_FILL_AMMO] = addFeature(1, -1, L"IsiPelor", feat_btn, &hack::fillAmmo, -1.f);
g_iFeature[FEATURE_W_SPREAD] = g_pSettings->addFeature(1, -1, L"No Nyebar", feat_toggle, "noSpread");
g_iFeature[FEATURE_W_RECOIL] = g_pSettings->addFeature(1, -1, L"No Recoil", feat_toggle, "noRecoil");
g_iFeature[FEATURE_W_NORELOAD] = g_pSettings->addFeature(1, -1, L"No Isi Ulang", feat_toggle, "noReload");
g_iFeature[FEATURE_W_RELOAD] = g_pSettings->addFeature(1, -1, L"Isi Ulang GC", feat_slider, "quickReload", 1.f, 10.f);
int bulletEdit = g_pSettings->addFeature(1, -1, L"Edit Peluru >>", feat_parent);
g_iFeature[FEATURE_W_BULLET_EDIT] = g_pSettings->addFeature(-1, bulletEdit, L"Edit Peluru", feat_toggle, "bulletEdit");
addFeature(-1, bulletEdit, L"Ledakan Granat", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::GrenadeExplosion);
addFeature(-1, bulletEdit, L"Ledakan Sticky", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::StickyBombExplosion);
addFeature(-1, bulletEdit, L"Ledakan Molotov", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::MoltovCoctailExplosion);
addFeature(-1, bulletEdit, L"Super Launcher", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::SuperLauncher);
addFeature(-1, bulletEdit, L"Ledakan petir", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::LightningExplosion);
addFeature(-1, bulletEdit, L"Ledakan besar", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::BigExplosion);
addFeature(-1, bulletEdit, L"Ledakan berapi", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::BigFireyExplosion);
addFeature(-1, bulletEdit, L"Ledakan sedang", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::MediumExplosion);
addFeature(-1, bulletEdit, L"Ledakan kecil", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::TinyExplosion);
addFeature(-1, bulletEdit, L"Ledakan kecil 2", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::TinyExplosions2);
addFeature(-1, bulletEdit, L"Semprot air kecil", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::SmallWaterSpray);
addFeature(-1, bulletEdit, L"Semprot api kecil", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::SmallFireSpray);
addFeature(-1, bulletEdit, L"Semprot air besar", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::BigWaterSpray);
addFeature(-1, bulletEdit, L"Semprot api besar", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::BigFireSpray);
addFeature(-1, bulletEdit, L"Peluru ledak MK2", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::MK2ExplosiveBullets);
addFeature(-1, bulletEdit, L"Granat asap", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::SmokeGrenade);
addFeature(-1, bulletEdit, L"Gas air mata", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::TearGas);
addFeature(-1, bulletEdit, L"Gas air mata 2", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::TearGas2);
addFeature(-1, bulletEdit, L"Flare merah", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::RedFlareSmoke);
addFeature(-1, bulletEdit, L"Cool Ground Explosion", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::CoolGroundExplosion);
addFeature(-1, bulletEdit, L"Ledakan shockwave", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::CRAZYSHOCKWAVEEXPLOSION);
addFeature(-1, bulletEdit, L"Ledakan berapi besar", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::HUGEFireyExplosion);
addFeature(-1, bulletEdit, L"Ledakan blimp besar", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::MassiveBlimpExplosion);
addFeature(-1, bulletEdit, L"Ledakan blimp besar 2", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::MassiveBlimpExplosion2);
addFeature(-1, bulletEdit, L"Serpihan ledak", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::LargeExplosionFallingDebris);
addFeature(-1, bulletEdit, L"Ledakan bola api", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::FireBallExplosion);
addFeature(-1, bulletEdit, L"Ledakan petasan", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::FireworkExplosion);
addFeature(-1, bulletEdit, L"Bola salju", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::SnowballHit);
addFeature(-1, bulletEdit, L"Layar gempa", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::JustScreenShake);
addFeature(-1, bulletEdit, L"Spoof Exp", feat_btn, &hack::setImpactExplosion, ImpactExplosionEnum::SPOOFEXPLOSION);
g_iFeature[FEATURE_W_FORCE_ON_PED] = g_pSettings->addFeature(1, -1, L"Gaya pejalan kaki", feat_slider, "forceOnPed", 1.f, 10000.f);
g_iFeature[FEATURE_W_FORCE_ON_VEHICLE] = g_pSettings->addFeature(1, -1, L"Gaya pada kendaraan", feat_slider, "forceOnVeh", 1.f, 10000.f);
g_iFeature[FEATURE_W_FORCE_ON_HELI] = g_pSettings->addFeature(1, -1, L"Gaya pada heli", feat_slider, "forceOnHeli", 1.f, 10000.f);
g_iFeature[FEATURE_W_DAMAGE] = g_pSettings->addFeature(1, -1, L"Damage peluru", feat_slider, "bulletDamage", 1.f, 10.f);
g_iFeature[FEATURE_W_AMMO] = g_pSettings->addFeature(1, -1, L"Peluru ga habis", feat_toggle, "infAmmo");
g_iFeature[FEATURE_W_RANGE] = g_pSettings->addFeature(1, -1, L"Weap Range", feat_slider, "weapRange", 1.f, 10.f);
g_iFeature[FEATURE_W_SPINUP] = g_pSettings->addFeature(1, -1, L"Weap spin", feat_toggle, "weapSpin");
g_iFeature[FEATURE_W_EXPLOSIVEAMMO] = g_pSettings->addFeature(1, -1, L"Peluru Ledak", feat_toggle, "explAmmo");
g_iFeature[FEATURE_W_FIREAMMO] = g_pSettings->addFeature(1, -1, L"Peluru api", feat_toggle, "fireAmmo");
g_iFeature[FEATURE_W_BULLET_BATCH] = g_pSettings->addFeature(1, -1, L"Peluru banyak", feat_slider, "bulletBatch", 1.f, 10.f, (float)1.f / 9.f);
g_iFeature[FEATURE_W_MUZZLE_VELOCITY] = g_pSettings->addFeature(1, -1, L"Kelajuan peluru", feat_slider, "muzzleVelo", 1.f, 10.f);
g_iFeature[FEATURE_V_TRUEGOD] = g_pSettings->addFeature(2, -1, L"Kendaraan Tuhan", feat_toggle, "vehTrueGodMode");
g_iFeature[FEATURE_V_GOD] = g_pSettings->addFeature(2, -1, L"Kendaraan Dewa", feat_toggle, "vehGodMode");
g_iFeature[FEATURE_V_HEAL] = addFeature(2, -1, L"Ketok magic", feat_btn, &hack::healVehicle, -1.f);
g_iFeature[FEATURE_V_BULLETPROOFTIRES] = g_pSettings->addFeature(2, -1, L"Ban antipeluru", feat_toggle, "vehBulletproofTires");
g_iFeature[FEATURE_V_SEATBELT] = g_pSettings->addFeature(2, -1, L"Sabuk pengaman", feat_toggle, "seatbelt");
g_iFeature[FEATURE_V_GRAVITY] = g_pSettings->addFeature(2, -1, L"Gravitasi Kendaraan", feat_slider, "vehGravity", -25.f, 25.f);
g_iFeature[FEATURE_V_BOOST] = g_pSettings->addFeature(2, -1, L"Boost Kendaraan", feat_toggle, "vehBoost");
g_iFeature[FEATURE_V_RECHARGE_SPEED] = g_pSettings->addFeature(2, -1, L"Boost isi ulang", feat_slider, "vehRrchargeSpeed", .5f, 5.f);
int handing = g_pSettings->addFeature(2, -1, L"Setingan mobil >>", feat_parent);
g_iFeature[FEATURE_V_MASS] = g_pSettings->addFeature(-1, handing, L"Massa", feat_slider, "vehMass", 0.f, 1000000.f);
g_iFeature[FEATURE_V_BUOYANCY] = g_pSettings->addFeature(-1, handing, L"Kemampuan ngapung", feat_slider, "vehBuoyancy", 0.f, 1000.f);
g_iFeature[FEATURE_V_ACCELERATION] = g_pSettings->addFeature(-1, handing, L"Akselerasi", feat_slider, "vehAccel", 1.f, 1000.f);
g_iFeature[FEATURE_V_UPSHIFT] = g_pSettings->addFeature(-1, handing, L"Gigi naik", feat_slider, "vehUpShift", 1.f, 25.f);
g_iFeature[FEATURE_V_DOWNSHIFT] = g_pSettings->addFeature(-1, handing, L"Gigi turun", feat_slider, "vehDownShift", 1.f, 25.f);
g_iFeature[FEATURE_V_BRAKEFORCE] = g_pSettings->addFeature(-1, handing, L"Gaya rem", feat_slider, "vehBrakeForce", 1.f, 25.f);
g_iFeature[FEATURE_V_HANDBRAKEFORCE] = g_pSettings->addFeature(-1, handing, L"Buyoancy", feat_slider, "vehBuoyancy", 1.f, 25.f);
g_iFeature[FEATURE_V_TRACTION] = g_pSettings->addFeature(-1, handing, L"Traction", feat_slider, "vehTraction", 1.f, 25.f);
g_iFeature[FEATURE_V_SUSPENSION_FORCE] = g_pSettings->addFeature(-1, handing, L"Gaya pegas", feat_slider, "vehSuspensionForce", 0.f, 25.f);
g_iFeature[FEATURE_V_SUSPENSION_HEIGH] = g_pSettings->addFeature(-1, handing, L"Tinggi pegas", feat_slider, "vehSuspensionHeigh", 0.f, 1.f);
g_iFeature[FEATURE_V_COLISION_DAMAGE_MP] = g_pSettings->addFeature(-1, handing, L"Kerusakan tabrakan", feat_slider, "vehColisionDamage", 0.f, 25.f);
g_iFeature[FEATURE_V_WEAPON_DAMAGE_MP] = g_pSettings->addFeature(-1, handing, L"Damage senjata kendaraan", feat_slider, "vehWeaponDamage", 0.f, 25.f);
g_iFeature[FEATURE_V_DEFORMATION] = g_pSettings->addFeature(-1, handing, L"Deform kendaraan", feat_slider, "vehDeform", 0.f, 25.f);
g_iFeature[FEATURE_V_ENGINE_DAMAGE_MP] = g_pSettings->addFeature(-1, handing, L"Kerusakan mesin", feat_slider, "vehEngineDamage", 0.f, 25.f);
g_pSettings->addFeature(3, -1, L"teleport ke WP", feat_teleport, tp_waypoint);
g_pSettings->addFeature(3, -1, L"teleport ke OBJ", feat_teleport, tp_objective);
addFeature(3, -1, L"Teleport maju", feat_btn, &hack::forwardTeleport, 5.f);
int interior = g_pSettings->addFeature(3, -1, L"Teleport ke... >>", feat_parent);
g_pSettings->addFeature(-1, interior, L"Gedung FIB", feat_teleport, tp_static, 136.0f, -750.f, 262.f);
g_pSettings->addFeature(-1, interior, L"Garment Factory", feat_teleport, tp_static, 712.716f, -962.906f, 30.6f);
g_pSettings->addFeature(-1, interior, L"Franklin House", feat_teleport, tp_static, 7.119f, 536.615f, 176.2f);
g_pSettings->addFeature(-1, interior, L"Michael House", feat_teleport, tp_static, -813.603f, 179.474f, 72.5f);
g_pSettings->addFeature(-1, interior, L"Hidden Treasure 1", feat_teleport, tp_static, 1972.610f, 3817.040f, 33.65f);
g_pSettings->addFeature(-1, interior, L"Aunt Dennis House", feat_teleport, tp_static, -14.380f, -1438.510f, 31.3f);
g_pSettings->addFeature(-1, interior, L"Freud House", feat_teleport, tp_static, -1151.770f, -1518.138f, 10.85f);
g_pSettings->addFeature(-1, interior, L"Lester House", feat_teleport, tp_static, 1273.898f, -1719.304f, 54.8f);
g_pSettings->addFeature(-1, interior, L"Strip Club", feat_teleport, tp_static, 97.271f, -1290.994f, 29.45f);
g_pSettings->addFeature(-1, interior, L"Bank Vault (Pacific Standard)", feat_teleport, tp_static, 255.85f, 217.f, 101.9f);
g_pSettings->addFeature(-1, interior, L"Comedy Club", feat_teleport, tp_static, 378.100f, -999.964f, -98.6f);
g_pSettings->addFeature(-1, interior, L"Humane Lab", feat_teleport, tp_static, 3614.394f, 3744.803f, 28.9f);
g_pSettings->addFeature(-1, interior, L"Humane Lab Authentic", feat_teleport, tp_static, 3525.201f, 3709.625f, 21.2f);
g_pSettings->addFeature(-1, interior, L"IAA Office", feat_teleport, tp_static, 113.568f, -619.001f, 206.25f);
g_pSettings->addFeature(-1, interior, L"Torture Chamber", feat_teleport, tp_static, 142.746f, -2201.189f, 4.9f);
g_pSettings->addFeature(-1, interior, L"Military Base Tower", feat_teleport, tp_static, -2358.132f, 3249.754f, 101.65f);
g_pSettings->addFeature(-1, interior, L"Mine", feat_teleport, tp_static, -595.342f, 2086.008f, 131.6f);
int saved = g_pSettings->addFeature(3, -1, L"Custom Save Point >>", feat_parent);
g_pSettings->addFeature(-1, saved, L"Save Point1", feat_teleport, "pos0", tp_saved);
g_pSettings->addFeature(-1, saved, L"Save Point2", feat_teleport, "pos1", tp_saved);
g_pSettings->addFeature(-1, saved, L"Save Point3", feat_teleport, "pos2", tp_saved);
g_pSettings->addFeature(-1, saved, L"Save Point4", feat_teleport, "pos3", tp_saved);
g_pSettings->addFeature(-1, saved, L"Save Point5", feat_teleport, "pos4", tp_saved);
g_pSettings->addFeature(-1, saved, L"Save Point6", feat_teleport, "pos5", tp_saved);
g_pSettings->addFeature(3, -1, L"Los Santos Custom", feat_teleport, tp_static, -365.425f, -131.809f, -225.f);//38.9f);
g_pSettings->addFeature(3, -1, L"LS Airport", feat_teleport, tp_static, -1336.f, -3044.f, -225.f);//14.15f);
g_pSettings->addFeature(3, -1, L"Shandy Shore Airport", feat_teleport, tp_static, 1747.f, 3273.f, -225.f);//41.35f);
g_pSettings->addFeature(3, -1, L"Mount Chilliad", feat_teleport, tp_static, 489.979f, 5587.527f, 794.3f);
int session = g_pSettings->addFeature(4, -1, L"Bikin sesi baru >>", feat_parent);
for (size_t i = 0; i < sizeof(tbl_SessionMItems) / sizeof(tbl_SessionMItems[0]); i++)
addFeature(-1, session, tbl_SessionMItems[i].second, feat_btn, &hack::loadSession, tbl_SessionMItems[i].first);
int olService = g_pSettings->addFeature(4, -1, L"Onlen >>", feat_parent);
addFeature(-1, olService, L"Ke PV", feat_btn, &hack::intoPV, -1.f);
g_iFeature[FEATURE_P_MONERY_DROP] = g_pSettings->addFeature(-1, olService, L"Uang surga", feat_toggle, "moneyDrop");
//g_iFeature[FEATURE_P_PLAYER_LIST] = g_pSettings->addFeature(3, -1, "<22><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD> >>", feat_parent);
//for (size_t i = 0; i < sizeof(g_iFeaturePlayerList)/sizeof(g_iFeaturePlayerList[0]); i++)
//{
// g_iFeaturePlayerList[i] = g_pSettings->addFeature(-1, g_iFeature[FEATURE_P_PLAYER_LIST],"<22><><EFBFBD><EFBFBD> >>", feat_parent);
//}
int vehSpawn = g_pSettings->addFeature(-1, olService, L"Mobil >>", feat_parent);
for (size_t i = 0; i < vehiclePreview.size(); i++)
{
int temp = g_pSettings->addFeature(-1, vehSpawn, vehiclePreview[i].first, feat_parent);
for (size_t j = 0; j < vehiclePreview[i].second.size(); j++)
addFeature(-1, temp, vehiclePreview[i].second[j].VName, feat_btn, &hack::spawnVehicle, i * 1000 + j);
}
int tunable = g_pSettings->addFeature(-1, olService, L"Parameter tunable >>", feat_parent);
g_iFeature[FEATURE_T_ANTI_IDLE_KICK] = g_pSettings->addFeature(-1, tunable, L"Anti AFK", feat_toggle, "AntiIdleKick");
g_iFeature[FEATURE_T_ORBITAL_CANNON] = g_pSettings->addFeature(-1, tunable, L"Orbital Cannon", feat_toggle, "OrbitalCannon");
g_iFeature[FEATURE_T_RP_MP] = g_pSettings->addFeature(-1, tunable, L"RP Ganda", feat_slider, "RP", 1.f, 1000.f, (float)1.f / 9.f);
g_iFeature[FEATURE_T_AP_MP] = g_pSettings->addFeature(-1, tunable, L"AP Ganda", feat_slider, "AP", 1.f, 1000.f, (float)1.f / 9.f);
g_iFeature[FEATURE_T_MISSION_PAYOUT] = g_pSettings->addFeature(-1, tunable, L"Bayaran misi", feat_slider, "MinMissionPayout", 0.f, 100000.f);
int recovery = g_pSettings->addFeature(-1, olService, L"Buka kunci >>", feat_parent);
addFeature(-1, recovery, L"Isi Skill", feat_btn, &hack::fillSkillLevels, -1.f);
addFeature(-1, recovery, L"Isi cemilan", feat_btn, &hack::fillAllSnacks, -1.f);
int casino = g_pSettings->addFeature(-1, recovery, L"Perampokan Kasino >>", feat_parent);
addFeature(-1, casino, L"Stat kasino", feat_btn, &hack::casinoStat, 1.f);
int bitSet1 = g_pSettings->addFeature(-1, casino, L"Papan rencana >>", feat_parent);
addFeature(-1, bitSet1, L"Unlock probe", feat_btn, &hack::casinoStatBitSet1, 7.f);
addFeature(-1, bitSet1, L"Unlock POI", feat_btn, &hack::casinoStatBitSet1, 8.f);
int approach = g_pSettings->addFeature(-1, bitSet1, L"<EFBFBD><EFBFBD><EFBFBD>ٷ<EFBFBD>ʽ >>", feat_parent);
addFeature(-1, approach, L"Stealth", feat_btn, &hack::casinoStatBitSet1, 0.f);
addFeature(-1, approach, L"Big Cont", feat_btn, &hack::casinoStatBitSet1, 1.f);
addFeature(-1, approach, L"Agressive", feat_btn, &hack::casinoStatBitSet1, 2.f);
int target = g_pSettings->addFeature(-1, bitSet1, L"Rampok >>", feat_parent);
addFeature(-1, target, L"Duid", feat_btn, &hack::casinoStatBitSet1, 3.f);
addFeature(-1, target, L"Emas", feat_btn, &hack::casinoStatBitSet1, 4.f);
addFeature(-1, target, L"Seni", feat_btn, &hack::casinoStatBitSet1, 5.f);
addFeature(-1, target, L"Intan", feat_btn, &hack::casinoStatBitSet1, 6.f);
int bitSet2 = g_pSettings->addFeature(-1, casino, L"Papan rencana kedua >>", feat_parent);
addFeature(-1, bitSet2, L"One key, highest", feat_btn, &hack::casinoStatBitSet2, 11.f);
addFeature(-1, bitSet2, L"Duggan Shipment kelar", feat_btn, &hack::casinoStatBitSet2, 0.f);
addFeature(-1, bitSet2, L"Keycard level tinggi", feat_btn, &hack::casinoStatBitSet2, 1.f);
addFeature(-1, bitSet2, L"Most sought-after", feat_btn, &hack::casinoStatBitSet2, 2.f);
addFeature(-1, bitSet2, L"Driver terbaik", feat_btn, &hack::casinoStatBitSet2, 3.f);
addFeature(-1, bitSet2, L"Hacker terbaik", feat_btn, &hack::casinoStatBitSet2, 4.f);
int vehs = g_pSettings->addFeature(-1, bitSet2, L"Kendaraan escape >>", feat_parent);
addFeature(-1, vehs, L"0", feat_btn, &hack::casinoStatBitSet2, 5.f);
addFeature(-1, vehs, L"1", feat_btn, &hack::casinoStatBitSet2, 6.f);
addFeature(-1, vehs, L"2", feat_btn, &hack::casinoStatBitSet2, 7.f);
addFeature(-1, vehs, L"3", feat_btn, &hack::casinoStatBitSet2, 8.f);
int weaps = g_pSettings->addFeature(-1, bitSet2, L"Senjata >>", feat_parent);
addFeature(-1, weaps, L"0", feat_btn, &hack::casinoStatBitSet2, 9.f);
addFeature(-1, weaps, L"1", feat_btn, &hack::casinoStatBitSet2, 10.f);
int unlock = g_pSettings->addFeature(-1, recovery, L"Buka >>", feat_parent);
addFeature(-1, unlock, L"Unlock LSC", feat_btn, &hack::unlockLSC, -1.f);
addFeature(-1, unlock, L"Unlock Camo", feat_btn, &hack::unlockWeaponCamos, -1.f);
addFeature(-1, unlock, L"Unlock Heist Car", feat_btn, &hack::unlockHeistCars, -1.f);
addFeature(-1, unlock, L"Unlock Awards", feat_btn, &hack::unlockAllAwards, -1.f);
addFeature(-1, unlock, L"Unlock Baju", feat_btn, &hack::unlockClothes, -1.f);
g_iFeature[FEATURE_T_BUNKER_RESEARCH] = g_pSettings->addFeature(-1, unlock, L"Riset Bunker", feat_toggle, "BunkerResearch");
addFeature(4, -1, L"Buka Internet", feat_btn, &hack::about, 0.f);
//addFeature(4, -1, L"Cek Update", feat_btn, &hack::about, 1.f);
addFeature(4, -1, L"Matiin modmenu", feat_btn, &hack::cabut, 1.f);
g_pSettings->setActiveCat(0); //this needs to be called so we can fill the current feature buffer
WNDCLASSEX wc;
ZeroMemory(&wc, sizeof(WNDCLASSEX));
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));
wc.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));
wc.hbrBackground = dynamic_cast<HBRUSH>(CreateSolidBrush(RGB(0, 0, 0)));//(HBRUSH)COLOR_WINDOW;
wc.lpszClassName = "sub1toOverlay";
RegisterClassEx(&wc);
g_hWnd = CreateWindowExW(WS_EX_TOPMOST | WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_TOOLWINDOW, //dwExStyle [in]
L"sub1toOverlay", //lpClassName [in, optional]
szWindowTitle, //lpWindowName [in, optional]
WS_POPUP, //dwStyle [in]
0, //x [in]
0, //y [in]
300, //nWidth [in]
300, //nHeight [in]
nullptr, //hWndParent [in, optional]
nullptr, //hMenu [in, optional]
hInstance, //hInstance [in, optional] A handle to the instance of the module to be associated with the window.
nullptr); //lpParam [in, optional]
SetLayeredWindowAttributes(g_hWnd, 0, 0, LWA_ALPHA);
SetLayeredWindowAttributes(g_hWnd, RGB(0, 0, 0), 0, LWA_COLORKEY);
MARGINS margins{ 1, 1, 1, 1 };
DwmExtendFrameIntoClientArea(g_hWnd, &margins);
ShowWindow(g_hWnd, SW_SHOWNORMAL);
CreateThread(NULL,
0,
threadAttach,
NULL,
0,
nullptr);
Sleep(100);
CreateThread(NULL,
0,
threadRender,
NULL,
0,
nullptr);
Sleep(100);
CreateThread(NULL,
0,
threadHack,
NULL,
0,
nullptr);
MSG msg;
while (true)
{
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) // Check to see if any messages are waiting in the queue
{
TranslateMessage(&msg); //Translate the message and dispatch it to WindowProc()
DispatchMessage(&msg);
}
if (msg.message == WM_QUIT)
break;
Sleep(100);
}
return (int)msg.wParam;
}
//main message handler
LRESULT __stdcall WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
break;
}
return DefWindowProc(hWnd, message, wParam, lParam); //default behaviour for any unhandled messages
}
int addFeature(int cat, int parent, std::wstring name, featType type, void (hack::* func)(float*), float arg)
{
(*g_pCBMap)[g_iIndex] = new CallbackProxy<hack, float>;
(*g_pCBMap)[g_iIndex]->Set(g_pHack, func);
return g_pSettings->addFeature(cat, parent, name, type, g_iIndex++, arg);
}
void iklan() {
MessageBoxExW(
NULL,
L"Nyalain NUM LOCK dan tekan NUM-",
L"Mod menu terbuka",
MB_ICONWARNING | MB_OK | MB_DEFBUTTON2,
0
);
}
DWORD __stdcall threadAttach(LPVOID lpParam)
{
//iklan();
while (!g_bKillSwitch)
{
if (g_pMemMan->attach() && g_pMemMan->findWindow())
{
HWND fgWnd = GetForegroundWindow(),
tgWnd = g_pMemMan->getWindow();
if (g_pD3D9Render->getViewport())
MoveWindow(g_hWnd, g_pD3D9Render->m_screen.x, g_pD3D9Render->m_screen.y, g_pD3D9Render->m_screen.w, g_pD3D9Render->m_screen.h, true);
if (fgWnd != tgWnd && fgWnd != g_hWnd)
{
SetWindowPos(g_hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
else if (g_hWnd == fgWnd)
{
ShowWindow(tgWnd, SW_SHOW);
SetForegroundWindow(tgWnd);
}
else if (tgWnd == fgWnd && !(GetWindowLong(g_hWnd, GWL_EXSTYLE) & WS_EX_TOPMOST))
{
SetWindowPos(g_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
}
else
{
MessageBoxW(nullptr, L"GTA V nya idupin dulu jir", L"Mod menu gagal kebukak", MB_OK | MB_ICONERROR);
g_bKillAttach = true;
killProgram();
}
Sleep(0x30);
}
g_bKillAttach = true;
return 1;
}
DWORD __stdcall threadRender(LPVOID lpParam)
{
g_pD3D9Render->init(g_hWnd);
while (!g_bKillSwitch)
{
g_pD3D9Render->render();
Sleep(0x10);
}
g_bKillRender = true;
return 0;
}
DWORD __stdcall threadHack(LPVOID lpParam)
{
g_pHack->m_hModule = g_pMemMan->getModuleAddress("GTA5.exe");
while (!g_bKillSwitch)
{
BYTE btInit = g_pHack->initPointers();
g_pHack->checkKeys();
if (!(btInit & INITPTR_INVALID_WORLD) && !(btInit & INITPTR_INVALID_PLAYER))
{
if (g_pSettings->getFeature(g_iFeature[FEATURE_P_GOD])->m_bOn || g_pSettings->getFeature(g_iFeature[FEATURE_P_TRUEGOD])->m_bOn)
g_pHack->restoreHealth();
if (g_pSettings->getFeature(g_iFeature[FEATURE_P_ANTINPC])->m_bOn)
g_pHack->killNpc();
if (g_pSettings->getFeature(g_iFeature[FEATURE_P_NEVERWANTED])->m_bOn)
g_pHack->notWanted();
if (g_pSettings->getFeature(g_iFeature[FEATURE_P_STAMINA])->m_bOn)
g_pHack->restoreStamina();
g_pHack->neverWanted(g_pSettings->getFeature(g_iFeature[FEATURE_P_NEVERWANTED]));
g_pHack->wanted(g_pSettings->getFeature(g_iFeature[FEATURE_P_WANTED]));
g_pHack->runSpeed(g_pSettings->getFeature(g_iFeature[FEATURE_P_RUNSPD]));
g_pHack->swimSpeed(g_pSettings->getFeature(g_iFeature[FEATURE_P_SWIMSPD]));
g_pHack->npcIgnore(g_pSettings->getFeature(g_iFeature[FEATURE_P_NPC_IGNORE]));
g_pHack->godMode(g_pSettings->getFeature(g_iFeature[FEATURE_P_TRUEGOD]));
g_pHack->noRagdoll(g_pSettings->getFeature(g_iFeature[FEATURE_P_NORAGDOLL]));
g_pHack->seatbelt(g_pSettings->getFeature(g_iFeature[FEATURE_V_SEATBELT]));
g_pHack->superPunch(g_pSettings->getFeature(g_iFeature[FEATURE_P_SUPER_PUNCH]));
if (g_pHack->m_player.loadPlayerData())
{
g_pHack->undeadOffradar(g_pSettings->getFeature(g_iFeature[FEATURE_P_UNDEAD_OFFRADAR]));
g_pHack->waterProof(g_pSettings->getFeature(g_iFeature[FEATURE_P_WATER_PROOF]));
}
g_pHack->frameFlags(g_pSettings->getFeature(g_iFeature[FEATURE_P_SUPERJUMP]),
g_pSettings->getFeature(g_iFeature[FEATURE_P_EXPLOSIVEMELEE]),
g_pSettings->getFeature(g_iFeature[FEATURE_W_FIREAMMO]),
g_pSettings->getFeature(g_iFeature[FEATURE_W_EXPLOSIVEAMMO]));
if (!(btInit & INITPTR_INVALID_VEHICLE))
{
if (g_pSettings->getFeature(g_iFeature[FEATURE_V_GOD])->m_bOn)
g_pHack->restoreVehicleHealth();
g_pHack->vehicleGod(g_pSettings->getFeature(g_iFeature[FEATURE_V_TRUEGOD]));
g_pHack->vehicleGravity(g_pSettings->getFeature(g_iFeature[FEATURE_V_GRAVITY]));
g_pHack->vehicleBulletproofTires(g_pSettings->getFeature(g_iFeature[FEATURE_V_BULLETPROOFTIRES]));
g_pHack->boost(g_pSettings->getFeature(g_iFeature[FEATURE_V_BOOST]));
g_pHack->vehicleRocketRechargeSpeed(g_pSettings->getFeature(g_iFeature[FEATURE_V_RECHARGE_SPEED]));
if (g_pHack->m_vehicle.loadHandling())
{
g_pHack->vehicleAccel(g_pSettings->getFeature(g_iFeature[FEATURE_V_ACCELERATION]));
g_pHack->vehicleBrake(g_pSettings->getFeature(g_iFeature[FEATURE_V_BRAKEFORCE]));
g_pHack->vehicleTraction(g_pSettings->getFeature(g_iFeature[FEATURE_V_TRACTION]));
g_pHack->vehicleDeformation(g_pSettings->getFeature(g_iFeature[FEATURE_V_DEFORMATION]));
g_pHack->vehicleUpShift(g_pSettings->getFeature(g_iFeature[FEATURE_V_UPSHIFT]));
g_pHack->vehicleDownShift(g_pSettings->getFeature(g_iFeature[FEATURE_V_DOWNSHIFT]));
g_pHack->vehicleSuspensionForce(g_pSettings->getFeature(g_iFeature[FEATURE_V_SUSPENSION_FORCE]));
g_pHack->vehicleMass(g_pSettings->getFeature(g_iFeature[FEATURE_V_MASS]));
g_pHack->vehicleBuoyancy(g_pSettings->getFeature(g_iFeature[FEATURE_V_BUOYANCY]));
g_pHack->vehicleHandbrakeForce(g_pSettings->getFeature(g_iFeature[FEATURE_V_HANDBRAKEFORCE]));
g_pHack->vehicleSuspensionHeigh(g_pSettings->getFeature(g_iFeature[FEATURE_V_SUSPENSION_HEIGH]));
g_pHack->vehicleColisionDamageMult(g_pSettings->getFeature(g_iFeature[FEATURE_V_COLISION_DAMAGE_MP]));
g_pHack->vehicleWeaponDamageMult(g_pSettings->getFeature(g_iFeature[FEATURE_V_WEAPON_DAMAGE_MP]));
g_pHack->vehicleEngineDamageMult(g_pSettings->getFeature(g_iFeature[FEATURE_V_ENGINE_DAMAGE_MP]));
}
}
if (!(btInit & INITPTR_INVALID_WEAPON) && g_pHack->m_weapon.loadWeapon())
{
g_pHack->weaponBulletEdit(g_pSettings->getFeature(g_iFeature[FEATURE_W_BULLET_EDIT]));
g_pHack->noSpread(g_pSettings->getFeature(g_iFeature[FEATURE_W_SPREAD]));
g_pHack->noRecoil(g_pSettings->getFeature(g_iFeature[FEATURE_W_RECOIL]));
g_pHack->quickReload(g_pSettings->getFeature(g_iFeature[FEATURE_W_RELOAD]));
g_pHack->bulletDamage(g_pSettings->getFeature(g_iFeature[FEATURE_W_DAMAGE]));
g_pHack->weaponRange(g_pSettings->getFeature(g_iFeature[FEATURE_W_RANGE]));
g_pHack->weaponSpin(g_pSettings->getFeature(g_iFeature[FEATURE_W_SPINUP]));
g_pHack->weaponForceOnPed(g_pSettings->getFeature(g_iFeature[FEATURE_W_FORCE_ON_PED]));
g_pHack->weaponForceOnVehicle(g_pSettings->getFeature(g_iFeature[FEATURE_W_FORCE_ON_VEHICLE]));
g_pHack->weaponForceOnHeli(g_pSettings->getFeature(g_iFeature[FEATURE_W_FORCE_ON_HELI]));
g_pHack->bulletBatch(g_pSettings->getFeature(g_iFeature[FEATURE_W_BULLET_BATCH]));
g_pHack->muzzleVelocity(g_pSettings->getFeature(g_iFeature[FEATURE_W_MUZZLE_VELOCITY]));
g_pHack->infAmmo(g_pSettings->getFeature(g_iFeature[FEATURE_W_AMMO]));
g_pHack->noReload(g_pSettings->getFeature(g_iFeature[FEATURE_W_NORELOAD]));
}
if (!(btInit & INITPTR_INVALID_TUNABLE))
{
g_pHack->tunableRpMult(g_pSettings->getFeature(g_iFeature[FEATURE_T_RP_MP]));
g_pHack->tunableApMult(g_pSettings->getFeature(g_iFeature[FEATURE_T_AP_MP]));
g_pHack->tunableMissionPayout(g_pSettings->getFeature(g_iFeature[FEATURE_T_MISSION_PAYOUT]));
g_pHack->tunableOrbitalCannonCooldown(g_pSettings->getFeature(g_iFeature[FEATURE_T_ORBITAL_CANNON]));
g_pHack->tunableBunkerResearch(g_pSettings->getFeature(g_iFeature[FEATURE_T_BUNKER_RESEARCH]));
g_pHack->tunableAntiIdleKick(g_pSettings->getFeature(g_iFeature[FEATURE_T_ANTI_IDLE_KICK]));
}
if (!(btInit & INITPTR_INVALID_GLOBAL))
{
g_pHack->selfDropMoney(g_pSettings->getFeature(g_iFeature[FEATURE_P_MONERY_DROP]));
g_pHack->consumeStatQueue();
}
//g_pHack->renderPlayerList(g_iFeature[FEATURE_P_PLAYER_LIST], g_iFeaturePlayerList);
}
Sleep(1);
}
g_bKillHack = true;
return 0;
}
//Kill the program; Prototype in stdafx.h
void killProgram()
{
g_bKillSwitch = true; //enable thread killswitch
g_pSettings->m_iniParser.write(); //save options
//make sure we shut down all threads before deleting the objects
while (!g_bKillAttach || !g_bKillRender || !g_bKillHack)
Sleep(1);
//restore patched code
feat dummyFeat;
dummyFeat.m_bRestored = false;
g_pHack->noReload(&dummyFeat);
dummyFeat.m_bRestored = false;
g_pHack->infAmmo(&dummyFeat);
delete g_pHack;
delete g_pD3D9Render;
delete g_pSettings;
delete g_pMemMan;
exit(0);
}

BIN
subVersion/mask.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

124
subVersion/memManager.cpp Normal file
View File

@@ -0,0 +1,124 @@
/*
Copyright 2016-2017 sub1to
This file is part of subVersion GTA:O SC External Hack.
subVersion GTA:O SC External Hack is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
subVersion GTA:O SC External Hack is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
*/
#include "stdafx.h"
memManager::memManager() {}
memManager::memManager(LPCSTR name)
{
m_szWindowName = name;
}
memManager::~memManager()
{
CloseHandle(m_hProc);
}
bool memManager::attach()
{
if(m_hProc != nullptr)
return 1;
if(!this->findWindow())
return 0;
DWORD dwProcId;
GetWindowThreadProcessId(m_hWndTarget, &dwProcId);
if(!dwProcId)
return 0;
m_hProc = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_QUERY_INFORMATION, 0, dwProcId);
if(m_hProc == nullptr)
return 0;
initPtr();
return 1;
}
HMODULE memManager::getModuleAddress(char* moduleName)
{
HMODULE hModBuf[0xff];
DWORD bN;
UINT i;
if(EnumProcessModulesEx(m_hProc, hModBuf, sizeof(hModBuf), &bN, LIST_MODULES_64BIT))
{
for(i = 0; i < (bN / sizeof(HMODULE)); i++)
{
TCHAR szPath[MAX_PATH];
if(GetModuleFileNameEx(m_hProc, hModBuf[i], szPath, sizeof(szPath) / sizeof(TCHAR)))
{
std::string szName = szPath;
if(szName.find(moduleName) != std::string::npos)
return hModBuf[i];
}
}
}
return 0;
}
bool memManager::findWindow()
{
m_hWndTarget = FindWindow(nullptr, m_szWindowName);
if(!m_hWndTarget)
return 0;
return 1;
}
HWND memManager::getWindow()
{
return m_hWndTarget;
}
void memManager::setWindowName(LPCSTR str)
{
m_szWindowName = str;
}
void memManager::initPtr()
{
HMODULE hModule = memManager::getModuleAddress("steam_api64.dll");
if (hModule != 0)
{
//Steam
ADDRESS_WORLD = 0x24CD000;
ADDRESS_BLIP = 0x1F524F0;
ADDRESS_AMMO = 0x101BFBD;
ADDRESS_MAGAZINE = 0x101BF78;
ADDRESS_TUNABLE = 0x2D765E8;
//ADDRESS_WEAPON = 0x02810670;
ADDRESS_GLOBAL = 0x2D765E0;
ADDRESS_PLAYER_LIST = 0x1D98AE8;
ADDRESS_REPLAY_INTERFACE = 0x1EC7E40;
}
else
{
//Epic
ADDRESS_WORLD = 0x24C8858;
ADDRESS_BLIP = 0x1F4F940;
ADDRESS_AMMO = 0x101B6D9;
ADDRESS_MAGAZINE = 0x101B694;
ADDRESS_TUNABLE = 0x2D70DA8;
//ADDRESS_WEAPON = 0x0280E650;
ADDRESS_GLOBAL = 0x2D70DA0;
ADDRESS_PLAYER_LIST = 0x1D949A0;
ADDRESS_REPLAY_INTERFACE = 0x1EC3828;
}
}

67
subVersion/memManager.h Normal file
View File

@@ -0,0 +1,67 @@
/*
Copyright 2016-2017 sub1to
This file is part of subVersion GTA:O SC External Hack.
subVersion GTA:O SC External Hack is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
subVersion GTA:O SC External Hack is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#ifndef MEMMANAGER_H
#define MEMMANAGER_H
class memManager
{
public:
memManager();
memManager(LPCSTR name);
~memManager();
bool attach();
HMODULE getModuleAddress(char* moduleName);
bool findWindow();
HWND getWindow();
void setWindowName(LPCSTR str);
void initPtr();
template <typename rT>
void readMem(DWORD_PTR address, rT* output, DWORD size = NULL, DWORD prot = NULL)
{
size = (size == NULL) ? sizeof(rT) : size;
ReadProcessMemory(m_hProc, (LPVOID) address, output, size, NULL);
return;
}
template <typename wT>
void writeMem(DWORD_PTR address, wT* value , DWORD size = NULL, DWORD prot = NULL)
{
size = (size == NULL) ? sizeof(wT) : size;
WriteProcessMemory(m_hProc, (LPVOID) address, value, size, NULL);
return;
}
template <typename wT>
void writeMem(DWORD_PTR address, wT value, DWORD size = NULL, DWORD prot = NULL)
{
size = (size == NULL) ? sizeof(wT) : size;
WriteProcessMemory(m_hProc, (LPVOID)address, &value, size, NULL);
return;
}
protected:
LPCSTR m_szWindowName;
HWND m_hWndTarget;
HANDLE m_hProc = nullptr;
};
extern memManager* g_pMemMan;
#endif

BIN
subVersion/resource.h Normal file

Binary file not shown.

649
subVersion/settings.cpp Normal file
View File

@@ -0,0 +1,649 @@
/*
Copyright 2016-2017 sub1to
This file is part of subVersion GTA:O SC External Hack.
subVersion GTA:O SC External Hack is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
subVersion GTA:O SC External Hack is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
*/
#include "stdafx.h"
/*
//SETTINGS CLASS
*/
settings::settings()
{
m_iniParser.m_szFile = "settings.ini";
m_iniParser.read();
//keys
m_iKeys[keyExit] = strToVk(m_iniParser.getValue<std::string>("Exit", "Keys"));
m_iKeys[keyMenu] = strToVk(m_iniParser.getValue<std::string>("Menu", "Keys"));
m_iKeys[keyMenuUp] = strToVk(m_iniParser.getValue<std::string>("MenuUp", "Keys"));
m_iKeys[keyMenuDown] = strToVk(m_iniParser.getValue<std::string>("MenuDown", "Keys"));
m_iKeys[keyMenuLeft] = strToVk(m_iniParser.getValue<std::string>("MenuLeft", "Keys"));
m_iKeys[keyMenuRight] = strToVk(m_iniParser.getValue<std::string>("MenuRight", "Keys"));
m_iKeys[keyMenuSelect] = strToVk(m_iniParser.getValue<std::string>("MenuSelect", "Keys"));
m_iKeys[keyMenuBack] = strToVk(m_iniParser.getValue<std::string>("MenuBack", "Keys"));
m_iKeys[keyMenuTabNext] = strToVk(m_iniParser.getValue<std::string>("MenuTabNext", "Keys"));
m_iKeys[keyMenuTabPrev] = strToVk(m_iniParser.getValue<std::string>("MenuTabPrev", "Keys"));
m_iKeys[keyMenuSave] = strToVk(m_iniParser.getValue<std::string>("MenuSave", "Keys"));
m_iKeys[keyHotTeleport] = strToVk(m_iniParser.getValue<std::string>("HotTeleport", "Keys"));
m_iKeys[keyHotWanted] = strToVk(m_iniParser.getValue<std::string>("HotWanted", "Keys"));
m_iKeys[keyHotHealth] = strToVk(m_iniParser.getValue<std::string>("HotHealth", "Keys"));
m_iKeys[keyHotAmmo] = strToVk(m_iniParser.getValue<std::string>("HotAmmo", "Keys"));
}
settings::~settings()
{
for(int i = 0; i < MAX_MENU_FEATURES; i++)
{
if(m_pFeature[i])
delete m_pFeature[i];
}
for(int i = 0; i < MAX_MENU_TABS; i++)
{
if(m_pFeatureCat[i])
delete m_pFeatureCat[i];
}
}
void settings::toggleMenu()
{
m_bMenuActive = !m_bMenuActive;
return;
}
bool settings::isMenuActive()
{
return m_bMenuActive;
}
void settings::menuDown()
{
if(m_iActiveFeature + 1 < m_nFeatureCur)
{
m_iActiveFeature++;
if (m_iActiveFeature == m_iFeatureCurDisplayOffset + MAX_MENU_FEATURES_DISPLAYED - MENU_FEATURE_SCROLL_PADDING)
{
int displayOffset = m_iActiveFeature - (MAX_MENU_FEATURES_DISPLAYED - 1 - MENU_FEATURE_SCROLL_PADDING);
displayOffset = (displayOffset > m_nFeatureCur - MAX_MENU_FEATURES_DISPLAYED) ? m_nFeatureCur - MAX_MENU_FEATURES_DISPLAYED : displayOffset;
displayOffset = (displayOffset < 0) ? 0 : displayOffset;
m_iFeatureCurDisplayOffset = displayOffset;
}
}
else
{
m_iActiveFeature = 0;
m_iFeatureCurDisplayOffset = 0;
}
return;
}
void settings::menuUp()
{
if(m_iActiveFeature - 1 >= 0)
{
m_iActiveFeature--;
if (m_iActiveFeature == m_iFeatureCurDisplayOffset + MENU_FEATURE_SCROLL_PADDING - 1)
{
int displayOffset = m_iActiveFeature - MENU_FEATURE_SCROLL_PADDING;
displayOffset = (displayOffset > m_nFeatureCur - MAX_MENU_FEATURES_DISPLAYED) ? m_nFeatureCur - MAX_MENU_FEATURES_DISPLAYED : displayOffset;
displayOffset = (displayOffset < 0) ? 0 : displayOffset;
m_iFeatureCurDisplayOffset = displayOffset;
}
}
else
{
m_iActiveFeature = m_nFeatureCur - 1;
int displayOffset = m_nFeatureCur - MAX_MENU_FEATURES_DISPLAYED;
displayOffset = (displayOffset < 0) ? 0 : displayOffset;
m_iFeatureCurDisplayOffset = displayOffset;
}
return;
}
void settings::menuRight()
{
return this->getFeatureCur(m_iActiveFeature)->inc();
}
void settings::menuLeft()
{
return this->getFeatureCur(m_iActiveFeature)->dec();
}
void settings::menuTabRight()
{
while(m_pFeatureCur[0]->m_iCat < 0)
this->menuBack();
m_pFeatureCat[m_iActiveCat]->m_iDisplayOffsetRet = m_iFeatureCurDisplayOffset;
m_pFeatureCat[m_iActiveCat]->m_iActiveFeatureRet = m_iActiveFeature;
if(m_iActiveCat + 1 < m_nFeatureCat)
this->setActiveCat(m_iActiveCat + 1);
else
this->setActiveCat(0);
m_iFeatureCurDisplayOffset = m_pFeatureCat[m_iActiveCat]->m_iDisplayOffsetRet;
m_iActiveFeature = m_pFeatureCat[m_iActiveCat]->m_iActiveFeatureRet;
return;
}
void settings::menuTabLeft()
{
while(m_pFeatureCur[0]->m_iCat < 0)
this->menuBack();
m_pFeatureCat[m_iActiveCat]->m_iDisplayOffsetRet = m_iFeatureCurDisplayOffset;
m_pFeatureCat[m_iActiveCat]->m_iActiveFeatureRet = m_iActiveFeature;
if(m_iActiveCat - 1 >= 0)
this->setActiveCat(m_iActiveCat - 1);
else
this->setActiveCat(m_nFeatureCat - 1);
m_iFeatureCurDisplayOffset = m_pFeatureCat[m_iActiveCat]->m_iDisplayOffsetRet;
m_iActiveFeature = m_pFeatureCat[m_iActiveCat]->m_iActiveFeatureRet;
return;
}
void settings::menuSelect()
{
feat* feat = this->getFeatureCur(m_iActiveFeature);
feat->toggle();
return;
}
void settings::menuBack()
{
if(m_pFeatureCur[0]->m_iParent >= 0) //if the buffer is filled with features that have a parent, not a category
{
featParent* parent = dynamic_cast<featParent*>(m_pFeature[m_pFeatureCur[0]->m_iParent]);
if(parent->m_iCat < 0)
this->fillFeatureCurBuffer(parent->m_iParent, FFB_PARENT);
else
this->fillFeatureCurBuffer(parent->m_iCat, FFB_CATEGORY);
m_iFeatureCurDisplayOffset = parent->m_iDisplayOffsetRet;
m_iActiveFeature = parent->m_iActiveFeatureRet;
}
else
{
toggleMenu();
}
return;
}
int settings::addFeatureCategory(std::wstring name)
{
if(m_nFeatureCat >= MAX_MENU_TABS) //prevent buffer overflow
return -1;
m_pFeatureCat[m_nFeatureCat] = new featCat;
m_pFeatureCat[m_nFeatureCat]->m_iId = m_nFeatureCat;
m_pFeatureCat[m_nFeatureCat]->m_szName = name;
m_nFeatureCat++;
return m_nFeatureCat - 1;
}
int settings::addFeature(int cat, int parent, std::wstring name, featType type)
{
if( m_nFeature >= MAX_MENU_FEATURES || //buffer overflow
(parent < 0 && m_pFeatureCat[cat] == nullptr) || //invalid cat
(cat < 0 && (m_pFeature[parent] == nullptr || m_pFeature[parent]->m_type != feat_parent)) || //invalid parent
(cat < 0 && parent < 0) || (cat > 0 && parent > 0)) //both cat and parent were provided
return -1;
switch(type)
{
case feat_toggle:
m_pFeature[m_nFeature] = new feat;
break;
case feat_btn:
m_pFeature[m_nFeature] = new featBtn;
break;
case feat_slider:
m_pFeature[m_nFeature] = new featSlider;
break;
case feat_teleport:
m_pFeature[m_nFeature] = new featTeleport;
break;
case feat_parent:
m_pFeature[m_nFeature] = new featParent;
break;
}
m_pFeature[m_nFeature]->m_iId = m_nFeature;
m_pFeature[m_nFeature]->m_iCat = cat;
m_pFeature[m_nFeature]->m_iParent = parent;
m_pFeature[m_nFeature]->m_type = type;
m_pFeature[m_nFeature]->m_szName = name;
m_nFeature++;
return m_nFeature - 1;
}
int settings::addFeature(int cat, int parent, std::wstring name, featType type, int index, float arg)
{
int id = this->addFeature(cat, parent, name, type);
if (id < 0)
return id;
dynamic_cast<featBtn*>(m_pFeature[id])->m_iIndex = index;
dynamic_cast<featBtn*>(m_pFeature[id])->m_fArg = arg;
return id;
}
int settings::addFeature(int cat, int parent, std::wstring name, featType type, std::string iniKey)
{
int id = this->addFeature(cat, parent, name, type);
if(id < 0)
return id;
m_pFeature[id]->m_szIniKey = iniKey;
m_pFeature[id]->m_bOn = (bool) m_iniParser.getValue<bool>(iniKey, "FeatureToggle");
m_pFeature[id]->m_bRestored = (m_pFeature[id]->m_bOn) ? false : true;
return id;
}
int settings::addFeature(int cat, int parent, std::wstring name, featType type, std::string iniKey, float min, float max)
{
int id = this->addFeature(cat, parent, name, type, iniKey);
if(id < 0)
return id;
dynamic_cast<featSlider*>(m_pFeature[id])->m_fMin = min;
dynamic_cast<featSlider*>(m_pFeature[id])->m_fMax = max;
float v = m_iniParser.getValue<float>(iniKey, "FeatureValue");
if(v <= max && v >= min)
dynamic_cast<featSlider*>(m_pFeature[id])->m_fValue = v;
else
{
dynamic_cast<featSlider*>(m_pFeature[id])->m_fValue = min;
m_iniParser.setValue<float>(iniKey, min, "FeatureValue");
}
return id;
}
int settings::addFeature(int cat, int parent, std::wstring name, featType type, std::string iniKey, float min, float max, float mod)
{
int id = this->addFeature(cat, parent, name, type, iniKey, min, max);
if(id < 0)
return id;
dynamic_cast<featSlider*>(m_pFeature[id])->m_fMod = mod;
return id;
}
int settings::addFeature(int cat, int parent, std::wstring name, featType type, std::string iniKey, teleType tpType)
{
if(tpType != tp_saved)
return -1;
int id = this->addFeature(cat, parent, name, type, iniKey);
if(id < 0)
return id;
dynamic_cast<featTeleport*>(m_pFeature[id])->m_tpType = tpType;
dynamic_cast<featTeleport*>(m_pFeature[id])->m_v3Pos.x = m_iniParser.getValue<float>(iniKey + "_x", "Teleport");
dynamic_cast<featTeleport*>(m_pFeature[id])->m_v3Pos.y = m_iniParser.getValue<float>(iniKey + "_y", "Teleport");
dynamic_cast<featTeleport*>(m_pFeature[id])->m_v3Pos.z = m_iniParser.getValue<float>(iniKey + "_z", "Teleport");
dynamic_cast<featTeleport*>(m_pFeature[id])->m_szName += L" | " + StringToWString(m_iniParser.getValue<std::string>(iniKey + "_name", "Teleport"));
return id;
}
int settings::addFeature(int cat, int parent, std::wstring name, featType type, teleType tpType)
{
if(tpType == tp_saved)
return -1;
int id = this->addFeature(cat, parent, name, type);
if(id < 0)
return id;
dynamic_cast<featTeleport*>(m_pFeature[id])->m_tpType = tpType;
return id;
}
int settings::addFeature(int cat, int parent, std::wstring name, featType type, teleType tpType, float x, float y, float z)
{
if(tpType == tp_saved)
return -1;
int id = this->addFeature(cat, parent, name, type, tpType);
if(id < 0)
return id;
dynamic_cast<featTeleport*>(m_pFeature[id])->m_v3Pos.x = x;
dynamic_cast<featTeleport*>(m_pFeature[id])->m_v3Pos.y = y;
dynamic_cast<featTeleport*>(m_pFeature[id])->m_v3Pos.z = z;
return id;
}
int settings::updataFeature(int id, int cat, int parent, std::wstring name, featType type)
{
if (id >= MAX_MENU_FEATURES || //buffer overflow
(parent < 0 && m_pFeatureCat[cat] == nullptr) || //invalid cat
(cat < 0 && (m_pFeature[parent] == nullptr || m_pFeature[parent]->m_type != feat_parent)) || //invalid parent
(cat < 0 && parent < 0) || (cat > 0 && parent > 0)) //both cat and parent were provided
return -1;
m_pFeature[id]->m_iId = id;
m_pFeature[id]->m_iCat = cat;
m_pFeature[id]->m_iParent = parent;
m_pFeature[id]->m_type = type;
m_pFeature[id]->m_szName = name;
return id;
}
int settings::updataFeature(int id, int cat, int parent, std::wstring name, featType type, teleType tpType, float x, float y, float z)
{
if (tpType == tp_saved)
return -1;
int ret = this->updataFeature(id, cat, parent, name, type);
if (ret < 0)
return ret;
dynamic_cast<featTeleport*>(m_pFeature[ret])->m_tpType = tpType;
dynamic_cast<featTeleport*>(m_pFeature[ret])->m_v3Pos.x = x;
dynamic_cast<featTeleport*>(m_pFeature[ret])->m_v3Pos.y = y;
dynamic_cast<featTeleport*>(m_pFeature[ret])->m_v3Pos.z = z;
return ret;
}
int settings::getFeatureCategoryCount()
{
return m_nFeatureCat;
}
featCat* settings::getFeatureCategory(int id)
{
if(id > m_nFeatureCat)
return 0;
return m_pFeatureCat[id];
}
int settings::getActiveCat()
{
return m_iActiveCat;
}
int settings::setActiveCat(int cat)
{
if(cat > m_nFeatureCat)
return 0;
m_iActiveCat = cat;
this->fillFeatureCurBuffer(cat, FFB_CATEGORY);
return 1;
}
bool settings::fillFeatureCurBuffer(int id, BYTE flag)
{
//prevent race conditions
while(!g_pSettings->lockFeatureCur())
Sleep(1);
ZeroMemory(&m_pFeatureCur, sizeof(feat*) * MAX_MENU_FEATURES); //clear buffer
m_nFeatureCur = 0;
m_iActiveFeature = 0;
m_iFeatureCurDisplayOffset = 0;
for(int i = 0; i < m_nFeature; i++) //create a list of features from current category
{
if( (m_pFeature[i]->m_iCat == id && flag & FFB_CATEGORY) ||
(m_pFeature[i]->m_iParent == id && flag & FFB_PARENT))
{
m_pFeatureCur[m_nFeatureCur] = m_pFeature[i];
m_nFeatureCur++;
}
}
this->unlockFeatureCur();
return 1;
}
int settings::getFeatureCurCount()
{
return m_nFeatureCur;
}
feat* settings::getFeatureCur(int i)
{
if(i > m_nFeatureCur)
return 0;
return m_pFeatureCur[i];
}
int settings::getFeatureCount()
{
return m_nFeature;
}
feat* settings::getFeature(int id)
{
if(id > m_nFeature)
return 0;
return m_pFeature[id];
}
int settings::getActiveFeature()
{
return m_iActiveFeature;
}
bool settings::getFeatureCurLock()
{
return m_bFeatureCurLock;
}
bool settings::lockFeatureCur()
{
if(m_bFeatureCurLock)
return false;
m_bFeatureCurLock = true;
return true;
}
bool settings::unlockFeatureCur()
{
m_bFeatureCurLock = false;
return true;
}
int settings::getDisplayOffset()
{
return m_iFeatureCurDisplayOffset;
}
/*
//FEATURE CLASSES
*/
feat::feat() {}
feat::~feat() {}
void feat::toggle()
{
m_bOn = !m_bOn;
if(m_bOn)
m_bRestored = false;
if(m_szIniKey != "")
g_pSettings->m_iniParser.setValue<bool>(m_szIniKey, (int) m_bOn, "FeatureToggle");
return;
}
void feat::inc() {}
void feat::dec() {}
featBtn::featBtn() {}
featBtn::~featBtn() {}
void featBtn::toggle()
{
(*g_pCBMap)[this->m_iIndex]->Exec(&this->m_fArg);
}
featSlider::featSlider() {}
featSlider::~featSlider() {}
void featSlider::inc()
{
float v = (m_fValue + ( (m_fMax - m_fMin) * m_fMod) );
if(v <= m_fMax)
m_fValue = v;
else
m_fValue = m_fMax;
g_pSettings->m_iniParser.setValue<float>(m_szIniKey, m_fValue, "FeatureValue");
return;
}
void featSlider::dec()
{
float v = (m_fValue - ( (m_fMax - m_fMin) * m_fMod) );
if(v >= m_fMin)
m_fValue = v;
else
m_fValue = m_fMin;
g_pSettings->m_iniParser.setValue<float>(m_szIniKey, m_fValue, "FeatureValue");
return;
}
featTeleport::featTeleport() {}
featTeleport::~featTeleport() {}
void featTeleport::toggle()
{
switch(m_tpType)
{
case tp_waypoint:
g_pHack->teleportWaypoint();
break;
case tp_objective:
g_pHack->teleportObjective();
break;
case tp_saved:
case tp_static:
g_pHack->teleport(m_v3Pos);
break;
}
}
featParent::featParent() {}
featParent::~featParent() {}
void featParent::toggle()
{
m_iActiveFeatureRet = g_pSettings->getActiveFeature();
m_iDisplayOffsetRet = g_pSettings->getDisplayOffset();
g_pSettings->fillFeatureCurBuffer(this->m_iId, FFB_PARENT);
return;
}
/*
//INI PARSER CLASS
*/
iniParser::iniParser(){};
iniParser::iniParser(std::string szFile) :
m_szFile(szFile)
{};
iniParser::~iniParser(){};
void iniParser::read()
{
std::ifstream file;
file.open(m_szFile, std::ios::in);
if (!file.is_open())
{
MessageBoxW(nullptr, L"δ<EFBFBD>ҵ<EFBFBD>settings.ini<6E><69><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>뽫ѹ<EBBDAB><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ѹ<EFBFBD><D1B9>ͬһĿ¼!", L"subVersion<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>", MB_OK | MB_ICONERROR);
g_bKillAttach = true;
killProgram();
return;
}
std::string szLine;
int iSection = -1;
std::regex regexSection("^\\[([A-Za-z0-9_]+)\\]$"),
regexKey ("^([A-Za-z0-9_]+)=([A-Za-z0-9_\\-*/+.\\s]+)$"),
regexComment("^(;|#)(.*)$");
while(std::getline(file, szLine, '\n'))
{
std::smatch regexMatch; //std::string match object
if(szLine == "")
continue;
else if(std::regex_search(szLine, regexMatch, regexComment) && regexMatch.size() > 1)
m_key.push_back({"__COMMENT__", regexMatch[2], iSection});
else if(std::regex_search(szLine, regexMatch, regexSection) && regexMatch.size() > 1)
{
iSection = (int) m_section.size();
m_section.push_back(regexMatch[1]);
}
else if(std::regex_search(szLine, regexMatch, regexKey) && regexMatch.size() > 1)
m_key.push_back({regexMatch.str(1), regexMatch[2], iSection});
}
return;
}
void iniParser::write()
{
std::ofstream file;
file.open(m_szFile, std::ios::out | std::ios::trunc);
if(!file.is_open())
return;
for(int j = 0; j <= m_section.size(); j++)
{
if(j > 0)
file << "[" << m_section[j - 1] << "]\n";
for(int i = 0; i < m_key.size(); i++)
{
if(m_key[i].section != j - 1)
continue;
if(m_key[i].key == "__COMMENT__")
file << ";" ;
else
file << m_key[i].key << "=";
file << m_key[i].value << "\n";
}
}
return;
}
int iniParser::findKey(std::string szKey, std::string szSection)
{
for(int i = 0; i < m_key.size(); i++)
if(m_key[i].key == szKey && (szSection == "" || szSection == m_section[m_key[i].section]))
return i;
return -1;
}
int iniParser::createKey(std::string szKey, std::string szSection)
{
int iSection = -1;
if(szSection != "")
{
for(int i = 0; i < m_section.size(); i++)
if(m_section[i] == szSection)
{
iSection = i;
break;
}
}
m_key.push_back({szKey, "", iSection});
return (int) m_key.size() - 1;
}

255
subVersion/settings.h Normal file
View File

@@ -0,0 +1,255 @@
/*
Copyright 2016-2017 sub1to
This file is part of subVersion GTA:O SC External Hack.
subVersion GTA:O SC External Hack is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
subVersion GTA:O SC External Hack is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#ifndef SETTINGS_H
#define SETTINGS_H
#define MAX_SAVEDPOS 0x06 //max saved positions (to teleport to)
#define MAX_PROPERTIES 0x60 //max iniparser properties
#define MAX_KEYS 0x10 //max indexed keys (keybinds)
#define MAX_MENU_TABS 0x08 //max amount of overlay menu tabs
#define MAX_MENU_FEATURES 0xFFF //max amount of features
#define MAX_MENU_FEATURES_DISPLAYED 0x14 //max features displayed
#define MENU_FEATURE_SCROLL_PADDING 0x02
#define NAME_BUFFER_SIZE 0x20
#define FFB_CATEGORY 1 << 0
#define FFB_PARENT 1 << 1
//Required keys, loaded in settings::settings
#define keyExit 0x0
#define keyMenu 0x1
#define keyMenuUp 0x2
#define keyMenuDown 0x3
#define keyMenuLeft 0x4
#define keyMenuRight 0x5
#define keyMenuSelect 0x6
#define keyMenuTabNext 0x7
#define keyMenuTabPrev 0x8
#define keyMenuSave 0x9
#define keyHotTeleport 0xA
#define keyHotWanted 0xB
#define keyHotHealth 0xC
#define keyHotAmmo 0xD
#define keyMenuBack 0xE
class featCat
{
public:
int m_iId,
m_iActiveFeatureRet = 0,
m_iDisplayOffsetRet = 0;
std::wstring m_szName;
};
enum featType { feat_btn, feat_toggle, feat_slider, feat_teleport, feat_parent };
enum teleType { tp_saved, tp_waypoint, tp_static, tp_objective };
class feat
{
public:
int m_iId,
m_iCat,
m_iParent;
featType m_type;
std::wstring m_szName;
std::string m_szIniKey;
bool m_bOn = false,
m_bRestored = true;
feat();
virtual ~feat();
virtual void toggle();
virtual void inc();
virtual void dec();
};
class featBtn : public feat
{
public:
int m_iIndex;
float m_fArg;
featBtn();
~featBtn();
void toggle();
};
class featSlider : public feat
{
public:
float m_fValue,
m_fMin,
m_fMax,
m_fMod = .10f;
featSlider();
~featSlider();
void inc();
void dec();
};
class featTeleport : public feat
{
public:
teleType m_tpType;
v3 m_v3Pos;
featTeleport();
~featTeleport();
void toggle();
};
class featParent : public feat
{
public:
int m_iActiveFeatureRet = 0,
m_iDisplayOffsetRet = 0;
featParent();
~featParent();
void toggle();
};
typedef struct
{
std::string key,
value;
int section;
} iniProperty;
class iniParser
{
public:
std::string m_szFile;
iniParser();
iniParser(std::string szFile);
~iniParser();
void read();
void write();
int findKey(std::string szKey, std::string szSection = "");
int createKey(std::string szKey, std::string szSection = "");
template <typename rT>
rT getValue(std::string szKey, std::string szSection = "")
{
rT r{};
int i = this->findKey(szKey, szSection);
if(i == -1 || (szSection != "" && (m_key[i].section < 0 || m_section[m_key[i].section] != szSection)))
return r;
std::stringstream ss(m_key[i].value);
ss >> r;
return r;
}
template <>
std::string getValue(std::string szKey, std::string szSection)
{
std::string r{};
int i = this->findKey(szKey, szSection);
if(i == -1 || (szSection != "" && (m_key[i].section < 0 || m_section[m_key[i].section] != szSection)))
return r;
return m_key[i].value;
}
template <typename wT>
bool setValue(std::string szKey, wT value, std::string szSection = "")
{
int i = findKey(szKey, szSection);
if(i == -1 || (szSection != "" && (m_key[i].section < 0 || m_section[m_key[i].section] != szSection)))
i = createKey(szKey, szSection);
m_key[i].value = std::to_string(value);
return true;
}
protected:
std::vector<std::string> m_section;
std::vector<iniProperty> m_key;
};
class settings
{
public:
int m_iKeys[MAX_KEYS];
iniParser m_iniParser;
settings();
~settings();
void toggleMenu();
bool isMenuActive();
void menuUp(); //prev feature
void menuDown(); //next feature
void menuLeft(); //float value down
void menuRight(); //float value up
void menuSelect(); //toggle feature/teleport or w/e
void menuBack();
void menuTabLeft(); //prev tab
void menuTabRight(); //next tab
int addFeatureCategory(std::wstring name);
int getFeatureCategoryCount();
featCat* getFeatureCategory(int id);
int setActiveCat(int);
int getActiveCat();
bool fillFeatureCurBuffer(int i, BYTE flags);
int addFeature(int cat, int parent, std::wstring name, featType type);
int addFeature(int cat, int parent, std::wstring name, featType type, std::string iniKey);
int addFeature(int cat, int parent, std::wstring name, featType type, int index,float arg);
int addFeature(int cat, int parent, std::wstring name, featType type, std::string iniKey, float min, float max);
int addFeature(int cat, int parent, std::wstring name, featType type, std::string iniKey, float min, float max, float mod);
int addFeature(int cat, int parent, std::wstring name, featType type, std::string iniKey, teleType tpType);
int addFeature(int cat, int parent, std::wstring name, featType type, teleType tpType);
int addFeature(int cat, int parent, std::wstring name, featType type, teleType tpType, float x, float y, float z);
int updataFeature(int id, int cat, int parent, std::wstring name, featType type);
int updataFeature(int id, int cat, int parent, std::wstring name, featType type, teleType tpType, float x, float y, float z);
int getFeatureCurCount();
feat* getFeatureCur(int i);
int getFeatureCount();
feat* getFeature(int id);
int getActiveFeature();
int getDisplayOffset();
bool getFeatureCurLock();
bool lockFeatureCur();
bool unlockFeatureCur();
protected:
featCat* m_pFeatureCat[MAX_MENU_TABS];
int m_nFeatureCat = 0;
int m_iActiveCat = 0; //index for featureParent [should be the same as id]
feat* m_pFeature[MAX_MENU_FEATURES];
int m_nFeature = 0; //total amount of features
int m_iActiveFeature = 0; //index for featureCur [DOES NOT HOLD ID!]
feat* m_pFeatureCur[MAX_MENU_FEATURES]; //list of features from current category
bool m_bFeatureCurLock = false;
int m_nFeatureCur = 0; //amount of features in current tab
bool m_bMenuActive = false;
int m_iFeatureCurDisplayOffset = 0;
};
extern settings* g_pSettings;
#endif

112
subVersion/settings.ini Normal file
View File

@@ -0,0 +1,112 @@
;
; Keys
; Full list of valid keys in KEYS.txt
;
[Keys]
Exit=F9
Menu=NUM-
MenuUp=NUM8
MenuDown=NUM2
MenuLeft=NUM4
MenuRight=NUM6
MenuSelect=NUM5
MenuBack=NUM0
MenuTabNext=NUM9
MenuTabPrev=NUM7
MenuSave=L
HotTeleport=F5
HotWanted=F6
HotHealth=F7
HotAmmo=F8
[Teleport]
pos0_name=Saved Position 1
pos0_x=0.00
pos0_y=0.00
pos1_name=Saved Position 2
pos1_x=0.00
pos1_y=0.00
pos2_name=Saved Position 3
pos2_x=0.00
pos2_y=0.00
pos3_name=Saved Position 4
pos3_x=0.00
pos3_y=0.00
pos4_name=Saved Position 5
pos4_x=0.00
pos4_y=0.00
pos5_name=Saved Position 6
pos5_x=0.00
pos5_y=0.00
[FeatureValue]
runSpd=1.000000
swimSpd=1.000000
quickReload=1.000000
bulletDamage=1.000000
weapRange=1.000000
bulletBatch=1.000000
muzzleVelo=1.000000
vehAccel=1.000000
vehUpShift=1.000000
vehBrakeForce=1.000000
vehTraction=1.000000
batchSpread=0.000000
wanted=0.000000
vehDeform=0.000000
vehGravity=0.000000
vehSuspensionForce=0.000000
vehDownShift=1.000000
vehRrchargeSpeed=0.500000
vehBuoyancy=1.000000
RP=1.000000
AP=1.000000
superPunch=0.000000
forceOnPed=1.000000
forceOnVeh=1.000000
forceOnHeli=1.000000
vehSuspensionHeigh=0.000000
[FeatureToggle]
trueGodMode=0
godMode=0
wanted=0
neverWanted=0
antiNpc=0
runSpd=0
swimSpd=0
superJump=0
explMelee=0
noRagdoll=0
infStam=0
noSpread=0
noRecoil=0
noReload=0
quickReload=0
bulletDamage=0
infAmmo=0
weapRange=0
weapSpin=0
explAmmo=0
fireAmmo=0
bulletBatch=0
batchSpread=0
muzzleVelo=0
vehTrueGodMode=0
vehGodMode=0
vehBulletproofTires=0
seatbelt=0
vehDeform=0
vehAccel=0
vehUpShift=0
vehBrakeForce=0
vehTraction=0
vehGravity=0
vehSuspensionForce=0
vehDownShift=0
superPunch=0
npcIgnore=0
bulletEdit=1
undeadOffradar=0
vehSuspensionHeigh=0
RP=0
vehRrchargeSpeed=0
OrbitalCannon=0
AntiIdleKick=1

118
subVersion/stdafx.cpp Normal file
View File

@@ -0,0 +1,118 @@
/*
Copyright 2016-2017 sub1to
This file is part of subVersion GTA:O SC External Hack.
subVersion GTA:O SC External Hack is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
subVersion GTA:O SC External Hack is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
*/
#include "stdafx.h"
DWORD strToVk(std::string str)
{
for(auto& c : str)
c = toupper(c);
if(str == "BACKSPACE") return 0x08;
if(str == "TAB") return 0x09;
if(str == "RETURN") return 0x0D;
if(str == "SHIFT") return 0x10;
if(str == "CONTROL") return 0x11;
if(str == "ALT") return 0x12;
if(str == "PAUSE") return 0x13;
if(str == "CAPSLOCK") return 0x14;
if(str == "ESCAPE") return 0x1B;
if(str == "SPACE") return 0x20;
if(str == "PAGEUP") return 0x21;
if(str == "PAGEDOWN") return 0x22;
if(str == "END") return 0x23;
if(str == "HOME") return 0x24;
if(str == "LEFT") return 0x25;
if(str == "UP") return 0x26;
if(str == "RIGHT") return 0x27;
if(str == "DOWN") return 0x28;
if(str == "INSERT") return 0x2D;
if(str == "DELETE") return 0x2E;
if(str == "0") return 0x30;
if(str == "1") return 0x31;
if(str == "2") return 0x32;
if(str == "3") return 0x33;
if(str == "4") return 0x34;
if(str == "5") return 0x35;
if(str == "6") return 0x36;
if(str == "7") return 0x37;
if(str == "8") return 0x38;
if(str == "9") return 0x39;
if(str == "A") return 0x41;
if(str == "B") return 0x42;
if(str == "C") return 0x43;
if(str == "D") return 0x44;
if(str == "E") return 0x45;
if(str == "F") return 0x46;
if(str == "G") return 0x47;
if(str == "H") return 0x48;
if(str == "I") return 0x49;
if(str == "J") return 0x4A;
if(str == "K") return 0x4B;
if(str == "L") return 0x4C;
if(str == "M") return 0x4D;
if(str == "N") return 0x4E;
if(str == "O") return 0x4F;
if(str == "P") return 0x50;
if(str == "Q") return 0x51;
if(str == "R") return 0x52;
if(str == "S") return 0x53;
if(str == "T") return 0x54;
if(str == "U") return 0x55;
if(str == "V") return 0x56;
if(str == "W") return 0x57;
if(str == "X") return 0x58;
if(str == "Y") return 0x59;
if(str == "Z") return 0x5A;
if(str == "NUM0") return 0x60;
if(str == "NUM1") return 0x61;
if(str == "NUM2") return 0x62;
if(str == "NUM3") return 0x63;
if(str == "NUM4") return 0x64;
if(str == "NUM5") return 0x65;
if(str == "NUM6") return 0x66;
if(str == "NUM7") return 0x67;
if(str == "NUM8") return 0x68;
if(str == "NUM9") return 0x69;
if(str == "NUM*") return 0x6A;
if(str == "NUM+") return 0x6B;
if(str == "NUM-") return 0x6D;
if(str == "NUMDEL") return 0x6E;
if(str == "NUM/") return 0x6F;
if(str == "F1") return 0x70;
if(str == "F2") return 0x71;
if(str == "F3") return 0x72;
if(str == "F4") return 0x73;
if(str == "F5") return 0x74;
if(str == "F6") return 0x75;
if(str == "F7") return 0x76;
if(str == "F8") return 0x77;
if(str == "F9") return 0x78;
if(str == "F10") return 0x79;
if(str == "F11") return 0x7A;
if(str == "F12") return 0x7B;
if(str == "NUMLOCK") return 0x90;
if(str == "SCROLLLOCK") return 0x91;
if(str == "LSHIFT") return 0xA0;
if(str == "RSHIFT") return 0xA1;
if(str == "LCONTROL") return 0xA2;
if(str == "RCONTROL") return 0xA3;
if(str == "LALT") return 0xA4;
if(str == "RALT") return 0xA5;
return 0;
}

290
subVersion/stdafx.h Normal file
View File

@@ -0,0 +1,290 @@
/*
Copyright 2016-2017 sub1to
This file is part of subVersion GTA:O SC External Hack.
subVersion GTA:O SC External Hack is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
subVersion GTA:O SC External Hack is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
*/
//#define __SC_VERSION__
//#define __STEAM_VERSION__
#ifndef STDAFX_H
#define STDAFX_H
#include <windows.h>
#include <windowsx.h>
#include <string>
#include <sstream>
#include <fstream>
#include <ctime>
#include <psapi.h>
#include <vector>
#include <regex>
#include <string>
#include <map>
#include <thread>
#include <deque>
#include <cmath>
#include <tchar.h>
#include <Dwmapi.h>
#pragma comment(lib,"Dwmapi.lib")
#include "d3d9/d3d9.h"
#include "d3d9/d3dx9.h"
#pragma comment(lib,"d3d9/d3dx9.lib")
#pragma comment(lib,"d3d9/d3d9.lib")
#include "resource.h"
#include "vector.h"
#include "memManager.h"
#include "D3D9Render.h"
#include "settings.h"
#include "entity.h"
#include "hack.h"
#include "CallbackProxy.h"
#include "VehiclePreview.h"
//offset from WORLD
#define OFFSET_PLAYER 0x08 //playerbase
#define OFFSET_NET_PLAYER 0x1C8
//entity offsets
#define OFFSET_ENTITY_POSBASE 0x30 //base of a structure that contains entity coords
#define OFFSET_ENTITY_POSBASE_COS 0x20
#define OFFSET_ENTITY_POSBASE_SIN 0x30
#define OFFSET_ENTITY_POSBASE_POS 0x50 //vector3
#define OFFSET_ENTITY_POS 0x90 //vector3
#define OFFSET_ENTITY_GOD 0x189 //godmode; on = 1, off = 0; byte
#define OFFSET_ENTITY_HEALTH 0x280 //entity health (except for vehicles); float cur, float max
#define OFFSET_ENTITY_HEALTH_MAX 0x2A0 //they moved this away from curHealth in 1.36 :(
#define OFFSET_ENTITY_ATTACKER 0x2A8 //base to a list of the last 3 entities that attacked the current entity
//player (entity) offsets
#define OFFSET_PLAYER_VEHICLE 0xD28 //ptr to last used vehicle
#define OFFSET_NET_PLAYER_INFO 0xA8
#define OFFSET_PLAYER_INFO 0x10C8 //playerInfo struct
#define OFFSET_PLAYER_INFO_NAME 0x84
#define OFFSET_PLAYER_INFO_SWIM_SPD 0x150 //swim speed; def 1; float
#define OFFSET_PLAYER_INFO_RUN_SPD 0xCD0 //run speed; def 1; float
#define OFFSET_PLAYER_INFO_FRAMEFLAGS 0x1F9 //frame flags; DWORD
#define OFFSET_PLAYER_INFO_WANTED_CAN_CHANGE 0x71C //fWantedCanChange
#define OFFSET_PLAYER_INFO_NPC_IGNORE 0x850 //npc ignore; DWORD; everyone = 0x450000;
#define OFFSET_PLAYER_INFO_WANTED 0x868 //wanted level; DWORD
#define OFFSET_PLAYER_INFO_STAMINA 0xCD4 //fStamina, fStaminaMax
#define OFFSET_PLAYER_RAGDOLL 0x10B8 //byte; CPed.noRagdoll: 0x20 = off; 0x00/0x01 = on
#define OFFSET_PLAYER_SEATBELT 0xC00 //byte; CPed.seatBelt: 0xC8 = off; 0xC9 = on
#define OFFSET_PLAYER_INVEHICLE 0x1477
#define OFFSET_PLAYER_ARMOR 0x14E0 //armour
#define OFFSET_PLAYER_WATER_PROOF 0x188 //water proof; DWORD; +0x1000000 = on
#define OFFSET_PLAYER_VEHICLE_DAMAGE_MP 0xCFC //super punck/kick;float;
//vehicle offsets
#define OFFSET_VEHICLE_HEALTH 0x908 //vehicle health; 0.f-1000.f
#define OFFSET_VEHICLE_HEALTH2 0x844 //vehicle health2; 0.f-1000.f
#define OFFSET_VEHICLE_HANDLING 0x938
#define OFFSET_VEHICLE_HANDLING_MASS 0xC //fMass
#define OFFSET_VEHICLE_HANDLING_BUOYANCY 0x40 //fBuoyancy
#define OFFSET_VEHICLE_HANDLING_ACCELERATION 0x4C
#define OFFSET_VEHICLE_HANDLING_UPSHIFT 0x58
#define OFFSET_VEHICLE_HANDLING_DOWNSHIFT 0x5C
#define OFFSET_VEHICLE_HANDLING_BRAKEFORCE 0x6C
#define OFFSET_VEHICLE_HANDLING_HANDBRAKEFORCE 0x7C //fHandbrakeForce
#define OFFSET_VEHICLE_HANDLING_TRACTION_CURVE_MIN 0x90 //fTractionCurveMin
#define OFFSET_VEHICLE_HANDLING_SUSPENSION_FORCE 0xBC //fSuspensionForce
#define OFFSET_VEHICLE_HANDLING_SUSPENSION_HEIGH 0xD0 //fSuspensionHeight
#define OFFSET_VEHICLE_HANDLING_COLISION_DAMAGE_MP 0xF0 //fColisionDamageMult
#define OFFSET_VEHICLE_HANDLING_WEAPON_DAMAGE_MP 0xF4 //fWeaponDamageMult
#define OFFSET_VEHICLE_HANDLING_DEFORM_MULTIPLIER 0xF8 //fDeformationDamageMult
#define OFFSET_VEHICLE_HANDLING_ENGINE_DAMAGE_MP 0xFC //fEngineDamageMult
#define OFFSET_VEHICLE_BULLETPROOF_TIRES 0x943 //btBulletproofTires; (btBulletproofTires & 0x20) ? true : false
#define OFFSET_VEHICLE_GRAVITY 0xC5C //fGravity
#define OFFSET_VEHICLE_BOOST 0x320 //fBoost
#define OFFSET_VEHICLE_RECHARGE_SPEED 0x324 //fRocketRechargeSpeed
#define OFFSET_VEHICLE_MISSLES 0x1280 //btVehicleMissles
#define OFFSET_VEHICLE_BOMBS 0x1294 //btAircraftBombs
#define OFFSET_VEHICLE_COUNTERMEASURES 0x1298 //btAircraftCountermeasures
#define OFFSET_VEHICLE_MK2_MISSLES 0x1284 //btOppressorMK2Misseles
#define OFFSET_VEHICLE_TAMPA_MISSLES 0x127C //btTampaMissles
#define OFFSET_VEHICLE_CUSTOM 0x48
#define OFFSET_VEHICLE_CUSTOM_EMS 0x3D6 //btEngineManagementSystem; 0x3 = max
#define OFFSET_VEHICLE_CUSTOM_BRAKES 0x3D7 //btBrakes; 0x6 = max
#define OFFSET_VEHICLE_CUSTOM_TRANSMISSION 0x3D8 //btTransmission; 0x8 = max
#define OFFSET_VEHICLE_CUSTOM_SUSPENSION 0x3DA //btSuspension; 0x1B = max
#define OFFSET_VEHICLE_CUSTOM_ARMOR 0x3DB //btArmor; 0x1B = max
#define OFFSET_VEHICLE_CUSTOM_TURBO_TUNING 0x3DD //btTurboTuning; 0x1 = on
#define OFFSET_VEHICLE_CUSTOM_NEON_LIGHT_R 0x3A2 //btNeonLightRed
#define OFFSET_VEHICLE_CUSTOM_NEON_LIGHT_G 0x3A1 //btNeonLightGreen
#define OFFSET_VEHICLE_CUSTOM_NEON_LIGHT_B 0x3A0 //btNeonLightBlue
#define OFFSET_VEHICLE_CUSTOM_NEON_LIGHTS_L 0x402 //btNeonLightLeft; 0x0 = off; 0x1 = on
#define OFFSET_VEHICLE_CUSTOM_NEON_LIGHTS_R 0x403 //btNeonLightRight; 0x0 = off; 0x1 = on
#define OFFSET_VEHICLE_CUSTOM_NEON_LIGHTS_F 0x404 //btNeonLightFront; 0x0 = off; 0x1 = on
#define OFFSET_VEHICLE_CUSTOM_NEON_LIGHTS_B 0x405 //btNeonLightBack; 0x0 = off; 0x1 = on
#define OFFSET_VEHICLE_CUSTOM_TYRE_SMOKE 0x3DF //btTyreSmoke; 0x1 = on
#define OFFSET_VEHICLE_CUSTOM_TYRE_SMOKE_R 0x3FC //btTyreSmokeRed
#define OFFSET_VEHICLE_CUSTOM_TYRE_SMOKE_G 0x3FD //btTyreSmokeGreen
#define OFFSET_VEHICLE_CUSTOM_TYRE_SMOKE_B 0x3FE //btTyreSmokeBlue
#define OFFSET_VEHICLE_CUSTOM_LIMO_WINDOWS 0x3FF //btLimoWindows; 0x1 = on
//weapon offsets
#define OFFSET_WEAPON_MANAGER 0x10D8 //from playerbase
#define OFFSET_WEAPON_CURRENT 0x20 //from weapon manager
#define OFFSET_WEAPON_AMMOINFO 0x60 //from weaponbase
#define OFFSET_WEAPON_AMMOINFO_MAX 0x28 //ammoinfo
#define OFFSET_WEAPON_AMMOINFO_CUR_1 0x08 //ptr lvl 1, ptr 1
#define OFFSET_WEAPON_AMMOINFO_CUR_2 0x00 //ptr tr lvl 2, ptr 1
#define OFFSET_WEAPON_AMMOINFO_CURAMMO 0x18 //offset to cur ammo
#define OFFSET_WEAPON_AMMOINFO_TYPE 0x0C //offset to projectile type?
#define OFFSET_WEAPON_SPREAD 0x7C //float set to 0
#define OFFSET_WEAPON_BULLET_DMG 0xBC //float times 10 (so when 0, it will stay 0)
#define OFFSET_WEAPON_RELOAD_MULTIPLIER 0x134 //float times 10
#define OFFSET_WEAPON_RECOIL 0x2F4 //float set to 0
#define OFFSET_WEAPON_MODEL_HASH 0x14
#define OFFSET_WEAPON_NAME_HASH 0x10
#define OFFSET_WEAPON_RELOAD_VEHICLE 0x130
#define OFFSET_WEAPON_RANGE 0x28C
#define OFFSET_WEAPON_SPINUP 0x144
#define OFFSET_WEAPON_SPIN 0x148
#define OFFSET_WEAPON_BULLET_BATCH 0x124 //dwBulletInBatch
#define OFFSET_WEAPON_MUZZLE_VELOCITY 0x11C //fMuzzleVelocity
#define OFFSET_WEAPON_IMPACT_TYPE 0x20 //dwImpactType; 1: Fists,3; Bullets,5: Explosives
#define OFFSET_WEAPON_IMPACT_EXPLOSION 0x24 //dwImpactExplosion
#define OFFSET_WEAPON_PENETRATION 0x110 //fPenetration
#define OFFSET_WEAPON_FORCE_ON_PED 0xDC //fForceOnPed
#define OFFSET_WEAPON_FORCE_ON_VEHICLE 0xE0 //fForceOnVehicle(Bullet Mass)
#define OFFSET_WEAPON_FORCE_ON_HELI 0xE4 //fForceOnHeli
//tunable offsets
#define OFFSET_TUNABLE_RP_MULTIPLIER 0x10
#define OFFSET_TUNABLE_AP_MULTIPLIER 0x30F80
#define OFFSET_TUNABLE_MIN_MISSION_PAYOUT 0x4BC8 //fMinMissionPayout
#define OFFSET_TUNABLE_ANTI_IDLE_KICK1 0x2C0 //AFK;DWORD;2000000000 = Anti idle kick
#define OFFSET_TUNABLE_ANTI_IDLE_KICK2 0x2C8
#define OFFSET_TUNABLE_ANTI_IDLE_KICK3 0x2D0
#define OFFSET_TUNABLE_ANTI_IDLE_KICK4 0x2D8
#define OFFSET_TUNABLE_ORBITAL_CANNON_COOLDOWN 0x2C188 //OrbitalCannonCooldown;DWORD
#define OFFSET_TUNABLE_BUNKER_RESEARCH 0x29BB8 //UnlockAllBunkerResearch;DWORD
#define OFFSET_ATTACKER_DISTANCE 0x18 //changed to 0x18, from 0x10
//replay interface offsets
#define OFFSET_REPLAY_PED_INTERFACE 0x18
#define OFFSET_PED_INTERFACE_PED_LIST 0x100
#define OFFSET_PED_INTERFACE_CUR_PEDS 0x110
//global offsets
#define OFFSET_GLOBAL_VEHICLE_HASH 2460715
//feature indexing
#define FEATURE_P_GOD 0x00
#define FEATURE_P_NEVERWANTED 0x01
#define FEATURE_P_ANTINPC 0x02
#define FEATURE_V_GOD 0x03
#define FEATURE_W_SPREAD 0x04
#define FEATURE_W_RECOIL 0x05
#define FEATURE_W_RELOAD 0x06
#define FEATURE_W_DAMAGE 0x07
#define FEATURE_W_AMMO 0x08
#define FEATURE_W_RANGE 0x09
#define FEATURE_W_SPINUP 0x0A
#define FEATURE_P_RUNSPD 0x0B
#define FEATURE_P_SWIMSPD 0x0C
#define FEATURE_P_TRUEGOD 0x0D
#define FEATURE_P_SUPERJUMP 0x0E
#define FEATURE_P_EXPLOSIVEMELEE 0x0F
#define FEATURE_W_EXPLOSIVEAMMO 0x10
#define FEATURE_W_FIREAMMO 0x11
#define FEATURE_V_TRUEGOD 0x12
#define FEATURE_P_NORAGDOLL 0x13
#define FEATURE_V_SEATBELT 0x14
#define FEATURE_W_NORELOAD 0x15
#define FEATURE_V_ACCELERATION 0x16
#define FEATURE_V_BRAKEFORCE 0x17
#define FEATURE_V_TRACTION 0x18
#define FEATURE_V_GRAVITY 0x19
#define FEATURE_V_BULLETPROOFTIRES 0x1A
#define FEATURE_P_WANTED 0x1B
#define FEATURE_W_BULLET_BATCH 0x1C
#define FEATURE_W_MUZZLE_VELOCITY 0x1D
#define FEATURE_V_DEFORMATION 0x1E
#define FEATURE_V_UPSHIFT 0x1F
#define FEATURE_V_SUSPENSION_FORCE 0x21
#define FEATURE_P_STAMINA 0x22
#define FEATURE_V_DOWNSHIFT 0x24
#define FEATURE_P_SUICIDE 0x25
#define FEATURE_W_FILL_AMMO 0x26
#define FEATURE_P_WATER_PROOF 0x27
#define FEATURE_P_HEAL 0x28
#define FEATURE_P_UNDEAD_OFFRADAR 0x29
#define FEATURE_P_SUPER_PUNCH 0x2A
#define FEATURE_V_MASS 0x2B
#define FEATURE_V_BUOYANCY 0x2C
#define FEATURE_V_HANDBRAKEFORCE 0x2D
#define FEATURE_V_SUSPENSION_HEIGH 0x2E
#define FEATURE_V_COLISION_DAMAGE_MP 0x2F
#define FEATURE_V_WEAPON_DAMAGE_MP 0x30
#define FEATURE_V_ENGINE_DAMAGE_MP 0x31
#define FEATURE_V_BOOST 0x32
#define FEATURE_V_RECHARGE_SPEED 0x33
#define FEATURE_V_HEAL 0x34
#define FEATURE_T_RP_MP 0x35
#define FEATURE_T_AP_MP 0x36
#define FEATURE_T_MISSION_PAYOUT 0x37
#define FEATURE_W_FILL_ALL_AMMO 0x38
#define FEATURE_W_FORCE_ON_PED 0x39
#define FEATURE_W_FORCE_ON_VEHICLE 0x3A
#define FEATURE_W_FORCE_ON_HELI 0x3B
#define FEATURE_W_BULLET_EDIT 0x3C
#define FEATURE_P_NPC_IGNORE 0x3D
#define FEATURE_T_ORBITAL_CANNON 0x3E
#define FEATURE_T_BUNKER_RESEARCH 0x3F
#define FEATURE_T_ANTI_IDLE_KICK 0x40
#define FEATURE_P_PLAYER_LIST 0x41
#define FEATURE_P_MONERY_DROP 0x42
static std::wstring StringToWString(const std::string& str) {
int num = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0);
wchar_t* wide = new wchar_t[num];
MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, wide, num);
std::wstring w_str(wide);
delete[] wide;
return w_str;
}
void killProgram ();
DWORD strToVk(std::string str);
extern HWND g_hWnd;
extern int g_iFeature[MAX_MENU_FEATURES];
extern bool g_bKillSwitch;
extern bool g_bKillRender;
extern bool g_bKillAttach;
extern bool g_bKillHack;
//Addresses from GTAV.exe module
extern long ADDRESS_WORLD; //48 8B 05 ? ? ? ? 45 ? ? ? ? 48 8B 48 08 48 85 C9 74 07
extern long ADDRESS_BLIP; //4C 8D 05 ? ? ? ? 0F B7 C1
extern long ADDRESS_AMMO; //Ammo dec code; 41 2B D1 E8; 90 90 90 E8
extern long ADDRESS_MAGAZINE; //Magazine dec code; 41 2B C9 3B C8 0F; 90 90 90 3B C8 0F
extern long ADDRESS_TUNABLE;
extern long ADDRESS_WEAPON;
extern long ADDRESS_GLOBAL; //4C 8D 05 ? ? ? ? 4D 8B 08 4D 85 C9 74 11
extern long ADDRESS_PLAYER_LIST; //48 8B 0D ? ? ? ? E8 ? ? ? ? 48 8B C8 E8 ? ? ? ? 48 8B CF
extern long ADDRESS_REPLAY_INTERFACE; //48 8D 0D ? ? ? ? 48 8B D7 E8 ? ? ? ? 48 8D 0D ? ? ? ? 8A D8 E8 ? ? ? ? 84 DB 75 13 48 8D 0D ? ? ? ?
#endif

View File

@@ -0,0 +1,174 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="D3D9Render.cpp" />
<ClCompile Include="entity.cpp" />
<ClCompile Include="hack.cpp" />
<ClCompile Include="main.cpp" />
<ClCompile Include="memManager.cpp" />
<ClCompile Include="settings.cpp" />
<ClCompile Include="stdafx.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="CallbackProxy.h" />
<ClInclude Include="ColorDef.h" />
<ClInclude Include="D3D9Render.h" />
<ClInclude Include="entity.h" />
<ClInclude Include="hack.h" />
<ClInclude Include="memManager.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="settings.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="vector.h" />
<ClInclude Include="VehiclePreview.h" />
</ItemGroup>
<ItemGroup>
<Image Include="mask.ico" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="GTA d3d9.rc" />
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{14bdf4df-a71b-489a-9077-ea112711cb28}</ProjectGuid>
<RootNamespace>subVersion</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>false</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>false</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="源文件">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="头文件">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="资源文件">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="D3D9Render.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="entity.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="hack.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="main.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="memManager.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="settings.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="stdafx.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="D3D9Render.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="entity.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="hack.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="memManager.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="settings.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="stdafx.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="vector.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="CallbackProxy.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="ColorDef.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="VehiclePreview.h">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="mask.ico">
<Filter>资源文件</Filter>
</Image>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="GTA d3d9.rc">
<Filter>资源文件</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

44
subVersion/vector.h Normal file
View File

@@ -0,0 +1,44 @@
/*
Copyright 2016-2017 sub1to
This file is part of subVersion GTA:O SC External Hack.
subVersion GTA:O SC External Hack is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
subVersion GTA:O SC External Hack is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef VECTOR_H
#define VECTOR_H
struct v2
{
float x = 0,
y = 0;
};
struct v3
{
float x = 0,
y = 0,
z = 0;
v3(){}
v3(float x, float y, float z)
{
this->x = x;
this->y = y;
this->z = z;
}
};
#endif