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
+38
View File
@@ -0,0 +1,38 @@
#pragma once
#ifndef __CALLBACK_PROXY_H__
#define __CALLBACK_PROXY_H__
//Tobject:调用对象的类型,Tparam回调函数参数的类型
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; //回调函数指针
Tobject* m_pInstance; //调用对象
};
//设置调用对象及其回调函数
template<typename Tobject, typename Tparam>
void CallbackProxy<Tobject, Tparam>::Set(Tobject* pInstance, CbFun pFun)
{
m_pInstance = pInstance;
pCbFun = pFun;
};
//调用回调函数
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
View File
@@ -0,0 +1,141 @@
#pragma once
#define CLR_LIGHTPINK RGB(255, 182, 193) // 浅粉红
#define CLR_PINK RGB(255, 192, 203) // 粉红
#define CLR_CRIMSON RGB(220, 20, 60) // 猩红 (深红)
#define CLR_LAVENDERBLUSH RGB(255, 240, 245) // 淡紫红
#define CLR_PALEVIOLETRED RGB(219, 112, 147) // 弱紫罗兰红
#define CLR_HOTPINK RGB(255, 105, 180) // 热情的粉红
#define CLR_DEEPPINK RGB(255, 20, 147) // 深粉红
#define CLR_MEDIUMVIOLETRED RGB(199, 21, 133) // 中紫罗兰红
#define CLR_ORCHID RGB(218, 112, 214) // 兰花紫
#define CLR_THISTLE RGB(216, 191, 216) // 蓟
#define CLR_PLUM RGB(221, 160, 221) // 李子紫
#define CLR_VIOLET RGB(238, 130, 238) // 紫罗兰
#define CLR_MAGENTA RGB(255, 0, 255) // 洋红 (品红 玫瑰红)
#define CLR_FUCHSIA RGB(255, 0, 255) // 灯笼海棠(紫红色)
#define CLR_DARKMAGENTA RGB(139, 0, 139) // 深洋红
#define CLR_PURPLE RGB(128, 0, 128) // 紫色
#define CLR_MEDIUMORCHID RGB(186, 85, 211) // 中兰花紫
#define CLR_DARKVIOLET RGB(148, 0, 211) // 暗紫罗兰
#define CLR_DARKORCHID RGB(153, 50, 204) // 暗兰花紫
#define CLR_INDIGO RGB( 75, 0, 130) // 靛青 (紫兰色)
#define CLR_BLUEVIOLET RGB(138, 43, 226) // 蓝紫罗兰
#define CLR_MEDIUMPURPLE RGB(147, 112, 219) // 中紫色
#define CLR_MEDIUMSLATEBLUE RGB(123, 104, 238) // 中板岩蓝
#define CLR_SLATEBLUE RGB(106, 90, 205) // 板岩蓝
#define CLR_DARKSLATEBLUE RGB( 72, 61, 139) // 暗板岩蓝
#define CLR_LAVENDER RGB(230, 230, 250) // 熏衣草淡紫
#define CLR_GHOSTWHITE RGB(248, 248, 255) // 幽灵白
#define CLR_BLUE RGB( 0, 0, 255) // 纯蓝
#define CLR_MEDIUMBLUE RGB( 0, 0, 205) // 中蓝色
#define CLR_MIDNIGHTBLUE RGB( 25, 25, 112) // 午夜蓝
#define CLR_DARKBLUE RGB( 0, 0, 139) // 暗蓝色
#define CLR_NAVY RGB( 0, 0, 128) // 海军蓝
#define CLR_ROYALBLUE RGB( 65, 105, 225) // 皇家蓝 (宝蓝)
#define CLR_CORNFLOWERBLUE RGB(100, 149, 237) // 矢车菊蓝
#define CLR_LIGHTSTEELBLUE RGB(176, 196, 222) // 亮钢蓝
#define CLR_LIGHTSLATEGRAY RGB(119, 136, 153) // 亮石板灰
#define CLR_SLATEGRAY RGB(112, 128, 144) // 石板灰
#define CLR_DODGERBLUE RGB( 30, 144, 255) // 道奇蓝
#define CLR_ALICEBLUE RGB(240, 248, 255) // 爱丽丝蓝
#define CLR_STEELBLUE RGB( 70, 130, 180) // 钢蓝 (铁青)
#define CLR_LIGHTSKYBLUE RGB(135, 206, 250) // 亮天蓝色
#define CLR_SKYBLUE RGB(135, 206, 235) // 天蓝色
#define CLR_DEEPSKYBLUE RGB( 0, 191, 255) // 深天蓝
#define CLR_LIGHTBLUE RGB(173, 216, 230) // 亮蓝
#define CLR_POWDERBLUE RGB(176, 224, 230) // 火药青
#define CLR_CADETBLUE RGB( 95, 158, 160) // 军服蓝
#define CLR_AZURE RGB(240, 255, 255) // 蔚蓝色
#define CLR_LIGHTCYAN RGB(224, 255, 255) // 淡青色
#define CLR_PALETURQUOISE RGB(175, 238, 238) // 弱绿宝石
#define CLR_CYAN RGB( 0, 255, 255) // 青色
#define CLR_AQUA RGB( 0, 255, 255) // 水色
#define CLR_DARKTURQUOISE RGB( 0, 206, 209) // 暗绿宝石
#define CLR_DARKSLATEGRAY RGB( 47, 79, 79) // 暗石板灰
#define CLR_DARKCYAN RGB( 0, 139, 139) // 暗青色
#define CLR_TEAL RGB( 0, 128, 128) // 水鸭色
#define CLR_MEDIUMTURQUOISE RGB( 72, 209, 204) // 中绿宝石
#define CLR_LIGHTSEAGREEN RGB( 32, 178, 170) // 浅海洋绿
#define CLR_TURQUOISE RGB( 64, 224, 208) // 绿宝石
#define CLR_AQUAMARINE RGB(127, 255, 212) // 宝石碧绿
#define CLR_MEDIUMAQUAMARINE RGB(102, 205, 170) // 中宝石碧绿
#define CLR_MEDIUMSPRINGGREEN RGB( 0, 250, 154) // 中春绿色
#define CLR_MINTCREAM RGB(245, 255, 250) // 薄荷奶油
#define CLR_SPRINGGREEN RGB( 0, 255, 127) // 春绿色
#define CLR_MEDIUMSEAGREEN RGB( 60, 179, 113) // 中海洋绿
#define CLR_SEAGREEN RGB( 46, 139, 87) // 海洋绿
#define CLR_HONEYDEW RGB(240, 255, 240) // 蜜瓜色
#define CLR_LIGHTGREEN RGB(144, 238, 144) // 淡绿色
#define CLR_PALEGREEN RGB(152, 251, 152) // 弱绿色
#define CLR_DARKSEAGREEN RGB(143, 188, 143) // 暗海洋绿
#define CLR_LIMEGREEN RGB( 50, 205, 50) // 闪光深绿
#define CLR_LIME RGB( 0, 255, 0) // 闪光绿
#define CLR_FORESTGREEN RGB( 34, 139, 34) // 森林绿
#define CLR_GREEN RGB( 0, 128, 0) // 纯绿
#define CLR_DARKGREEN RGB( 0, 100, 0) // 暗绿色
#define CLR_CHARTREUSE RGB(127, 255, 0) // 查特酒绿 (黄绿色)
#define CLR_LAWNGREEN RGB(124, 252, 0) // 草坪绿
#define CLR_GREENYELLOW RGB(173, 255, 47) // 绿黄色
#define CLR_DARKOLIVEGREEN RGB( 85, 107, 47) // 暗橄榄绿
#define CLR_YELLOWGREEN RGB(154, 205, 50) // 黄绿色
#define CLR_OLIVEDRAB RGB(107, 142, 35) // 橄榄褐色
#define CLR_BEIGE RGB(245, 245, 220) // 米色(灰棕色)
#define CLR_LIGHTGOLDENRODYELLOW RGB(250, 250, 210) // 亮菊黄
#define CLR_IVORY RGB(255, 255, 240) // 象牙
#define CLR_LIGHTYELLOW RGB(255, 255, 224) // 浅黄色
#define CLR_YELLOW RGB(255, 255, 0) // 纯黄
#define CLR_OLIVE RGB(128, 128, 0) // 橄榄
#define CLR_DARKKHAKI RGB(189, 183, 107) // 深卡叽布
#define CLR_LEMONCHIFFON RGB(255, 250, 205) // 柠檬绸
#define CLR_PALEGOLDENROD RGB(238, 232, 170) // 灰菊黄
#define CLR_KHAKI RGB(240, 230, 140) // 卡叽布
#define CLR_GOLD RGB(255, 215, 0) // 金色
#define CLR_CORNSILK RGB(255, 248, 220) // 玉米丝色
#define CLR_GOLDENROD RGB(218, 165, 32) // 金菊黄
#define CLR_DARKGOLDENROD RGB(184, 134, 11) // 暗金菊黄
#define CLR_FLORALWHITE RGB(255, 250, 240) // 花的白色
#define CLR_OLDLACE RGB(253, 245, 230) // 旧蕾丝
#define CLR_WHEAT RGB(245, 222, 179) // 小麦色
#define CLR_MOCCASIN RGB(255, 228, 181) // 鹿皮靴
#define CLR_ORANGE RGB(255, 165, 0) // 橙色
#define CLR_PAPAYAWHIP RGB(255, 239, 213) // 番木瓜
#define CLR_BLANCHEDALMOND RGB(255, 235, 205) // 发白的杏仁色
#define CLR_NAVAJOWHITE RGB(255, 222, 173) // 土著白
#define CLR_ANTIQUEWHITE RGB(250, 235, 215) // 古董白
#define CLR_TAN RGB(210, 180, 140) // 茶色
#define CLR_BURLYWOOD RGB(222, 184, 135) // 硬木色
#define CLR_BISQUE RGB(255, 228, 196) // 陶坯黄
#define CLR_DARKORANGE RGB(255, 140, 0) // 深橙色
#define CLR_LINEN RGB(250, 240, 230) // 亚麻布
#define CLR_PERU RGB(205, 133, 63) // 秘鲁
#define CLR_PEACHPUFF RGB(255, 218, 185) // 桃肉色
#define CLR_SANDYBROWN RGB(244, 164, 96) // 沙棕色
#define CLR_CHOCOLATE RGB(210, 105, 30) // 巧克力
#define CLR_SADDLEBROWN RGB(139, 69, 19) // 马鞍棕色
#define CLR_SEASHELL RGB(255, 245, 238) // 海贝壳
#define CLR_SIENNA RGB(160, 82, 45) // 黄土赭色
#define CLR_LIGHTSALMON RGB(255, 160, 122) // 浅鲑鱼肉色
#define CLR_CORAL RGB(255, 127, 80) // 珊瑚
#define CLR_ORANGERED RGB(255, 69, 0) // 橙红色
#define CLR_DARKSALMON RGB(233, 150, 122) // 深鲜肉(鲑鱼)色
#define CLR_TOMATO RGB(255, 99, 71) // 番茄红
#define CLR_MISTYROSE RGB(255, 228, 225) // 薄雾玫瑰
#define CLR_SALMON RGB(250, 128, 114) // 鲜肉(鲑鱼)色
#define CLR_SNOW RGB(255, 250, 250) // 雪
#define CLR_LIGHTCORAL RGB(240, 128, 128) // 淡珊瑚色
#define CLR_ROSYBROWN RGB(188, 143, 143) // 玫瑰棕色
#define CLR_INDIANRED RGB(205, 92, 92) // 印度红
#define CLR_RED RGB(255, 0, 0) // 纯红
#define CLR_BROWN RGB(165, 42, 42) // 棕色
#define CLR_FIREBRICK RGB(178, 34, 34) // 耐火砖
#define CLR_DARKRED RGB(139, 0, 0) // 深红色
#define CLR_MAROON RGB(128, 0, 0) // 栗色
#define CLR_WHITE RGB(255, 255, 255) // 纯白
#define CLR_WHITESMOKE RGB(245, 245, 245) // 白烟
#define CLR_GAINSBORO RGB(220, 220, 220) // 庚斯博罗灰色
#define CLR_LIGHTGREY RGB(211, 211, 211) // 浅灰色
#define CLR_SILVER RGB(192, 192, 192) // 银灰色
#define CLR_DARKGRAY RGB(169, 169, 169) // 深灰色
#define CLR_GRAY RGB(186, 183, 186) // 灰色(*)
#define CLR_DIMGRAY RGB(105, 105, 105) // 暗淡的灰色
#define CLR_BLACK RGB( 0, 0, 0) // 纯黑
+298
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
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
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
/////////////////////////////////////////////////////////////////////////////
// 中文(简体,中国) 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 // 中文(简体,中国) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
+811
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);
}
File diff suppressed because it is too large Load Diff
Binary file not shown.
+78
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__
Binary file not shown.
File diff suppressed because it is too large Load Diff
+753
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__
+873
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__
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+221
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__
File diff suppressed because it is too large Load Diff
+299
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__ )
File diff suppressed because it is too large Load Diff
+538
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
View File
File diff suppressed because it is too large Load Diff
+191
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
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, "杀死所有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, "补满所有武器弹药", 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, "玩家列表 >>", 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],"线上 >>", 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"抢劫方式 >>", 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);
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

+124
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
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
Binary file not shown.
+649
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"未找到settings.ini配置文件,请将压缩包中所有文件解压到同一目录!", L"subVersion加载失败", 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
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
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
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
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
+174
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>
+85
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
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