upload
This commit is contained in:
commit
8e431a3e95
63
.gitattributes
vendored
Normal file
63
.gitattributes
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
###############################################################################
|
||||
# Set default behavior to automatically normalize line endings.
|
||||
###############################################################################
|
||||
* text=auto
|
||||
|
||||
###############################################################################
|
||||
# Set default behavior for command prompt diff.
|
||||
#
|
||||
# This is need for earlier builds of msysgit that does not have it on by
|
||||
# default for csharp files.
|
||||
# Note: This is only used by command line
|
||||
###############################################################################
|
||||
#*.cs diff=csharp
|
||||
|
||||
###############################################################################
|
||||
# Set the merge driver for project and solution files
|
||||
#
|
||||
# Merging from the command prompt will add diff markers to the files if there
|
||||
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||
# the diff markers are never inserted). Diff markers may cause the following
|
||||
# file extensions to fail to load in VS. An alternative would be to treat
|
||||
# these files as binary and thus will always conflict and require user
|
||||
# intervention with every merge. To do so, just uncomment the entries below
|
||||
###############################################################################
|
||||
#*.sln merge=binary
|
||||
#*.csproj merge=binary
|
||||
#*.vbproj merge=binary
|
||||
#*.vcxproj merge=binary
|
||||
#*.vcproj merge=binary
|
||||
#*.dbproj merge=binary
|
||||
#*.fsproj merge=binary
|
||||
#*.lsproj merge=binary
|
||||
#*.wixproj merge=binary
|
||||
#*.modelproj merge=binary
|
||||
#*.sqlproj merge=binary
|
||||
#*.wwaproj merge=binary
|
||||
|
||||
###############################################################################
|
||||
# behavior for image files
|
||||
#
|
||||
# image files are treated as binary by default.
|
||||
###############################################################################
|
||||
#*.jpg binary
|
||||
#*.png binary
|
||||
#*.gif binary
|
||||
|
||||
###############################################################################
|
||||
# diff behavior for common document formats
|
||||
#
|
||||
# Convert binary document formats to text before diffing them. This feature
|
||||
# is only available from the command line. Turn it on by uncommenting the
|
||||
# entries below.
|
||||
###############################################################################
|
||||
#*.doc diff=astextplain
|
||||
#*.DOC diff=astextplain
|
||||
#*.docx diff=astextplain
|
||||
#*.DOCX diff=astextplain
|
||||
#*.dot diff=astextplain
|
||||
#*.DOT diff=astextplain
|
||||
#*.pdf diff=astextplain
|
||||
#*.PDF diff=astextplain
|
||||
#*.rtf diff=astextplain
|
||||
#*.RTF diff=astextplain
|
340
.gitignore
vendored
Normal file
340
.gitignore
vendored
Normal file
@ -0,0 +1,340 @@
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.rsuser
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
[Aa][Rr][Mm]/
|
||||
[Aa][Rr][Mm]64/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
|
||||
# Visual Studio 2015/2017 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# Visual Studio 2017 auto generated files
|
||||
Generated\ Files/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUNIT
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# Benchmark Results
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
|
||||
# StyleCop
|
||||
StyleCopReport.xml
|
||||
|
||||
# Files built by Visual Studio
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_h.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.iobj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.ipdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*_wpftmp.csproj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# Visual Studio Trace Files
|
||||
*.e2e
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# AxoCover is a Code Coverage Tool
|
||||
.axoCover/*
|
||||
!.axoCover/settings.json
|
||||
|
||||
# Visual Studio code coverage results
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/[Pp]ackages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/[Pp]ackages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/[Pp]ackages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignorable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
*.appx
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!?*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.jfm
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Including strong name files can present a security risk
|
||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||
#*.snk
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
ServiceFabricBackup/
|
||||
*.rptproj.bak
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
*.ndf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
*.rptproj.rsuser
|
||||
*- Backup*.rdl
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
node_modules/
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# JetBrains Rider
|
||||
.idea/
|
||||
*.sln.iml
|
||||
|
||||
# CodeRush personal settings
|
||||
.cr/personal
|
||||
|
||||
# Python Tools for Visual Studio (PTVS)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
|
||||
# Telerik's JustMock configuration file
|
||||
*.jmconfig
|
||||
|
||||
# BizTalk build output
|
||||
*.btp.cs
|
||||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
|
||||
# OpenCover UI analysis results
|
||||
OpenCover/
|
||||
|
||||
# Azure Stream Analytics local run output
|
||||
ASALocalRun/
|
||||
|
||||
# MSBuild Binary and Structured Log
|
||||
*.binlog
|
||||
|
||||
# NVidia Nsight GPU debugger configuration file
|
||||
*.nvuser
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
.mfractor/
|
||||
|
||||
# Local History for Visual Studio
|
||||
.localhistory/
|
||||
|
||||
# BeatPulse healthcheck temp database
|
||||
healthchecksdb
|
674
LICENSE.txt
Normal file
674
LICENSE.txt
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program 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.
|
||||
|
||||
This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
230
README.md
Normal file
230
README.md
Normal file
@ -0,0 +1,230 @@
|
||||
# subVerison_GTAV_Hack
|
||||
subVerison重置版——GTAV线上外置修改器
|
||||
|
||||
[![](https://img.shields.io/badge/Powerd%20By-subVersion-brightgreen)](https://github.com/sub1to/subVersion_GTAO_Hack)
|
||||
|
||||
███████╗██╗ ██╗██████╗ ██╗ ██╗███████╗██████╗ ███████╗██╗ ██████╗ ███╗ ██╗
|
||||
██╔════╝██║ ██║██╔══██╗██║ ██║██╔════╝██╔══██╗██╔════╝██║██╔═══██╗████╗ ██║
|
||||
███████╗██║ ██║██████╔╝██║ ██║█████╗ ██████╔╝███████╗██║██║ ██║██╔██╗ ██║
|
||||
╚════██║██║ ██║██╔══██╗╚██╗ ██╔╝██╔══╝ ██╔══██╗╚════██║██║██║ ██║██║╚██╗██║
|
||||
███████║╚██████╔╝██████╔╝ ╚████╔╝ ███████╗██║ ██║███████║██║╚██████╔╝██║ ╚████║
|
||||
╚══════╝ ╚═════╝ ╚═════╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝
|
||||
|
||||
|
||||
## 目录
|
||||
|
||||
- [背景](#背景)
|
||||
- [支持的版本](#支持的版本)
|
||||
- [功能](#功能)
|
||||
- [使用说明](#使用说明)
|
||||
- [已知问题](#已知问题)
|
||||
- [TODO](#TODO)
|
||||
- [相关仓库](#相关仓库)
|
||||
- [维护者](#维护者)
|
||||
- [使用许可](#使用许可)
|
||||
|
||||
## 背景
|
||||
|
||||
`subVersion` 最开始是[@sub1to](https://github.com/sub1to) 开发的,原项目开发终止于2017年6月。
|
||||
|
||||
`subVersion` 是一款支持线上模式的外置修改器,带有d3d9实现的UI。
|
||||
|
||||
## 支持的版本
|
||||
[GTAV 1.51](https://www.rockstargames.com/zh/games/info/V)
|
||||
|
||||
线下及线上
|
||||
|
||||
Steam版
|
||||
|
||||
Epic Game版
|
||||
|
||||
## 功能
|
||||
<details>
|
||||
<summary>玩家</summary>
|
||||
|
||||
```
|
||||
治疗
|
||||
自杀
|
||||
无敌
|
||||
半无敌
|
||||
通缉等级
|
||||
永不通缉
|
||||
反NPC(杀死任何攻击你的NPC)
|
||||
NPC无视玩家
|
||||
奔跑速度(1-5倍)
|
||||
游泳速度(1-5倍)
|
||||
超级跳跃
|
||||
爆炸近战
|
||||
无布娃娃(永不摔倒)
|
||||
无限耐力
|
||||
近战击退倍数
|
||||
假死雷达隐匿
|
||||
水下行走
|
||||
```
|
||||
</details>
|
||||
<details>
|
||||
<summary>武器</summary>
|
||||
|
||||
```
|
||||
补满所有武器弹药
|
||||
补满当前武器弹药
|
||||
无扩散
|
||||
无后座
|
||||
无需换弹
|
||||
快速换弹(1-10倍)
|
||||
武器伤害系数(1-10倍)
|
||||
无限弹药
|
||||
射程(1-10倍)
|
||||
加特林无需预热
|
||||
爆炸子弹
|
||||
燃烧子弹
|
||||
批量子弹(1-10倍;最大25)(射出一发等于多发)
|
||||
批量传播(0-0.12)
|
||||
初速(1-10倍)
|
||||
人冲击力
|
||||
车辆冲击力
|
||||
直升机冲击力
|
||||
```
|
||||
<details>
|
||||
<summary>子弹编辑 >></summary>
|
||||
|
||||
```
|
||||
手榴弹
|
||||
粘弹
|
||||
燃烧瓶
|
||||
隐形爆炸
|
||||
闪电爆炸
|
||||
大爆炸
|
||||
中爆炸
|
||||
小爆炸
|
||||
小水柱
|
||||
小火柱
|
||||
大水柱
|
||||
大火柱
|
||||
MK2爆炸子弹
|
||||
烟雾弹
|
||||
催泪瓦斯
|
||||
带特效的爆炸
|
||||
大冲击波爆炸
|
||||
大火灾爆炸
|
||||
超大型飞艇爆炸
|
||||
大爆炸+坠落碎片
|
||||
火球爆炸
|
||||
烟花
|
||||
雪球
|
||||
屏幕抖动爆炸
|
||||
假爆炸(无伤害)
|
||||
```
|
||||
</details>
|
||||
</details>
|
||||
<details>
|
||||
<summary>载具</summary>
|
||||
|
||||
```
|
||||
无敌
|
||||
半无敌
|
||||
防爆轮胎
|
||||
安全带
|
||||
修复
|
||||
无限喷射
|
||||
喷射恢复速度
|
||||
```
|
||||
<details>
|
||||
<summary>属性 >></summary>
|
||||
|
||||
```
|
||||
质量
|
||||
浮力
|
||||
减档速度
|
||||
手刹制动力
|
||||
悬挂高度
|
||||
撞击伤害倍数
|
||||
武器伤害倍数
|
||||
变形系数
|
||||
引擎伤害倍数
|
||||
变形系数(0-1;默认值为0.7)(将滑块向左移动可一直减少变形向右表示变形较大)
|
||||
加速度(1-10倍)
|
||||
高速挡(1-25)
|
||||
刹车制动力(1-10倍)
|
||||
牵引力(1-2倍)
|
||||
重力(0N-25N;默认9.8N)
|
||||
悬挂(1-2倍)
|
||||
```
|
||||
</details>
|
||||
</details>
|
||||
<details>
|
||||
<summary>参数</summary>
|
||||
|
||||
```
|
||||
RP倍数
|
||||
AP倍数
|
||||
最小任务金额
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>导航</summary>
|
||||
|
||||
```
|
||||
导航点
|
||||
目标点
|
||||
室内
|
||||
```
|
||||
</details>
|
||||
|
||||
|
||||
## 使用说明
|
||||
### 快捷键
|
||||
```sh
|
||||
Numpad - | 打开菜单
|
||||
F9 | 保存设置并关闭修改器
|
||||
|
||||
Numpad 5 | 开/关功能
|
||||
Numpad 0 | 返回
|
||||
|
||||
Numpad 7 | 左翻页
|
||||
Numpad 9 | 右翻页
|
||||
|
||||
Numpad 8 | 上翻
|
||||
Numpad 2 | 下翻
|
||||
|
||||
Numpad 4 | 滑块向左
|
||||
Numpad 6 | 滑块向右
|
||||
|
||||
F5 | 传送至导航点
|
||||
F6 | 清除通缉
|
||||
F7 | 满血满防弹衣
|
||||
F8 | 补满所有武器弹药
|
||||
```
|
||||
|
||||
### 注意
|
||||
- 只有在静止状态下才可以进行传送
|
||||
- 传送**导航点**时如果传送后卡地形,按下W键即可回到地面
|
||||
- 传送**导航点**时多人传送需要所有人都下车并按W键
|
||||
### 为什么传送导航点时会出现这种问题?
|
||||
- 在进行**导航点**传送时,由于只导航点只有**XY轴**的坐标,并不知道Z轴高度轴的坐标,所以修改器会将你的Z轴改为-225,也就是地下,而GTA5有一个机制,会自动将Z轴位于-225的人物传送至地面。
|
||||
|
||||
## 已知问题
|
||||
- 无敌开启时,反NPC不会生效。必须使用半无敌
|
||||
- 传送到目标点仅限于任务目标(黄点),NPC和可拾取目标(绿点)等其他。
|
||||
- 如果尚未设定新的导航点,则传送到目标会传送到先前的导航点。
|
||||
|
||||
## TODO
|
||||
|
||||
1. 一个更好,更易用的**UI**。
|
||||
2. 更多**功能特性**。
|
||||
3. 实现**AoBScan**,使用特征码定位基址。
|
||||
4. 支持Social Club版
|
||||
|
||||
|
||||
## 相关仓库
|
||||
|
||||
- [subVersion GTAO Hack](https://github.com/sub1to/subVersion_GTAO_Hack) — 💌 原版subVersion。
|
||||
|
||||
## 维护者
|
||||
|
||||
[@AmazingPP](https://github.com/AmazingPP)
|
||||
|
||||
## 使用许可
|
||||
|
||||
[GPL-3.0](LICENSE) © AmazingPP
|
31
subVersion.sln
Normal file
31
subVersion.sln
Normal file
@ -0,0 +1,31 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30128.74
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "subVersion", "subVersion\subVersion.vcxproj", "{14BDF4DF-A71B-489A-9077-EA112711CB28}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{14BDF4DF-A71B-489A-9077-EA112711CB28}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{14BDF4DF-A71B-489A-9077-EA112711CB28}.Debug|x64.Build.0 = Debug|x64
|
||||
{14BDF4DF-A71B-489A-9077-EA112711CB28}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{14BDF4DF-A71B-489A-9077-EA112711CB28}.Debug|x86.Build.0 = Debug|Win32
|
||||
{14BDF4DF-A71B-489A-9077-EA112711CB28}.Release|x64.ActiveCfg = Release|x64
|
||||
{14BDF4DF-A71B-489A-9077-EA112711CB28}.Release|x64.Build.0 = Release|x64
|
||||
{14BDF4DF-A71B-489A-9077-EA112711CB28}.Release|x86.ActiveCfg = Release|Win32
|
||||
{14BDF4DF-A71B-489A-9077-EA112711CB28}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {63DF38A2-CBFB-4311-B6EF-1C63E412CA84}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
38
subVersion/CallbackProxy.h
Normal file
38
subVersion/CallbackProxy.h
Normal 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
subVersion/ColorDef.h
Normal file
141
subVersion/ColorDef.h
Normal 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
subVersion/D3D9Render.cpp
Normal file
298
subVersion/D3D9Render.cpp
Normal file
@ -0,0 +1,298 @@
|
||||
/*
|
||||
Copyright 2016-2017 sub1to
|
||||
|
||||
This file is part of subVersion GTA:O SC External Hack.
|
||||
|
||||
subVersion GTA:O SC External Hack is free software: you can redistribute
|
||||
it and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
subVersion GTA:O SC External Hack is distributed in the hope that it
|
||||
will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||
the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
D3D9Render::D3D9Render() :
|
||||
m_nFont(0)
|
||||
{
|
||||
|
||||
}
|
||||
D3D9Render::~D3D9Render()
|
||||
{
|
||||
this->releaseFont();
|
||||
m_pVertexBuffer->Release(); //close and release vertex buffer
|
||||
m_pD3dDev->Release(); // close and release the 3D device
|
||||
m_pD3d->Release(); // close and release Direct3D
|
||||
}
|
||||
|
||||
bool D3D9Render::init(HWND hWnd)
|
||||
{
|
||||
m_pD3d = Direct3DCreate9(D3D_SDK_VERSION); //create d3d9 interface
|
||||
|
||||
ZeroMemory(&m_d3dParam, sizeof(m_d3dParam)); //clear the struct
|
||||
|
||||
m_d3dParam.Windowed = true;
|
||||
m_d3dParam.SwapEffect = D3DSWAPEFFECT_DISCARD;
|
||||
m_d3dParam.hDeviceWindow = hWnd;
|
||||
m_d3dParam.BackBufferHeight = m_screen.h;
|
||||
m_d3dParam.BackBufferWidth = m_screen.w;
|
||||
m_d3dParam.MultiSampleQuality = D3DMULTISAMPLE_NONE;
|
||||
m_d3dParam.BackBufferFormat = D3DFMT_A8R8G8B8;
|
||||
|
||||
m_pD3d->CreateDevice( D3DADAPTER_DEFAULT,
|
||||
D3DDEVTYPE_HAL,
|
||||
hWnd,
|
||||
D3DCREATE_HARDWARE_VERTEXPROCESSING,
|
||||
&m_d3dParam,
|
||||
&m_pD3dDev);
|
||||
|
||||
//create vertex buffer
|
||||
m_pD3dDev->CreateVertexBuffer( 4 * sizeof(Vertex),
|
||||
0,
|
||||
VERTEX_FORMAT,
|
||||
D3DPOOL_DEFAULT, //managed = video ram; D3DPOOL_DEFAULT = auto
|
||||
&m_pVertexBuffer, //vertex buffer interface
|
||||
NULL);
|
||||
|
||||
this->createFont("Verdana", 14, true, false);
|
||||
this->createFont("Verdana", 14, false, false);
|
||||
this->createFont("Verdana", 18, true, false);
|
||||
|
||||
m_pD3dDev->SetFVF(VERTEX_FORMAT);// select which vertex format to use
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static std::string floatToString(float val) {
|
||||
auto res = std::to_string(val);
|
||||
const std::string format("$1");
|
||||
std::regex r("(\\d*)\\.0{6}|");
|
||||
std::regex r2("(\\d*\\.{1}0*[^0]+)0*");
|
||||
res = std::regex_replace(res, r2, format);
|
||||
res = std::regex_replace(res, r, format);
|
||||
return res;
|
||||
}
|
||||
|
||||
bool D3D9Render::render()
|
||||
{
|
||||
m_pD3dDev->Clear(0, nullptr, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0,0,0,0), 1.f, 0);
|
||||
m_pD3dDev->BeginScene();
|
||||
|
||||
if(g_pSettings->isMenuActive() && g_pMemMan->getWindow() == GetForegroundWindow())
|
||||
{
|
||||
//Draw header
|
||||
this->drawBoxBorder(0, 0, LAYOUT_ELEMENT_WIDTH, LAYOUT_ELEMENT_HEIGHT, LAYOUT_BORDER_SIZE, LAYOUT_COLOR_BACKGROUND, LAYOUT_COLOR_BORDER);
|
||||
this->drawText(m_szWindowTitle, 0, 0, LAYOUT_ELEMENT_WIDTH, LAYOUT_ELEMENT_HEIGHT, 2, LAYOUT_COLOR_TEXT, DT_CENTER | DT_VCENTER);
|
||||
|
||||
if (this->m_bMBShowing)
|
||||
{
|
||||
this->drawBoxBorder(LAYOUT_ELEMENT_WIDTH + 10, 0, LAYOUT_MB_WIDTH, LAYOUT_ELEMENT_HEIGHT, LAYOUT_BORDER_SIZE, LAYOUT_COLOR_BACKGROUND, LAYOUT_COLOR_BORDER);
|
||||
this->drawText(this->m_sTitle, LAYOUT_ELEMENT_WIDTH + 10, 0, LAYOUT_MB_WIDTH, LAYOUT_ELEMENT_HEIGHT, 2, LAYOUT_COLOR_TEXT, DT_CENTER | DT_VCENTER);
|
||||
this->drawBoxBorder(LAYOUT_ELEMENT_WIDTH + 10, LAYOUT_ELEMENT_HEIGHT, LAYOUT_MB_WIDTH, LAYOUT_MB_HEIGHT, LAYOUT_BORDER_SIZE, LAYOUT_COLOR_BACKGROUND, LAYOUT_COLOR_BORDER);
|
||||
this->drawText(this->m_sDetail, LAYOUT_ELEMENT_WIDTH + 10, LAYOUT_ELEMENT_HEIGHT, LAYOUT_MB_WIDTH , LAYOUT_MB_HEIGHT, 0, LAYOUT_COLOR_TEXT, DT_CENTER | DT_VCENTER);
|
||||
}
|
||||
|
||||
//prevent race conditions
|
||||
while(!g_pSettings->lockFeatureCur())
|
||||
Sleep(1);
|
||||
|
||||
//draw tabs
|
||||
for(int i = 0; i < g_pSettings->getFeatureCategoryCount(); i++)
|
||||
{
|
||||
featCat* tab = g_pSettings->getFeatureCategory(i);
|
||||
int x = (LAYOUT_ELEMENT_WIDTH / g_pSettings->getFeatureCategoryCount()) * i,
|
||||
y = LAYOUT_ELEMENT_HEIGHT * 1,
|
||||
w = LAYOUT_ELEMENT_WIDTH / g_pSettings->getFeatureCategoryCount(),
|
||||
h = LAYOUT_ELEMENT_HEIGHT;
|
||||
|
||||
this->drawBoxBorder( x, y, w, h, LAYOUT_BORDER_SIZE,
|
||||
(i == g_pSettings->getActiveCat()) ? LAYOUT_COLOR_ACTIVE_BG : LAYOUT_COLOR_BACKGROUND,
|
||||
(i == g_pSettings->getActiveCat()) ? LAYOUT_COLOR_ACTIVE_BORDER : LAYOUT_COLOR_BORDER);
|
||||
this->drawText(tab->m_szName, x, y, w - 1, h, 0, LAYOUT_COLOR_TEXT, DT_CENTER | DT_VCENTER);
|
||||
}
|
||||
//draw features
|
||||
int n = g_pSettings->getFeatureCurCount(),
|
||||
active = g_pSettings->getActiveFeature();
|
||||
|
||||
this->drawBoxBorder( 0, //draw bg for all features
|
||||
LAYOUT_ELEMENT_HEIGHT * 2,
|
||||
LAYOUT_ELEMENT_WIDTH,
|
||||
(n > MAX_MENU_FEATURES_DISPLAYED) ? MAX_MENU_FEATURES_DISPLAYED * LAYOUT_ELEMENT_HEIGHT : LAYOUT_ELEMENT_HEIGHT * n,
|
||||
LAYOUT_BORDER_SIZE,
|
||||
LAYOUT_COLOR_BACKGROUND,
|
||||
LAYOUT_COLOR_BORDER);
|
||||
|
||||
for(int i = 0, j = g_pSettings->getDisplayOffset(); i < n && i < MAX_MENU_FEATURES_DISPLAYED; i++, j++)
|
||||
{
|
||||
feat* feature = g_pSettings->getFeatureCur(j);
|
||||
|
||||
int x = 8,
|
||||
y = LAYOUT_ELEMENT_HEIGHT * (i + 2);
|
||||
|
||||
//selected box
|
||||
if(j == active)
|
||||
this->drawBoxBorder( x - 6,
|
||||
y + 2,
|
||||
LAYOUT_ELEMENT_WIDTH - (LAYOUT_BORDER_SIZE * 2),
|
||||
LAYOUT_ELEMENT_HEIGHT - (LAYOUT_BORDER_SIZE * 2),
|
||||
LAYOUT_BORDER_SIZE,
|
||||
LAYOUT_COLOR_ACTIVE_BG,
|
||||
LAYOUT_COLOR_SELECTED);
|
||||
|
||||
//checkbox
|
||||
if(feature->m_type == feat_toggle || feature->m_type == feat_slider)
|
||||
{
|
||||
this->drawBoxBorder( x - 2,
|
||||
y + 5,
|
||||
LAYOUT_ELEMENT_HEIGHT - (LAYOUT_BORDER_SIZE * 5),
|
||||
LAYOUT_ELEMENT_HEIGHT - (LAYOUT_BORDER_SIZE * 5),
|
||||
LAYOUT_BORDER_SIZE,
|
||||
(feature->m_bOn == true) ? LAYOUT_COLOR_SELECTED : LAYOUT_COLOR_BACKGROUND,
|
||||
(feature->m_bOn == true) ? LAYOUT_COLOR_ACTIVE_BORDER : LAYOUT_COLOR_BORDER);
|
||||
x += (LAYOUT_ELEMENT_HEIGHT - (LAYOUT_BORDER_SIZE * 3));
|
||||
}
|
||||
this->drawText(feature->m_szName, x, y, 0, LAYOUT_ELEMENT_HEIGHT, 1, LAYOUT_COLOR_TEXT, DT_VCENTER);
|
||||
|
||||
//slider
|
||||
if(feature->m_type == feat_slider)
|
||||
{
|
||||
featSlider* slider = static_cast<featSlider*>(feature);
|
||||
int x = (int) (LAYOUT_ELEMENT_WIDTH * .5f),
|
||||
y = (LAYOUT_ELEMENT_HEIGHT * (i + 2)) + 5,
|
||||
w = (int) ((LAYOUT_ELEMENT_WIDTH * .5f) - (LAYOUT_BORDER_SIZE * 2)),
|
||||
h = LAYOUT_ELEMENT_HEIGHT - (LAYOUT_BORDER_SIZE * 5);
|
||||
float mod = (slider->m_fValue - slider->m_fMin) / (slider->m_fMax - slider->m_fMin);
|
||||
this->drawBoxBorder(x, y, w, h, LAYOUT_BORDER_SIZE, LAYOUT_COLOR_SLIDER_BG, LAYOUT_COLOR_BORDER);
|
||||
this->drawBoxBorder(x + (int) (mod * (w - h)), y, h, h, LAYOUT_BORDER_SIZE, LAYOUT_COLOR_SLIDER_BTN, LAYOUT_COLOR_BORDER);
|
||||
//this->drawText(floatToString(slider->m_fValue), x, y, w - 1, h, 0, LAYOUT_COLOR_VALUE_TEXT, DT_CENTER | DT_VCENTER);
|
||||
}
|
||||
}
|
||||
|
||||
//draw scrollbar
|
||||
int max = n - MAX_MENU_FEATURES_DISPLAYED; //number of features that are not displayed
|
||||
if(max > 0)
|
||||
{
|
||||
int space = LAYOUT_ELEMENT_HEIGHT * (MAX_MENU_FEATURES_DISPLAYED + 2),
|
||||
height = (space / max <= space / 2) ? space / max : space / 2;
|
||||
space -= height;
|
||||
float mod = (g_pSettings->getDisplayOffset() / (float) max);
|
||||
this->drawBoxBorder(LAYOUT_ELEMENT_WIDTH + LAYOUT_BORDER_SIZE , (int) (space * mod), LAYOUT_SCROLLBAR_WIDTH, height, LAYOUT_BORDER_SIZE, LAYOUT_COLOR_BACKGROUND, LAYOUT_COLOR_BORDER);
|
||||
}
|
||||
|
||||
g_pSettings->unlockFeatureCur();
|
||||
}
|
||||
|
||||
m_pD3dDev->EndScene();
|
||||
m_pD3dDev->Present(nullptr, nullptr, nullptr, nullptr);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool D3D9Render::createFont(char *name, int size, bool bold, bool italic)
|
||||
{
|
||||
if(m_nFont >= FONT_BUFFER_SIZE)
|
||||
return false;
|
||||
D3DXCreateFont(m_pD3dDev, size, 0, (bold) ? FW_BOLD : FW_NORMAL, 0, (italic) ? 1 : 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH, name, &m_pFont[m_nFont]);
|
||||
m_nFont++;
|
||||
return true;
|
||||
}
|
||||
|
||||
void D3D9Render::releaseFont()
|
||||
{
|
||||
for(int i = 0; i < m_nFont; i++)
|
||||
if(m_pFont[i] != nullptr)
|
||||
m_pFont[i]->Release();
|
||||
m_nFont = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
bool D3D9Render::getViewport()
|
||||
{
|
||||
RECT rectWnd;
|
||||
GetWindowRect(g_pMemMan->getWindow(), &rectWnd);
|
||||
m_screen.w = LAYOUT_ELEMENT_WIDTH * 2 + LAYOUT_SCROLLBAR_WIDTH + LAYOUT_BORDER_SIZE;
|
||||
m_screen.h = LAYOUT_ELEMENT_HEIGHT * (MAX_MENU_FEATURES_DISPLAYED + 2); //300
|
||||
m_screen.x = rectWnd.left + LAYOUT_PADDING_LEFT;
|
||||
m_screen.y = rectWnd.top + LAYOUT_PADDING_TOP;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void D3D9Render::showMessageBox(std::wstring title,std::wstring detail)
|
||||
{
|
||||
this->m_sTitle = title;
|
||||
this->m_sDetail = detail;
|
||||
std::thread t([this] {
|
||||
m_bMBShowing = true;
|
||||
Sleep(3000);
|
||||
m_bMBShowing = false;
|
||||
});
|
||||
t.detach();
|
||||
}
|
||||
|
||||
void D3D9Render::drawBox(int x, int y, int w, int h, D3DCOLOR color)
|
||||
{
|
||||
/*Vertex vertex[] =
|
||||
{
|
||||
{(float) x, (float) y + h, 1.0f, 1.0f, color},
|
||||
{(float) x, (float) y, 1.0f, 1.0f, color},
|
||||
{(float) x + w, (float) y + h, 1.0f, 1.0f, color},
|
||||
{(float) x + w, (float) y, 1.0f, 1.0f, color}
|
||||
};
|
||||
void* pvBuffer; //pointer to the buffer
|
||||
m_pVertexBuffer->Lock(0, 0, (void**) &pvBuffer, 0);
|
||||
memcpy(pvBuffer, vertex, sizeof(vertex));
|
||||
m_pVertexBuffer->Unlock();
|
||||
|
||||
// select the vertex buffer to display
|
||||
m_pD3dDev->SetStreamSource(0, m_pVertexBuffer, 0, sizeof(Vertex));
|
||||
|
||||
// copy the vertex buffer to the back buffer
|
||||
m_pD3dDev->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);*/
|
||||
|
||||
D3DRECT rect {x, y, x + w, y + h};
|
||||
m_pD3dDev->Clear(1, &rect, D3DCLEAR_TARGET, color, 1.f, 0);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void D3D9Render::drawBoxInline(int x, int y, int w, int h, int size, D3DCOLOR color)
|
||||
{
|
||||
this->drawBox(x, y, w, size, color); //top
|
||||
this->drawBox(x + w - size, y, size, h, color); //right
|
||||
this->drawBox(x, y + h - size, w, size, color); //bottom
|
||||
this->drawBox(x, y, size, h, color); //left
|
||||
return;
|
||||
}
|
||||
|
||||
void D3D9Render::drawBoxBorder(int x, int y, int w, int h, int borderSize, D3DCOLOR color, D3DCOLOR borderColor)
|
||||
{
|
||||
this->drawBox(x, y, w, h, borderColor);
|
||||
this->drawBox(x + borderSize, y + borderSize, w - (borderSize * 2), h - (borderSize * 2), color);
|
||||
}
|
||||
|
||||
void D3D9Render::drawText(std::wstring str, int x, int y, int font, D3DCOLOR color)
|
||||
{
|
||||
LPCWSTR pszStr = str.c_str();
|
||||
RECT pos;
|
||||
pos.left = x;
|
||||
pos.top = y;
|
||||
m_pFont[font]->DrawTextW(nullptr, pszStr, (int) lstrlenW(pszStr), &pos, DT_NOCLIP, color);
|
||||
}
|
||||
|
||||
//void drawText (std::string str, float x, float y, float w, float h, int font, D3DCOLOR color, DWORD flags = NULL)
|
||||
void D3D9Render::drawText(std::wstring str, int x, int y, int w, int h, int font, D3DCOLOR color, DWORD flags)
|
||||
{
|
||||
LPCWSTR pszStr = str.c_str();
|
||||
RECT pos;
|
||||
pos.left = x;
|
||||
pos.right = x + w;
|
||||
pos.top = y;
|
||||
pos.bottom = y + h;
|
||||
m_pFont[font]->DrawTextW(nullptr, pszStr, (int) lstrlenW(pszStr), &pos, flags | DT_NOCLIP, color);
|
||||
}
|
109
subVersion/D3D9Render.h
Normal file
109
subVersion/D3D9Render.h
Normal file
@ -0,0 +1,109 @@
|
||||
/*
|
||||
Copyright 2016-2017 sub1to
|
||||
|
||||
This file is part of subVersion GTA:O SC External Hack.
|
||||
|
||||
subVersion GTA:O SC External Hack is free software: you can redistribute
|
||||
it and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
subVersion GTA:O SC External Hack is distributed in the hope that it
|
||||
will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||
the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef D3D9_RENDER
|
||||
#define D3D9_RENDER
|
||||
|
||||
#define FONT_BUFFER_SIZE 0x10 //max amount of fonts
|
||||
#define VERTEX_FORMAT (D3DFVF_XYZRHW | D3DFVF_DIFFUSE) //custom vertex format
|
||||
|
||||
//Layout defines
|
||||
#define LAYOUT_PADDING_TOP 50
|
||||
#define LAYOUT_PADDING_LEFT 50
|
||||
|
||||
#define LAYOUT_BORDER_SIZE 2
|
||||
#define LAYOUT_ELEMENT_WIDTH 300
|
||||
#define LAYOUT_ELEMENT_HEIGHT 25
|
||||
|
||||
#define LAYOUT_MB_WIDTH 300
|
||||
#define LAYOUT_MB_HEIGHT 100
|
||||
|
||||
#define LAYOUT_SCROLLBAR_WIDTH 0x08
|
||||
#define LAYOUT_SCROLLBAR_HEIGHT 0x40
|
||||
|
||||
#define uuu 0xaa
|
||||
#define merah 0x78, 0x38, 0x38
|
||||
#define merah_aktif 0xac, 0x85, 0x85
|
||||
#define biru 0x38, 0x78, 0xe2
|
||||
#define biru_aktif 0x85, 0xac, 0xed
|
||||
#define hijau 0x38, 0xe2, 0x78
|
||||
#define hijau_aktif 0x85, 0xed, 0xac
|
||||
|
||||
#define LAYOUT_COLOR_BACKGROUND D3DCOLOR_ARGB(uuu, 0x38, 0xe2, 0x78)//
|
||||
#define LAYOUT_COLOR_BORDER D3DCOLOR_ARGB(uuu, 1, 1, 1)
|
||||
#define LAYOUT_COLOR_TEXT D3DCOLOR_ARGB(uuu, 1, 1, 1)
|
||||
#define LAYOUT_COLOR_VALUE_TEXT D3DCOLOR_ARGB(uuu, 255,255,255)
|
||||
#define LAYOUT_COLOR_SLIDER_BG D3DCOLOR_ARGB(uuu, 0x28, 0x28, 0x28)
|
||||
#define LAYOUT_COLOR_SLIDER_BTN D3DCOLOR_ARGB(uuu, 0x73, 0x73, 0x73)
|
||||
#define LAYOUT_COLOR_ACTIVE_BG D3DCOLOR_ARGB(uuu, 0x85, 0xed, 0xac)//
|
||||
#define LAYOUT_COLOR_ACTIVE_BORDER D3DCOLOR_ARGB(uuu, 1, 1, 1)
|
||||
#define LAYOUT_COLOR_SELECTED D3DCOLOR_ARGB(uuu, 0xff, 0xff, 0xff)
|
||||
|
||||
|
||||
struct Vertex
|
||||
{
|
||||
FLOAT x, y, z, rhw; // from the D3DFVF_XYZRHW flag
|
||||
DWORD color; // from the D3DFVF_DIFFUSE flag
|
||||
};
|
||||
|
||||
class D3D9Render
|
||||
{
|
||||
public:
|
||||
struct scrnVars
|
||||
{
|
||||
int w = 800, //screen width
|
||||
h = 600,
|
||||
x = 0,
|
||||
y = 0; //screen height
|
||||
} m_screen;
|
||||
|
||||
std::wstring m_szWindowTitle;
|
||||
bool m_bMBShowing;
|
||||
std::wstring m_sTitle;
|
||||
std::wstring m_sDetail;
|
||||
|
||||
D3D9Render ();
|
||||
~D3D9Render ();
|
||||
|
||||
bool init (HWND hWnd);
|
||||
bool render ();
|
||||
bool createFont (char *font, int size, bool bold, bool italic);
|
||||
void releaseFont ();
|
||||
bool getViewport ();
|
||||
void showMessageBox(std::wstring title, std::wstring detail);
|
||||
|
||||
void drawBox (int x, int y, int w, int h, D3DCOLOR color);
|
||||
void drawBoxInline (int x, int y, int w, int h, int size, D3DCOLOR color);
|
||||
void drawBoxBorder (int x, int y, int w, int h, int borderSize, D3DCOLOR color, D3DCOLOR borderColor);
|
||||
void drawText (std::wstring str, int x, int y, int font, D3DCOLOR color);
|
||||
void drawText (std::wstring str, int x, int y, int w, int h, int font, D3DCOLOR color, DWORD flags = NULL);
|
||||
protected:
|
||||
|
||||
LPDIRECT3D9 m_pD3d; // the pointer to Direct3D interface
|
||||
LPDIRECT3DDEVICE9 m_pD3dDev; // the pointer to the device
|
||||
LPDIRECT3DVERTEXBUFFER9 m_pVertexBuffer; //pointer to the vertex buffer interface
|
||||
LPD3DXFONT m_pFont[FONT_BUFFER_SIZE];
|
||||
int m_nFont;
|
||||
D3DPRESENT_PARAMETERS m_d3dParam; //d3d9 device params
|
||||
};
|
||||
|
||||
extern D3D9Render* g_pD3D9Render;
|
||||
|
||||
#endif
|
71
subVersion/GTA d3d9.rc
Normal file
71
subVersion/GTA d3d9.rc
Normal 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
subVersion/VehiclePreview.h
Normal file
811
subVersion/VehiclePreview.h
Normal file
@ -0,0 +1,811 @@
|
||||
#pragma once
|
||||
#include<vector>
|
||||
|
||||
struct VehiclePreview {
|
||||
std::wstring VName;
|
||||
char* VCode;
|
||||
char* TexDict;
|
||||
char* TexName;
|
||||
};
|
||||
|
||||
|
||||
static std::vector<VehiclePreview> Super{
|
||||
{L"Pfister 811","Pfister811","lgm_dlc_executive1","pfister811"},
|
||||
{L"Adder","Adder","lgm_default","adder"},
|
||||
{L"Autarch","autarch","lgm_dlc_xmas2017","autarch_b"},
|
||||
{L"Banshee 900R","Banshee2","lsc_jan2016","banshee2"},
|
||||
{L"Bullet","Bullet","lgm_default","bullet"},
|
||||
{L"Cheetah","Cheetah","lgm_default","cheetah"},
|
||||
{L"Cyclone","cyclone","lgm_dlc_smuggler","cyclone"},
|
||||
{L"Cyclone","cyclone","lgm_dlc_smuggler","cyclone"},
|
||||
{L"Deveste 8","DEVESTE","lgm_dlc_arena","deveste"},
|
||||
{L"Emperor ETR1","Sheava","lgm_dlc_stunt","sheava"},
|
||||
{L"Emerus","emerus","lgm_dlc_vinewood","emerus"},
|
||||
{L"Entity XXR","entity2","lgm_dlc_assault","entity2"},
|
||||
{L"Entity XF","Entityxf","lgm_default","entityxf"},
|
||||
{L"FMJ","Fmj","lgm_dlc_executive1","fmj"},
|
||||
{L"Furia","furia","lgm_dlc_casinoheist","furia"},
|
||||
{L"Progen GP1","gp1","lgm_dlc_specialraces","gp1"},
|
||||
{L"Infernus","Infernus","sssa_default","infernus"},
|
||||
{L"Itali GTB Custom","italigtb2","lsc_dlc_import_export","italigtb2"},
|
||||
{L"Itali GTB","Italigtb","lsc_dlc_import_export","italigtb"},
|
||||
{L"Krieger","krieger","lgm_dlc_vinewood","krieger"},
|
||||
{L"Nero Custom","Nero2","lsc_dlc_import_export","nero2_b"},
|
||||
{L"Nero","Nero","lsc_dlc_import_export","nero2_a"},
|
||||
{L"Osiris","Osiris","lgm_dlc_luxe","Osiris"},
|
||||
{L"Penetrator","Penetrator","lgm_dlc_importexport","penetrator"},
|
||||
{L"Annis RE-7B","Le7b","lgm_dlc_stunt","le7b"},
|
||||
{L"Reaper","Reaper","lgm_dlc_executive1","reaper"},
|
||||
{L"Rocket Voltic","voltic2","candc_importexport","voltic2"},
|
||||
{L"Annis S80RR","s80","lgm_dlc_vinewood","s80"},
|
||||
{L"Ubermacht SC1","sc1","lgm_dlc_xmas2017","sc1_b"},
|
||||
{L"Scramjet","Scramjet","candc_battle","scramjet"},
|
||||
{L"Sultan RS","Sultanrs","lsc_jan2016","sultan2_a"},
|
||||
{L"Progen T20","T20","lgm_dlc_luxe","t20"},
|
||||
{L"Taipan","taipan","lgm_dlc_assault","taipan"},
|
||||
{L"Tempesta","Tempesta","lgm_dlc_importexport","tempesta"},
|
||||
{L"Tezeract","tezeract","lgm_dlc_assault","tezeract"},
|
||||
{L"Thrax","thrax","lgm_dlc_vinewood","thrax"},
|
||||
{L"Turismo R","turismor","lgm_dlc_business","turismor"},
|
||||
{L"Tyrant","TYRANT","lgm_dlc_assault","tyrant"},
|
||||
{L"Tyrus","Tyrus","lgm_dlc_stunt","tyrus"},
|
||||
{L"Vacca","Vacca","lgm_default","vacca"},
|
||||
{L"Vagner","Vagner","lgm_dlc_gunrunning","vagner"},
|
||||
{L"Vigilante","Vigilante","candc_smuggler","vigilante"},
|
||||
{L"Visione","visione","lgm_dlc_smuggler","visione"},
|
||||
{L"Voltic","Voltic","lgm_default","voltic_tless"},
|
||||
{L"Proto X80 ","Prototipo","lgm_dlc_executive1","prototipo"},
|
||||
{L"Ocelot XA-21","xa21","lgm_dlc_gunrunning","xa21"},
|
||||
{L"Zentorno","Zentorno","lgm_dlc_business2","zentorno"},
|
||||
{L"Zorusso","zorrusso","lgm_dlc_vinewood","zorrusso"}
|
||||
};
|
||||
static std::vector<VehiclePreview> Sports{
|
||||
{L"Albany Alpha","Alpha","lgm_dlc_business","alpha"},
|
||||
{L"Banshee Topless","Banshee","lgm_dlc_business2","banshee_tless"},
|
||||
{L"Dinka Blista","Blista2","sssa_dlc_mp_to_sp","blista2"},
|
||||
{L"Grotti Bestia GTS","Bestiagts","lgm_dlc_executive1","bestiagts"},
|
||||
{L"Dinka Blista(GO GO Monkey)","blista3","",""},
|
||||
{L"Bravado Buffalo Sprunk","Buffalo2","sssa_dlc_hipster","buffalo"},
|
||||
{L"Bravado Buffalo S ","Buffalo3","sssa_dlc_mp_to_sp","buffalo3"},
|
||||
{L"Bravado Buffalo","Buffalo","sssa_dlc_hipster","buffalo"},
|
||||
{L"Grotti Carbonizzare","Carbonizzare","lgm_default","carboniz"},
|
||||
{L"Pfister Comet Retro Custom","Comet3","lsc_dlc_import_export","comet3"},
|
||||
{L"Pfister Comet","Comet2","sssa_default","comet2"},
|
||||
{L"Pfister Comet Safari","comet4","lgm_dlc_xmas2017","comet4_b"},
|
||||
{L"Pfister Comet SR","comet5","lgm_dlc_xmas2017","comet5_b"},
|
||||
{L"Invetero Coquette","Coquette","lgm_default","coquette"},
|
||||
{L"Obey 8F Drafter","drafter","lgm_dlc_vinewood","drafter"},
|
||||
{L"Declasse Drift Tampa","tampa2","sssa_dlc_stunt","tampa2"},
|
||||
{L"Elegy RH8","Elegy2","lgm_default","elegy2"},
|
||||
{L"Annis Elegy Retro Custom","Elegy","lsc_dlc_import_export","elegy"},
|
||||
{L"Benefactor Feltzer","Feltzer2","",""},
|
||||
{L"Formula PR4", "formula", "lgm_dlc_casinoheist", "formula"},
|
||||
{L"Formula R88", "formula2", "lgm_dlc_casinoheist", "formula2"},
|
||||
{L"Vapid Flash GT","flashgt","lgm_dlc_assault","flashgt"},
|
||||
{L"Lampadati Furore GT","Furoregt","lgm_dlc_lts_creator","furore"},
|
||||
{L"Schyster Fusilade","Fusilade","sssa_dlc_business2","fusilade"},
|
||||
{L"Karin Futo","futo","sssa_dlc_battle","futo"},
|
||||
{L"Vapid GB200","gb200","lgm_dlc_assault","gb200"},
|
||||
{L"Declasse Hotring Sabre","hotring","sssa_dlc_assault","hotring"},
|
||||
{L"Overflod Imorgon","imorgon","lgm_dlc_casinoheist","imorgon"},
|
||||
{L"Issi Sport","issi7","sssa_dlc_vinewood","issi7"},
|
||||
{L"Grotti Itali GTO","ITALIGTO","lgm_dlc_arena","italigto"},
|
||||
{L"Dinka Jester(Racecar)","jester2","sssa_dlc_christmas_2","jester2"},
|
||||
{L"Dinka Jester Classic","jester3","lgm_dlc_assault","jester3"},
|
||||
{L"Dinka Jester","Jester","lgm_dlc_business","jester"},
|
||||
{L"Ocelot Jugular","jugular","lgm_dlc_vinewood","jugular"},
|
||||
{L"Hijak Khamelion","Khamelion","",""},
|
||||
{L"Lampadati Komoda","komoda","lgm_dlc_casinoheist","komoda"},
|
||||
{L"Karin Kuruma(Armored)","kuruma2","sssa_dlc_heist","kuruma2"},
|
||||
{L"Karin Kuruma","kuruma","sssa_dlc_heist","kuruma"},
|
||||
{L"Ocelot Locust","locust","lgm_dlc_vinewood","locust"},
|
||||
{L"Ocelot Lynx","lynx","lgm_dlc_stunt","lynx"},
|
||||
{L"Dewbauchee Massacro (Race)","Massacro2","sssa_dlc_christmas_2","massacro2"},
|
||||
{L"Dewbauchee Massacro","Massacro","lgm_dlc_business2","massacro"},
|
||||
{L"Vysser Neo","neo","lgm_dlc_vinewood","neo"},
|
||||
{L"Pfister Neon","neon","lgm_dlc_xmas2017","neon_b"},
|
||||
{L"Obey 9F Cabrio","Ninef2","lgm_default","ninef2"},
|
||||
{L"Obey 9F","Ninef","sssa_default","ninef"},
|
||||
{L"Obey Omnis","Omnis","sssa_dlc_stunt","omnis"},
|
||||
{L"Enus Paragon R","paragon","lgm_dlc_vinewood","paragon"},
|
||||
{L"Enus Paragon R (Armored)","paragon2","lgm_dlc_vinewood","paragon"},
|
||||
{L"Ocelot Pariah","pariah","lgm_dlc_xmas2017","pariah_b"},
|
||||
{L"Maibatsu Penumbra","Penumbra","sssa_dlc_business2","penumbra"},
|
||||
{L"Coil Raiden","raiden","lgm_dlc_xmas2017","raiden_b"},
|
||||
{L"Dewbauchee Rapid GT Cabrio","rapidgt2","lgm_default","rapidgt2"},
|
||||
{L"Dewbauchee Rapid GT","Rapidgt","lgm_default","rapidgt"},
|
||||
{L"BF Raptor","raptor","lgm_dlc_biker","raptor"},
|
||||
{L"Ubermacht Revolter","revolter","lgm_dlc_xmas2017","revolter_b"},
|
||||
{L"Hijak Ruston","ruston","lgm_dlc_specialraces","ruston"},
|
||||
{L"Benefactor Schafter LWB","schafter4","lgm_dlc_apartments","schafter4"},
|
||||
{L"Benefactor Schafter V12","schafter3","lgm_dlc_apartments","schafter3"},
|
||||
{L"Benefactor Schlagen GT","SCHLAGEN","lgm_dlc_arena","schlagen"},
|
||||
{L"Benefactor Schwarter","schwarzer","sssa_default","schwarze"},
|
||||
{L"Ubermacht Sentine Classic","sentinel3","sssa_dlc_xmas2017","sentinel3_b"},
|
||||
{L"Dewbauchee Seven 70","Seven70","lgm_dlc_executive1","seven70"},
|
||||
{L"Dewbauchee Specter","specter","lsc_dlc_import_export","specter2_a"},
|
||||
{L"Dewbauchee Specter Custom","specter2","lsc_dlc_import_export","specter2_b"},
|
||||
{L"Benefactor Streiter","streiter","lgm_dlc_xmas2017","streiter_b"},
|
||||
{L"Dinka Sugoi","sugoi","sssa_dlc_casinoheist","sugoi"},
|
||||
{L"Karin Sultan","Sultan","lsc_jan2016","sultan2_a"},
|
||||
{L"Karin Sultan Classic","sultan2","sssa_dlc_casinoheist","sultan2"},
|
||||
{L"Benefactor Surano","surano","lgm_default","surano_convertable"},
|
||||
{L"Lampadati Tropos Rallye","tropos","sssa_dlc_stunt","tropos"},
|
||||
{L"Albany V-STR","vstr","lgm_dlc_casinoheist","vstr"},
|
||||
{L"Bravado Verlierer","Verlierer2","lgm_dlc_apartments","verlier"},
|
||||
{L"Annis Future Shock ZR380","ZR3802","mba_vehicles","zr3802"},
|
||||
{L"Annis Nightmare ZR380","ZR3803","mba_vehicles","zr3803"},
|
||||
{L"Annis Apocalypse ZR380","ZR380","mba_vehicles","zr3801"}
|
||||
};
|
||||
static std::vector<VehiclePreview> SportsClassics{
|
||||
{L"Ocelot Ardent","Ardent","candc_gunrunning","ardent"},
|
||||
{L"Lampadati Casco","casco","lgm_dlc_heist","casco"},
|
||||
{L"Rune Cheburek","cheburek","sssa_dlc_assault","cheburek"},
|
||||
{L"Grotti Cheetah Classic","Cheetah2","lgm_dlc_gunrunning","cheetah2"},
|
||||
{L"Invetero Coquette Classic","coquette2","lgm_dlc_pilot","coquette2"},
|
||||
{L"Imponte Deluxo","deluxo","candc_xmas2017","deluxo_b"},
|
||||
{L"Weeny Dynasty","dynasty","sssa_dlc_vinewood","dynasty"},
|
||||
{L"Vulcar Fagaloa ","fagaloa","sssa_dlc_assault","fagaloa"},
|
||||
{L"Grotti GT500","gt500","lgm_dlc_xmas2017","gt500_b"},
|
||||
{L"Pegassi Infernus Classic","Infernus2","lgm_dlc_specialraces","infernus2"},
|
||||
{L"Dewbauchee JB 700","jb700","lgm_default","jb700"},
|
||||
{L"Dewbauchee JB 700W","jb7002","lgm_default","jb700"},
|
||||
{L"Declasse Mamba","mamba","lgm_dlc_apartments","mamba"},
|
||||
{L"Albany Manana","manana","",""},
|
||||
{L"Lampadati Michelli GT","michelli","sssa_dlc_assault","michelli"},
|
||||
{L"Pegassi Monroe","monroe","lgm_default","monroe"},
|
||||
{L"Vulcar Nebula Turbo","nebula","sssa_dlc_vinewood","nebula"},
|
||||
{L"Vapid Peyote","Peyote","",""},
|
||||
{L"Lampadati Pigalle","pigalle","sssa_dlc_hipster","pigalle"},
|
||||
{L"Dewbauchee Rapid GT Classic","rapidgt3","lgm_dlc_smuggler","rapidgt3"},
|
||||
{L"Vapid Retinue Mk II","retinue2","sssa_dlc_casinoheist","retinue2"},
|
||||
{L"Vapid Retinue","Retinue","",""},
|
||||
{L"Vapid Retinue","Retinue","sssa_dlc_smuggler","retinue_b"},
|
||||
{L"Albany Franken Strange","btype2","sssa_dlc_halloween","btype2"},
|
||||
{L"Albany Roosevelt Valor","btype3","lgm_dlc_valentines2","roosevelt2"},
|
||||
{L"Albany Roosevelt","btype","lgm_dlc_valentines","roosevelt"},
|
||||
{L"Annis Savestra","savestra","lgm_dlc_xmas2017","savestra_b"},
|
||||
{L"Grotti Stinger GT","stingergt","lgm_default","stingerg"},
|
||||
{L"Grotti Stinger","stinger","lgm_default","stinger"},
|
||||
{L"Benefactor Stirling GT","Feltzer3","lgm_dlc_luxe","feltzer3"},
|
||||
{L"Ocelot Stromberg","stromberg","candc_xmas2017","stromberg_b"},
|
||||
{L"Ocelot Swinger","Swinger","lgm_dlc_battle","swinger"},
|
||||
{L"Pegassi Torero","torero","lgm_dlc_gunrunning","torero"},
|
||||
{L"Declasse Tornado","Tornado","",""},
|
||||
{L"Declasse Tornado Convertible","Tornado2","",""},
|
||||
{L"Declasse Tornado Gang","Tornado3","",""},
|
||||
{L"Declasse Tornado Convertible Gang","Tornado4","",""},
|
||||
{L"Declasse Tornado Custom","Tornado5","lsc_lowrider2","tornado5_a"},
|
||||
{L"Declasse Tornado Rat Rod","tornado6","sssa_dlc_biker","tornado6"},
|
||||
{L"Grotti Turismo Classic","turismo2","lgm_dlc_specialraces","turismo2"},
|
||||
{L"Lampadati Viseris","viseris","lgm_dlc_xmas2017","viseris_b"},
|
||||
{L"Truffade Z-Type","ztype","lgm_default","ztype"},
|
||||
{L"Karin 190z","z190","lgm_dlc_xmas2017","z190_b"},
|
||||
{L"Ubermacht Zion Classic","zion3","sssa_dlc_vinewood","zion3"}
|
||||
};
|
||||
static std::vector<VehiclePreview> Coupes{
|
||||
{L"Enus Cognoscenti Cabrio","cogcabrio","lgm_default","cogcabri"},
|
||||
{L"Dewbauchee Exemplar","Exemplar","sssa_default","exemplar"},
|
||||
{L"Ocelot F620","F620","sssa_dlc_business2","f620"},
|
||||
{L"Lampadati Felon","Felon","sssa_default","felon"},
|
||||
{L"Lampadati Felon GT","Felon2","sssa_default","felon2"},
|
||||
{L"Ocelot Jackal","Jackal","sssa_dlc_heist","jackal"},
|
||||
{L"Ubermacht Oracle","Oracle","sssa_default","oracle"},
|
||||
{L"Ubermacht Oracle Mk2","oracle2","sssa_dlc_heist","oracle1"},
|
||||
{L"Ubermacht Sentinel XS","Sentinel","sssa_dlc_business2","sentinel"},
|
||||
{L"Ubermacht Sentinel","Sentinel2","sssa_dlc_business2","sentinel"},
|
||||
{L"Enus Windsor","Windsor","lgm_dlc_luxe","windsor"},
|
||||
{L"Enus Windsor Drop","Windsor2","",""},
|
||||
{L"Ubermacht Zion","Zion","sssa_default","zion"},
|
||||
{L"Ubermacht Zion Cabrio","Zion2","sssa_default","zion2"}
|
||||
};
|
||||
static std::vector<VehiclePreview> Muscle{
|
||||
{L"Vapid Blade","Blade","sssa_dlc_hipster","blade"},
|
||||
{L"Imponte Ruiner 2000","ruiner3","",""},
|
||||
{L"Albany Buccaaneer Custom","Buccaneer2","lsc_default","buccaneer2_b"},
|
||||
{L"Albany Buccaaneer","Buccaneer","lsc_default","buccaneer2_a"},
|
||||
{L"Vapid Chino Custom","Chino2","lsc_default","chino2_a"},
|
||||
{L"Vapid Chino","Chino","lgm_dlc_luxe","chino"},
|
||||
{L"Vapid Clique","CLIQUE","lgm_dlc_arena","clique"},
|
||||
{L"Invetero Coquette Blackfin","coquette3","lgm_dlc_luxe","coquette3"},
|
||||
{L"Schyster Deviant","DEVIANT","lgm_dlc_arena","deviant"},
|
||||
{L"Vapid Dominator GTX","dominator3","sssa_dlc_assault","dominator3"},
|
||||
{L"Vapid Apocalypse Dominator","DOMINATOR4","mba_vehicles","dominato_c_1"},
|
||||
{L"Vapid Future Shock Dominator","DOMINATOR5","mba_vehicles","dominato_c_2"},
|
||||
{L"Vapid Nightmare Dominator","DOMINATOR6","mba_vehicles","dominato_c_3"},
|
||||
{L"Vapid Dominator","Dominator","sssa_dlc_business2","dominato"},
|
||||
{L"Imponte Dukes of Death","Dukes2","candc_default","dukes"},
|
||||
{L"Imponte Dukes","Dukes","sssa_dlc_mp_to_sp","dukes"},
|
||||
{L"Vapid Ellie","ellie","sssa_dlc_assault","ellie"},
|
||||
{L"Williard Faction Custom Donk","Faction3","lsc_lowrider2","faction3_b"},
|
||||
{L"Williard Faction Custom","Faction2","lsc_lowrider2","faction3_a"},
|
||||
{L"Williard Faction","Faction","lsc_default","faction2_a"},
|
||||
{L"Bravado Redwood Gauntlet","Gauntlet2","sssa_dlc_mp_to_sp","gauntlet2"},
|
||||
{L"Bravado Gauntlet Classic Custom","gauntlet3","sssa_dlc_vinewood","gauntlet3"},
|
||||
{L"Bravado Gauntlet Hellfire","gauntlet4","sssa_dlc_vinewood","gauntlet4"},
|
||||
{L"Bravado Gauntlet","Gauntlet","sssa_default","gauntlet"},
|
||||
{L"Albany Hermes","hermes","sssa_dlc_xmas2017","hermes_b"},
|
||||
{L"Vapid Hotknife","Hotknife","lgm_default","hotknife"},
|
||||
{L"Vapid Hustler","hustler","lgm_dlc_xmas2017","hustler_b"},
|
||||
{L"Declasse Impaler","IMPALER","mba_vehicles","impaler"},
|
||||
{L"Declasse Impaler","impaler","sssa_dlc_vinewood","impaler"},
|
||||
{L"Declasse Apocalypse Impaler","IMPALER2","mba_vehicles","impaler_c_1"},
|
||||
{L"Declasse Future Shock Impaler","IMPALER3","mba_vehicles","impaler_c_2"},
|
||||
{L"Declasse Nightmare Impaler","IMPALER4","mba_vehicles","impaler_c_3"},
|
||||
{L"Vapid Future Shock Imperator","IMPERATOR2","mba_vehicles","imperator2"},
|
||||
{L"Vapid Nightmare Imperator","IMPERATOR3","mba_vehicles","imperator3"},
|
||||
{L"Vapid Apocalypse Imperator","IMPERATOR","mba_vehicles","imperator1"},
|
||||
{L"Albany Lurcher","lurcher","sssa_dlc_halloween","lurcher"},
|
||||
{L"Declasse Moonbeam Custom","Moonbeam2","lsc_default","moonbeam2"},
|
||||
{L"Declasse Moonbeam","Moonbeam","",""},
|
||||
{L"Imponte Nightsade","nightshade","lgm_dlc_apartments","niteshad"},
|
||||
{L"Vapid Peyote Gasser","peyote2","sssa_dlc_vinewood","peyote2"},
|
||||
{L"Imponte Phoenix","phoenix","",""},
|
||||
{L"Cheval Picador","picador","sssa_dlc_hipster","picador"},
|
||||
{L"Vapid Pisswaser Dominator","Dominator2","sssa_dlc_mp_to_sp","dominator2"},
|
||||
{L"Bravado Rat Loader","ratloader","sssa_dlc_valentines","rloader"},
|
||||
{L"Bravado Rat truck","ratloader2","sssa_dlc_christmas_2","rloader2"},
|
||||
{L"Imponte Ruiner 2000","ruiner2","candc_importexport","ruiner2"},
|
||||
{L"Imponte Ruiner","ruiner","sssa_dlc_battle","ruiner"},
|
||||
{L"Declasse Sabre Turbo","Sabregt","",""},
|
||||
{L"Declasse Sabre Turbo Custom","Sabregt2","lsc_lowrider2","sabregt2_a"},
|
||||
{L"Vapid Slamvan LostMC","Slamvan2","",""},
|
||||
{L"Vapid Slamvan Custom","Slamvan3","lsc_lowrider2","slamvan3_b"},
|
||||
{L"Vapid Apocalypse Slamvan ","SLAMVAN4","mba_vehicles","slamvan_c_1"},
|
||||
{L"Vapid Future Shock Slamvan","SLAMVAN5","mba_vehicles","slamvan_c_2"},
|
||||
{L"Vapid Nightmare Slamvan","SLAMVAN6","mba_vehicles","slamvan_c_3"},
|
||||
{L"Vapid Slamvan","Slamvan","sssa_dlc_christmas_2","slamvan"},
|
||||
{L"Declasse Burgershot Stallion","stalion2","sssa_dlc_mp_to_sp","stalion2"},
|
||||
{L"Declasse Stallion","Stalion","sssa_dlc_mp_to_sp","stallion"},
|
||||
{L"Declasse Weaponized Tampa","tampa3","candc_gunrunning","tampa3"},
|
||||
{L"Declasse Tampa","Tampa","sssa_dlc_christmas_3","tampa"},
|
||||
{L"Declasse Tulip","TULIP","sssa_dlc_arena","tulip"},
|
||||
{L"Declasse Vamos","VAMOS","sssa_dlc_arena","vamos"},
|
||||
{L"Declasse Vigero","Vigero","sssa_default","vigero"},
|
||||
{L"Dundreary Virgo Classic Custom","Virgo2","lsc_lowrider2","virgo2_a"},
|
||||
{L"Dundreary Virgo Classic","Virgo3","lsc_lowrider2","virgo2_b"},
|
||||
{L"Dundreary Virgo","Virgo","lgm_dlc_luxe","virgo"},
|
||||
{L"Declasse Voodoo Custom","Voodoo2","lsc_default","voodoo_b"},
|
||||
{L"Declasse Voodoo","Voodoo","lsc_default","voodoo_a"},
|
||||
{L"Declasse Yosemite","yosemite","sssa_dlc_xmas2017","yosemite_b"},
|
||||
{L"Declasse Drift Yosemite","yosemite2","sssa_dlc_casinoheist","yosemite2"}
|
||||
};
|
||||
static std::vector<VehiclePreview> Offroad{
|
||||
{L"BF Injection","bfinjection","sssa_default","bfinject"},
|
||||
{L"BF Bifta","Bifta","sssa_default","bifta"},
|
||||
{L"Nagasaki Hotrod Blazer","Blazer3","sssa_dlc_hipster","blazer3"},
|
||||
{L"Nagasaki Blazer Aqua","Blazer5","candc_importexport","blazer5"},
|
||||
{L"Nagasaki Blazer Lifeguard","Blazer2","",""},
|
||||
{L"Nagasaki Blazer","Blazer","sssa_default","blazer"},
|
||||
{L"Nagasaki Street Blazer","Blazer4","sssa_dlc_biker","blazer4"},
|
||||
{L"Canis Bodhi","Bodhi2","sssa_default","bodhi2"},
|
||||
{L"Coil Brawler","Brawler","lgm_dlc_luxe","brawler"},
|
||||
{L"Benefactor Future Shock Bruiser","BRUISER2","mba_vehicles","bruiser_c_2"},
|
||||
{L"Benefactor Nightmare Bruiser","BRUISER3","mba_vehicles","bruiser_c_3"},
|
||||
{L"Benefactor Apocalypse Bruiser","BRUISER","mba_vehicles","bruiser_c_1"},
|
||||
{L"Declasse Future Shock Brutus","BRUTUS2","mba_vehicles","brutus2"},
|
||||
{L"Declasse Nightmare Brutus","BRUTUS3","mba_vehicles","brutus3"},
|
||||
{L"Declasse Apocalypse Brutus","BRUTUS","mba_vehicles","brutus1"},
|
||||
{L"Vapid Caracara 4x4","caracara2","sssa_dlc_vinewood","caracara2"},
|
||||
{L"Vapid Caracara","caracara","candc_assault","caracara"},
|
||||
{L"Benefactor Dubsta 6x6","Dubsta3","candc_default","dubsta3"},
|
||||
{L"BF Dune FAV","Dune3","candc_gunrunning","dune3"},
|
||||
{L"MTL Dune","Dune","sssa_default","dune"},
|
||||
{L"BF Duneloader","Dloader","",""},
|
||||
{L"Karin Everin","everon","sssa_dlc_casinoheist","everon"},
|
||||
{L"Karin Freecrawler","Freecrawler","lgm_dlc_battle","freecrawler"},
|
||||
{L"Annis Hellion","hellion","sssa_dlc_vinewood","hellion"},
|
||||
{L"HVY Insurgent PickUp Custom","Insurgent3","",""},
|
||||
{L"HVY Insurgent PickUp Custom","Insurgent3","ua_generic","ua_unlock_11"},
|
||||
{L"HVY Insurgent","Insurgent","candc_default","insurgent"},
|
||||
{L"HVY Insurgent PickUp","Insurgent2","candc_default","insurgent"},
|
||||
{L"Canis Kalahari","Kalahari","sssa_default","kalahari"},
|
||||
{L"Canis Kamacho","kamacho","sssa_dlc_xmas2017","kamacho_b"},
|
||||
{L"Cheval Marshall","marshall","candc_default","marshall"},
|
||||
{L"HVY Menacer","Menacer","candc_battle","menacer"},
|
||||
{L"Canis Mesa (Merryweather)","Mesa3","candc_default","mesa3"},
|
||||
{L"Bravado Apocalypse Sasquatch","MONSTER3","mba_vehicles","monster_c_1"},
|
||||
{L"Bravado Future Shock Sasquatch","MONSTER4","mba_vehicles","monster_c_2"},
|
||||
{L"Bravado Nightmare Sasquatch","MONSTER5","mba_vehicles","monster_c_3"},
|
||||
{L"HVY Nightshark","nightshark","candc_gunrunning","nightshark"},
|
||||
{L"Nagasaki Outlaw","outlaw","sssa_dlc_casinoheist","outlaw"},
|
||||
{L"BF Dune Buggy","Dune4","",""},
|
||||
{L"Dune","Dune5","candc_importexport","dune5"},
|
||||
{L"Declasse Rancher XL","Rancherxl2","",""},
|
||||
{L"Declasse Yosemite Rancher","Rancherxl","sssa_dlc_business","rancherx"},
|
||||
{L"RC Bandito","RCBANDITO","sssa_dlc_arena","rcbandito"},
|
||||
{L"Karin Rusty Rebel","Rebel2","sssa_dlc_hipster","rebel2"},
|
||||
{L"Karin Rebel","Rebel","sssa_default","rebel"},
|
||||
{L"Vapid Riata","riata","sssa_dlc_xmas2017","riata_b"},
|
||||
{L"Vapid Sandking XL","Sandking","sssa_default","sandking_b"},
|
||||
{L"Vapid Sandking SWB","Sandking2","sssa_default","sandkin_2b"},
|
||||
{L"Dune2","Dune2","",""},
|
||||
{L"Karin Technical modified edition","Technical3","",""},
|
||||
{L"Karin Technical Aqua","Technical2","candc_importexport","technical2"},
|
||||
{L"Karin Technical Custom","Technical3","ua_generic","ua_unlock_15"},
|
||||
{L"Karin Technical","Technical","candc_default","technical"},
|
||||
{L"Vapid Liberator","monster","candc_default","monster"},
|
||||
{L"Vapid Desert Raid","TrophyTruck2","sssa_dlc_stunt","trophy2"},
|
||||
{L"Vapid Trophy Truck","TrophyTruck","sssa_dlc_stunt","trophy"},
|
||||
{L"Maxwell Vagrant","vagrant","sssa_dlc_casinoheist","vagrant"},
|
||||
{L"Rune Zhaba","Zhaba","",""},
|
||||
|
||||
};
|
||||
static std::vector<VehiclePreview> Motorcycles{
|
||||
{L"Dinka Akuma","Akuma","sssa_default","akuma"},
|
||||
{L"LCC Avarus","Avarus","sssa_dlc_biker","avarus"},
|
||||
{L"Nagasaki BF400","BF400","sssa_dlc_stunt","bf400"},
|
||||
{L"Western Bagger","Bagger","sssa_dlc_biker","bagger"},
|
||||
{L"Pegassi Bati 801RR","BATI2","sssa_default","bati2"},
|
||||
{L"Pegassi Bati 801","BATI","sssa_default","bati"},
|
||||
{L"Nagasaki Carbon RS","CARBONRS","lgm_default","carbon"},
|
||||
{L"Nagasaki Chimera","CHIMERA","sssa_dlc_biker","chimera"},
|
||||
{L"Western Cliffhanger","CLIFFHANGER","sssa_dlc_stunt","cliffhanger"},
|
||||
{L"Western Daemon Custom","DAEMON2","sssa_dlc_biker","daemon2"},
|
||||
{L"Western Daemon","DAEMON","",""},
|
||||
{L"Western Future Shock Deathbike","DEATHBIKE2","mba_vehicles","deathbike_c_2"},
|
||||
{L"Western Nightmare Deathbike","DEATHBIKE3","mba_vehicles","deathbike_c_3"},
|
||||
{L"Western Apocalypse Deathbike ","DEATHBIKE","mba_vehicles","deathbike_c_1"},
|
||||
{L"Shitzu Defiler","DEFILER","sssa_dlc_biker","defiler"},
|
||||
{L"Principe Diabolus Custom","DIABLOUS2","lsc_dlc_import_export","diablous2"},
|
||||
{L"Principe Diabolus","DIABLOUS","",""},
|
||||
{L"Dinka Double-T","DOUBLE","sssa_default","double"},
|
||||
{L"Dinka Enduro","ENDURO","sssa_dlc_heist","enduro"},
|
||||
{L"Pegassi Esskey","ESSKEY","sssa_dlc_biker","esskey"},
|
||||
{L"Pegassi FCR 1000 Custom","FCR2","lsc_dlc_import_export","fcr2_b"},
|
||||
{L"Pegassi FCR 1000","FCR","lsc_dlc_import_export","fcr2_a"},
|
||||
{L"Pegassi Faggio Mod","FAGGIO3","sssa_dlc_biker","faggio3"},
|
||||
{L"Pegassi Faggio","FAGGIO","sssa_default","faggio"},
|
||||
{L"Pegassi Faggio Sport","FAGGIO2","sssa_dlc_biker","faggion"},
|
||||
{L"Western Gargoyle","GARGOYLE","sssa_dlc_stunt","gargoyle"},
|
||||
{L"Shitzu Hakuchou Dragbike","HAKUCHOU2","lgm_dlc_biker","hakuchou2"},
|
||||
{L"Shitzu Hakuchou","HAKUCHOU","sssa_dlc_lts_creator","hakuchou"},
|
||||
{L"LCC Hexer","HEXER","sssa_default","hexer"},
|
||||
{L"LCC Innovation","INNOVATION","sssa_dlc_lts_creator","innovation"},
|
||||
{L"Principe Lectro","LECTRO","lgm_dlc_heist","lectro"},
|
||||
{L"Maibatsu Manchez","MANCHEZ","sssa_dlc_biker","manchez"},
|
||||
{L"Principe Nemesis","NEMESIS","sssa_dlc_heist","nemesis"},
|
||||
{L"Western Nightblade","NIGHTBLADE","sssa_dlc_biker","nightblade"},
|
||||
{L"Opressor Mk II","Oppressor2","candc_battle","oppressor2"},
|
||||
{L"Opressor Mk I","Oppressor","candc_gunrunning","oppressor"},
|
||||
{L"PCJ 600","PCJ","sssa_default","pcj"},
|
||||
{L"Western Ratbike","RATBIKE","sssa_dlc_biker","ratbike"},
|
||||
{L"Western Rampant Rocket Tricycle","rrocket","lgm_dlc_vinewood","rrocket"},
|
||||
{L"Pegassi Rufian","RUFFIAN","sssa_default","ruffian"},
|
||||
{L"Maibatsu Sanchez","SANCHEZ2","sssa_default","sanchez2"},
|
||||
{L"Maibatsu Sanchez Livery","SANCHEZ","sssa_default","sanchez"},
|
||||
{L"LCC Sanctus","SANCTUS","sssa_dlc_biker","sanctus"},
|
||||
{L"Nagasaki Shotaro","SHOTARO","lgm_dlc_biker","shotaro"},
|
||||
{L"Western Sovereign","SOVEREIGN","",""},
|
||||
{L"Nagasaki Stryder","stryder","lgm_dlc_casinoheist","stryder"},
|
||||
{L"Dinka Thrust","THRUST","lgm_dlc_business2","thrust"},
|
||||
{L"Shitzu Vader","VADER","sssa_default","vader"},
|
||||
{L"Dinka Vindicator","VINDICATOR","lgm_dlc_luxe","vindicator"},
|
||||
{L"Pegassi Vortex","VORTEX","sssa_dlc_biker","vortex"},
|
||||
{L"Western Wolfsbane","WOLFSBANE","sssa_dlc_biker","wolfsbane"},
|
||||
{L"Western Zombie Chopper","ZOMBIEB","sssa_dlc_biker","zombieb"},
|
||||
{L"Western Zombie Bobber","ZOMBIEA","sssa_dlc_biker","zombiea"}
|
||||
};
|
||||
static std::vector<VehiclePreview> Military{
|
||||
{L"HVY APC","apc","candc_gunrunning","apc"},
|
||||
{L"Trailer","Trailersmall2","candc_gunrunning","trsmall2"},
|
||||
{L"Barracks 3","Barracks3","",""},
|
||||
{L"Barracks 2","Barracks","candc_default","barracks"},
|
||||
{L"Barrage","barrage","candc_xmas2017","barrage_b"},
|
||||
{L"Chernobog","chernobog","candc_xmas2017","chernobog_b"},
|
||||
{L"Crusader","Crusader","candc_default","crusader"},
|
||||
{L"Halftrack","halftrack","candc_gunrunning","halftrack"},
|
||||
{L"Bangjali","khanjali","candc_xmas2017","khanjali_b"},
|
||||
{L"Rhino","Rhino","candc_default","rhino"},
|
||||
{L"HVY Scarab 1","SCARAB2","mba_vehicles","scarab2"},
|
||||
{L"HVY Scarab 2","SCARAB3","mba_vehicles","scarab3"},
|
||||
{L"HVY Scarab 3","SCARAB","mba_vehicles","scarab1"},
|
||||
{L"Thruster","thruster","candc_xmas2017","thruster_b"},
|
||||
{L"HVY Barracks 2","Barracks2","",""}
|
||||
};
|
||||
static std::vector<VehiclePreview> Emergency{
|
||||
{L"Ambulans","Ambulance","",""},
|
||||
{L"FIB","Fbi","",""},
|
||||
{L"Damkar","Firetruk","",""},
|
||||
{L"FIB SUV","Fbi2","",""},
|
||||
{L"Lifeguard","Lguard","",""},
|
||||
{L"Pranger","Pranger","",""},
|
||||
{L"Polisi 3","Police3","",""},
|
||||
{L"Cab Polisi","Policeb","",""},
|
||||
{L"Polisi 2","Police2","",""},
|
||||
{L"Polisi 1","Police","",""},
|
||||
{L"Polisi tua 1","Policeold1","",""},
|
||||
{L"Polisi tua 2","Policeold2","",""},
|
||||
{L"Riot","Riot","",""},
|
||||
{L"Policet","Policet","",""},
|
||||
{L"Pbus","Pbus","candc_default","pbus"},
|
||||
{L"Riot 2","riot2","candc_xmas2017","riot2_b"},
|
||||
{L"Sheriff","Sheriff","",""},
|
||||
{L"Sheriff SUV","Sheriff2","",""},
|
||||
{L"Polisi 4","Police4","",""}
|
||||
};
|
||||
static std::vector<VehiclePreview> Service{
|
||||
{L"Airbus","Airbus","candc_default","airbus"},
|
||||
{L"MTL Brickade","Brickade","candc_executive1","brickade"},
|
||||
{L"Bus","Bus","candc_default","bus"},
|
||||
{L"Coach","Coach","candc_default","coach"},
|
||||
{L"MTL Rally","Rallytruck","sssa_dlc_stunt","rallytruck"},
|
||||
{L"pbus","Pbus2","sssa_dlc_battle","pbus2"},
|
||||
{L"Rentbus","Rentalbus","candc_default","rentbus"},
|
||||
{L"Taxi","Taxi","",""},
|
||||
{L"Tourbus","Tourbus","",""},
|
||||
{L"Trash","Trash2","",""},
|
||||
{L"Trash 2","Trash","",""},
|
||||
{L"MTL Wastelander","Wastelander","candc_importexport","wastlndr"},
|
||||
};
|
||||
static std::vector<VehiclePreview> Sedans{
|
||||
{L"Declasse Asea Custom","Asea2","",""},
|
||||
{L"Declasse Asea","Asea","sssa_dlc_business","asea"},
|
||||
{L"Karin Asterope","Asterope","sssa_dlc_business","astrope"},
|
||||
{L"Enus Cognoscenti 55","Cog55","lgm_dlc_apartments","cognosc"},
|
||||
{L"Enus Cognoscenti 55 (Armored)","Cog552","",""},
|
||||
{L"Declasse Premier","Premier","sssa_dlc_business","premier"},
|
||||
{L"Emperor Modif 1 (破旧版)","Emperor2","",""},
|
||||
{L"Emperor modif 2 (雪地版)","Emperor3","",""},
|
||||
{L"Albany Emperor","Emperor","",""},
|
||||
{L"Enus Super Diamond","Superd","sssa_default","superd"},
|
||||
{L"Cheval Fugitive","Fugitive","sssa_default","fugitive"},
|
||||
{L"Benefactor Glendale","Glendale","sssa_dlc_hipster","glendale"},
|
||||
{L"Karin Intruder","Intruder","sssa_dlc_business","intruder"},
|
||||
{L"Benefactor Turreted Limo","Limo2","",""},
|
||||
{L"Dundreary Stretch","Stretch","sssa_default","stretch"},
|
||||
{L"Albany Primo Custom","Primo2","",""},
|
||||
{L"Albany Primo","Primo","sssa_dlc_hipster","primo"},
|
||||
{L"Dundreary Regina","Regina","sssa_dlc_hipster","regina"},
|
||||
{L"Mobil Jenazah","Romero","sssa_dlc_battle","Romero"},
|
||||
{L"Benefactor Schafter V12 Armored","Schafter5","lgm_dlc_apartments","schafter3"},
|
||||
{L"Benefactor Schafter LWB Armored","Schafter6","lgm_dlc_apartments","schafter4"},
|
||||
{L"Benefactor Schafter","Schafter2","sssa_dlc_heist","schafter2"},
|
||||
{L"Enus Stafford","Stafford","lgm_dlc_battle","stafford"},
|
||||
{L"Vapid Stanier","Stanier","sssa_dlc_business","stanier"},
|
||||
{L"Zirconium Stratum","Stratum","sssa_dlc_business","stratum"},
|
||||
{L"Cheval Surge","Surge","sssa_dlc_heist","surge"},
|
||||
{L"Obey Tailgater","Tailgater","sssa_dlc_hipster","tailgater"},
|
||||
{L"Vulcar Ingot","Ingot","sssa_dlc_business","ingot"},
|
||||
{L"Vulcar Warrener","Warrener","sssa_dlc_hipster","warrener"},
|
||||
{L"Albany Washington","Washington","sssa_dlc_business","washingt"}
|
||||
};
|
||||
static std::vector<VehiclePreview> Industrial{
|
||||
{L"HVY Bulldozer","Bulldozer","",""},
|
||||
{L"HVY Cutter","Cutter","",""},
|
||||
{L"Handler","Handler","",""},
|
||||
{L"HVY Dump","Dump","candc_default","dump"},
|
||||
{L"MTL Flatbed","Flatbed","",""},
|
||||
{L"Guardian","Guardian","sssa_dlc_heist","guardian"},
|
||||
{L"HVY Mixer2","Mixer2","",""},
|
||||
{L"HVY Mixer","Mixer","",""},
|
||||
{L"Rubble","Rubble","",""},
|
||||
{L"Tiptruck 2","Tiptruck","",""},
|
||||
{L"Tip Truck","Tiptruck2","",""}
|
||||
};
|
||||
static std::vector<VehiclePreview> Compacts{
|
||||
{L"Asbo","asbo","sssa_dlc_casinoheist","asbo"},
|
||||
{L"Dinka Blista","Blista","",""},
|
||||
{L"Karin Dilettante (FlyUS)","Dilettante2","",""},
|
||||
{L"Karin Dilettante","Dilettante","sssa_default","dilettan"},
|
||||
{L"Grotti Brioso R/A","Brioso","sssa_dlc_stunt","brioso"},
|
||||
{L"Weeny Issi Classic","issi3","sssa_dlc_assault","issi3"},
|
||||
{L"Issi Apocalypse","ISSI4","mba_vehicles","issi3_c_1"},
|
||||
{L"Issi Future Shock","ISSI5","mba_vehicles","issi3_c_2"},
|
||||
{L"Issi Nightmare","ISSI6","mba_vehicles","issi3_c_3"},
|
||||
{L"Dinka Blista Kanjo","kanjo","sssa_dlc_casinoheist","kanjo"},
|
||||
{L"Benefactor Panto","Panto","sssa_dlc_hipster","panto"},
|
||||
{L"Bollokan Prairie","Prairie","sssa_dlc_battle","prairie"},
|
||||
{L"Declasse Rhapsody","Rhapsody","sssa_dlc_hipster","rhapsody"},
|
||||
{L"Weeny Issi","Issi2","sssa_default","issi2"}
|
||||
};
|
||||
static std::vector<VehiclePreview> Commercial{
|
||||
{L"Vapid Benson","Benson","",""},
|
||||
{L"MTL Future Shock Cerberus","CERBERUS2","mba_vehicles","cerberus2"},
|
||||
{L"MTL Nightmare Cerberus","CERBERUS3","mba_vehicles","cerberus3"},
|
||||
{L"MTL Appocalypse Cerberus","CERBERUS","mba_vehicles","cerberus1"},
|
||||
{L"HVY Biff","Biff","",""},
|
||||
{L"JoBuilt Hauler","Hauler","",""},
|
||||
{L"JoBuilt Hauler Custom","Hauler2","candc_truck","cab_1"},
|
||||
{L"MTL Packer","Packer","",""},
|
||||
{L"Maibatsu Mule Custom","Mule2","",""},
|
||||
{L"Maibatu Mule Custom1","Mule3","candc_default","mule3"},
|
||||
{L"Maibatsu Mule Custom2","Mule4","candc_battle","mule4"},
|
||||
{L"Maibatsu Mule","Mule","candc_default","mule"},
|
||||
{L"JoBuilt Phantom Custom","phantom3","candc_truck","cab_0"},
|
||||
{L"JoBuilt Phantom Wedge","Phantom2","candc_importexport","phantom2"},
|
||||
{L"JoBuilt Phantom","Phantom","",""},
|
||||
{L"MTL Pounder Custom","Pounder2","candc_battle","pounder2"},
|
||||
{L"MTL Pounder","Pounder","",""},
|
||||
{L"Stockade Custom","Stockade3","",""},
|
||||
{L"Stockade","Stockade","",""},
|
||||
{L"Terrobyte","Terbyte","",""}
|
||||
};
|
||||
static std::vector<VehiclePreview> Planes{
|
||||
{L"Alpha Z1","alphaz1","elt_dlc_smuggler","alphaz1"},
|
||||
{L"Avenger","avenger","candc_chopper","banner_5"},
|
||||
{L"Avenger 2","avenger2","candc_chopper","banner_4"},
|
||||
{L"Besra","Besra","elt_dlc_pilot","besra"},
|
||||
{L"Blimp","Blimp2","",""},
|
||||
{L"Blimp 2","Blimp","",""},
|
||||
{L"Blimp 3","blimp3","elt_dlc_battle","blimp3"},
|
||||
{L"RM-10 Bombushka","Bombushka","candc_smuggler","bombushka"},
|
||||
{L"Antonov","Cargoplane","",""},
|
||||
{L"Cuban 800","Cuban800","elt_default","cuban800"},
|
||||
{L"Dodo","Dodo","elt_default","dodo"},
|
||||
{L"Duster","Duster","elt_default","duster"},
|
||||
{L"Howard NX-25","Howard","elt_dlc_smuggler","howard"},
|
||||
{L"Hydra","Hydra","candc_default","hydra"},
|
||||
{L"B747","Jet","",""},
|
||||
{L"Luxor Deluxe","Luxor2","elt_dlc_executive1","luxor2"},
|
||||
{L"Luxor","Luxor","elt_default","luxor"},
|
||||
{L"Mammatus","Mammatus","elt_default","mammatus"},
|
||||
{L"Microlight","Microlight","elt_dlc_smuggler","microlight"},
|
||||
{L"Miljet","Miljet","elt_dlc_pilot","miljet"},
|
||||
{L"Mogul","Mogul","candc_smuggler","mogul"},
|
||||
{L"V-65 Molotok","Molotok","candc_smuggler","molotok_b"},
|
||||
{L"Nimbus","Nimbus","elt_dlc_executive1","nimbus"},
|
||||
{L"Nokota","Nokota","candc_smuggler","nokota"},
|
||||
{L"P-996 Lazer","Lazer","candc_smuggler","lazer"},
|
||||
{L"Pyro","Pyro","candc_smuggler","pyro"},
|
||||
{L"Rogue","Rogue","candc_smuggler","rogue"},
|
||||
{L"Seabreeze","Seabreeze","elt_dlc_smuggler","seabreeze"},
|
||||
{L"Shamal","Shamal","elt_default","shamal"},
|
||||
{L"LF-22 Starling","starling","candc_smuggler","starling"},
|
||||
{L"B-11 Strikeforce","Strikeforce","candc_battle","strikeforce"},
|
||||
{L"Stunt","Stunt","elt_default","stunt"},
|
||||
{L"Titan","Titan","elt_default","titan"},
|
||||
{L"Tula","tula","candc_smuggler","tula"},
|
||||
{L"Velum","Velum2","elt_default","velum2"},
|
||||
{L"Velum 2","Velum","elt_default","velum"},
|
||||
{L"Vestra","Vestra","",""},
|
||||
{L"Volatol (Kontol)","volatol","candc_xmas2017","volatol_b"}
|
||||
};
|
||||
static std::vector<VehiclePreview> Utility{
|
||||
{L"Airtug","Airtug","",""},
|
||||
{L"ArmyTrailer (1)","Armytrailer","",""},
|
||||
{L"ArmyTrailer (2)","Armytrailer2","",""},
|
||||
{L"ArmyTanker","Armytanker","",""},
|
||||
{L"Trailer3","Tr3","",""},
|
||||
{L"BoatTrailer","Boattrailer","",""},
|
||||
{L"Caddy","Caddy","",""},
|
||||
{L"Caddy2","Caddy2","foreclosures_bunker","transportation_2"},
|
||||
{L"Caddy3","Caddy3","foreclosures_bunker","transportation_1"},
|
||||
{L"Trailer2","Tr2","",""},
|
||||
{L"Trailer4","Tr4","",""},
|
||||
{L"Trailer (Pibwasser)","Trailers2","",""},
|
||||
{L"Trailer (Big Good)","Trailers3","",""},
|
||||
{L"Trailer4","Trailers4","",""},
|
||||
{L"Dock Trailer","Docktrailer","",""},
|
||||
{L"Dock Tug","Docktug","",""},
|
||||
{L"TV Trailer (Fame or Shame)","Tvtrailer","",""},
|
||||
{L"Tractor3","Tractor3","",""},
|
||||
{L"Tractor2","Tractor2","",""},
|
||||
{L"Freight Trailer","Freighttrailer","",""},
|
||||
{L"Flat Trailer","Trflat","",""},
|
||||
{L"HVY Forklift","Forklift","",""},
|
||||
{L"Graintraler","Graintrailer","",""},
|
||||
{L"Bale Trailer","Baletrailer","",""},
|
||||
{L"Trailer Logs","Trailerlogs","",""},
|
||||
{L"Prop Trailer","Proptrailer","",""},
|
||||
{L"Trailer Larger","trailerlarge","candc_truck","banner_2"},
|
||||
{L"Tanker","Tanker2","",""},
|
||||
{L"Tanker(RON)","Tanker","",""},
|
||||
{L"Ultility Truck","Utillitruck3","",""},
|
||||
{L"Trailers","Trailers","",""},
|
||||
{L"Ultility Truck 2","Utillitruck2","",""},
|
||||
{L"Rake Trailer","Raketrailer","",""},
|
||||
{L"Ripley","Ripley","",""},
|
||||
{L"Scrap","Scrap","",""},
|
||||
{L"Trailer Small","Trailersmall","",""},
|
||||
{L"Mower","Mower","",""},
|
||||
{L"Utility Truck 3","Utillitruck","",""},
|
||||
{L"Tow Truck","Towtruck","",""},
|
||||
{L"Tow Truck (2)","Towtruck2","",""},
|
||||
{L"Tractor","Tractor","",""},
|
||||
{L"Sadler 2","Sadler2","",""},
|
||||
{L"Sadler","Sadler","sssa_default","sadler"},
|
||||
};
|
||||
static std::vector<VehiclePreview> Helicopters{
|
||||
{L"Akula","akula","candc_xmas2017","akula_b"},
|
||||
{L"Annihilator","Annihilator","elt_default","annihl"},
|
||||
{L"Nagasaki Buzzard Attack Chopper","Buzzard","candc_default","buzzard"},
|
||||
{L"Nagasaki Buzzard","Buzzard2","",""},
|
||||
{L"Cargobob custom","Cargobob4","",""},
|
||||
{L"Western Cargobob Jetsam","Cargobob2","",""},
|
||||
{L"Western Cargobob (TPE)","Cargobob3","",""},
|
||||
{L"Western Cargobob","Cargobob","candc_default","cargobob"},
|
||||
{L"Frogger","Frogger","elt_default","frogger"},
|
||||
{L"Frogger(FIB)","Frogger2","",""},
|
||||
{L"Havok","havok","elt_dlc_smuggler","havok"},
|
||||
{L"FH-1 Hunter","hunter","candc_smuggler","hunter"},
|
||||
{L"Maverick","Maverick","elt_default","maverick"},
|
||||
{L"Police Maverick","Polmav","",""},
|
||||
{L"Savage","Savage","candc_default","savage"},
|
||||
{L"Sea Sparrow","SEASPARROW","elt_dlc_assault","sparrow"},
|
||||
{L"HVY Skylift","Skylift","",""},
|
||||
{L"Buckingham Supervolito Carbon","Supervolito2","",""},
|
||||
{L"Buckingham Supervolito","Supervolito","",""},
|
||||
{L"Buckingham Swift Deluxe","Swift2","elt_dlc_executive1","swift2"},
|
||||
{L"Buckingham Swift","Swift","elt_dlc_pilot","swift"},
|
||||
{L"Valkyrie","Valkyrie2","",""},
|
||||
{L"Valkyrie (Custom)","Valkyrie","candc_default","valkyrie"},
|
||||
{L"Volatus","Volatus","elt_dlc_executive1","volatus"},
|
||||
};
|
||||
static std::vector<VehiclePreview> Vans{
|
||||
{L"BF Surfer (Custom)","Surfer2","",""},
|
||||
{L"BF Surfer","Surfer","sssa_dlc_hipster","surfer"},
|
||||
{L"Bravado Bison (BackupRack)","Bison2","",""},
|
||||
{L"Bravado Bison (Rack)","Bison3","",""},
|
||||
{L"Bravado Bison","Bison","sssa_default","bison"},
|
||||
{L"Bobcat XL","Bobcatxl","sssa_dlc_business","bobcatxl"},
|
||||
{L"Boxville (armored)","Boxville5","candc_importexport","boxville5"},
|
||||
{L"Boxville (Go Postal)","Boxville2","",""},
|
||||
{L"Boxville (Humane)","Boxville3","",""},
|
||||
{L"Boxville (Post OP)","Boxville4","candc_default","boxville4"},
|
||||
{L"Boxville (W & P)","Boxville","",""},
|
||||
{L"Brute Pony (Business)","Pony","",""},
|
||||
{L"Brute Pony (Store)","Pony2","",""},
|
||||
{L"Burrito (Bug Stars)","Burrito2","",""},
|
||||
{L"Burrito (Construction)","Burrito4","",""},
|
||||
{L"Burrito (Gang)","Gburrito2","sssa_dlc_heist","gburrito2"},
|
||||
{L"Burrito (The Lost MC)","Gburrito","",""},
|
||||
{L"Burriot 5","Burrito5","",""},
|
||||
{L"Burrito 3","Burrito3","",""},
|
||||
{L"Burrito (Graphics)","Burrito","",""},
|
||||
{L"Camper","Camper","",""},
|
||||
{L"Journey","Journey","candc_default","journey"},
|
||||
{L"MiniVan Custom","Minivan2","lsc_lowrider2","minivan2_b"},
|
||||
{L"MiniVAN","Minivan","sssa_dlc_business","minivan"},
|
||||
{L"Paradise","Paradise","sssa_default","paradise"},
|
||||
{L"Rumpo (Armored)","Rumpo3","sssa_dlc_executive_1","rumpo3_b"},
|
||||
{L"Rumpo (Deludamol)","Rumpo2","",""},
|
||||
{L"Rumpo (Weazel News)","Rumpo","sssa_dlc_heist","rumpo"},
|
||||
{L"Speedo 3","Speedo4","",""},
|
||||
{L"Speedo 2","Speedo2","",""},
|
||||
{L"Speedo","Speedo","",""},
|
||||
{L"Taco","Taco","",""},
|
||||
{L"Bravado Youga Custom","Youga2","sssa_dlc_biker","youga2"},
|
||||
{L"Bravado Youga","Youga","sssa_dlc_hipster","youga"}
|
||||
};
|
||||
static std::vector<VehiclePreview> Boats{
|
||||
{L"Nagasaki Dinghy","Dinghy","",""},
|
||||
{L"Nagasaki Dinghy (2-Seater)","Dinghy2","",""},
|
||||
{L"Nagasaki Dinghy (Robbery)","Dinghy3","dock_default","dinghy3"},
|
||||
{L"Nagasaki Dinghy (Black&White)","Dinghy4","",""},
|
||||
{L"Shitzu Jetmax","Jetmax","dock_default","jetmax"},
|
||||
{L"Dinka Marquis","Marquis","dock_default","marquis"},
|
||||
{L"Police Predator","Predator","",""},
|
||||
{L"Seashark","Seashark","dock_default","seashark"},
|
||||
{L"Seashark (Lifeguard)","Seashark2","",""},
|
||||
{L"Seashark (Charged)","Seashark3","",""},
|
||||
{L"Pegassi Speeder","Speeder","dock_default","speeder"},
|
||||
{L"Pegassi Speeder (Custom)","Speeder2","",""},
|
||||
{L"Shitzu Squalo","Squalo","dock_default","squalo"},
|
||||
{L"Submersible","Submersible","",""},
|
||||
{L"Kraken Submersible (Kraken)","Submersible2","dock_default","sub2"},
|
||||
{L"Shitzu Suntrap","Suntrap","dock_default","suntrap"},
|
||||
{L"Lampadati Toro","Toro","dock_default","toro"},
|
||||
{L"Lampadati Toro (Custom)","Toro2","",""},
|
||||
{L"Shitzu Tropic","Tropic","dock_default","tropic"},
|
||||
{L"Shitu Tropic (Custom)","Tropic2","",""},
|
||||
{L"Tug","Tug","",""}
|
||||
};
|
||||
static std::vector<VehiclePreview> Cycles{
|
||||
{L"BMX","Bmx","pandm_default","bmx"},
|
||||
{L"Cruiser","Cruiser","pandm_default","cruiser"},
|
||||
{L"Tribike2","Tribike2","pandm_default","tribike2"},
|
||||
{L"Fixter","Fixter","",""},
|
||||
{L"Scorcher","Scorcher","pandm_default","scorcher"},
|
||||
{L"Tribike2","Tribike3","pandm_default","tribike3"},
|
||||
{L"Tribike1","Tribike","pandm_default","tribike"}
|
||||
};
|
||||
static std::vector<VehiclePreview> Trains{
|
||||
{L"CableCar","Cablecar","",""},
|
||||
{L"Gerbong1","Freightcont1","",""},
|
||||
{L"Gerbong2","Freightcont2","",""},
|
||||
{L"Freightcar","Freightcar","",""},
|
||||
{L"Freight","Freight","",""},
|
||||
{L"Kereta Api","Freightgrain","",""},
|
||||
{L"Metro Train","Metrotrain","",""},
|
||||
{L"TankerCar","Tankercar","",""}
|
||||
};
|
||||
static std::vector<VehiclePreview> Trailer{
|
||||
{L"Army Tanker", "Armytanker", "", "" },
|
||||
{L"Army Trailer", "Armytrailer", "", "" },
|
||||
{L"Army Trailer 2", "Armytrailer2", "", "" },
|
||||
{L"Bale Trailer", "Baletrailer", "", "" },
|
||||
{L"Boat Trailer", "Boattrailer", "", "" },
|
||||
{L"Dock Trailer", "Docktrailer", "", "" },
|
||||
{L"Freight Trailer", "Freighttrailer", "", "" },
|
||||
{L"Grain Trailer", "Graintrailer", "", "" },
|
||||
{L"Prop Trailer", "Proptrailer", "", "" },
|
||||
{L"Rake Trailer", "Raketrailer", "", "" },
|
||||
{L"Tanker (RON)", "Tanker", "", "" },
|
||||
{L"Tanker (2)", "Tanker2", "", "" },
|
||||
{L"Tanker (3)", "Tr2", "", "" },
|
||||
{L"Tanker (4)", "Tr3", "", "" },
|
||||
{L"Tanker (5)", "Tr4", "", "" },
|
||||
{L"Trailer Logs", "Trailerlogs", "", "" },
|
||||
{L"Trailer entah", "Trailers", "", "" },
|
||||
{L"Trailer (Pibwasser)", "Trailers2", "", "" },
|
||||
{L"Trailer (Big Goods)", "Trailers3", "", "" },
|
||||
{L"Trailer 4", "Trailers4", "", "" },
|
||||
{L"Trailer Small", "Trailersmall", "", "" },
|
||||
{L"Trailer Large", "trailerlarge", "", "" },
|
||||
{L"Trailer Flat", "Trflat", "", "" },
|
||||
{L"TV Trailer (Fame or Shame)", "Tvtrailer", "", "" }
|
||||
};
|
||||
static std::vector<VehiclePreview> SUV{
|
||||
{L"Gallivanter Baller (CEO)","Baller6","",""},
|
||||
{L"Gallivanter Baller 2","Baller2","sssa_default","baller2"},
|
||||
{L"Gallivanter Baller LE (Armored)","Baller5","",""},
|
||||
{L"Gallivanter Baller LE LWB","Baller4","lgm_dlc_apartments","baller4"},
|
||||
{L"Gallivanter Baller LE","Baller3","lgm_dlc_apartments","baller3"},
|
||||
{L"Gallivanter Baller","Baller","",""},
|
||||
{L"BeeJay XL","Bjxl","sssa_dlc_battle","bjxl"},
|
||||
{L"Canis Seminole Frontier","Seminole","sssa_dlc_heist","seminole"},
|
||||
{L"Albany Cavalcade Mk2","CAVALCADE2","sssa_dlc_business","cavcade2"},
|
||||
{L"Albany Cavalcade","CAVALCADE","sssa_default","cavcade"},
|
||||
{L"Vapid Contender","Contender","sssa_dlc_stunt","contender"},
|
||||
{L"Benefactor Dubsta2","Dubsta2","",""},
|
||||
{L"Benefactor Dubsta","Dubsta","",""},
|
||||
{L"Emperor Habanero","Habanero","sssa_dlc_battle","habanero"},
|
||||
{L"Enus Huntley S","Huntley","lgm_dlc_business2","huntley"},
|
||||
{L"Fathom FQ 2","fq2","sssa_dlc_battle","fq2"},
|
||||
{L"Declasse Granger","Granger","sssa_dlc_business","granger"},
|
||||
{L"Bravado Gresley","Gresley","sssa_dlc_heist","gresley"},
|
||||
{L"Dundreary Landstalker","Landstalker","sssa_dlc_heist","landstalker"},
|
||||
{L"Mammoth Patriot","Patriot","sssa_dlc_battle","patriot"},
|
||||
{L"Cannis Mesa (Custom)","Mesa2","",""},
|
||||
{L"Cannis Mesa SUV","Mesa","candc_default","mesa"},
|
||||
{L"Lampadati Novak","novak","lgm_dlc_vinewood","novak"},
|
||||
{L"Mammoth Patriot Stretch","Patriot2","sssa_dlc_battle","patriot2"},
|
||||
{L"Vapid Radius","Radi","sssa_dlc_business","radi"},
|
||||
{L"Ubermacht Rebla GTS","rebla","lgm_dlc_casinoheist","rebla"},
|
||||
{L"Obey Rocoto","Rocoto","sssa_default","rocoto"},
|
||||
{L"Benefactor Serrano","Serrano","sssa_dlc_battle","serrano"},
|
||||
{L"Pegassi Toros","TOROS","lgm_dlc_arena","toros"},
|
||||
{L"Benefactor XLS(Armored)","Xls2","",""},
|
||||
{L"Benefactor XLS","Xls","lgm_dlc_executive1","xls"}
|
||||
};
|
||||
static std::vector<std::pair<std::wstring, std::vector<VehiclePreview>>> vehiclePreview{
|
||||
{L"Super >>",Super},
|
||||
{L"Sport >>",Sports},
|
||||
{L"SportClassic >>",SportsClassics},
|
||||
{L"Coupe >>",Coupes},
|
||||
{L"Muscle >>",Muscle},
|
||||
{L"Offroad >>",Offroad},
|
||||
{L"Motor >>",Motorcycles},
|
||||
{L"Militer >>",Military},
|
||||
{L"Emergency >>",Emergency},
|
||||
{L"Service >>",Service},
|
||||
{L"Sedan >>",Sedans},
|
||||
{L"Industri >>",Industrial},
|
||||
{L"Compact >>",Compacts},
|
||||
{L"Commercial >>",Commercial},
|
||||
{L"Pesawat >>",Planes},
|
||||
{L"Utility >>",Utility},
|
||||
{L"Helikopter >>",Helicopters},
|
||||
{L"Van >>",Vans},
|
||||
{L"Perahu >>",Boats},
|
||||
{L"Sepeda >>",Cycles},
|
||||
{L"Kereta >>",Trains},
|
||||
{L"Trailer >>",Trailer},
|
||||
{L"SUV >>",SUV},
|
||||
};
|
||||
|
||||
|
||||
static unsigned int joaat(std::string input)
|
||||
{
|
||||
unsigned int num1 = 0U;
|
||||
for (char c : input)
|
||||
{
|
||||
unsigned int num2 = num1 + (unsigned int)tolower(c);
|
||||
unsigned int num3 = num2 + (num2 << 10);
|
||||
num1 = num3 ^ num3 >> 6;
|
||||
}
|
||||
unsigned int num4 = num1 + (num1 << 3);
|
||||
unsigned int num5 = num4 ^ num4 >> 11;
|
||||
return num5 + (num5 << 15);
|
||||
}
|
2791
subVersion/d3d9/d3d9.h
Normal file
2791
subVersion/d3d9/d3d9.h
Normal file
File diff suppressed because it is too large
Load Diff
BIN
subVersion/d3d9/d3d9.lib
Normal file
BIN
subVersion/d3d9/d3d9.lib
Normal file
Binary file not shown.
78
subVersion/d3d9/d3dx9.h
Normal file
78
subVersion/d3d9/d3dx9.h
Normal file
@ -0,0 +1,78 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) Microsoft Corporation. All Rights Reserved.
|
||||
//
|
||||
// File: d3dx9.h
|
||||
// Content: D3DX utility library
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef __D3DX_INTERNAL__
|
||||
#error Incorrect D3DX header used
|
||||
#endif
|
||||
|
||||
#ifndef __D3DX9_H__
|
||||
#define __D3DX9_H__
|
||||
|
||||
|
||||
// Defines
|
||||
#include <limits.h>
|
||||
|
||||
#define D3DX_DEFAULT ((UINT) -1)
|
||||
#define D3DX_DEFAULT_NONPOW2 ((UINT) -2)
|
||||
#define D3DX_DEFAULT_FLOAT FLT_MAX
|
||||
#define D3DX_FROM_FILE ((UINT) -3)
|
||||
#define D3DFMT_FROM_FILE ((D3DFORMAT) -3)
|
||||
|
||||
#ifndef D3DXINLINE
|
||||
#ifdef _MSC_VER
|
||||
#if (_MSC_VER >= 1200)
|
||||
#define D3DXINLINE __forceinline
|
||||
#else
|
||||
#define D3DXINLINE __inline
|
||||
#endif
|
||||
#else
|
||||
#ifdef __cplusplus
|
||||
#define D3DXINLINE inline
|
||||
#else
|
||||
#define D3DXINLINE
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
// Includes
|
||||
#include "d3d9.h"
|
||||
#include "d3dx9math.h"
|
||||
#include "d3dx9core.h"
|
||||
#include "d3dx9xof.h"
|
||||
#include "d3dx9mesh.h"
|
||||
#include "d3dx9shader.h"
|
||||
#include "d3dx9effect.h"
|
||||
|
||||
#include "d3dx9tex.h"
|
||||
#include "d3dx9shape.h"
|
||||
#include "d3dx9anim.h"
|
||||
|
||||
|
||||
|
||||
// Errors
|
||||
#define _FACDD 0x876
|
||||
#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
|
||||
|
||||
enum _D3DXERR {
|
||||
D3DXERR_CANNOTMODIFYINDEXBUFFER = MAKE_DDHRESULT(2900),
|
||||
D3DXERR_INVALIDMESH = MAKE_DDHRESULT(2901),
|
||||
D3DXERR_CANNOTATTRSORT = MAKE_DDHRESULT(2902),
|
||||
D3DXERR_SKINNINGNOTSUPPORTED = MAKE_DDHRESULT(2903),
|
||||
D3DXERR_TOOMANYINFLUENCES = MAKE_DDHRESULT(2904),
|
||||
D3DXERR_INVALIDDATA = MAKE_DDHRESULT(2905),
|
||||
D3DXERR_LOADEDMESHASNODATA = MAKE_DDHRESULT(2906),
|
||||
D3DXERR_DUPLICATENAMEDFRAGMENT = MAKE_DDHRESULT(2907),
|
||||
D3DXERR_CANNOTREMOVELASTITEM = MAKE_DDHRESULT(2908),
|
||||
};
|
||||
|
||||
|
||||
#endif //__D3DX9_H__
|
||||
|
BIN
subVersion/d3d9/d3dx9.lib
Normal file
BIN
subVersion/d3d9/d3dx9.lib
Normal file
Binary file not shown.
1114
subVersion/d3d9/d3dx9anim.h
Normal file
1114
subVersion/d3d9/d3dx9anim.h
Normal file
File diff suppressed because it is too large
Load Diff
753
subVersion/d3d9/d3dx9core.h
Normal file
753
subVersion/d3d9/d3dx9core.h
Normal 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
subVersion/d3d9/d3dx9effect.h
Normal file
873
subVersion/d3d9/d3dx9effect.h
Normal file
@ -0,0 +1,873 @@
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//
|
||||
// File: d3dx9effect.h
|
||||
// Content: D3DX effect types and Shaders
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "d3dx9.h"
|
||||
|
||||
#ifndef __D3DX9EFFECT_H__
|
||||
#define __D3DX9EFFECT_H__
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXFX_DONOTSAVESTATE
|
||||
// This flag is used as a parameter to ID3DXEffect::Begin(). When this flag
|
||||
// is specified, device state is not saved or restored in Begin/End.
|
||||
// D3DXFX_DONOTSAVESHADERSTATE
|
||||
// This flag is used as a parameter to ID3DXEffect::Begin(). When this flag
|
||||
// is specified, shader device state is not saved or restored in Begin/End.
|
||||
// This includes pixel/vertex shaders and shader constants
|
||||
// D3DXFX_DONOTSAVESAMPLERSTATE
|
||||
// This flag is used as a parameter to ID3DXEffect::Begin(). When this flag
|
||||
// is specified, sampler device state is not saved or restored in Begin/End.
|
||||
// D3DXFX_NOT_CLONEABLE
|
||||
// This flag is used as a parameter to the D3DXCreateEffect family of APIs.
|
||||
// When this flag is specified, the effect will be non-cloneable and will not
|
||||
// contain any shader binary data.
|
||||
// Furthermore, GetPassDesc will not return shader function pointers.
|
||||
// Setting this flag reduces effect memory usage by about 50%.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#define D3DXFX_DONOTSAVESTATE (1 << 0)
|
||||
#define D3DXFX_DONOTSAVESHADERSTATE (1 << 1)
|
||||
#define D3DXFX_DONOTSAVESAMPLERSTATE (1 << 2)
|
||||
|
||||
#define D3DXFX_NOT_CLONEABLE (1 << 11)
|
||||
#define D3DXFX_LARGEADDRESSAWARE (1 << 17)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DX_PARAMETER_SHARED
|
||||
// Indicates that the value of a parameter will be shared with all effects
|
||||
// which share the same namespace. Changing the value in one effect will
|
||||
// change it in all.
|
||||
//
|
||||
// D3DX_PARAMETER_LITERAL
|
||||
// Indicates that the value of this parameter can be treated as literal.
|
||||
// Literal parameters can be marked when the effect is compiled, and their
|
||||
// cannot be changed after the effect is compiled. Shared parameters cannot
|
||||
// be literal.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#define D3DX_PARAMETER_SHARED (1 << 0)
|
||||
#define D3DX_PARAMETER_LITERAL (1 << 1)
|
||||
#define D3DX_PARAMETER_ANNOTATION (1 << 2)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXEFFECT_DESC:
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
typedef struct _D3DXEFFECT_DESC
|
||||
{
|
||||
LPCSTR Creator; // Creator string
|
||||
UINT Parameters; // Number of parameters
|
||||
UINT Techniques; // Number of techniques
|
||||
UINT Functions; // Number of function entrypoints
|
||||
|
||||
} D3DXEFFECT_DESC;
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXPARAMETER_DESC:
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
typedef struct _D3DXPARAMETER_DESC
|
||||
{
|
||||
LPCSTR Name; // Parameter name
|
||||
LPCSTR Semantic; // Parameter semantic
|
||||
D3DXPARAMETER_CLASS Class; // Class
|
||||
D3DXPARAMETER_TYPE Type; // Component type
|
||||
UINT Rows; // Number of rows
|
||||
UINT Columns; // Number of columns
|
||||
UINT Elements; // Number of array elements
|
||||
UINT Annotations; // Number of annotations
|
||||
UINT StructMembers; // Number of structure member sub-parameters
|
||||
DWORD Flags; // D3DX_PARAMETER_* flags
|
||||
UINT Bytes; // Parameter size, in bytes
|
||||
|
||||
} D3DXPARAMETER_DESC;
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXTECHNIQUE_DESC:
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
typedef struct _D3DXTECHNIQUE_DESC
|
||||
{
|
||||
LPCSTR Name; // Technique name
|
||||
UINT Passes; // Number of passes
|
||||
UINT Annotations; // Number of annotations
|
||||
|
||||
} D3DXTECHNIQUE_DESC;
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXPASS_DESC:
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
typedef struct _D3DXPASS_DESC
|
||||
{
|
||||
LPCSTR Name; // Pass name
|
||||
UINT Annotations; // Number of annotations
|
||||
|
||||
CONST DWORD *pVertexShaderFunction; // Vertex shader function
|
||||
CONST DWORD *pPixelShaderFunction; // Pixel shader function
|
||||
|
||||
} D3DXPASS_DESC;
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXFUNCTION_DESC:
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
typedef struct _D3DXFUNCTION_DESC
|
||||
{
|
||||
LPCSTR Name; // Function name
|
||||
UINT Annotations; // Number of annotations
|
||||
|
||||
} D3DXFUNCTION_DESC;
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// ID3DXEffectPool ///////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
typedef interface ID3DXEffectPool ID3DXEffectPool;
|
||||
typedef interface ID3DXEffectPool *LPD3DXEFFECTPOOL;
|
||||
|
||||
// {9537AB04-3250-412e-8213-FCD2F8677933}
|
||||
DEFINE_GUID(IID_ID3DXEffectPool,
|
||||
0x9537ab04, 0x3250, 0x412e, 0x82, 0x13, 0xfc, 0xd2, 0xf8, 0x67, 0x79, 0x33);
|
||||
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE ID3DXEffectPool
|
||||
|
||||
DECLARE_INTERFACE_(ID3DXEffectPool, IUnknown)
|
||||
{
|
||||
// IUnknown
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
||||
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
||||
|
||||
// No public methods
|
||||
};
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// ID3DXBaseEffect ///////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
typedef interface ID3DXBaseEffect ID3DXBaseEffect;
|
||||
typedef interface ID3DXBaseEffect *LPD3DXBASEEFFECT;
|
||||
|
||||
// {017C18AC-103F-4417-8C51-6BF6EF1E56BE}
|
||||
DEFINE_GUID(IID_ID3DXBaseEffect,
|
||||
0x17c18ac, 0x103f, 0x4417, 0x8c, 0x51, 0x6b, 0xf6, 0xef, 0x1e, 0x56, 0xbe);
|
||||
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE ID3DXBaseEffect
|
||||
|
||||
DECLARE_INTERFACE_(ID3DXBaseEffect, IUnknown)
|
||||
{
|
||||
// IUnknown
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
||||
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
||||
|
||||
// Descs
|
||||
STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* pDesc) PURE;
|
||||
STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE hParameter, D3DXPARAMETER_DESC* pDesc) PURE;
|
||||
STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE hTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
|
||||
STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE hPass, D3DXPASS_DESC* pDesc) PURE;
|
||||
STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE hShader, D3DXFUNCTION_DESC* pDesc) PURE;
|
||||
|
||||
// Handle operations
|
||||
STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE hParameter, LPCSTR pName) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE hParameter, LPCSTR pSemantic) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR pName) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE hTechnique, UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE hTechnique, LPCSTR pName) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR pName) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE hObject, UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE hObject, LPCSTR pName) PURE;
|
||||
|
||||
// Get/Set Parameters
|
||||
STDMETHOD(SetValue)(THIS_ D3DXHANDLE hParameter, LPCVOID pData, UINT Bytes) PURE;
|
||||
STDMETHOD(GetValue)(THIS_ D3DXHANDLE hParameter, LPVOID pData, UINT Bytes) PURE;
|
||||
STDMETHOD(SetBool)(THIS_ D3DXHANDLE hParameter, BOOL b) PURE;
|
||||
STDMETHOD(GetBool)(THIS_ D3DXHANDLE hParameter, BOOL* pb) PURE;
|
||||
STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE hParameter, CONST BOOL* pb, UINT Count) PURE;
|
||||
STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE hParameter, BOOL* pb, UINT Count) PURE;
|
||||
STDMETHOD(SetInt)(THIS_ D3DXHANDLE hParameter, INT n) PURE;
|
||||
STDMETHOD(GetInt)(THIS_ D3DXHANDLE hParameter, INT* pn) PURE;
|
||||
STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE hParameter, CONST INT* pn, UINT Count) PURE;
|
||||
STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE hParameter, INT* pn, UINT Count) PURE;
|
||||
STDMETHOD(SetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT f) PURE;
|
||||
STDMETHOD(GetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT* pf) PURE;
|
||||
STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE hParameter, CONST FLOAT* pf, UINT Count) PURE;
|
||||
STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE hParameter, FLOAT* pf, UINT Count) PURE;
|
||||
STDMETHOD(SetVector)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector) PURE;
|
||||
STDMETHOD(GetVector)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector) PURE;
|
||||
STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
|
||||
STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) PURE;
|
||||
STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
|
||||
STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
|
||||
STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
|
||||
STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
|
||||
STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
||||
STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
||||
STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
|
||||
STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
|
||||
STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
|
||||
STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
|
||||
STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
||||
STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
||||
STDMETHOD(SetString)(THIS_ D3DXHANDLE hParameter, LPCSTR pString) PURE;
|
||||
STDMETHOD(GetString)(THIS_ D3DXHANDLE hParameter, LPCSTR* ppString) PURE;
|
||||
STDMETHOD(SetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
|
||||
STDMETHOD(GetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 *ppTexture) PURE;
|
||||
STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 *ppPShader) PURE;
|
||||
STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 *ppVShader) PURE;
|
||||
|
||||
//Set Range of an Array to pass to device
|
||||
//Useful for sending only a subrange of an array down to the device
|
||||
STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE hParameter, UINT uStart, UINT uEnd) PURE;
|
||||
|
||||
};
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// ID3DXEffectStateManager:
|
||||
// ------------------------
|
||||
// This is a user implemented interface that can be used to manage device
|
||||
// state changes made by an Effect.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
typedef interface ID3DXEffectStateManager ID3DXEffectStateManager;
|
||||
typedef interface ID3DXEffectStateManager *LPD3DXEFFECTSTATEMANAGER;
|
||||
|
||||
// {79AAB587-6DBC-4fa7-82DE-37FA1781C5CE}
|
||||
DEFINE_GUID(IID_ID3DXEffectStateManager,
|
||||
0x79aab587, 0x6dbc, 0x4fa7, 0x82, 0xde, 0x37, 0xfa, 0x17, 0x81, 0xc5, 0xce);
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE ID3DXEffectStateManager
|
||||
|
||||
DECLARE_INTERFACE_(ID3DXEffectStateManager, IUnknown)
|
||||
{
|
||||
// The user must correctly implement QueryInterface, AddRef, and Release.
|
||||
|
||||
// IUnknown
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
||||
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
||||
|
||||
// The following methods are called by the Effect when it wants to make
|
||||
// the corresponding device call. Note that:
|
||||
// 1. Users manage the state and are therefore responsible for making the
|
||||
// the corresponding device calls themselves inside their callbacks.
|
||||
// 2. Effects pay attention to the return values of the callbacks, and so
|
||||
// users must pay attention to what they return in their callbacks.
|
||||
|
||||
STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX *pMatrix) PURE;
|
||||
STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9 *pMaterial) PURE;
|
||||
STDMETHOD(SetLight)(THIS_ DWORD Index, CONST D3DLIGHT9 *pLight) PURE;
|
||||
STDMETHOD(LightEnable)(THIS_ DWORD Index, BOOL Enable) PURE;
|
||||
STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD Value) PURE;
|
||||
STDMETHOD(SetTexture)(THIS_ DWORD Stage, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
|
||||
STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) PURE;
|
||||
STDMETHOD(SetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) PURE;
|
||||
STDMETHOD(SetNPatchMode)(THIS_ FLOAT NumSegments) PURE;
|
||||
STDMETHOD(SetFVF)(THIS_ DWORD FVF) PURE;
|
||||
STDMETHOD(SetVertexShader)(THIS_ LPDIRECT3DVERTEXSHADER9 pShader) PURE;
|
||||
STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT RegisterIndex, CONST FLOAT *pConstantData, UINT RegisterCount) PURE;
|
||||
STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT RegisterIndex, CONST INT *pConstantData, UINT RegisterCount) PURE;
|
||||
STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT RegisterIndex, CONST BOOL *pConstantData, UINT RegisterCount) PURE;
|
||||
STDMETHOD(SetPixelShader)(THIS_ LPDIRECT3DPIXELSHADER9 pShader) PURE;
|
||||
STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT RegisterIndex, CONST FLOAT *pConstantData, UINT RegisterCount) PURE;
|
||||
STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT RegisterIndex, CONST INT *pConstantData, UINT RegisterCount) PURE;
|
||||
STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT RegisterIndex, CONST BOOL *pConstantData, UINT RegisterCount) PURE;
|
||||
};
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// ID3DXEffect ///////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
typedef interface ID3DXEffect ID3DXEffect;
|
||||
typedef interface ID3DXEffect *LPD3DXEFFECT;
|
||||
|
||||
// {F6CEB4B3-4E4C-40dd-B883-8D8DE5EA0CD5}
|
||||
DEFINE_GUID(IID_ID3DXEffect,
|
||||
0xf6ceb4b3, 0x4e4c, 0x40dd, 0xb8, 0x83, 0x8d, 0x8d, 0xe5, 0xea, 0xc, 0xd5);
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE ID3DXEffect
|
||||
|
||||
DECLARE_INTERFACE_(ID3DXEffect, ID3DXBaseEffect)
|
||||
{
|
||||
// ID3DXBaseEffect
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
||||
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
||||
|
||||
// Descs
|
||||
STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* pDesc) PURE;
|
||||
STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE hParameter, D3DXPARAMETER_DESC* pDesc) PURE;
|
||||
STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE hTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
|
||||
STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE hPass, D3DXPASS_DESC* pDesc) PURE;
|
||||
STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE hShader, D3DXFUNCTION_DESC* pDesc) PURE;
|
||||
|
||||
// Handle operations
|
||||
STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE hParameter, LPCSTR pName) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE hParameter, LPCSTR pSemantic) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR pName) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE hTechnique, UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE hTechnique, LPCSTR pName) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR pName) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE hObject, UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE hObject, LPCSTR pName) PURE;
|
||||
|
||||
// Get/Set Parameters
|
||||
STDMETHOD(SetValue)(THIS_ D3DXHANDLE hParameter, LPCVOID pData, UINT Bytes) PURE;
|
||||
STDMETHOD(GetValue)(THIS_ D3DXHANDLE hParameter, LPVOID pData, UINT Bytes) PURE;
|
||||
STDMETHOD(SetBool)(THIS_ D3DXHANDLE hParameter, BOOL b) PURE;
|
||||
STDMETHOD(GetBool)(THIS_ D3DXHANDLE hParameter, BOOL* pb) PURE;
|
||||
STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE hParameter, CONST BOOL* pb, UINT Count) PURE;
|
||||
STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE hParameter, BOOL* pb, UINT Count) PURE;
|
||||
STDMETHOD(SetInt)(THIS_ D3DXHANDLE hParameter, INT n) PURE;
|
||||
STDMETHOD(GetInt)(THIS_ D3DXHANDLE hParameter, INT* pn) PURE;
|
||||
STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE hParameter, CONST INT* pn, UINT Count) PURE;
|
||||
STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE hParameter, INT* pn, UINT Count) PURE;
|
||||
STDMETHOD(SetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT f) PURE;
|
||||
STDMETHOD(GetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT* pf) PURE;
|
||||
STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE hParameter, CONST FLOAT* pf, UINT Count) PURE;
|
||||
STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE hParameter, FLOAT* pf, UINT Count) PURE;
|
||||
STDMETHOD(SetVector)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector) PURE;
|
||||
STDMETHOD(GetVector)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector) PURE;
|
||||
STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
|
||||
STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) PURE;
|
||||
STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
|
||||
STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
|
||||
STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
|
||||
STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
|
||||
STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
||||
STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
||||
STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
|
||||
STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
|
||||
STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
|
||||
STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
|
||||
STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
||||
STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
||||
STDMETHOD(SetString)(THIS_ D3DXHANDLE hParameter, LPCSTR pString) PURE;
|
||||
STDMETHOD(GetString)(THIS_ D3DXHANDLE hParameter, LPCSTR* ppString) PURE;
|
||||
STDMETHOD(SetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
|
||||
STDMETHOD(GetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 *ppTexture) PURE;
|
||||
STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 *ppPShader) PURE;
|
||||
STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 *ppVShader) PURE;
|
||||
|
||||
//Set Range of an Array to pass to device
|
||||
//Usefull for sending only a subrange of an array down to the device
|
||||
STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE hParameter, UINT uStart, UINT uEnd) PURE;
|
||||
// ID3DXBaseEffect
|
||||
|
||||
|
||||
// Pool
|
||||
STDMETHOD(GetPool)(THIS_ LPD3DXEFFECTPOOL* ppPool) PURE;
|
||||
|
||||
// Selecting and setting a technique
|
||||
STDMETHOD(SetTechnique)(THIS_ D3DXHANDLE hTechnique) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetCurrentTechnique)(THIS) PURE;
|
||||
STDMETHOD(ValidateTechnique)(THIS_ D3DXHANDLE hTechnique) PURE;
|
||||
STDMETHOD(FindNextValidTechnique)(THIS_ D3DXHANDLE hTechnique, D3DXHANDLE *pTechnique) PURE;
|
||||
STDMETHOD_(BOOL, IsParameterUsed)(THIS_ D3DXHANDLE hParameter, D3DXHANDLE hTechnique) PURE;
|
||||
|
||||
// Using current technique
|
||||
// Begin starts active technique
|
||||
// BeginPass begins a pass
|
||||
// CommitChanges updates changes to any set calls in the pass. This should be called before
|
||||
// any DrawPrimitive call to d3d
|
||||
// EndPass ends a pass
|
||||
// End ends active technique
|
||||
STDMETHOD(Begin)(THIS_ UINT *pPasses, DWORD Flags) PURE;
|
||||
STDMETHOD(BeginPass)(THIS_ UINT Pass) PURE;
|
||||
STDMETHOD(CommitChanges)(THIS) PURE;
|
||||
STDMETHOD(EndPass)(THIS) PURE;
|
||||
STDMETHOD(End)(THIS) PURE;
|
||||
|
||||
// Managing D3D Device
|
||||
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
|
||||
STDMETHOD(OnLostDevice)(THIS) PURE;
|
||||
STDMETHOD(OnResetDevice)(THIS) PURE;
|
||||
|
||||
// Logging device calls
|
||||
STDMETHOD(SetStateManager)(THIS_ LPD3DXEFFECTSTATEMANAGER pManager) PURE;
|
||||
STDMETHOD(GetStateManager)(THIS_ LPD3DXEFFECTSTATEMANAGER *ppManager) PURE;
|
||||
|
||||
// Parameter blocks
|
||||
STDMETHOD(BeginParameterBlock)(THIS) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, EndParameterBlock)(THIS) PURE;
|
||||
STDMETHOD(ApplyParameterBlock)(THIS_ D3DXHANDLE hParameterBlock) PURE;
|
||||
STDMETHOD(DeleteParameterBlock)(THIS_ D3DXHANDLE hParameterBlock) PURE;
|
||||
|
||||
// Cloning
|
||||
STDMETHOD(CloneEffect)(THIS_ LPDIRECT3DDEVICE9 pDevice, LPD3DXEFFECT* ppEffect) PURE;
|
||||
|
||||
// Fast path for setting variables directly in ID3DXEffect
|
||||
STDMETHOD(SetRawValue)(THIS_ D3DXHANDLE hParameter, LPCVOID pData, UINT ByteOffset, UINT Bytes) PURE;
|
||||
};
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// ID3DXEffectCompiler ///////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
typedef interface ID3DXEffectCompiler ID3DXEffectCompiler;
|
||||
typedef interface ID3DXEffectCompiler *LPD3DXEFFECTCOMPILER;
|
||||
|
||||
// {51B8A949-1A31-47e6-BEA0-4B30DB53F1E0}
|
||||
DEFINE_GUID(IID_ID3DXEffectCompiler,
|
||||
0x51b8a949, 0x1a31, 0x47e6, 0xbe, 0xa0, 0x4b, 0x30, 0xdb, 0x53, 0xf1, 0xe0);
|
||||
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE ID3DXEffectCompiler
|
||||
|
||||
DECLARE_INTERFACE_(ID3DXEffectCompiler, ID3DXBaseEffect)
|
||||
{
|
||||
// ID3DXBaseEffect
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
||||
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
||||
|
||||
// Descs
|
||||
STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* pDesc) PURE;
|
||||
STDMETHOD(GetParameterDesc)(THIS_ D3DXHANDLE hParameter, D3DXPARAMETER_DESC* pDesc) PURE;
|
||||
STDMETHOD(GetTechniqueDesc)(THIS_ D3DXHANDLE hTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
|
||||
STDMETHOD(GetPassDesc)(THIS_ D3DXHANDLE hPass, D3DXPASS_DESC* pDesc) PURE;
|
||||
STDMETHOD(GetFunctionDesc)(THIS_ D3DXHANDLE hShader, D3DXFUNCTION_DESC* pDesc) PURE;
|
||||
|
||||
// Handle operations
|
||||
STDMETHOD_(D3DXHANDLE, GetParameter)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetParameterByName)(THIS_ D3DXHANDLE hParameter, LPCSTR pName) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetParameterBySemantic)(THIS_ D3DXHANDLE hParameter, LPCSTR pSemantic) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetParameterElement)(THIS_ D3DXHANDLE hParameter, UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetTechnique)(THIS_ UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetTechniqueByName)(THIS_ LPCSTR pName) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetPass)(THIS_ D3DXHANDLE hTechnique, UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetPassByName)(THIS_ D3DXHANDLE hTechnique, LPCSTR pName) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetFunction)(THIS_ UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetFunctionByName)(THIS_ LPCSTR pName) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetAnnotation)(THIS_ D3DXHANDLE hObject, UINT Index) PURE;
|
||||
STDMETHOD_(D3DXHANDLE, GetAnnotationByName)(THIS_ D3DXHANDLE hObject, LPCSTR pName) PURE;
|
||||
|
||||
// Get/Set Parameters
|
||||
STDMETHOD(SetValue)(THIS_ D3DXHANDLE hParameter, LPCVOID pData, UINT Bytes) PURE;
|
||||
STDMETHOD(GetValue)(THIS_ D3DXHANDLE hParameter, LPVOID pData, UINT Bytes) PURE;
|
||||
STDMETHOD(SetBool)(THIS_ D3DXHANDLE hParameter, BOOL b) PURE;
|
||||
STDMETHOD(GetBool)(THIS_ D3DXHANDLE hParameter, BOOL* pb) PURE;
|
||||
STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE hParameter, CONST BOOL* pb, UINT Count) PURE;
|
||||
STDMETHOD(GetBoolArray)(THIS_ D3DXHANDLE hParameter, BOOL* pb, UINT Count) PURE;
|
||||
STDMETHOD(SetInt)(THIS_ D3DXHANDLE hParameter, INT n) PURE;
|
||||
STDMETHOD(GetInt)(THIS_ D3DXHANDLE hParameter, INT* pn) PURE;
|
||||
STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE hParameter, CONST INT* pn, UINT Count) PURE;
|
||||
STDMETHOD(GetIntArray)(THIS_ D3DXHANDLE hParameter, INT* pn, UINT Count) PURE;
|
||||
STDMETHOD(SetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT f) PURE;
|
||||
STDMETHOD(GetFloat)(THIS_ D3DXHANDLE hParameter, FLOAT* pf) PURE;
|
||||
STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE hParameter, CONST FLOAT* pf, UINT Count) PURE;
|
||||
STDMETHOD(GetFloatArray)(THIS_ D3DXHANDLE hParameter, FLOAT* pf, UINT Count) PURE;
|
||||
STDMETHOD(SetVector)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector) PURE;
|
||||
STDMETHOD(GetVector)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector) PURE;
|
||||
STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
|
||||
STDMETHOD(GetVectorArray)(THIS_ D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) PURE;
|
||||
STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
|
||||
STDMETHOD(GetMatrix)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
|
||||
STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
|
||||
STDMETHOD(GetMatrixArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
|
||||
STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
||||
STDMETHOD(GetMatrixPointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
||||
STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix) PURE;
|
||||
STDMETHOD(GetMatrixTranspose)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) PURE;
|
||||
STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
|
||||
STDMETHOD(GetMatrixTransposeArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) PURE;
|
||||
STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
||||
STDMETHOD(GetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
||||
STDMETHOD(SetString)(THIS_ D3DXHANDLE hParameter, LPCSTR pString) PURE;
|
||||
STDMETHOD(GetString)(THIS_ D3DXHANDLE hParameter, LPCSTR* ppString) PURE;
|
||||
STDMETHOD(SetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
|
||||
STDMETHOD(GetTexture)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 *ppTexture) PURE;
|
||||
STDMETHOD(GetPixelShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DPIXELSHADER9 *ppPShader) PURE;
|
||||
STDMETHOD(GetVertexShader)(THIS_ D3DXHANDLE hParameter, LPDIRECT3DVERTEXSHADER9 *ppVShader) PURE;
|
||||
|
||||
//Set Range of an Array to pass to device
|
||||
//Usefull for sending only a subrange of an array down to the device
|
||||
STDMETHOD(SetArrayRange)(THIS_ D3DXHANDLE hParameter, UINT uStart, UINT uEnd) PURE;
|
||||
// ID3DXBaseEffect
|
||||
|
||||
// Parameter sharing, specialization, and information
|
||||
STDMETHOD(SetLiteral)(THIS_ D3DXHANDLE hParameter, BOOL Literal) PURE;
|
||||
STDMETHOD(GetLiteral)(THIS_ D3DXHANDLE hParameter, BOOL *pLiteral) PURE;
|
||||
|
||||
// Compilation
|
||||
STDMETHOD(CompileEffect)(THIS_ DWORD Flags,
|
||||
LPD3DXBUFFER* ppEffect, LPD3DXBUFFER* ppErrorMsgs) PURE;
|
||||
|
||||
STDMETHOD(CompileShader)(THIS_ D3DXHANDLE hFunction, LPCSTR pTarget, DWORD Flags,
|
||||
LPD3DXBUFFER* ppShader, LPD3DXBUFFER* ppErrorMsgs, LPD3DXCONSTANTTABLE* ppConstantTable) PURE;
|
||||
};
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// APIs //////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif //__cplusplus
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXCreateEffectPool:
|
||||
// ---------------------
|
||||
// Creates an effect pool. Pools are used for sharing parameters between
|
||||
// multiple effects. For all effects within a pool, shared parameters of the
|
||||
// same name all share the same value.
|
||||
//
|
||||
// Parameters:
|
||||
// ppPool
|
||||
// Returns the created pool.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectPool(
|
||||
LPD3DXEFFECTPOOL* ppPool);
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXCreateEffect:
|
||||
// -----------------
|
||||
// Creates an effect from an ascii or binary effect description.
|
||||
//
|
||||
// Parameters:
|
||||
// pDevice
|
||||
// Pointer of the device on which to create the effect
|
||||
// pSrcFile
|
||||
// Name of the file containing the effect description
|
||||
// hSrcModule
|
||||
// Module handle. if NULL, current module will be used.
|
||||
// pSrcResource
|
||||
// Resource name in module
|
||||
// pSrcData
|
||||
// Pointer to effect description
|
||||
// SrcDataSize
|
||||
// Size of the effect description in bytes
|
||||
// pDefines
|
||||
// Optional NULL-terminated array of preprocessor macro definitions.
|
||||
// Flags
|
||||
// See D3DXSHADER_xxx flags.
|
||||
// pSkipConstants
|
||||
// A list of semi-colon delimited variable names. The effect will
|
||||
// not set these variables to the device when they are referenced
|
||||
// by a shader. NOTE: the variables specified here must be
|
||||
// register bound in the file and must not be used in expressions
|
||||
// in passes or samplers or the file will not load.
|
||||
// pInclude
|
||||
// Optional interface pointer to use for handling #include directives.
|
||||
// If this parameter is NULL, #includes will be honored when compiling
|
||||
// from file, and will error when compiling from resource or memory.
|
||||
// pPool
|
||||
// Pointer to ID3DXEffectPool object to use for shared parameters.
|
||||
// If NULL, no parameters will be shared.
|
||||
// ppEffect
|
||||
// Returns a buffer containing created effect.
|
||||
// ppCompilationErrors
|
||||
// Returns a buffer containing any error messages which occurred during
|
||||
// compile. Or NULL if you do not care about the error messages.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectFromFileA(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
LPCSTR pSrcFile,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTPOOL pPool,
|
||||
LPD3DXEFFECT* ppEffect,
|
||||
LPD3DXBUFFER* ppCompilationErrors);
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectFromFileW(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
LPCWSTR pSrcFile,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTPOOL pPool,
|
||||
LPD3DXEFFECT* ppEffect,
|
||||
LPD3DXBUFFER* ppCompilationErrors);
|
||||
|
||||
#ifdef UNICODE
|
||||
#define D3DXCreateEffectFromFile D3DXCreateEffectFromFileW
|
||||
#else
|
||||
#define D3DXCreateEffectFromFile D3DXCreateEffectFromFileA
|
||||
#endif
|
||||
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectFromResourceA(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
HMODULE hSrcModule,
|
||||
LPCSTR pSrcResource,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTPOOL pPool,
|
||||
LPD3DXEFFECT* ppEffect,
|
||||
LPD3DXBUFFER* ppCompilationErrors);
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectFromResourceW(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
HMODULE hSrcModule,
|
||||
LPCWSTR pSrcResource,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTPOOL pPool,
|
||||
LPD3DXEFFECT* ppEffect,
|
||||
LPD3DXBUFFER* ppCompilationErrors);
|
||||
|
||||
#ifdef UNICODE
|
||||
#define D3DXCreateEffectFromResource D3DXCreateEffectFromResourceW
|
||||
#else
|
||||
#define D3DXCreateEffectFromResource D3DXCreateEffectFromResourceA
|
||||
#endif
|
||||
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffect(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
LPCVOID pSrcData,
|
||||
UINT SrcDataLen,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTPOOL pPool,
|
||||
LPD3DXEFFECT* ppEffect,
|
||||
LPD3DXBUFFER* ppCompilationErrors);
|
||||
|
||||
//
|
||||
// Ex functions that accept pSkipConstants in addition to other parameters
|
||||
//
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectFromFileExA(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
LPCSTR pSrcFile,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
LPCSTR pSkipConstants,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTPOOL pPool,
|
||||
LPD3DXEFFECT* ppEffect,
|
||||
LPD3DXBUFFER* ppCompilationErrors);
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectFromFileExW(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
LPCWSTR pSrcFile,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
LPCSTR pSkipConstants,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTPOOL pPool,
|
||||
LPD3DXEFFECT* ppEffect,
|
||||
LPD3DXBUFFER* ppCompilationErrors);
|
||||
|
||||
#ifdef UNICODE
|
||||
#define D3DXCreateEffectFromFileEx D3DXCreateEffectFromFileExW
|
||||
#else
|
||||
#define D3DXCreateEffectFromFileEx D3DXCreateEffectFromFileExA
|
||||
#endif
|
||||
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectFromResourceExA(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
HMODULE hSrcModule,
|
||||
LPCSTR pSrcResource,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
LPCSTR pSkipConstants,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTPOOL pPool,
|
||||
LPD3DXEFFECT* ppEffect,
|
||||
LPD3DXBUFFER* ppCompilationErrors);
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectFromResourceExW(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
HMODULE hSrcModule,
|
||||
LPCWSTR pSrcResource,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
LPCSTR pSkipConstants,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTPOOL pPool,
|
||||
LPD3DXEFFECT* ppEffect,
|
||||
LPD3DXBUFFER* ppCompilationErrors);
|
||||
|
||||
#ifdef UNICODE
|
||||
#define D3DXCreateEffectFromResourceEx D3DXCreateEffectFromResourceExW
|
||||
#else
|
||||
#define D3DXCreateEffectFromResourceEx D3DXCreateEffectFromResourceExA
|
||||
#endif
|
||||
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectEx(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
LPCVOID pSrcData,
|
||||
UINT SrcDataLen,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
LPCSTR pSkipConstants,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTPOOL pPool,
|
||||
LPD3DXEFFECT* ppEffect,
|
||||
LPD3DXBUFFER* ppCompilationErrors);
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXCreateEffectCompiler:
|
||||
// -------------------------
|
||||
// Creates an effect from an ascii or binary effect description.
|
||||
//
|
||||
// Parameters:
|
||||
// pSrcFile
|
||||
// Name of the file containing the effect description
|
||||
// hSrcModule
|
||||
// Module handle. if NULL, current module will be used.
|
||||
// pSrcResource
|
||||
// Resource name in module
|
||||
// pSrcData
|
||||
// Pointer to effect description
|
||||
// SrcDataSize
|
||||
// Size of the effect description in bytes
|
||||
// pDefines
|
||||
// Optional NULL-terminated array of preprocessor macro definitions.
|
||||
// pInclude
|
||||
// Optional interface pointer to use for handling #include directives.
|
||||
// If this parameter is NULL, #includes will be honored when compiling
|
||||
// from file, and will error when compiling from resource or memory.
|
||||
// pPool
|
||||
// Pointer to ID3DXEffectPool object to use for shared parameters.
|
||||
// If NULL, no parameters will be shared.
|
||||
// ppCompiler
|
||||
// Returns a buffer containing created effect compiler.
|
||||
// ppParseErrors
|
||||
// Returns a buffer containing any error messages which occurred during
|
||||
// parse. Or NULL if you do not care about the error messages.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectCompilerFromFileA(
|
||||
LPCSTR pSrcFile,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTCOMPILER* ppCompiler,
|
||||
LPD3DXBUFFER* ppParseErrors);
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectCompilerFromFileW(
|
||||
LPCWSTR pSrcFile,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTCOMPILER* ppCompiler,
|
||||
LPD3DXBUFFER* ppParseErrors);
|
||||
|
||||
#ifdef UNICODE
|
||||
#define D3DXCreateEffectCompilerFromFile D3DXCreateEffectCompilerFromFileW
|
||||
#else
|
||||
#define D3DXCreateEffectCompilerFromFile D3DXCreateEffectCompilerFromFileA
|
||||
#endif
|
||||
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectCompilerFromResourceA(
|
||||
HMODULE hSrcModule,
|
||||
LPCSTR pSrcResource,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTCOMPILER* ppCompiler,
|
||||
LPD3DXBUFFER* ppParseErrors);
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectCompilerFromResourceW(
|
||||
HMODULE hSrcModule,
|
||||
LPCWSTR pSrcResource,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTCOMPILER* ppCompiler,
|
||||
LPD3DXBUFFER* ppParseErrors);
|
||||
|
||||
#ifdef UNICODE
|
||||
#define D3DXCreateEffectCompilerFromResource D3DXCreateEffectCompilerFromResourceW
|
||||
#else
|
||||
#define D3DXCreateEffectCompilerFromResource D3DXCreateEffectCompilerFromResourceA
|
||||
#endif
|
||||
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateEffectCompiler(
|
||||
LPCSTR pSrcData,
|
||||
UINT SrcDataLen,
|
||||
CONST D3DXMACRO* pDefines,
|
||||
LPD3DXINCLUDE pInclude,
|
||||
DWORD Flags,
|
||||
LPD3DXEFFECTCOMPILER* ppCompiler,
|
||||
LPD3DXBUFFER* ppParseErrors);
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXDisassembleEffect:
|
||||
// -----------------------
|
||||
//
|
||||
// Parameters:
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXDisassembleEffect(
|
||||
LPD3DXEFFECT pEffect,
|
||||
BOOL EnableColorCode,
|
||||
LPD3DXBUFFER *ppDisassembly);
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif //__cplusplus
|
||||
|
||||
#endif //__D3DX9EFFECT_H__
|
||||
|
||||
|
1796
subVersion/d3d9/d3dx9math.h
Normal file
1796
subVersion/d3d9/d3dx9math.h
Normal file
File diff suppressed because it is too large
Load Diff
2251
subVersion/d3d9/d3dx9math.inl
Normal file
2251
subVersion/d3d9/d3dx9math.inl
Normal file
File diff suppressed because it is too large
Load Diff
3007
subVersion/d3d9/d3dx9mesh.h
Normal file
3007
subVersion/d3d9/d3dx9mesh.h
Normal file
File diff suppressed because it is too large
Load Diff
1010
subVersion/d3d9/d3dx9shader.h
Normal file
1010
subVersion/d3d9/d3dx9shader.h
Normal file
File diff suppressed because it is too large
Load Diff
221
subVersion/d3d9/d3dx9shape.h
Normal file
221
subVersion/d3d9/d3dx9shape.h
Normal file
@ -0,0 +1,221 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) Microsoft Corporation. All Rights Reserved.
|
||||
//
|
||||
// File: d3dx9shapes.h
|
||||
// Content: D3DX simple shapes
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "d3dx9.h"
|
||||
|
||||
#ifndef __D3DX9SHAPES_H__
|
||||
#define __D3DX9SHAPES_H__
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Functions:
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif //__cplusplus
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// D3DXCreatePolygon:
|
||||
// ------------------
|
||||
// Creates a mesh containing an n-sided polygon. The polygon is centered
|
||||
// at the origin.
|
||||
//
|
||||
// Parameters:
|
||||
//
|
||||
// pDevice The D3D device with which the mesh is going to be used.
|
||||
// Length Length of each side.
|
||||
// Sides Number of sides the polygon has. (Must be >= 3)
|
||||
// ppMesh The mesh object which will be created
|
||||
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
|
||||
//-------------------------------------------------------------------------
|
||||
HRESULT WINAPI
|
||||
D3DXCreatePolygon(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
FLOAT Length,
|
||||
UINT Sides,
|
||||
LPD3DXMESH* ppMesh,
|
||||
LPD3DXBUFFER* ppAdjacency);
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// D3DXCreateBox:
|
||||
// --------------
|
||||
// Creates a mesh containing an axis-aligned box. The box is centered at
|
||||
// the origin.
|
||||
//
|
||||
// Parameters:
|
||||
//
|
||||
// pDevice The D3D device with which the mesh is going to be used.
|
||||
// Width Width of box (along X-axis)
|
||||
// Height Height of box (along Y-axis)
|
||||
// Depth Depth of box (along Z-axis)
|
||||
// ppMesh The mesh object which will be created
|
||||
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
|
||||
//-------------------------------------------------------------------------
|
||||
HRESULT WINAPI
|
||||
D3DXCreateBox(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
FLOAT Width,
|
||||
FLOAT Height,
|
||||
FLOAT Depth,
|
||||
LPD3DXMESH* ppMesh,
|
||||
LPD3DXBUFFER* ppAdjacency);
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// D3DXCreateCylinder:
|
||||
// -------------------
|
||||
// Creates a mesh containing a cylinder. The generated cylinder is
|
||||
// centered at the origin, and its axis is aligned with the Z-axis.
|
||||
//
|
||||
// Parameters:
|
||||
//
|
||||
// pDevice The D3D device with which the mesh is going to be used.
|
||||
// Radius1 Radius at -Z end (should be >= 0.0f)
|
||||
// Radius2 Radius at +Z end (should be >= 0.0f)
|
||||
// Length Length of cylinder (along Z-axis)
|
||||
// Slices Number of slices about the main axis
|
||||
// Stacks Number of stacks along the main axis
|
||||
// ppMesh The mesh object which will be created
|
||||
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
|
||||
//-------------------------------------------------------------------------
|
||||
HRESULT WINAPI
|
||||
D3DXCreateCylinder(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
FLOAT Radius1,
|
||||
FLOAT Radius2,
|
||||
FLOAT Length,
|
||||
UINT Slices,
|
||||
UINT Stacks,
|
||||
LPD3DXMESH* ppMesh,
|
||||
LPD3DXBUFFER* ppAdjacency);
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// D3DXCreateSphere:
|
||||
// -----------------
|
||||
// Creates a mesh containing a sphere. The sphere is centered at the
|
||||
// origin.
|
||||
//
|
||||
// Parameters:
|
||||
//
|
||||
// pDevice The D3D device with which the mesh is going to be used.
|
||||
// Radius Radius of the sphere (should be >= 0.0f)
|
||||
// Slices Number of slices about the main axis
|
||||
// Stacks Number of stacks along the main axis
|
||||
// ppMesh The mesh object which will be created
|
||||
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
|
||||
//-------------------------------------------------------------------------
|
||||
HRESULT WINAPI
|
||||
D3DXCreateSphere(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
FLOAT Radius,
|
||||
UINT Slices,
|
||||
UINT Stacks,
|
||||
LPD3DXMESH* ppMesh,
|
||||
LPD3DXBUFFER* ppAdjacency);
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// D3DXCreateTorus:
|
||||
// ----------------
|
||||
// Creates a mesh containing a torus. The generated torus is centered at
|
||||
// the origin, and its axis is aligned with the Z-axis.
|
||||
//
|
||||
// Parameters:
|
||||
//
|
||||
// pDevice The D3D device with which the mesh is going to be used.
|
||||
// InnerRadius Inner radius of the torus (should be >= 0.0f)
|
||||
// OuterRadius Outer radius of the torue (should be >= 0.0f)
|
||||
// Sides Number of sides in a cross-section (must be >= 3)
|
||||
// Rings Number of rings making up the torus (must be >= 3)
|
||||
// ppMesh The mesh object which will be created
|
||||
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
|
||||
//-------------------------------------------------------------------------
|
||||
HRESULT WINAPI
|
||||
D3DXCreateTorus(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
FLOAT InnerRadius,
|
||||
FLOAT OuterRadius,
|
||||
UINT Sides,
|
||||
UINT Rings,
|
||||
LPD3DXMESH* ppMesh,
|
||||
LPD3DXBUFFER* ppAdjacency);
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// D3DXCreateTeapot:
|
||||
// -----------------
|
||||
// Creates a mesh containing a teapot.
|
||||
//
|
||||
// Parameters:
|
||||
//
|
||||
// pDevice The D3D device with which the mesh is going to be used.
|
||||
// ppMesh The mesh object which will be created
|
||||
// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
|
||||
//-------------------------------------------------------------------------
|
||||
HRESULT WINAPI
|
||||
D3DXCreateTeapot(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
LPD3DXMESH* ppMesh,
|
||||
LPD3DXBUFFER* ppAdjacency);
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// D3DXCreateText:
|
||||
// ---------------
|
||||
// Creates a mesh containing the specified text using the font associated
|
||||
// with the device context.
|
||||
//
|
||||
// Parameters:
|
||||
//
|
||||
// pDevice The D3D device with which the mesh is going to be used.
|
||||
// hDC Device context, with desired font selected
|
||||
// pText Text to generate
|
||||
// Deviation Maximum chordal deviation from true font outlines
|
||||
// Extrusion Amount to extrude text in -Z direction
|
||||
// ppMesh The mesh object which will be created
|
||||
// pGlyphMetrics Address of buffer to receive glyph metric data (or NULL)
|
||||
//-------------------------------------------------------------------------
|
||||
HRESULT WINAPI
|
||||
D3DXCreateTextA(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
HDC hDC,
|
||||
LPCSTR pText,
|
||||
FLOAT Deviation,
|
||||
FLOAT Extrusion,
|
||||
LPD3DXMESH* ppMesh,
|
||||
LPD3DXBUFFER* ppAdjacency,
|
||||
LPGLYPHMETRICSFLOAT pGlyphMetrics);
|
||||
|
||||
HRESULT WINAPI
|
||||
D3DXCreateTextW(
|
||||
LPDIRECT3DDEVICE9 pDevice,
|
||||
HDC hDC,
|
||||
LPCWSTR pText,
|
||||
FLOAT Deviation,
|
||||
FLOAT Extrusion,
|
||||
LPD3DXMESH* ppMesh,
|
||||
LPD3DXBUFFER* ppAdjacency,
|
||||
LPGLYPHMETRICSFLOAT pGlyphMetrics);
|
||||
|
||||
#ifdef UNICODE
|
||||
#define D3DXCreateText D3DXCreateTextW
|
||||
#else
|
||||
#define D3DXCreateText D3DXCreateTextA
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif //__cplusplus
|
||||
|
||||
#endif //__D3DX9SHAPES_H__
|
||||
|
1735
subVersion/d3d9/d3dx9tex.h
Normal file
1735
subVersion/d3d9/d3dx9tex.h
Normal file
File diff suppressed because it is too large
Load Diff
299
subVersion/d3d9/d3dx9xof.h
Normal file
299
subVersion/d3d9/d3dx9xof.h
Normal file
@ -0,0 +1,299 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) Microsoft Corporation. All Rights Reserved.
|
||||
//
|
||||
// File: d3dx9xof.h
|
||||
// Content: D3DX .X File types and functions
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "d3dx9.h"
|
||||
|
||||
#if !defined( __D3DX9XOF_H__ )
|
||||
#define __D3DX9XOF_H__
|
||||
|
||||
#if defined( __cplusplus )
|
||||
extern "C" {
|
||||
#endif // defined( __cplusplus )
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXF_FILEFORMAT
|
||||
// This flag is used to specify what file type to use when saving to disk.
|
||||
// _BINARY, and _TEXT are mutually exclusive, while
|
||||
// _COMPRESSED is an optional setting that works with all file types.
|
||||
//----------------------------------------------------------------------------
|
||||
typedef DWORD D3DXF_FILEFORMAT;
|
||||
|
||||
#define D3DXF_FILEFORMAT_BINARY 0
|
||||
#define D3DXF_FILEFORMAT_TEXT 1
|
||||
#define D3DXF_FILEFORMAT_COMPRESSED 2
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXF_FILESAVEOPTIONS
|
||||
// This flag is used to specify where to save the file to. Each flag is
|
||||
// mutually exclusive, indicates the data location of the file, and also
|
||||
// chooses which additional data will specify the location.
|
||||
// _TOFILE is paired with a filename (LPCSTR)
|
||||
// _TOWFILE is paired with a filename (LPWSTR)
|
||||
//----------------------------------------------------------------------------
|
||||
typedef DWORD D3DXF_FILESAVEOPTIONS;
|
||||
|
||||
#define D3DXF_FILESAVE_TOFILE 0x00L
|
||||
#define D3DXF_FILESAVE_TOWFILE 0x01L
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXF_FILELOADOPTIONS
|
||||
// This flag is used to specify where to load the file from. Each flag is
|
||||
// mutually exclusive, indicates the data location of the file, and also
|
||||
// chooses which additional data will specify the location.
|
||||
// _FROMFILE is paired with a filename (LPCSTR)
|
||||
// _FROMWFILE is paired with a filename (LPWSTR)
|
||||
// _FROMRESOURCE is paired with a (D3DXF_FILELOADRESOUCE*) description.
|
||||
// _FROMMEMORY is paired with a (D3DXF_FILELOADMEMORY*) description.
|
||||
//----------------------------------------------------------------------------
|
||||
typedef DWORD D3DXF_FILELOADOPTIONS;
|
||||
|
||||
#define D3DXF_FILELOAD_FROMFILE 0x00L
|
||||
#define D3DXF_FILELOAD_FROMWFILE 0x01L
|
||||
#define D3DXF_FILELOAD_FROMRESOURCE 0x02L
|
||||
#define D3DXF_FILELOAD_FROMMEMORY 0x03L
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXF_FILELOADRESOURCE:
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
typedef struct _D3DXF_FILELOADRESOURCE
|
||||
{
|
||||
HMODULE hModule; // Desc
|
||||
LPCSTR lpName; // Desc
|
||||
LPCSTR lpType; // Desc
|
||||
} D3DXF_FILELOADRESOURCE;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// D3DXF_FILELOADMEMORY:
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
typedef struct _D3DXF_FILELOADMEMORY
|
||||
{
|
||||
LPCVOID lpMemory; // Desc
|
||||
SIZE_T dSize; // Desc
|
||||
} D3DXF_FILELOADMEMORY;
|
||||
|
||||
#if defined( _WIN32 ) && !defined( _NO_COM )
|
||||
|
||||
// {cef08cf9-7b4f-4429-9624-2a690a933201}
|
||||
DEFINE_GUID( IID_ID3DXFile,
|
||||
0xcef08cf9, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
|
||||
|
||||
// {cef08cfa-7b4f-4429-9624-2a690a933201}
|
||||
DEFINE_GUID( IID_ID3DXFileSaveObject,
|
||||
0xcef08cfa, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
|
||||
|
||||
// {cef08cfb-7b4f-4429-9624-2a690a933201}
|
||||
DEFINE_GUID( IID_ID3DXFileSaveData,
|
||||
0xcef08cfb, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
|
||||
|
||||
// {cef08cfc-7b4f-4429-9624-2a690a933201}
|
||||
DEFINE_GUID( IID_ID3DXFileEnumObject,
|
||||
0xcef08cfc, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
|
||||
|
||||
// {cef08cfd-7b4f-4429-9624-2a690a933201}
|
||||
DEFINE_GUID( IID_ID3DXFileData,
|
||||
0xcef08cfd, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 );
|
||||
|
||||
#endif // defined( _WIN32 ) && !defined( _NO_COM )
|
||||
|
||||
#if defined( __cplusplus )
|
||||
#if !defined( DECLSPEC_UUID )
|
||||
#if _MSC_VER >= 1100
|
||||
#define DECLSPEC_UUID( x ) __declspec( uuid( x ) )
|
||||
#else // !( _MSC_VER >= 1100 )
|
||||
#define DECLSPEC_UUID( x )
|
||||
#endif // !( _MSC_VER >= 1100 )
|
||||
#endif // !defined( DECLSPEC_UUID )
|
||||
|
||||
interface DECLSPEC_UUID( "cef08cf9-7b4f-4429-9624-2a690a933201" )
|
||||
ID3DXFile;
|
||||
interface DECLSPEC_UUID( "cef08cfa-7b4f-4429-9624-2a690a933201" )
|
||||
ID3DXFileSaveObject;
|
||||
interface DECLSPEC_UUID( "cef08cfb-7b4f-4429-9624-2a690a933201" )
|
||||
ID3DXFileSaveData;
|
||||
interface DECLSPEC_UUID( "cef08cfc-7b4f-4429-9624-2a690a933201" )
|
||||
ID3DXFileEnumObject;
|
||||
interface DECLSPEC_UUID( "cef08cfd-7b4f-4429-9624-2a690a933201" )
|
||||
ID3DXFileData;
|
||||
|
||||
#if defined( _COM_SMARTPTR_TYPEDEF )
|
||||
_COM_SMARTPTR_TYPEDEF( ID3DXFile,
|
||||
__uuidof( ID3DXFile ) );
|
||||
_COM_SMARTPTR_TYPEDEF( ID3DXFileSaveObject,
|
||||
__uuidof( ID3DXFileSaveObject ) );
|
||||
_COM_SMARTPTR_TYPEDEF( ID3DXFileSaveData,
|
||||
__uuidof( ID3DXFileSaveData ) );
|
||||
_COM_SMARTPTR_TYPEDEF( ID3DXFileEnumObject,
|
||||
__uuidof( ID3DXFileEnumObject ) );
|
||||
_COM_SMARTPTR_TYPEDEF( ID3DXFileData,
|
||||
__uuidof( ID3DXFileData ) );
|
||||
#endif // defined( _COM_SMARTPTR_TYPEDEF )
|
||||
#endif // defined( __cplusplus )
|
||||
|
||||
typedef interface ID3DXFile ID3DXFile;
|
||||
typedef interface ID3DXFileSaveObject ID3DXFileSaveObject;
|
||||
typedef interface ID3DXFileSaveData ID3DXFileSaveData;
|
||||
typedef interface ID3DXFileEnumObject ID3DXFileEnumObject;
|
||||
typedef interface ID3DXFileData ID3DXFileData;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// ID3DXFile /////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE ID3DXFile
|
||||
|
||||
DECLARE_INTERFACE_( ID3DXFile, IUnknown )
|
||||
{
|
||||
STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE;
|
||||
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
|
||||
STDMETHOD_( ULONG, Release )( THIS ) PURE;
|
||||
|
||||
STDMETHOD( CreateEnumObject )( THIS_ LPCVOID, D3DXF_FILELOADOPTIONS,
|
||||
ID3DXFileEnumObject** ) PURE;
|
||||
STDMETHOD( CreateSaveObject )( THIS_ LPCVOID, D3DXF_FILESAVEOPTIONS,
|
||||
D3DXF_FILEFORMAT, ID3DXFileSaveObject** ) PURE;
|
||||
STDMETHOD( RegisterTemplates )( THIS_ LPCVOID, SIZE_T ) PURE;
|
||||
STDMETHOD( RegisterEnumTemplates )( THIS_ ID3DXFileEnumObject* ) PURE;
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// ID3DXFileSaveObject ///////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE ID3DXFileSaveObject
|
||||
|
||||
DECLARE_INTERFACE_( ID3DXFileSaveObject, IUnknown )
|
||||
{
|
||||
STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE;
|
||||
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
|
||||
STDMETHOD_( ULONG, Release )( THIS ) PURE;
|
||||
|
||||
STDMETHOD( GetFile )( THIS_ ID3DXFile** ) PURE;
|
||||
STDMETHOD( AddDataObject )( THIS_ REFGUID, LPCSTR, CONST GUID*,
|
||||
SIZE_T, LPCVOID, ID3DXFileSaveData** ) PURE;
|
||||
STDMETHOD( Save )( THIS ) PURE;
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// ID3DXFileSaveData /////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE ID3DXFileSaveData
|
||||
|
||||
DECLARE_INTERFACE_( ID3DXFileSaveData, IUnknown )
|
||||
{
|
||||
STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE;
|
||||
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
|
||||
STDMETHOD_( ULONG, Release )( THIS ) PURE;
|
||||
|
||||
STDMETHOD( GetSave )( THIS_ ID3DXFileSaveObject** ) PURE;
|
||||
STDMETHOD( GetName )( THIS_ LPSTR, SIZE_T* ) PURE;
|
||||
STDMETHOD( GetId )( THIS_ LPGUID ) PURE;
|
||||
STDMETHOD( GetType )( THIS_ GUID* ) PURE;
|
||||
STDMETHOD( AddDataObject )( THIS_ REFGUID, LPCSTR, CONST GUID*,
|
||||
SIZE_T, LPCVOID, ID3DXFileSaveData** ) PURE;
|
||||
STDMETHOD( AddDataReference )( THIS_ LPCSTR, CONST GUID* ) PURE;
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// ID3DXFileEnumObject ///////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE ID3DXFileEnumObject
|
||||
|
||||
DECLARE_INTERFACE_( ID3DXFileEnumObject, IUnknown )
|
||||
{
|
||||
STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE;
|
||||
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
|
||||
STDMETHOD_( ULONG, Release )( THIS ) PURE;
|
||||
|
||||
STDMETHOD( GetFile )( THIS_ ID3DXFile** ) PURE;
|
||||
STDMETHOD( GetChildren )( THIS_ SIZE_T* ) PURE;
|
||||
STDMETHOD( GetChild )( THIS_ SIZE_T, ID3DXFileData** ) PURE;
|
||||
STDMETHOD( GetDataObjectById )( THIS_ REFGUID, ID3DXFileData** ) PURE;
|
||||
STDMETHOD( GetDataObjectByName )( THIS_ LPCSTR, ID3DXFileData** ) PURE;
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// ID3DXFileData /////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE ID3DXFileData
|
||||
|
||||
DECLARE_INTERFACE_( ID3DXFileData, IUnknown )
|
||||
{
|
||||
STDMETHOD( QueryInterface )( THIS_ REFIID, LPVOID* ) PURE;
|
||||
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
|
||||
STDMETHOD_( ULONG, Release )( THIS ) PURE;
|
||||
|
||||
STDMETHOD( GetEnum )( THIS_ ID3DXFileEnumObject** ) PURE;
|
||||
STDMETHOD( GetName )( THIS_ LPSTR, SIZE_T* ) PURE;
|
||||
STDMETHOD( GetId )( THIS_ LPGUID ) PURE;
|
||||
STDMETHOD( Lock )( THIS_ SIZE_T*, LPCVOID* ) PURE;
|
||||
STDMETHOD( Unlock )( THIS ) PURE;
|
||||
STDMETHOD( GetType )( THIS_ GUID* ) PURE;
|
||||
STDMETHOD_( BOOL, IsReference )( THIS ) PURE;
|
||||
STDMETHOD( GetChildren )( THIS_ SIZE_T* ) PURE;
|
||||
STDMETHOD( GetChild )( THIS_ SIZE_T, ID3DXFileData** ) PURE;
|
||||
};
|
||||
|
||||
STDAPI D3DXFileCreate( ID3DXFile** lplpDirectXFile );
|
||||
|
||||
/*
|
||||
* DirectX File errors.
|
||||
*/
|
||||
|
||||
#define _FACD3DXF 0x876
|
||||
|
||||
#define D3DXFERR_BADOBJECT MAKE_HRESULT( 1, _FACD3DXF, 900 )
|
||||
#define D3DXFERR_BADVALUE MAKE_HRESULT( 1, _FACD3DXF, 901 )
|
||||
#define D3DXFERR_BADTYPE MAKE_HRESULT( 1, _FACD3DXF, 902 )
|
||||
#define D3DXFERR_NOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 903 )
|
||||
#define D3DXFERR_NOTDONEYET MAKE_HRESULT( 1, _FACD3DXF, 904 )
|
||||
#define D3DXFERR_FILENOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 905 )
|
||||
#define D3DXFERR_RESOURCENOTFOUND MAKE_HRESULT( 1, _FACD3DXF, 906 )
|
||||
#define D3DXFERR_BADRESOURCE MAKE_HRESULT( 1, _FACD3DXF, 907 )
|
||||
#define D3DXFERR_BADFILETYPE MAKE_HRESULT( 1, _FACD3DXF, 908 )
|
||||
#define D3DXFERR_BADFILEVERSION MAKE_HRESULT( 1, _FACD3DXF, 909 )
|
||||
#define D3DXFERR_BADFILEFLOATSIZE MAKE_HRESULT( 1, _FACD3DXF, 910 )
|
||||
#define D3DXFERR_BADFILE MAKE_HRESULT( 1, _FACD3DXF, 911 )
|
||||
#define D3DXFERR_PARSEERROR MAKE_HRESULT( 1, _FACD3DXF, 912 )
|
||||
#define D3DXFERR_BADARRAYSIZE MAKE_HRESULT( 1, _FACD3DXF, 913 )
|
||||
#define D3DXFERR_BADDATAREFERENCE MAKE_HRESULT( 1, _FACD3DXF, 914 )
|
||||
#define D3DXFERR_NOMOREOBJECTS MAKE_HRESULT( 1, _FACD3DXF, 915 )
|
||||
#define D3DXFERR_NOMOREDATA MAKE_HRESULT( 1, _FACD3DXF, 916 )
|
||||
#define D3DXFERR_BADCACHEFILE MAKE_HRESULT( 1, _FACD3DXF, 917 )
|
||||
|
||||
/*
|
||||
* DirectX File object types.
|
||||
*/
|
||||
|
||||
#ifndef WIN_TYPES
|
||||
#define WIN_TYPES(itype, ptype) typedef interface itype *LP##ptype, **LPLP##ptype
|
||||
#endif
|
||||
|
||||
WIN_TYPES(ID3DXFile, D3DXFILE);
|
||||
WIN_TYPES(ID3DXFileEnumObject, D3DXFILEENUMOBJECT);
|
||||
WIN_TYPES(ID3DXFileSaveObject, D3DXFILESAVEOBJECT);
|
||||
WIN_TYPES(ID3DXFileData, D3DXFILEDATA);
|
||||
WIN_TYPES(ID3DXFileSaveData, D3DXFILESAVEDATA);
|
||||
|
||||
#if defined( __cplusplus )
|
||||
} // extern "C"
|
||||
#endif // defined( __cplusplus )
|
||||
|
||||
#endif // !defined( __D3DX9XOF_H__ )
|
||||
|
||||
|
1570
subVersion/entity.cpp
Normal file
1570
subVersion/entity.cpp
Normal file
File diff suppressed because it is too large
Load Diff
538
subVersion/entity.h
Normal file
538
subVersion/entity.h
Normal file
@ -0,0 +1,538 @@
|
||||
/*
|
||||
Copyright 2016-2017 sub1to
|
||||
|
||||
This file is part of subVersion GTA:O SC External Hack.
|
||||
|
||||
subVersion GTA:O SC External Hack is free software: you can redistribute
|
||||
it and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
subVersion GTA:O SC External Hack is distributed in the hope that it
|
||||
will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||
the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef ENTITY_H
|
||||
#define ENTITY_H
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float cur, max;
|
||||
} curmax;
|
||||
|
||||
class entity
|
||||
{
|
||||
public:
|
||||
curmax m_cmHp;
|
||||
v3 m_v3Pos;
|
||||
float m_fCos,m_fSin;
|
||||
BYTE m_btGod;
|
||||
|
||||
entity();
|
||||
~entity();
|
||||
virtual void getPos();
|
||||
virtual void setPos(v3 dest);
|
||||
virtual void getCos();
|
||||
virtual void setCos(float value);
|
||||
virtual void getSin();
|
||||
virtual void setSin(float value);
|
||||
virtual void getHealth();
|
||||
virtual void setHealth(float hp);
|
||||
virtual void getGod();
|
||||
virtual void setGod(BYTE value);
|
||||
|
||||
DWORD_PTR m_dwpBase,
|
||||
m_dwpPosBase;
|
||||
};
|
||||
|
||||
class player : public entity
|
||||
{
|
||||
public:
|
||||
float m_flArmor,
|
||||
m_flRunSpd,
|
||||
m_flSwimSpd,
|
||||
m_flWantedCanChange,
|
||||
m_flVehicleDamageMult;
|
||||
DWORD m_dwWanted,
|
||||
m_dwNpcIgnore,
|
||||
m_dwFrameFlags;
|
||||
BYTE m_btRagdoll,
|
||||
m_btSeatbelt;
|
||||
bool m_bIsInVehicle;
|
||||
curmax m_cmStamina;
|
||||
|
||||
struct playerData
|
||||
{
|
||||
bool m_isInit;
|
||||
DWORD m_dwWaterProof;
|
||||
float m_maxHealth;
|
||||
};
|
||||
playerData m_playerDataRestore,//the original values will be stored here.
|
||||
m_playerDataCur;
|
||||
|
||||
player();
|
||||
~player();
|
||||
virtual void getHealth();
|
||||
virtual void setHealth(float hp, float armor);
|
||||
bool loadPlayerData();
|
||||
void restorePlayerData();
|
||||
void getMaxHealth();
|
||||
void setMaxHealth(float hp);
|
||||
void getVehicleDamageMult();
|
||||
void setVehicleDamageMult(float value);
|
||||
void getWanted();
|
||||
void setWanted(DWORD stars);
|
||||
void getWantedCanChange();
|
||||
void setWantedCanChange(float value);
|
||||
void getInVehicle();
|
||||
void getRunSpeed();
|
||||
void setRunSpeed(float value);
|
||||
void getSwimSpeed();
|
||||
void setSwimSpeed(float value);
|
||||
void getNpcIgnore();
|
||||
void setNpcIgnore(DWORD value);
|
||||
void getFrameFlags();
|
||||
void setFrameFlags(DWORD value);
|
||||
void getWaterProof();
|
||||
void setWaterProof(DWORD value);
|
||||
void getRagdoll();
|
||||
void setRagdoll(BYTE value);
|
||||
void getSeatbelt();
|
||||
void setSeatbelt(BYTE value);
|
||||
void getStamina();
|
||||
void setStamina(float value);
|
||||
|
||||
DWORD_PTR m_dwpPlayerInfo;
|
||||
};
|
||||
|
||||
class vehicle : public entity
|
||||
{
|
||||
public:
|
||||
curmax m_cmHpVehicle;
|
||||
float m_fBoost,
|
||||
m_fRocketRechargeSpeed,
|
||||
m_fGravity;
|
||||
BYTE m_btBulletproofTires,
|
||||
m_btEngineManagementSystem,
|
||||
m_btBrakes,
|
||||
m_btTransmission,
|
||||
m_btSuspension,
|
||||
m_btArmor,
|
||||
m_btTurboTuning,
|
||||
m_btNeonLightRed,
|
||||
m_btNeonLightGreen,
|
||||
m_btNeonLightBlue,
|
||||
m_btNeonLightLeft,
|
||||
m_btNeonLightRight,
|
||||
m_btNeonLightFront,
|
||||
m_btNeonLightBack,
|
||||
m_btTyreSmoke,
|
||||
m_btTyreSmokeRed,
|
||||
m_btTyreSmokeGreen,
|
||||
m_btTyreSmokeBlue,
|
||||
m_btLimoWindows,
|
||||
m_btVehicleMissles,
|
||||
m_btAircraftBombs,
|
||||
m_btAircraftCountermeasures,
|
||||
m_btOppressorMK2Misseles,
|
||||
m_btTampaMissles;
|
||||
|
||||
|
||||
struct vehicleHandling
|
||||
{
|
||||
DWORD_PTR m_dwpHandling = 0;
|
||||
float m_fMass,
|
||||
m_fBuoyancy,
|
||||
m_fAcceleration,
|
||||
m_fUpShift,
|
||||
m_fDownShift,
|
||||
m_fBrakeForce,
|
||||
m_fHandbrakeForce,
|
||||
m_fTractionCurveMin,
|
||||
m_fSuspensionForce,
|
||||
m_fSuspensionHeigh,
|
||||
m_fColisionDamageMult,
|
||||
m_fWeaponDamageMult,
|
||||
m_fDeformationDamageMult,
|
||||
m_fEngineDamageMult;
|
||||
};
|
||||
|
||||
vehicleHandling m_handlingRestore,
|
||||
m_handlingCur;
|
||||
|
||||
vehicle();
|
||||
~vehicle();
|
||||
void getHealth();
|
||||
void setHealth(float hp);
|
||||
bool loadHandling();
|
||||
void restoreHandling();
|
||||
void getMass();
|
||||
void setMass(float value);
|
||||
void getBuoyancy();
|
||||
void setBuoyancy(float value);
|
||||
void getAcceleration();
|
||||
void setAcceleration(float value);
|
||||
void getBrakeForce();
|
||||
void setBrakeForce(float value);
|
||||
void getHandbrakeForce();
|
||||
void setHandbrakeForce(float value);
|
||||
void getTractionCurveMin();
|
||||
void setTractionCurveMin(float value);
|
||||
void getGravity();
|
||||
void setGravity(float value);
|
||||
void getBoost();
|
||||
void setBoost(float value);
|
||||
void getRocketRechargeSpeed();
|
||||
void setRocketRechargeSpeed(float value);
|
||||
void getBulletproofTires();
|
||||
void setBulletproofTires(BYTE value);
|
||||
void getEngineManagementSystem();
|
||||
void setEngineManagementSystem(BYTE value);
|
||||
void getBrakes();
|
||||
void setBrakes(BYTE value);
|
||||
void getTransmission();
|
||||
void setTransmission(BYTE value);
|
||||
void getSuspension();
|
||||
void setSuspension(BYTE value);
|
||||
void getArmor();
|
||||
void setArmor(BYTE value);
|
||||
void getTurboTuning();
|
||||
void setTurboTuning(BYTE value);
|
||||
void getNeonLightRed();
|
||||
void setNeonLightRed(BYTE value);
|
||||
void getNeonLightGreen();
|
||||
void setNeonLightGreen(BYTE value);
|
||||
void getNeonLightBlue();
|
||||
void setNeonLightBlue(BYTE value);
|
||||
void getNeonLightLeft();
|
||||
void setNeonLightLeft(BYTE value);
|
||||
void getNeonLightRight();
|
||||
void setNeonLightRight(BYTE value);
|
||||
void getNeonLightFront();
|
||||
void setNeonLightFront(BYTE value);
|
||||
void getNeonLightBack();
|
||||
void setNeonLightBack(BYTE value);
|
||||
void getTyreSmoke();
|
||||
void setTyreSmoke(BYTE value);
|
||||
void getTyreSmokeRed();
|
||||
void setTyreSmokeRed(BYTE value);
|
||||
void getTyreSmokeGreen();
|
||||
void setTyreSmokeGreen(BYTE value);
|
||||
void getTyreSmokeBlue();
|
||||
void setTyreSmokeBlue(BYTE value);
|
||||
void getLimoWindows();
|
||||
void setLimoWindows(BYTE value);
|
||||
void getVehicleMissles();
|
||||
void setVehicleMissles(BYTE value);
|
||||
void getAircraftBombs();
|
||||
void setAircraftBombs(BYTE value);
|
||||
void getAircraftCountermeasures();
|
||||
void setAircraftCountermeasures(BYTE value);
|
||||
void getOppressorMK2Misseles();
|
||||
void setOppressorMK2Misseles(BYTE value);
|
||||
void getTampaMissles();
|
||||
void setTampaMissles(BYTE value);
|
||||
void getDeformationDamageMult();
|
||||
void setDeformationDamageMult(float value);
|
||||
void getUpShift();
|
||||
void setUpShift(float value);
|
||||
void getSuspensionForce();
|
||||
void setSuspensionForce(float value);
|
||||
void getSuspensionHeigh();
|
||||
void setSuspensionHeigh(float value);
|
||||
void getColisionDamageMult();
|
||||
void setColisionDamageMult(float value);
|
||||
void getWeaponDamageMult();
|
||||
void setWeaponDamageMult(float value);
|
||||
void getEngineDamageMult();
|
||||
void setEngineDamageMult(float value);
|
||||
void getDownShift();
|
||||
void setDownShift(float value);
|
||||
};
|
||||
|
||||
enum ImpactTypeEnum
|
||||
{
|
||||
Fists = 2,
|
||||
Bullets = 3,
|
||||
Explosives = 5,
|
||||
};
|
||||
|
||||
enum ImpactExplosionEnum
|
||||
{
|
||||
DefaultBullets = 4294967295,
|
||||
GrenadeExplosion = 1,
|
||||
StickyBombExplosion = 2,
|
||||
MoltovCoctailExplosion = 3,
|
||||
SuperLauncher = 59,
|
||||
LightningExplosion = 58,
|
||||
BigExplosion = 4,
|
||||
MediumExplosion = 40,
|
||||
TinyExplosion = 25,
|
||||
BigFireyExplosion = 5,
|
||||
SmallWaterSpray = 11,
|
||||
SmallFireSpray = 12,
|
||||
BigWaterSpray = 13,
|
||||
BigFireSpray = 14,
|
||||
MK2ExplosiveBullets = 18,
|
||||
SmokeGrenade = 19,
|
||||
TearGas = 20,
|
||||
TearGas2 = 21,
|
||||
RedFlareSmoke = 22,
|
||||
CoolGroundExplosion = 23,
|
||||
CRAZYSHOCKWAVEEXPLOSION = 26,
|
||||
HUGEFireyExplosion = 28,
|
||||
MassiveBlimpExplosion = 29,
|
||||
MassiveBlimpExplosion2 = 37,
|
||||
LargeExplosionFallingDebris = 31,
|
||||
FireBallExplosion = 32,
|
||||
FireworkExplosion = 38,
|
||||
SnowballHit = 39,
|
||||
TinyExplosions2 = 33,
|
||||
JustScreenShake = 41,
|
||||
SPOOFEXPLOSION = 99
|
||||
};
|
||||
|
||||
class weapon
|
||||
{
|
||||
public:
|
||||
DWORD m_dwCurAmmo,
|
||||
m_dwMaxAmmo,
|
||||
m_dwHash; //name hash
|
||||
struct weaponData
|
||||
{
|
||||
DWORD m_dwHash = 0,
|
||||
m_dwBulletBatch,
|
||||
m_dwImpactType,
|
||||
m_dwImpactExplosion;
|
||||
DWORD_PTR m_dwpWeapon = 0;
|
||||
float m_fSpread,
|
||||
m_fRecoil,
|
||||
m_fDamage,
|
||||
m_fReload,
|
||||
m_fReloadVeh,
|
||||
m_fRange,
|
||||
m_fSpinUp,
|
||||
m_fSpin,
|
||||
m_fMuzzleVelocity,
|
||||
m_fPenetration,
|
||||
m_fForceOnPed,
|
||||
m_fForceOnVehicle,
|
||||
m_fForceOnHeli;
|
||||
};
|
||||
|
||||
weaponData m_weapDataRestore,//the original values will be stored here.
|
||||
m_weapDataCur;
|
||||
|
||||
weapon();
|
||||
~weapon();
|
||||
bool loadWeapon();
|
||||
void restoreWeapon();
|
||||
void getReloadSpeed();
|
||||
void setReloadSpeed(float value);
|
||||
void getReloadVehicle();
|
||||
void setReloadVehicle(float value);
|
||||
void getBulletDamage();
|
||||
void setBulletDamage(float value);
|
||||
void getRecoil();
|
||||
void setRecoil(float value);
|
||||
void getSpread();
|
||||
void setSpread(float value);
|
||||
void getRange();
|
||||
void setRange(float value);
|
||||
void getSpinUp();
|
||||
void setSpinUp(float value);
|
||||
void getSpin();
|
||||
void setSpin(float value);
|
||||
void getForceOnPed();
|
||||
void setForceOnPed(float value);
|
||||
void getForceOnVehicle();
|
||||
void setForceOnVehicle(float value);
|
||||
void getForceOnHeli();
|
||||
void setForceOnHeli(float value);
|
||||
void getHash();
|
||||
bool findAmmoBase();
|
||||
void getCurAmmo();
|
||||
void setCurAmmo(DWORD ammo);
|
||||
void getMaxAmmo();
|
||||
void getBulletBatch();
|
||||
void setBulletBatch(DWORD value);
|
||||
void getImpactType();
|
||||
void setImpactType(DWORD value);
|
||||
void getImpactExplosion();
|
||||
void setImpactExplosion(DWORD value);
|
||||
void getMuzzleVelocity();
|
||||
void setMuzzleVelocity(float value);
|
||||
|
||||
DWORD_PTR m_dwpAmmoInfo,
|
||||
m_dwpCurAmmoBase;
|
||||
};
|
||||
|
||||
class tunable
|
||||
{
|
||||
public:
|
||||
float m_fRpMult,
|
||||
m_fApMult,
|
||||
m_fMinMissionPayout;
|
||||
DWORD m_dwOrbitalCannonCooldown,
|
||||
m_dwBunkerResearch,
|
||||
m_dwAntiIdleKick1,
|
||||
m_dwAntiIdleKick2,
|
||||
m_dwAntiIdleKick3,
|
||||
m_dwAntiIdleKick4;
|
||||
tunable();
|
||||
~tunable();
|
||||
void restoreTunable();
|
||||
void getRpMult();
|
||||
void setRpMult(float value);
|
||||
void getApMult();
|
||||
void setApMult(float value);
|
||||
void getMinMissionPayout();
|
||||
void setMinMissionPayout(float value);
|
||||
void getOrbitalCannonCooldown();
|
||||
void setOrbitalCannonCooldown(DWORD value);
|
||||
void getBunkerResearch();
|
||||
void setBunkerResearch(DWORD value);
|
||||
void getAntiIdleKick1();
|
||||
void setAntiIdleKick1(DWORD value);
|
||||
void getAntiIdleKick2();
|
||||
void setAntiIdleKick2(DWORD value);
|
||||
void getAntiIdleKick3();
|
||||
void setAntiIdleKick3(DWORD value);
|
||||
void getAntiIdleKick4();
|
||||
void setAntiIdleKick4(DWORD value);
|
||||
|
||||
DWORD_PTR m_dwpTunableBase;
|
||||
};
|
||||
|
||||
|
||||
class global
|
||||
{
|
||||
public:
|
||||
DWORD_PTR m_dwpStatHash,
|
||||
m_dwpStatValue,
|
||||
m_dwpStatCall,
|
||||
m_dwpMoneyObject,
|
||||
m_dwpMoneyVal,
|
||||
m_dwpMoneyPosX,
|
||||
m_dwpMoneyPosY,
|
||||
m_dwpMoneyPosZ,
|
||||
m_dwpMoneyCall,
|
||||
m_dwpSessionTransition,
|
||||
m_dwpSessionID,
|
||||
m_dwpIntoPersonalVehicle,
|
||||
m_dwpVehicleSpawn1,
|
||||
m_dwpVehicleSpawn2,
|
||||
m_dwpVehicleHash,
|
||||
m_dwpVehicleKickPrevent1,
|
||||
m_dwpVehicleKickPrevent2,
|
||||
m_dwpVehicleX,
|
||||
m_dwpVehicleY,
|
||||
m_dwpVehicleZ,
|
||||
m_dwpPrimaryColor,
|
||||
m_dwpSecondaryColor;
|
||||
|
||||
unsigned int m_dwStatHash,
|
||||
m_dwVehicleHash,
|
||||
m_dwStatHashSet;
|
||||
int m_dwStatValue,
|
||||
m_dwStatCall,
|
||||
m_dwMoneyVal,
|
||||
m_dwSessionTransition,
|
||||
m_dwSessionID,
|
||||
m_dwIntoPersonalVehicle,
|
||||
m_dwVehicleSpawn1,
|
||||
m_dwVehicleSpawn2,
|
||||
m_dwVehicleKickPrevent1,
|
||||
m_dwVehicleKickPrevent2;
|
||||
float m_fMoneyPosX,
|
||||
m_fMoneyPosY,
|
||||
m_fMoneyPosZ,
|
||||
m_fVehicleX,
|
||||
m_fVehicleY,
|
||||
m_fVehicleZ;
|
||||
BYTE m_btMoneyObject,
|
||||
m_btMoneyCall,
|
||||
m_btPrimaryColor,
|
||||
m_btSecondaryColor;
|
||||
|
||||
global();
|
||||
~global();
|
||||
bool initStatPtr(HMODULE base);
|
||||
bool initMoneyPtr(HMODULE base);
|
||||
bool initSessionPtr(HMODULE base);
|
||||
bool initIntoPVPtr(HMODULE base);
|
||||
bool initVehiclePtr(HMODULE base);
|
||||
bool findMoneyPtr(HMODULE base);
|
||||
void getStatHash();
|
||||
void setStatHash(unsigned int value);
|
||||
void getStatValue();
|
||||
void setStatValue(int value);
|
||||
void getStatCall();
|
||||
void setStatCall(int value);
|
||||
void getMoneyObject();
|
||||
void setMoneyObject(BYTE value);
|
||||
void getMoneyVal();
|
||||
void setMoneyVal(int value);
|
||||
void getMoneyPosX();
|
||||
void setMoneyPosX(float value);
|
||||
void getMoneyPosY();
|
||||
void setMoneyPosY(float value);
|
||||
void getMoneyPosZ();
|
||||
void setMoneyPosZ(float value);
|
||||
void getMoneyCall();
|
||||
void setMoneyCall(BYTE value);
|
||||
void getSessionTransition();
|
||||
void setSessionTransition(int value);
|
||||
void getSessionID();
|
||||
void setSessionID(int value);
|
||||
void getIntoPersonalVehicle();
|
||||
void setIntoPersonalVehicle(int value);
|
||||
void getVehicleSpawn1();
|
||||
void setVehicleSpawn1(int value);
|
||||
void getVehicleSpawn2();
|
||||
void setVehicleSpawn2(int value);
|
||||
void getVehicleHash();
|
||||
void setVehicleHash(unsigned int value);
|
||||
void getVehicleKickPrevent1();
|
||||
void setVehicleKickPrevent1(int value);
|
||||
void getVehicleKickPrevent2();
|
||||
void setVehicleKickPrevent2(int value);
|
||||
void getVehiclePosX();
|
||||
void setVehiclePosX(float value);
|
||||
void getVehiclePosY();
|
||||
void setVehiclePosY(float value);
|
||||
void getVehiclePosZ();
|
||||
void setVehiclePosZ(float value);
|
||||
void getPrimaryColor();
|
||||
void setPrimaryColor(BYTE value);
|
||||
void getSecondaryColor();
|
||||
void setSecondaryColor(BYTE value);
|
||||
|
||||
DWORD_PTR getGlobal(int value, HMODULE base);
|
||||
|
||||
DWORD_PTR m_dwpGlobalBase;
|
||||
};
|
||||
|
||||
|
||||
class replayInterface
|
||||
{
|
||||
public:
|
||||
entity *g_pPedList[256];
|
||||
DWORD dw_curPedNum;
|
||||
|
||||
replayInterface();
|
||||
~replayInterface();
|
||||
void initPeds();
|
||||
|
||||
|
||||
DWORD_PTR m_dwpReplayInterfaceBase,
|
||||
m_dwpPedInterface,
|
||||
m_dwpPedList;
|
||||
};
|
||||
#endif
|
2109
subVersion/hack.cpp
Normal file
2109
subVersion/hack.cpp
Normal file
File diff suppressed because it is too large
Load Diff
191
subVersion/hack.h
Normal file
191
subVersion/hack.h
Normal file
@ -0,0 +1,191 @@
|
||||
/*
|
||||
Copyright 2016-2017 sub1to
|
||||
|
||||
This file is part of subVersion GTA:O SC External Hack.
|
||||
|
||||
subVersion GTA:O SC External Hack is free software: you can redistribute
|
||||
it and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
subVersion GTA:O SC External Hack is distributed in the hope that it
|
||||
will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||
the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include<map>
|
||||
#ifndef HACK_H
|
||||
#define HACK_H
|
||||
|
||||
#define INITPTR_INVALID_WORLD 1 << 0
|
||||
#define INITPTR_INVALID_PLAYER 1 << 1
|
||||
#define INITPTR_INVALID_VEHICLE 1 << 2
|
||||
#define INITPTR_INVALID_WEAPON 1 << 3
|
||||
#define INITPTR_INVALID_TUNABLE 1 << 4
|
||||
#define INITPTR_INVALID_GLOBAL 1 << 5
|
||||
#define INITPTR_INVALID_PLAYER_LIST 1 << 6
|
||||
#define INITPTR_INVALID_REPLAY_INTERFACE 1 << 7
|
||||
class trainer
|
||||
{
|
||||
public:
|
||||
clock_t m_keyTmr;
|
||||
|
||||
trainer();
|
||||
~trainer();
|
||||
bool checkKeyState(int key);
|
||||
virtual void checkKeys();
|
||||
};
|
||||
|
||||
class hack : public trainer
|
||||
{
|
||||
public:
|
||||
v2 m_v2Waypoint;
|
||||
v3 m_v3Objective;
|
||||
player m_player;
|
||||
vehicle m_vehicle;
|
||||
weapon m_weapon;
|
||||
tunable m_tunable;
|
||||
global m_global;
|
||||
replayInterface m_replayInterface;
|
||||
std::string m_mpId;
|
||||
std::deque<std::pair<unsigned int,int>> m_dStat;
|
||||
ImpactExplosionEnum m_explosion;
|
||||
|
||||
HMODULE m_hModule;
|
||||
|
||||
hack();
|
||||
~hack();
|
||||
void checkKeys();
|
||||
BYTE initPointers();
|
||||
|
||||
void teleport(v3 v);
|
||||
bool teleportWaypoint();
|
||||
bool teleportObjective();
|
||||
void restoreHealth();
|
||||
void restoreVehicleHealth();
|
||||
void restoreStamina();
|
||||
void notWanted();
|
||||
void killNpc();
|
||||
void fillAmmo();
|
||||
void consumeStatQueue();
|
||||
void killAllNpc(float* arg);
|
||||
void renderPlayerList(int parent, int playerList[32]);
|
||||
void setImpactExplosion(float* arg);
|
||||
void fillAllAmmo(float* arg);
|
||||
void healVehicle(float* arg);
|
||||
void healPlayer(float* arg);
|
||||
void suicide(float* arg);
|
||||
void fillAmmo(float* arg);
|
||||
void fillSkillLevels(float* arg);
|
||||
void fillAllSnacks(float* arg);
|
||||
void casinoStat(float* arg);
|
||||
void casinoStatBitSet1(float* arg);
|
||||
void casinoStatBitSet2(float* arg);
|
||||
void unlockHeistCars(float* arg);
|
||||
void unlockLSC(float* arg);
|
||||
void unlockWeaponCamos(float* arg);
|
||||
//void unlockWeapon(float* arg);
|
||||
void unlockAllAwards(float* arg);
|
||||
void unlockClothes(float* arg);
|
||||
void intoPV(float* arg);
|
||||
void loadSession(float* arg);
|
||||
void forwardTeleport(float* arg);
|
||||
void spawnVehicle(float* arg);
|
||||
void selfDropMoney(feat* feature);
|
||||
void waterProof(feat* feature);
|
||||
void undeadOffradar(feat* feature);
|
||||
void superPunch(feat* feature);
|
||||
void noSpread(feat* feature);
|
||||
void noRecoil(feat* feature);
|
||||
void quickReload(feat* feature);
|
||||
void bulletDamage(feat* feature);
|
||||
void weaponRange(feat* feature);
|
||||
void weaponSpin(feat* feature);
|
||||
void weaponForceOnPed(feat* feature);
|
||||
void weaponForceOnVehicle(feat* feature);
|
||||
void weaponForceOnHeli(feat* feature);
|
||||
void weaponBulletEdit(feat* feature);
|
||||
void runSpeed(feat* feature);
|
||||
void swimSpeed(feat* feature);
|
||||
void npcIgnore(feat* feature);
|
||||
void godMode(feat* feature);
|
||||
void frameFlags(feat* featSuperJump, feat* featExplosiveMelee, feat* featFireAmmo, feat* featExplosiveAmmo);
|
||||
void vehicleGod(feat* feature);
|
||||
void infAmmo(feat* feature);
|
||||
void noReload(feat* feature);
|
||||
void seatbelt(feat* feature);
|
||||
void noRagdoll(feat* feature);
|
||||
void vehicleAccel(feat* feature);
|
||||
void vehicleBrake(feat* feature);
|
||||
void neverWanted(feat* feature);
|
||||
void vehicleTraction(feat* feature);
|
||||
void vehicleGravity(feat* feature);
|
||||
void vehicleBulletproofTires(feat* feature);
|
||||
void wanted(feat* feature);
|
||||
void bulletBatch(feat* feature);
|
||||
void muzzleVelocity(feat* feature);
|
||||
void vehicleDeformation(feat* feature);
|
||||
void vehicleUpShift(feat* feature);
|
||||
void vehicleSuspensionForce(feat* feature);
|
||||
void vehicleDownShift(feat* feature);
|
||||
void vehicleMass(feat* feature);
|
||||
void vehicleBuoyancy(feat* feature);
|
||||
void vehicleHandbrakeForce(feat* feature);
|
||||
void boost(feat* feature);
|
||||
void vehicleRocketRechargeSpeed(feat* feature);
|
||||
void vehicleSuspensionHeigh(feat* feature);
|
||||
void vehicleColisionDamageMult(feat* feature);
|
||||
void vehicleWeaponDamageMult(feat* feature);
|
||||
void vehicleEngineDamageMult(feat* feature);
|
||||
void tunableRpMult(feat* feature);
|
||||
void tunableApMult(feat* feature);
|
||||
void tunableMissionPayout(feat* feature);
|
||||
void tunableOrbitalCannonCooldown(feat* feature);
|
||||
void tunableBunkerResearch(feat* feature);
|
||||
void tunableAntiIdleKick(feat* feature);
|
||||
void about(float* arg);
|
||||
void cabut(float* arg);
|
||||
|
||||
private:
|
||||
DWORD_PTR m_dwpWorldBase,
|
||||
m_dwpPlayerBase,
|
||||
m_dwpVehicleBase,
|
||||
m_dwpAttackerBase,
|
||||
m_dwpWeaponManager,
|
||||
m_dwpWeaponCur,
|
||||
m_dwpAmmoInfo,
|
||||
m_dwpWeaponBase,
|
||||
m_dwpTunableBase,
|
||||
m_dwpGlobalBase,
|
||||
m_dwpPlayerListBase,
|
||||
m_dwpReplayInterfaceBase;
|
||||
bool m_bInit,m_bSelfDropInit;
|
||||
|
||||
void getWaypoint();
|
||||
void getObjective();
|
||||
void dStatPushBack(unsigned int hash, int value);
|
||||
|
||||
unsigned int string_to_hash(std::string input,std::string pre = "MP0_")
|
||||
{
|
||||
unsigned int num1 = 0U;
|
||||
input = pre + input;
|
||||
for (char c : input)
|
||||
{
|
||||
unsigned int num2 = num1 + (unsigned int)tolower(c);
|
||||
unsigned int num3 = num2 + (num2 << 10);
|
||||
num1 = num3 ^ num3 >> 6;
|
||||
}
|
||||
unsigned int num4 = num1 + (num1 << 3);
|
||||
unsigned int num5 = num4 ^ num4 >> 11;
|
||||
return num5 + (num5 << 15);
|
||||
}
|
||||
};
|
||||
|
||||
extern hack* g_pHack;
|
||||
|
||||
#endif
|
587
subVersion/main.cpp
Normal file
587
subVersion/main.cpp
Normal 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);
|
||||
}
|
||||
|
BIN
subVersion/mask.ico
Normal file
BIN
subVersion/mask.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 200 KiB |
124
subVersion/memManager.cpp
Normal file
124
subVersion/memManager.cpp
Normal file
@ -0,0 +1,124 @@
|
||||
/*
|
||||
Copyright 2016-2017 sub1to
|
||||
|
||||
This file is part of subVersion GTA:O SC External Hack.
|
||||
|
||||
subVersion GTA:O SC External Hack is free software: you can redistribute
|
||||
it and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
subVersion GTA:O SC External Hack is distributed in the hope that it
|
||||
will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||
the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
memManager::memManager() {}
|
||||
|
||||
memManager::memManager(LPCSTR name)
|
||||
{
|
||||
m_szWindowName = name;
|
||||
}
|
||||
|
||||
memManager::~memManager()
|
||||
{
|
||||
CloseHandle(m_hProc);
|
||||
}
|
||||
|
||||
bool memManager::attach()
|
||||
{
|
||||
if(m_hProc != nullptr)
|
||||
return 1;
|
||||
|
||||
if(!this->findWindow())
|
||||
return 0;
|
||||
|
||||
DWORD dwProcId;
|
||||
GetWindowThreadProcessId(m_hWndTarget, &dwProcId);
|
||||
if(!dwProcId)
|
||||
return 0;
|
||||
|
||||
m_hProc = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_QUERY_INFORMATION, 0, dwProcId);
|
||||
if(m_hProc == nullptr)
|
||||
return 0;
|
||||
initPtr();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
HMODULE memManager::getModuleAddress(char* moduleName)
|
||||
{
|
||||
HMODULE hModBuf[0xff];
|
||||
DWORD bN;
|
||||
UINT i;
|
||||
|
||||
if(EnumProcessModulesEx(m_hProc, hModBuf, sizeof(hModBuf), &bN, LIST_MODULES_64BIT))
|
||||
{
|
||||
for(i = 0; i < (bN / sizeof(HMODULE)); i++)
|
||||
{
|
||||
TCHAR szPath[MAX_PATH];
|
||||
if(GetModuleFileNameEx(m_hProc, hModBuf[i], szPath, sizeof(szPath) / sizeof(TCHAR)))
|
||||
{
|
||||
std::string szName = szPath;
|
||||
if(szName.find(moduleName) != std::string::npos)
|
||||
return hModBuf[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool memManager::findWindow()
|
||||
{
|
||||
m_hWndTarget = FindWindow(nullptr, m_szWindowName);
|
||||
if(!m_hWndTarget)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
HWND memManager::getWindow()
|
||||
{
|
||||
return m_hWndTarget;
|
||||
}
|
||||
|
||||
void memManager::setWindowName(LPCSTR str)
|
||||
{
|
||||
m_szWindowName = str;
|
||||
}
|
||||
|
||||
void memManager::initPtr()
|
||||
{
|
||||
HMODULE hModule = memManager::getModuleAddress("steam_api64.dll");
|
||||
if (hModule != 0)
|
||||
{
|
||||
//Steam
|
||||
ADDRESS_WORLD = 0x24CD000;
|
||||
ADDRESS_BLIP = 0x1F524F0;
|
||||
ADDRESS_AMMO = 0x101BFBD;
|
||||
ADDRESS_MAGAZINE = 0x101BF78;
|
||||
ADDRESS_TUNABLE = 0x2D765E8;
|
||||
//ADDRESS_WEAPON = 0x02810670;
|
||||
ADDRESS_GLOBAL = 0x2D765E0;
|
||||
ADDRESS_PLAYER_LIST = 0x1D98AE8;
|
||||
ADDRESS_REPLAY_INTERFACE = 0x1EC7E40;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Epic
|
||||
ADDRESS_WORLD = 0x24C8858;
|
||||
ADDRESS_BLIP = 0x1F4F940;
|
||||
ADDRESS_AMMO = 0x101B6D9;
|
||||
ADDRESS_MAGAZINE = 0x101B694;
|
||||
ADDRESS_TUNABLE = 0x2D70DA8;
|
||||
//ADDRESS_WEAPON = 0x0280E650;
|
||||
ADDRESS_GLOBAL = 0x2D70DA0;
|
||||
ADDRESS_PLAYER_LIST = 0x1D949A0;
|
||||
ADDRESS_REPLAY_INTERFACE = 0x1EC3828;
|
||||
}
|
||||
}
|
67
subVersion/memManager.h
Normal file
67
subVersion/memManager.h
Normal file
@ -0,0 +1,67 @@
|
||||
/*
|
||||
Copyright 2016-2017 sub1to
|
||||
|
||||
This file is part of subVersion GTA:O SC External Hack.
|
||||
|
||||
subVersion GTA:O SC External Hack is free software: you can redistribute
|
||||
it and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
subVersion GTA:O SC External Hack is distributed in the hope that it
|
||||
will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||
the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef MEMMANAGER_H
|
||||
#define MEMMANAGER_H
|
||||
class memManager
|
||||
{
|
||||
public:
|
||||
memManager();
|
||||
memManager(LPCSTR name);
|
||||
~memManager();
|
||||
bool attach();
|
||||
HMODULE getModuleAddress(char* moduleName);
|
||||
bool findWindow();
|
||||
HWND getWindow();
|
||||
void setWindowName(LPCSTR str);
|
||||
void initPtr();
|
||||
|
||||
template <typename rT>
|
||||
void readMem(DWORD_PTR address, rT* output, DWORD size = NULL, DWORD prot = NULL)
|
||||
{
|
||||
size = (size == NULL) ? sizeof(rT) : size;
|
||||
ReadProcessMemory(m_hProc, (LPVOID) address, output, size, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
template <typename wT>
|
||||
void writeMem(DWORD_PTR address, wT* value , DWORD size = NULL, DWORD prot = NULL)
|
||||
{
|
||||
size = (size == NULL) ? sizeof(wT) : size;
|
||||
WriteProcessMemory(m_hProc, (LPVOID) address, value, size, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
template <typename wT>
|
||||
void writeMem(DWORD_PTR address, wT value, DWORD size = NULL, DWORD prot = NULL)
|
||||
{
|
||||
size = (size == NULL) ? sizeof(wT) : size;
|
||||
WriteProcessMemory(m_hProc, (LPVOID)address, &value, size, NULL);
|
||||
return;
|
||||
}
|
||||
protected:
|
||||
LPCSTR m_szWindowName;
|
||||
HWND m_hWndTarget;
|
||||
HANDLE m_hProc = nullptr;
|
||||
};
|
||||
|
||||
extern memManager* g_pMemMan;
|
||||
|
||||
#endif
|
BIN
subVersion/resource.h
Normal file
BIN
subVersion/resource.h
Normal file
Binary file not shown.
649
subVersion/settings.cpp
Normal file
649
subVersion/settings.cpp
Normal 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
subVersion/settings.h
Normal file
255
subVersion/settings.h
Normal file
@ -0,0 +1,255 @@
|
||||
/*
|
||||
Copyright 2016-2017 sub1to
|
||||
|
||||
This file is part of subVersion GTA:O SC External Hack.
|
||||
|
||||
subVersion GTA:O SC External Hack is free software: you can redistribute
|
||||
it and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
subVersion GTA:O SC External Hack is distributed in the hope that it
|
||||
will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||
the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#ifndef SETTINGS_H
|
||||
#define SETTINGS_H
|
||||
|
||||
#define MAX_SAVEDPOS 0x06 //max saved positions (to teleport to)
|
||||
#define MAX_PROPERTIES 0x60 //max iniparser properties
|
||||
#define MAX_KEYS 0x10 //max indexed keys (keybinds)
|
||||
#define MAX_MENU_TABS 0x08 //max amount of overlay menu tabs
|
||||
#define MAX_MENU_FEATURES 0xFFF //max amount of features
|
||||
#define MAX_MENU_FEATURES_DISPLAYED 0x14 //max features displayed
|
||||
#define MENU_FEATURE_SCROLL_PADDING 0x02
|
||||
#define NAME_BUFFER_SIZE 0x20
|
||||
|
||||
#define FFB_CATEGORY 1 << 0
|
||||
#define FFB_PARENT 1 << 1
|
||||
|
||||
//Required keys, loaded in settings::settings
|
||||
#define keyExit 0x0
|
||||
#define keyMenu 0x1
|
||||
#define keyMenuUp 0x2
|
||||
#define keyMenuDown 0x3
|
||||
#define keyMenuLeft 0x4
|
||||
#define keyMenuRight 0x5
|
||||
#define keyMenuSelect 0x6
|
||||
#define keyMenuTabNext 0x7
|
||||
#define keyMenuTabPrev 0x8
|
||||
#define keyMenuSave 0x9
|
||||
#define keyHotTeleport 0xA
|
||||
#define keyHotWanted 0xB
|
||||
#define keyHotHealth 0xC
|
||||
#define keyHotAmmo 0xD
|
||||
#define keyMenuBack 0xE
|
||||
|
||||
class featCat
|
||||
{
|
||||
public:
|
||||
int m_iId,
|
||||
m_iActiveFeatureRet = 0,
|
||||
m_iDisplayOffsetRet = 0;
|
||||
std::wstring m_szName;
|
||||
};
|
||||
|
||||
enum featType { feat_btn, feat_toggle, feat_slider, feat_teleport, feat_parent };
|
||||
enum teleType { tp_saved, tp_waypoint, tp_static, tp_objective };
|
||||
|
||||
class feat
|
||||
{
|
||||
public:
|
||||
int m_iId,
|
||||
m_iCat,
|
||||
m_iParent;
|
||||
featType m_type;
|
||||
std::wstring m_szName;
|
||||
std::string m_szIniKey;
|
||||
bool m_bOn = false,
|
||||
m_bRestored = true;
|
||||
|
||||
feat();
|
||||
virtual ~feat();
|
||||
virtual void toggle();
|
||||
virtual void inc();
|
||||
virtual void dec();
|
||||
};
|
||||
|
||||
class featBtn : public feat
|
||||
{
|
||||
public:
|
||||
int m_iIndex;
|
||||
float m_fArg;
|
||||
|
||||
featBtn();
|
||||
~featBtn();
|
||||
void toggle();
|
||||
};
|
||||
|
||||
class featSlider : public feat
|
||||
{
|
||||
public:
|
||||
float m_fValue,
|
||||
m_fMin,
|
||||
m_fMax,
|
||||
m_fMod = .10f;
|
||||
|
||||
featSlider();
|
||||
~featSlider();
|
||||
void inc();
|
||||
void dec();
|
||||
};
|
||||
|
||||
class featTeleport : public feat
|
||||
{
|
||||
public:
|
||||
teleType m_tpType;
|
||||
v3 m_v3Pos;
|
||||
|
||||
featTeleport();
|
||||
~featTeleport();
|
||||
void toggle();
|
||||
};
|
||||
|
||||
class featParent : public feat
|
||||
{
|
||||
public:
|
||||
int m_iActiveFeatureRet = 0,
|
||||
m_iDisplayOffsetRet = 0;
|
||||
|
||||
featParent();
|
||||
~featParent();
|
||||
void toggle();
|
||||
};
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
std::string key,
|
||||
value;
|
||||
int section;
|
||||
} iniProperty;
|
||||
|
||||
class iniParser
|
||||
{
|
||||
public:
|
||||
std::string m_szFile;
|
||||
|
||||
iniParser();
|
||||
iniParser(std::string szFile);
|
||||
~iniParser();
|
||||
|
||||
void read();
|
||||
void write();
|
||||
|
||||
int findKey(std::string szKey, std::string szSection = "");
|
||||
int createKey(std::string szKey, std::string szSection = "");
|
||||
|
||||
|
||||
template <typename rT>
|
||||
rT getValue(std::string szKey, std::string szSection = "")
|
||||
{
|
||||
rT r{};
|
||||
int i = this->findKey(szKey, szSection);
|
||||
if(i == -1 || (szSection != "" && (m_key[i].section < 0 || m_section[m_key[i].section] != szSection)))
|
||||
return r;
|
||||
std::stringstream ss(m_key[i].value);
|
||||
ss >> r;
|
||||
return r;
|
||||
}
|
||||
|
||||
template <>
|
||||
std::string getValue(std::string szKey, std::string szSection)
|
||||
{
|
||||
std::string r{};
|
||||
int i = this->findKey(szKey, szSection);
|
||||
if(i == -1 || (szSection != "" && (m_key[i].section < 0 || m_section[m_key[i].section] != szSection)))
|
||||
return r;
|
||||
return m_key[i].value;
|
||||
}
|
||||
|
||||
template <typename wT>
|
||||
bool setValue(std::string szKey, wT value, std::string szSection = "")
|
||||
{
|
||||
int i = findKey(szKey, szSection);
|
||||
if(i == -1 || (szSection != "" && (m_key[i].section < 0 || m_section[m_key[i].section] != szSection)))
|
||||
i = createKey(szKey, szSection);
|
||||
m_key[i].value = std::to_string(value);
|
||||
return true;
|
||||
}
|
||||
protected:
|
||||
std::vector<std::string> m_section;
|
||||
std::vector<iniProperty> m_key;
|
||||
};
|
||||
|
||||
class settings
|
||||
{
|
||||
public:
|
||||
int m_iKeys[MAX_KEYS];
|
||||
iniParser m_iniParser;
|
||||
|
||||
settings();
|
||||
~settings();
|
||||
|
||||
void toggleMenu();
|
||||
bool isMenuActive();
|
||||
void menuUp(); //prev feature
|
||||
void menuDown(); //next feature
|
||||
void menuLeft(); //float value down
|
||||
void menuRight(); //float value up
|
||||
void menuSelect(); //toggle feature/teleport or w/e
|
||||
void menuBack();
|
||||
void menuTabLeft(); //prev tab
|
||||
void menuTabRight(); //next tab
|
||||
|
||||
int addFeatureCategory(std::wstring name);
|
||||
int getFeatureCategoryCount();
|
||||
featCat* getFeatureCategory(int id);
|
||||
int setActiveCat(int);
|
||||
int getActiveCat();
|
||||
bool fillFeatureCurBuffer(int i, BYTE flags);
|
||||
|
||||
int addFeature(int cat, int parent, std::wstring name, featType type);
|
||||
int addFeature(int cat, int parent, std::wstring name, featType type, std::string iniKey);
|
||||
int addFeature(int cat, int parent, std::wstring name, featType type, int index,float arg);
|
||||
int addFeature(int cat, int parent, std::wstring name, featType type, std::string iniKey, float min, float max);
|
||||
int addFeature(int cat, int parent, std::wstring name, featType type, std::string iniKey, float min, float max, float mod);
|
||||
int addFeature(int cat, int parent, std::wstring name, featType type, std::string iniKey, teleType tpType);
|
||||
int addFeature(int cat, int parent, std::wstring name, featType type, teleType tpType);
|
||||
int addFeature(int cat, int parent, std::wstring name, featType type, teleType tpType, float x, float y, float z);
|
||||
int updataFeature(int id, int cat, int parent, std::wstring name, featType type);
|
||||
int updataFeature(int id, int cat, int parent, std::wstring name, featType type, teleType tpType, float x, float y, float z);
|
||||
int getFeatureCurCount();
|
||||
feat* getFeatureCur(int i);
|
||||
int getFeatureCount();
|
||||
feat* getFeature(int id);
|
||||
int getActiveFeature();
|
||||
int getDisplayOffset();
|
||||
|
||||
bool getFeatureCurLock();
|
||||
bool lockFeatureCur();
|
||||
bool unlockFeatureCur();
|
||||
|
||||
protected:
|
||||
featCat* m_pFeatureCat[MAX_MENU_TABS];
|
||||
int m_nFeatureCat = 0;
|
||||
int m_iActiveCat = 0; //index for featureParent [should be the same as id]
|
||||
feat* m_pFeature[MAX_MENU_FEATURES];
|
||||
int m_nFeature = 0; //total amount of features
|
||||
int m_iActiveFeature = 0; //index for featureCur [DOES NOT HOLD ID!]
|
||||
feat* m_pFeatureCur[MAX_MENU_FEATURES]; //list of features from current category
|
||||
bool m_bFeatureCurLock = false;
|
||||
int m_nFeatureCur = 0; //amount of features in current tab
|
||||
bool m_bMenuActive = false;
|
||||
int m_iFeatureCurDisplayOffset = 0;
|
||||
};
|
||||
|
||||
extern settings* g_pSettings;
|
||||
|
||||
#endif
|
112
subVersion/settings.ini
Normal file
112
subVersion/settings.ini
Normal file
@ -0,0 +1,112 @@
|
||||
;
|
||||
; Keys
|
||||
; Full list of valid keys in KEYS.txt
|
||||
;
|
||||
[Keys]
|
||||
Exit=F9
|
||||
Menu=NUM-
|
||||
MenuUp=NUM8
|
||||
MenuDown=NUM2
|
||||
MenuLeft=NUM4
|
||||
MenuRight=NUM6
|
||||
MenuSelect=NUM5
|
||||
MenuBack=NUM0
|
||||
MenuTabNext=NUM9
|
||||
MenuTabPrev=NUM7
|
||||
MenuSave=L
|
||||
HotTeleport=F5
|
||||
HotWanted=F6
|
||||
HotHealth=F7
|
||||
HotAmmo=F8
|
||||
[Teleport]
|
||||
pos0_name=Saved Position 1
|
||||
pos0_x=0.00
|
||||
pos0_y=0.00
|
||||
pos1_name=Saved Position 2
|
||||
pos1_x=0.00
|
||||
pos1_y=0.00
|
||||
pos2_name=Saved Position 3
|
||||
pos2_x=0.00
|
||||
pos2_y=0.00
|
||||
pos3_name=Saved Position 4
|
||||
pos3_x=0.00
|
||||
pos3_y=0.00
|
||||
pos4_name=Saved Position 5
|
||||
pos4_x=0.00
|
||||
pos4_y=0.00
|
||||
pos5_name=Saved Position 6
|
||||
pos5_x=0.00
|
||||
pos5_y=0.00
|
||||
[FeatureValue]
|
||||
runSpd=1.000000
|
||||
swimSpd=1.000000
|
||||
quickReload=1.000000
|
||||
bulletDamage=1.000000
|
||||
weapRange=1.000000
|
||||
bulletBatch=1.000000
|
||||
muzzleVelo=1.000000
|
||||
vehAccel=1.000000
|
||||
vehUpShift=1.000000
|
||||
vehBrakeForce=1.000000
|
||||
vehTraction=1.000000
|
||||
batchSpread=0.000000
|
||||
wanted=0.000000
|
||||
vehDeform=0.000000
|
||||
vehGravity=0.000000
|
||||
vehSuspensionForce=0.000000
|
||||
vehDownShift=1.000000
|
||||
vehRrchargeSpeed=0.500000
|
||||
vehBuoyancy=1.000000
|
||||
RP=1.000000
|
||||
AP=1.000000
|
||||
superPunch=0.000000
|
||||
forceOnPed=1.000000
|
||||
forceOnVeh=1.000000
|
||||
forceOnHeli=1.000000
|
||||
vehSuspensionHeigh=0.000000
|
||||
[FeatureToggle]
|
||||
trueGodMode=0
|
||||
godMode=0
|
||||
wanted=0
|
||||
neverWanted=0
|
||||
antiNpc=0
|
||||
runSpd=0
|
||||
swimSpd=0
|
||||
superJump=0
|
||||
explMelee=0
|
||||
noRagdoll=0
|
||||
infStam=0
|
||||
noSpread=0
|
||||
noRecoil=0
|
||||
noReload=0
|
||||
quickReload=0
|
||||
bulletDamage=0
|
||||
infAmmo=0
|
||||
weapRange=0
|
||||
weapSpin=0
|
||||
explAmmo=0
|
||||
fireAmmo=0
|
||||
bulletBatch=0
|
||||
batchSpread=0
|
||||
muzzleVelo=0
|
||||
vehTrueGodMode=0
|
||||
vehGodMode=0
|
||||
vehBulletproofTires=0
|
||||
seatbelt=0
|
||||
vehDeform=0
|
||||
vehAccel=0
|
||||
vehUpShift=0
|
||||
vehBrakeForce=0
|
||||
vehTraction=0
|
||||
vehGravity=0
|
||||
vehSuspensionForce=0
|
||||
vehDownShift=0
|
||||
superPunch=0
|
||||
npcIgnore=0
|
||||
bulletEdit=1
|
||||
undeadOffradar=0
|
||||
vehSuspensionHeigh=0
|
||||
RP=0
|
||||
vehRrchargeSpeed=0
|
||||
OrbitalCannon=0
|
||||
AntiIdleKick=1
|
118
subVersion/stdafx.cpp
Normal file
118
subVersion/stdafx.cpp
Normal file
@ -0,0 +1,118 @@
|
||||
/*
|
||||
Copyright 2016-2017 sub1to
|
||||
|
||||
This file is part of subVersion GTA:O SC External Hack.
|
||||
|
||||
subVersion GTA:O SC External Hack is free software: you can redistribute
|
||||
it and/or modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
subVersion GTA:O SC External Hack is distributed in the hope that it
|
||||
will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||
the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with subVersion GTA:O SC External Hack. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
DWORD strToVk(std::string str)
|
||||
{
|
||||
for(auto& c : str)
|
||||
c = toupper(c);
|
||||
if(str == "BACKSPACE") return 0x08;
|
||||
if(str == "TAB") return 0x09;
|
||||
if(str == "RETURN") return 0x0D;
|
||||
if(str == "SHIFT") return 0x10;
|
||||
if(str == "CONTROL") return 0x11;
|
||||
if(str == "ALT") return 0x12;
|
||||
if(str == "PAUSE") return 0x13;
|
||||
if(str == "CAPSLOCK") return 0x14;
|
||||
if(str == "ESCAPE") return 0x1B;
|
||||
if(str == "SPACE") return 0x20;
|
||||
if(str == "PAGEUP") return 0x21;
|
||||
if(str == "PAGEDOWN") return 0x22;
|
||||
if(str == "END") return 0x23;
|
||||
if(str == "HOME") return 0x24;
|
||||
if(str == "LEFT") return 0x25;
|
||||
if(str == "UP") return 0x26;
|
||||
if(str == "RIGHT") return 0x27;
|
||||
if(str == "DOWN") return 0x28;
|
||||
if(str == "INSERT") return 0x2D;
|
||||
if(str == "DELETE") return 0x2E;
|
||||
if(str == "0") return 0x30;
|
||||
if(str == "1") return 0x31;
|
||||
if(str == "2") return 0x32;
|
||||
if(str == "3") return 0x33;
|
||||
if(str == "4") return 0x34;
|
||||
if(str == "5") return 0x35;
|
||||
if(str == "6") return 0x36;
|
||||
if(str == "7") return 0x37;
|
||||
if(str == "8") return 0x38;
|
||||
if(str == "9") return 0x39;
|
||||
if(str == "A") return 0x41;
|
||||
if(str == "B") return 0x42;
|
||||
if(str == "C") return 0x43;
|
||||
if(str == "D") return 0x44;
|
||||
if(str == "E") return 0x45;
|
||||
if(str == "F") return 0x46;
|
||||
if(str == "G") return 0x47;
|
||||
if(str == "H") return 0x48;
|
||||
if(str == "I") return 0x49;
|
||||
if(str == "J") return 0x4A;
|
||||
if(str == "K") return 0x4B;
|
||||
if(str == "L") return 0x4C;
|
||||
if(str == "M") return 0x4D;
|
||||
if(str == "N") return 0x4E;
|
||||
if(str == "O") return 0x4F;
|
||||
if(str == "P") return 0x50;
|
||||
if(str == "Q") return 0x51;
|
||||
if(str == "R") return 0x52;
|
||||
if(str == "S") return 0x53;
|
||||
if(str == "T") return 0x54;
|
||||
if(str == "U") return 0x55;
|
||||
if(str == "V") return 0x56;
|
||||
if(str == "W") return 0x57;
|
||||
if(str == "X") return 0x58;
|
||||
if(str == "Y") return 0x59;
|
||||
if(str == "Z") return 0x5A;
|
||||
if(str == "NUM0") return 0x60;
|
||||
if(str == "NUM1") return 0x61;
|
||||
if(str == "NUM2") return 0x62;
|
||||
if(str == "NUM3") return 0x63;
|
||||
if(str == "NUM4") return 0x64;
|
||||
if(str == "NUM5") return 0x65;
|
||||
if(str == "NUM6") return 0x66;
|
||||
if(str == "NUM7") return 0x67;
|
||||
if(str == "NUM8") return 0x68;
|
||||
if(str == "NUM9") return 0x69;
|
||||
if(str == "NUM*") return 0x6A;
|
||||
if(str == "NUM+") return 0x6B;
|
||||
if(str == "NUM-") return 0x6D;
|
||||
if(str == "NUMDEL") return 0x6E;
|
||||
if(str == "NUM/") return 0x6F;
|
||||
if(str == "F1") return 0x70;
|
||||
if(str == "F2") return 0x71;
|
||||
if(str == "F3") return 0x72;
|
||||
if(str == "F4") return 0x73;
|
||||
if(str == "F5") return 0x74;
|
||||
if(str == "F6") return 0x75;
|
||||
if(str == "F7") return 0x76;
|
||||
if(str == "F8") return 0x77;
|
||||
if(str == "F9") return 0x78;
|
||||
if(str == "F10") return 0x79;
|
||||
if(str == "F11") return 0x7A;
|
||||
if(str == "F12") return 0x7B;
|
||||
if(str == "NUMLOCK") return 0x90;
|
||||
if(str == "SCROLLLOCK") return 0x91;
|
||||
if(str == "LSHIFT") return 0xA0;
|
||||
if(str == "RSHIFT") return 0xA1;
|
||||
if(str == "LCONTROL") return 0xA2;
|
||||
if(str == "RCONTROL") return 0xA3;
|
||||
if(str == "LALT") return 0xA4;
|
||||
if(str == "RALT") return 0xA5;
|
||||
return 0;
|
||||
}
|
290
subVersion/stdafx.h
Normal file
290
subVersion/stdafx.h
Normal 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
subVersion/subVersion.vcxproj
Normal file
174
subVersion/subVersion.vcxproj
Normal 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
subVersion/subVersion.vcxproj.filters
Normal file
85
subVersion/subVersion.vcxproj.filters
Normal file
@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="源文件">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="头文件">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="资源文件">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="D3D9Render.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="entity.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="hack.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="memManager.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="settings.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="D3D9Render.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="entity.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="hack.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="memManager.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="settings.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="stdafx.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="vector.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="CallbackProxy.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ColorDef.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="resource.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="VehiclePreview.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="mask.ico">
|
||||
<Filter>资源文件</Filter>
|
||||
</Image>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="GTA d3d9.rc">
|
||||
<Filter>资源文件</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
44
subVersion/vector.h
Normal file
44
subVersion/vector.h
Normal 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
|
Loading…
Reference in New Issue
Block a user