Compare commits

...

54 Commits
v1.3.3 ... main

Author SHA1 Message Date
fed
1061c08829
Merge pull request #92 from fedddddd/dependabot/submodules/deps/GSL-b39e7e4
Bump deps/GSL from `f1a494c` to `b39e7e4`
2024-03-07 21:40:03 +01:00
dependabot[bot]
c75cf561f7
Bump deps/GSL from f1a494c to b39e7e4
Bumps [deps/GSL](https://github.com/microsoft/GSL) from `f1a494c` to `b39e7e4`.
- [Release notes](https://github.com/microsoft/GSL/releases)
- [Commits](f1a494cfd2...b39e7e4b09)

---
updated-dependencies:
- dependency-name: deps/GSL
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-27 14:30:40 +00:00
fed
3ea6050498
Merge pull request #89 from fedddddd/dependabot/submodules/deps/zlib-5c42a23
Bump deps/zlib from `e342bb3` to `5c42a23`
2024-02-12 17:19:02 +01:00
dependabot[bot]
1551d7f1fd
Bump deps/zlib from e342bb3 to 5c42a23
Bumps [deps/zlib](https://github.com/madler/zlib) from `e342bb3` to `5c42a23`.
- [Release notes](https://github.com/madler/zlib/releases)
- [Commits](e342bb3dae...5c42a230b7)

---
updated-dependencies:
- dependency-name: deps/zlib
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-12 14:10:29 +00:00
fed
bf1d649bc1
Merge pull request #83 from fedddddd/dependabot/submodules/deps/GSL-f1a494c
Bump deps/GSL from `e64c97f` to `f1a494c`
2024-02-07 18:55:06 +01:00
fed
71727a5197
Merge pull request #82 from fedddddd/dependabot/submodules/deps/json-0457de2
Bump deps/json from `3780b41` to `0457de2`
2024-02-07 18:54:58 +01:00
fed
530cd10466
Merge pull request #85 from fedddddd/dependabot/submodules/deps/zlib-e342bb3
Bump deps/zlib from `643e17b` to `e342bb3`
2024-02-07 18:54:52 +01:00
fed
978e251df8
Fixes for update 2024-02-07 18:52:23 +01:00
dependabot[bot]
cb96052638
Bump deps/zlib from 643e17b to e342bb3
Bumps [deps/zlib](https://github.com/madler/zlib) from `643e17b` to `e342bb3`.
- [Release notes](https://github.com/madler/zlib/releases)
- [Commits](643e17b749...e342bb3dae)

---
updated-dependencies:
- dependency-name: deps/zlib
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-07 14:11:12 +00:00
dependabot[bot]
9b217b20e3
Bump deps/GSL from e64c97f to f1a494c
Bumps [deps/GSL](https://github.com/microsoft/GSL) from `e64c97f` to `f1a494c`.
- [Release notes](https://github.com/microsoft/GSL/releases)
- [Commits](e64c97fc2c...f1a494cfd2)

---
updated-dependencies:
- dependency-name: deps/GSL
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-30 15:02:59 +00:00
dependabot[bot]
136a723187
Bump deps/json from 3780b41 to 0457de2
Bumps [deps/json](https://github.com/nlohmann/json) from `3780b41` to `0457de2`.
- [Release notes](https://github.com/nlohmann/json/releases)
- [Commits](3780b41dd0...0457de21cf)

---
updated-dependencies:
- dependency-name: deps/json
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-30 15:02:56 +00:00
fed
ad27dcb098
Merge pull request #73 from fedddddd/dependabot/submodules/deps/zlib-643e17b
Bump deps/zlib from `79a0e44` to `643e17b`
2024-01-29 19:33:48 +01:00
fed
96acf0718e
Merge pull request #79 from fedddddd/dependabot/submodules/deps/json-3780b41
Bump deps/json from `da92c0e` to `3780b41`
2024-01-29 19:33:42 +01:00
fed
72f936e82a
Merge pull request #74 from fedddddd/dependabot/submodules/deps/minhook-f5485b8
Bump deps/minhook from `0f25a24` to `f5485b8`
2024-01-29 19:33:35 +01:00
fed
9a11ac82b3
Merge pull request #67 from fedddddd/dependabot/submodules/deps/GSL-e64c97f
Bump deps/GSL from `52212c2` to `e64c97f`
2024-01-29 19:33:30 +01:00
fed
8f36c271fd Fix for update 2024-01-29 19:33:03 +01:00
dependabot[bot]
e952b8a0f7
Bump deps/json from da92c0e to 3780b41
Bumps [deps/json](https://github.com/nlohmann/json) from `da92c0e` to `3780b41`.
- [Release notes](https://github.com/nlohmann/json/releases)
- [Commits](da92c0e3e7...3780b41dd0)

---
updated-dependencies:
- dependency-name: deps/json
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-07 14:58:09 +00:00
dependabot[bot]
f6d78fd815
Bump deps/minhook from 0f25a24 to f5485b8
Bumps [deps/minhook](https://github.com/TsudaKageyu/minhook) from `0f25a24` to `f5485b8`.
- [Release notes](https://github.com/TsudaKageyu/minhook/releases)
- [Commits](0f25a2449b...f5485b8454)

---
updated-dependencies:
- dependency-name: deps/minhook
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-27 15:05:13 +00:00
dependabot[bot]
cadcca22f9
Bump deps/zlib from 79a0e44 to 643e17b
Bumps [deps/zlib](https://github.com/madler/zlib) from `79a0e44` to `643e17b`.
- [Release notes](https://github.com/madler/zlib/releases)
- [Commits](79a0e447a0...643e17b749)

---
updated-dependencies:
- dependency-name: deps/zlib
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-15 14:14:08 +00:00
dependabot[bot]
c04a0a0d8c
Bump deps/GSL from 52212c2 to e64c97f
Bumps [deps/GSL](https://github.com/microsoft/GSL) from `52212c2` to `e64c97f`.
- [Release notes](https://github.com/microsoft/GSL/releases)
- [Commits](52212c2d76...e64c97fc2c)

---
updated-dependencies:
- dependency-name: deps/GSL
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-19 14:37:17 +00:00
fed
61706336ce
Merge pull request #50 from fedddddd/dependabot/submodules/deps/zlib-79a0e44
Bump deps/zlib from `04f42ce` to `79a0e44`
2023-09-13 17:44:09 +02:00
fed
eb08109392
Merge pull request #57 from fedddddd/dependabot/submodules/deps/json-da92c0e
Bump deps/json from `5d27543` to `da92c0e`
2023-09-13 17:43:49 +02:00
fed
b23cb2014b
Merge pull request #58 from fedddddd/dependabot/submodules/deps/GSL-52212c2
Bump deps/GSL from `4300304` to `52212c2`
2023-09-13 17:43:40 +02:00
fed
4d979bf659 Fix for update 2023-09-13 17:43:18 +02:00
dependabot[bot]
206d06dc7d
Bump deps/GSL from 4300304 to 52212c2
Bumps [deps/GSL](https://github.com/microsoft/GSL) from `4300304` to `52212c2`.
- [Release notes](https://github.com/microsoft/GSL/releases)
- [Commits](4300304ef2...52212c2d76)

---
updated-dependencies:
- dependency-name: deps/GSL
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 14:12:10 +00:00
dependabot[bot]
4d8af4bd45
Bump deps/json from 5d27543 to da92c0e
Bumps [deps/json](https://github.com/nlohmann/json) from `5d27543` to `da92c0e`.
- [Release notes](https://github.com/nlohmann/json/releases)
- [Commits](5d2754306d...da92c0e3e7)

---
updated-dependencies:
- dependency-name: deps/json
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-11 14:56:53 +00:00
dependabot[bot]
46ab288488
Bump deps/zlib from 04f42ce to 79a0e44
Bumps [deps/zlib](https://github.com/madler/zlib) from `04f42ce` to `79a0e44`.
- [Release notes](https://github.com/madler/zlib/releases)
- [Commits](04f42ceca4...79a0e447a0)

---
updated-dependencies:
- dependency-name: deps/zlib
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-21 14:47:09 +00:00
fed
dd8c1ff71e Update signatures.cpp 2023-08-10 01:55:12 +02:00
fed
ed1ac62153
Merge pull request #36 from fedddddd/dependabot/submodules/deps/json-5d27543
Bump deps/json from `c71ecde` to `5d27543`
2023-08-08 16:23:45 +02:00
fed
7f7fd016cf
Merge pull request #44 from fedddddd/dependabot/submodules/deps/GSL-4300304
Bump deps/GSL from `303d964` to `4300304`
2023-08-08 16:23:38 +02:00
fed
6c093888b5
Merge pull request #45 from fedddddd/dependabot/submodules/deps/gsc-tool-d7365e4
Bump deps/gsc-tool from `f026487` to `d7365e4`
2023-08-08 16:23:31 +02:00
dependabot[bot]
1440760aa5
Bump deps/gsc-tool from f026487 to d7365e4
Bumps [deps/gsc-tool](https://github.com/xensik/gsc-tool) from `f026487` to `d7365e4`.
- [Release notes](https://github.com/xensik/gsc-tool/releases)
- [Commits](f0264876df...d7365e471a)

---
updated-dependencies:
- dependency-name: deps/gsc-tool
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-28 14:35:53 +00:00
dependabot[bot]
105c11a8b2
Bump deps/GSL from 303d964 to 4300304
Bumps [deps/GSL](https://github.com/microsoft/GSL) from `303d964` to `4300304`.
- [Release notes](https://github.com/microsoft/GSL/releases)
- [Commits](303d964a24...4300304ef2)

---
updated-dependencies:
- dependency-name: deps/GSL
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-27 14:35:38 +00:00
dependabot[bot]
795f8ac162
Bump deps/json from c71ecde to 5d27543
Bumps [deps/json](https://github.com/nlohmann/json) from `c71ecde` to `5d27543`.
- [Release notes](https://github.com/nlohmann/json/releases)
- [Commits](c71ecde505...5d2754306d)

---
updated-dependencies:
- dependency-name: deps/json
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-14 15:06:14 +00:00
fed
6dd4d2651a
Merge pull request #34 from fedddddd/dependabot/submodules/deps/json-c71ecde
Bump deps/json from `a0c1318` to `c71ecde`
2023-06-13 04:33:01 +02:00
dependabot[bot]
b2f030f349
Bump deps/json from a0c1318 to c71ecde
Bumps [deps/json](https://github.com/nlohmann/json) from `a0c1318` to `c71ecde`.
- [Release notes](https://github.com/nlohmann/json/releases)
- [Commits](a0c1318830...c71ecde505)

---
updated-dependencies:
- dependency-name: deps/json
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 14:14:45 +00:00
fed
2690eeeece
Merge pull request #28 from fedddddd/dependabot/submodules/deps/gsc-tool-f026487
Bump deps/gsc-tool from `a8a62c2` to `f026487`
2023-05-24 00:28:18 +02:00
fed
098bd21008
Merge pull request #29 from fedddddd/dependabot/submodules/deps/json-a0c1318
Bump deps/json from `6af826d` to `a0c1318`
2023-05-24 00:28:11 +02:00
fed
2f474e979f
Merge pull request #30 from fedddddd/dependabot/submodules/deps/GSL-303d964
Bump deps/GSL from `afaaa71` to `303d964`
2023-05-24 00:28:05 +02:00
dependabot[bot]
2ab4da0ad9
Bump deps/GSL from afaaa71 to 303d964
Bumps [deps/GSL](https://github.com/microsoft/GSL) from `afaaa71` to `303d964`.
- [Release notes](https://github.com/microsoft/GSL/releases)
- [Commits](afaaa71bce...303d964a24)

---
updated-dependencies:
- dependency-name: deps/GSL
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-23 15:04:36 +00:00
dependabot[bot]
28c5594094
Bump deps/json from 6af826d to a0c1318
Bumps [deps/json](https://github.com/nlohmann/json) from `6af826d` to `a0c1318`.
- [Release notes](https://github.com/nlohmann/json/releases)
- [Commits](6af826d0bd...a0c1318830)

---
updated-dependencies:
- dependency-name: deps/json
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-22 15:10:24 +00:00
dependabot[bot]
6525bbb8bf
Bump deps/gsc-tool from a8a62c2 to f026487
Bumps [deps/gsc-tool](https://github.com/xensik/gsc-tool) from `a8a62c2` to `f026487`.
- [Release notes](https://github.com/xensik/gsc-tool/releases)
- [Commits](a8a62c2667...f0264876df)

---
updated-dependencies:
- dependency-name: deps/gsc-tool
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-19 15:04:33 +00:00
fed
1a9e3dfb15
Merge pull request #24 from fedddddd/dependabot/submodules/deps/minhook-0f25a24
Bump deps/minhook from `98b74f1` to `0f25a24`
2023-05-19 11:00:56 +02:00
fed
c62f1995e7 Update generate.bat 2023-05-19 10:49:37 +02:00
dependabot[bot]
883e38ae58
Bump deps/minhook from 98b74f1 to 0f25a24
Bumps [deps/minhook](https://github.com/TsudaKageyu/minhook) from `98b74f1` to `0f25a24`.
- [Release notes](https://github.com/TsudaKageyu/minhook/releases)
- [Commits](98b74f1fc1...0f25a2449b)

---
updated-dependencies:
- dependency-name: deps/minhook
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 15:08:38 +00:00
dependabot[bot]
1b2d4dbc46
Merge pull request #20 from fedddddd/dependabot/submodules/deps/json-6af826d 2023-05-13 18:05:49 +00:00
dependabot[bot]
7dfb35233e
Merge pull request #22 from fedddddd/dependabot/submodules/deps/minhook-98b74f1 2023-05-13 18:04:33 +00:00
dependabot[bot]
d842022056
Merge pull request #21 from fedddddd/dependabot/submodules/deps/GSL-afaaa71 2023-05-13 18:03:36 +00:00
dependabot[bot]
0a8ebc3058
Bump deps/json from e4643d1 to 6af826d
Bumps [deps/json](https://github.com/nlohmann/json) from `e4643d1` to `6af826d`.
- [Release notes](https://github.com/nlohmann/json/releases)
- [Commits](e4643d1f1b...6af826d0bd)

---
updated-dependencies:
- dependency-name: deps/json
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-13 17:58:53 +00:00
dependabot[bot]
8ccae5ddec
Bump deps/GSL from c31a9ad to afaaa71
Bumps [deps/GSL](https://github.com/microsoft/GSL) from `c31a9ad` to `afaaa71`.
- [Release notes](https://github.com/microsoft/GSL/releases)
- [Commits](c31a9ad5e8...afaaa71bce)

---
updated-dependencies:
- dependency-name: deps/GSL
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-13 17:58:43 +00:00
dependabot[bot]
cfb143f0fd
Bump deps/minhook from 423d1e4 to 98b74f1
Bumps [deps/minhook](https://github.com/TsudaKageyu/minhook) from `423d1e4` to `98b74f1`.
- [Release notes](https://github.com/TsudaKageyu/minhook/releases)
- [Commits](423d1e45af...98b74f1fc1)

---
updated-dependencies:
- dependency-name: deps/minhook
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-13 17:58:38 +00:00
fed
0281b5bef6 Update premake5 2023-05-13 19:53:55 +02:00
fed
70a91b271d Add workflows 2023-05-13 19:51:36 +02:00
fed
a7576ea765 Fix for pluto update 2023-05-13 19:50:00 +02:00
23 changed files with 237 additions and 104 deletions

7
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,7 @@
version: 2
updates:
- package-ecosystem: gitsubmodule
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 10

45
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,45 @@
name: Build
on:
push:
branches:
- "*"
pull_request:
branches:
- "*"
types: [opened, synchronize, reopened]
jobs:
build:
name: Build binaries
runs-on: windows-2022
strategy:
matrix:
configuration:
- Debug
- Release
steps:
- name: Check out files
uses: actions/checkout@v3
with:
submodules: true
fetch-depth: 0
lfs: false
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.1.3
- name: Generate project files
run: tools/premake5 vs2022
- name: Set up problem matching
uses: ammaraskar/msvc-problem-matcher@master
- name: Build ${{matrix.configuration}} binaries
run: msbuild /m /v:minimal /p:Configuration=${{matrix.configuration}} /p:PlatformTarget=x86 build/iw5-gsc-utils.sln
- name: Upload ${{matrix.configuration}} binaries
uses: actions/upload-artifact@v3.1.0
with:
name: ${{matrix.configuration}} binaries
path: |
build/bin/${{matrix.configuration}}/iw5-gsc-utils.dll

6
.gitmodules vendored
View File

@ -8,3 +8,9 @@
path = deps/json path = deps/json
url = https://github.com/nlohmann/json.git url = https://github.com/nlohmann/json.git
branch = develop branch = develop
[submodule "deps/gsc-tool"]
path = deps/gsc-tool
url = https://github.com/xensik/gsc-tool.git
[submodule "deps/zlib"]
path = deps/zlib
url = https://github.com/madler/zlib.git

2
deps/GSL vendored

@ -1 +1 @@
Subproject commit c31a9ad5e8e99da8567237a7ba51a7d8f419e5bf Subproject commit b39e7e4b0987859f5b19ff7686b149c916588658

1
deps/gsc-tool vendored Submodule

@ -0,0 +1 @@
Subproject commit 0e6238a6ab8643df6404f7c0280242df2812f6c8

2
deps/json vendored

@ -1 +1 @@
Subproject commit e4643d1f1b03fc7a1d7b65f17e012ca93680cad8 Subproject commit 0457de21cffb298c22b629e538036bfeb96130b7

2
deps/minhook vendored

@ -1 +1 @@
Subproject commit 423d1e45af2ed2719a5c31e990e935ef301ed9c3 Subproject commit f5485b8454544c2f034c78f8f127c1d03dea3636

62
deps/premake/gsc-tool.lua vendored Normal file
View File

@ -0,0 +1,62 @@
gsc_tool = {
source = path.join(dependencies.basePath, "gsc-tool"),
}
function gsc_tool.import()
links { "xsk-gsc-iw5-pc", "xsk-gsc-utils" }
gsc_tool.includes()
end
function gsc_tool.includes()
includedirs {
path.join(gsc_tool.source, "include"),
}
end
function gsc_tool.project()
project "xsk-gsc-utils"
kind "StaticLib"
language "C++"
files {
path.join(gsc_tool.source, "include/xsk/utils/*.hpp"),
path.join(gsc_tool.source, "src/utils/*.cpp"),
}
includedirs {
path.join(gsc_tool.source, "include"),
}
zlib.includes()
project "xsk-gsc-iw5-pc"
kind "StaticLib"
language "C++"
filter "action:vs*"
buildoptions "/Zc:__cplusplus"
filter {}
files {
path.join(gsc_tool.source, "include/xsk/stdinc.hpp"),
path.join(gsc_tool.source, "include/xsk/gsc/engine/iw5_pc.hpp"),
path.join(gsc_tool.source, "src/gsc/engine/iw5_pc.cpp"),
path.join(gsc_tool.source, "src/gsc/engine/iw5_pc_code.cpp"),
path.join(gsc_tool.source, "src/gsc/engine/iw5_pc_func.cpp"),
path.join(gsc_tool.source, "src/gsc/engine/iw5_pc_meth.cpp"),
path.join(gsc_tool.source, "src/gsc/engine/iw5_pc_token.cpp"),
path.join(gsc_tool.source, "src/gsc/*.cpp"),
path.join(gsc_tool.source, "src/gsc/common/*.cpp"),
path.join(gsc_tool.source, "include/xsk/gsc/common/*.hpp"),
}
includedirs {
path.join(gsc_tool.source, "include"),
}
end
table.insert(dependencies, gsc_tool)

39
deps/premake/zlib.lua vendored Normal file
View File

@ -0,0 +1,39 @@
zlib = {
source = path.join(dependencies.basePath, "zlib"),
}
function zlib.import()
links { "zlib" }
zlib.includes()
end
function zlib.includes()
includedirs {
zlib.source
}
defines {
"ZLIB_CONST",
}
end
function zlib.project()
project "zlib"
language "C"
zlib.includes()
files {
path.join(zlib.source, "*.h"),
path.join(zlib.source, "*.c"),
}
defines {
"_CRT_SECURE_NO_DEPRECATE",
}
warnings "Off"
kind "StaticLib"
end
table.insert(dependencies, zlib)

1
deps/zlib vendored Submodule

@ -0,0 +1 @@
Subproject commit 5c42a230b7b468dff011f444161c0145b5efae59

View File

@ -1,3 +1,3 @@
@echo off @echo off
call git submodule update --init --recursive call git submodule update --init --recursive
tools\windows\premake5.exe vs2022 tools\premake5.exe vs2022

View File

@ -21,7 +21,7 @@ namespace gsc
{ {
std::string method_name(unsigned int id) std::string method_name(unsigned int id)
{ {
const auto& map = *game::plutonium::method_map_rev; const auto& map = (*game::plutonium::gsc_ctx)->meth_map();
for (const auto& function : map) for (const auto& function : map)
{ {
@ -36,7 +36,7 @@ namespace gsc
std::string function_name(unsigned int id) std::string function_name(unsigned int id)
{ {
const auto& map = *game::plutonium::function_map_rev; const auto& map = (*game::plutonium::gsc_ctx)->func_map();
for (const auto& function : map) for (const auto& function : map)
{ {
@ -248,11 +248,21 @@ namespace gsc
{ {
void add(const std::string& name, const script_function& func) void add(const std::string& name, const script_function& func)
{ {
const auto index = function_map_start++; auto index = 0u;
auto& ctx = (*game::plutonium::gsc_ctx);
if (ctx->func_exists(name))
{
printf("[iw5-gsc-utils] Warning: function '%s' already defined\n", name.data());
index = ctx->func_id(name);
}
else
{
index = function_map_start++;
ctx->func_add(name, index);
}
functions[index] = func; functions.insert(std::make_pair(index, func));
const auto name_view = utils::memory::get_allocator()->duplicate_string(name);
(*game::plutonium::function_map_rev)[name_view] = index;
} }
} }
@ -260,11 +270,21 @@ namespace gsc
{ {
void add(const std::string& name, const script_method& func) void add(const std::string& name, const script_method& func)
{ {
const auto index = method_map_start++; auto index = 0u;
auto& ctx = (*game::plutonium::gsc_ctx);
methods[index] = func; if (ctx->meth_exists(name))
const auto name_view = utils::memory::get_allocator()->duplicate_string(name); {
(*game::plutonium::method_map_rev)[name_view] = index; printf("[iw5-gsc-utils] Warning: method '%s' already defined\n", name.data());
index = ctx->meth_id(name);
}
else
{
index = method_map_start++;
ctx->meth_add(name, index);
}
methods.insert(std::make_pair(index, func));
} }
} }
@ -274,25 +294,13 @@ namespace gsc
const std::function<scripting::script_value(unsigned int entnum)>& getter, const std::function<scripting::script_value(unsigned int entnum)>& getter,
const std::function<void(unsigned int entnum, const scripting::script_value&)>& setter) const std::function<void(unsigned int entnum, const scripting::script_value&)>& setter)
{ {
uint16_t token_id{};
auto& token_map = *game::plutonium::token_map_rev;
if (token_map.find(name) != token_map.end())
{
token_id = token_map.at(name);
}
else
{
token_id = token_map_start++;
token_map.insert(std::make_pair(name, token_id));
}
const auto offset = field_offset_start++; const auto offset = field_offset_start++;
custom_fields[classnum][offset] = {name, getter, setter}; custom_fields[classnum][offset] = {name, getter, setter};
post_load_callbacks.push_back([classnum, name, token_id, offset]() post_load_callbacks.push_back([=]()
{ {
const auto name_str = game::SL_GetString(name.data(), 0); const auto name_str = game::SL_GetString(name.data(), 0);
game::Scr_AddClassField(classnum, name_str, token_id, offset); game::Scr_AddClassField(classnum, name_str, game::SL_GetCanonicalString(name.data()), offset);
}); });
} }
} }

View File

@ -179,4 +179,4 @@ namespace io
}; };
} }
REGISTER_COMPONENT(io::component) REGISTER_COMPONENT(io::component)

View File

@ -194,4 +194,4 @@ namespace json
}; };
} }
REGISTER_COMPONENT(json::component) REGISTER_COMPONENT(json::component)

View File

@ -71,4 +71,4 @@ namespace notifies
}; };
} }
REGISTER_COMPONENT(notifies::component) REGISTER_COMPONENT(notifies::component)

View File

@ -136,4 +136,4 @@ namespace scripting
}; };
} }
REGISTER_COMPONENT(scripting::component) REGISTER_COMPONENT(scripting::component)

View File

@ -35,11 +35,18 @@ namespace signatures
const auto base = reinterpret_cast<size_t>(GetModuleHandle("plutonium-bootstrapper-win32.exe")); const auto base = reinterpret_cast<size_t>(GetModuleHandle("plutonium-bootstrapper-win32.exe"));
utils::hook::signature signature(base, get_image_size() - base); utils::hook::signature signature(base, get_image_size() - base);
auto found = false;
signature.add({ signature.add({
string, string,
mask, mask,
[&](char* address) [&](char* address)
{ {
if (found)
{
return;
}
found = true;
string_ptr = address; string_ptr = address;
} }
}); });
@ -61,18 +68,17 @@ namespace signatures
return find_string_ptr({bytes, 4}); return find_string_ptr({bytes, 4});
} }
bool process_maps() bool process_gsc_ctx()
{ {
const auto string_ref = find_string_ref("couldn't resolve builtin function id for name '%s'!"); const auto string_ref = find_string_ref("in call to builtin %s \"%s\"");
if (!string_ref) if (!string_ref)
{ {
return false; return false;
} }
const auto map_ptr = *reinterpret_cast<size_t*>(string_ref - 0x2B); const auto gsc_ctx_ptr = *reinterpret_cast<size_t*>(string_ref - 0xAD);
game::plutonium::function_map_rev.set(map_ptr); OutputDebugString(utils::string::va("gsc_ctx_ptr: %p\n", gsc_ctx_ptr));
game::plutonium::method_map_rev.set(map_ptr + 0x20); game::plutonium::gsc_ctx.set(gsc_ctx_ptr);
game::plutonium::token_map_rev.set(map_ptr + 0xBC);
return true; return true;
} }
@ -85,7 +91,9 @@ namespace signatures
} }
const auto offset = *reinterpret_cast<size_t*>(string_ref + 5); const auto offset = *reinterpret_cast<size_t*>(string_ref + 5);
game::plutonium::printf.set(string_ref + 4 + 5 + offset); const auto printf_ptr = string_ref + 4 + 5 + offset;
OutputDebugString(utils::string::va("printf_ptr: %p\n", printf_ptr));
game::plutonium::printf.set(printf_ptr);
return true; return true;
} }
@ -93,6 +101,6 @@ namespace signatures
bool process() bool process()
{ {
load_function_tables(); load_function_tables();
return process_printf() && process_maps(); return process_printf() && process_gsc_ctx();
} }
} }

View File

@ -193,4 +193,4 @@ namespace userinfo
}; };
} }
REGISTER_COMPONENT(userinfo::component) REGISTER_COMPONENT(userinfo::component)

View File

@ -7,51 +7,20 @@ namespace scripting
{ {
namespace namespace
{ {
std::unordered_map<std::string, uint16_t> lowercase_map( int find_function_index(const std::string& name, [[maybe_unused]] const bool prefer_global)
const std::unordered_map<std::string_view, uint16_t>& old_map)
{
std::unordered_map<std::string, uint16_t> new_map{};
for (auto& entry : old_map)
{
new_map[utils::string::to_lower(entry.first.data())] = entry.second;
}
return new_map;
}
const std::unordered_map<std::string, uint16_t>& get_methods()
{
static auto methods = lowercase_map(*game::plutonium::method_map_rev);
return methods;
}
const std::unordered_map<std::string, uint16_t>& get_functions()
{
static auto function = lowercase_map(*game::plutonium::function_map_rev);
return function;
}
int find_function_index(const std::string& name, const bool prefer_global)
{ {
const auto target = utils::string::to_lower(name); const auto target = utils::string::to_lower(name);
auto const& first = (*game::plutonium::gsc_ctx)->func_map();
auto const& second = (*game::plutonium::gsc_ctx)->meth_map();
const auto& primary_map = prefer_global if (const auto itr = first.find(name); itr != first.end())
? get_functions()
: get_methods();
const auto& secondary_map = !prefer_global
? get_functions()
: get_methods();
auto function_entry = primary_map.find(target);
if (function_entry != primary_map.end())
{ {
return function_entry->second; return static_cast<int>(itr->second);
} }
function_entry = secondary_map.find(target); if (const auto itr = second.find(name); itr != second.end())
if (function_entry != secondary_map.end())
{ {
return function_entry->second; return static_cast<int>(itr->second);
} }
return -1; return -1;
@ -73,16 +42,7 @@ namespace scripting
std::string find_token(unsigned int id) std::string find_token(unsigned int id)
{ {
const auto& token_map = *game::plutonium::token_map_rev; return (*game::plutonium::gsc_ctx)->token_name(id);
for (const auto& token : token_map)
{
if (token.second == id)
{
return token.first;
}
}
return {};
} }
std::string find_file(unsigned int id) std::string find_file(unsigned int id)
@ -92,21 +52,16 @@ namespace scripting
int find_token_id(const std::string& name) int find_token_id(const std::string& name)
{ {
const auto& token_map = *game::plutonium::token_map_rev; return (*game::plutonium::gsc_ctx)->token_id(name);
const auto result = token_map.find(name);
if (result != token_map.end())
{
return result->second;
}
return -1;
} }
script_function find_function(const std::string& name, const bool prefer_global) script_function find_function(const std::string& name, const bool prefer_global)
{ {
const auto index = find_function_index(name, prefer_global); const auto index = find_function_index(name, prefer_global);
if (index < 0) return nullptr; if (index < 0)
{
return nullptr;
}
return get_function_by_index(index); return get_function_by_index(index);
} }

View File

@ -86,9 +86,7 @@ namespace game
namespace plutonium namespace plutonium
{ {
WEAK symbol<std::unordered_map<std::string_view, std::uint16_t>> function_map_rev{0}; WEAK symbol<std::unique_ptr<xsk::gsc::iw5_pc::context>> gsc_ctx{0};
WEAK symbol<std::unordered_map<std::string_view, std::uint16_t>> method_map_rev{0};
WEAK symbol<std::unordered_map<std::string, std::uint16_t>> token_map_rev{0};
WEAK symbol<int(const char* fmt, ...)> printf{0}; WEAK symbol<int(const char* fmt, ...)> printf{0};
WEAK symbol<void*> function_table{0}; WEAK symbol<void*> function_table{0};
WEAK symbol<void*> method_table{0}; WEAK symbol<void*> method_table{0};

View File

@ -8,6 +8,8 @@
#pragma warning(disable: 4996) #pragma warning(disable: 4996)
#pragma warning(disable: 26812) #pragma warning(disable: 26812)
#include <xsk/gsc/engine/iw5_pc.hpp>
#define DLL_EXPORT extern "C" __declspec(dllexport) #define DLL_EXPORT extern "C" __declspec(dllexport)
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN
#include <windows.h> #include <windows.h>
@ -37,6 +39,7 @@ using namespace std::literals;
#include <gsl/gsl> #include <gsl/gsl>
#include <MinHook.h> #include <MinHook.h>
#include "utils/memory.hpp" #include "utils/memory.hpp"
#include "utils/string.hpp" #include "utils/string.hpp"
#include "utils/hook.hpp" #include "utils/hook.hpp"
@ -46,4 +49,4 @@ using namespace std::literals;
#include "utils/http.hpp" #include "utils/http.hpp"
#include "game/structs.hpp" #include "game/structs.hpp"
#include "game/game.hpp" #include "game/game.hpp"

BIN
tools/premake5.exe Normal file

Binary file not shown.

Binary file not shown.