Skip to content

Commit 1190e82

Browse files
committed
update player model api
1 parent da3d8ac commit 1190e82

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

api_player_model.sma

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ new g_rgszDefaultPlayerModel[MAX_PLAYERS + 1][32];
1515
new g_rgszCurrentPlayerModel[MAX_PLAYERS + 1][256];
1616
new g_rgszCustomPlayerModel[MAX_PLAYERS + 1][256];
1717
new g_rgiPlayerAnimationIndex[MAX_PLAYERS + 1];
18+
new bool:g_rgbPlayerUseDefaultModel[MAX_PLAYERS + 1];
1819

1920
new Trie:g_itPlayerSequenceModelIndexes = Invalid_Trie;
2021
new Trie:g_itPlayerSequences = Invalid_Trie;
@@ -46,6 +47,7 @@ public plugin_init() {
4647
public plugin_natives() {
4748
register_library("api_player_model");
4849
register_native("PlayerModel_Get", "Native_GetPlayerModel");
50+
register_native("PlayerModel_GetCurrent", "Native_GetCurrentPlayerModel");
4951
register_native("PlayerModel_Set", "Native_SetPlayerModel");
5052
register_native("PlayerModel_Reset", "Native_ResetPlayerModel");
5153
register_native("PlayerModel_Update", "Native_UpdatePlayerModel");
@@ -58,6 +60,11 @@ public Native_GetPlayerModel(iPluginId, iArgc) {
5860
set_string(2, g_rgszCustomPlayerModel[pPlayer], get_param(3));
5961
}
6062

63+
public Native_GetCurrentPlayerModel(iPluginId, iArgc) {
64+
new pPlayer = get_param(1);
65+
set_string(2, g_rgszCurrentPlayerModel[pPlayer], get_param(3));
66+
}
67+
6168
public Native_SetPlayerModel(iPluginId, iArgc) {
6269
new pPlayer = get_param(1);
6370
get_string(2, g_rgszCustomPlayerModel[pPlayer], charsmax(g_rgszCustomPlayerModel[]));
@@ -156,11 +163,14 @@ public @Player_UpdateAnimationModel(this) {
156163
}
157164

158165
public @Player_UpdateCurrentModel(this) {
166+
g_rgbPlayerUseDefaultModel[this] = false;
167+
159168
if (equal(g_rgszCustomPlayerModel[this], NULL_STRING)) {
160169
if (!equal(g_rgszDefaultPlayerModel[this], NULL_STRING)) {
161170
static szModel[MAX_RESOURCE_PATH_LENGTH];
162171
format(szModel, charsmax(szModel), "models/player/%s/%s.mdl", g_rgszDefaultPlayerModel[this], g_rgszDefaultPlayerModel[this]);
163172
copy(g_rgszCurrentPlayerModel[this], charsmax(g_rgszCurrentPlayerModel[]), szModel);
173+
g_rgbPlayerUseDefaultModel[this] = true;
164174
}
165175
} else {
166176
copy(g_rgszCurrentPlayerModel[this], charsmax(g_rgszCurrentPlayerModel[]), g_rgszCustomPlayerModel[this]);
@@ -171,9 +181,14 @@ public @Player_UpdateCurrentModel(this) {
171181

172182
public @Player_UpdateModel(this) {
173183
new iAnimationIndex = g_rgiPlayerAnimationIndex[this];
174-
new iModelIndex = engfunc(EngFunc_ModelIndex, g_rgszCurrentPlayerModel[this]);
175-
@Player_SetModelIndex(this, iAnimationIndex ? iAnimationIndex : iModelIndex);
176-
set_pev(g_pPlayerModel[this], pev_modelindex, iAnimationIndex ? iModelIndex : 0);
184+
185+
if (!g_rgbPlayerUseDefaultModel[this] || iAnimationIndex) {
186+
new iModelIndex = engfunc(EngFunc_ModelIndex, g_rgszCurrentPlayerModel[this]);
187+
@Player_SetModelIndex(this, iAnimationIndex ? iAnimationIndex : iModelIndex);
188+
set_pev(g_pPlayerModel[this], pev_modelindex, iAnimationIndex ? iModelIndex : 0);
189+
} else {
190+
set_pev(g_pPlayerModel[this], pev_modelindex, 0);
191+
}
177192
}
178193

179194
public @Player_ResetModel(this) {

include/api_player_model.inc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#pragma reqlib api_player_model
77

88
native PlayerModel_Get(pPlayer, szOut[], iLen);
9+
native PlayerModel_GetCurrent(pPlayer, szOut[], iLen);
910
native PlayerModel_Set(pPlayer, const szModel[]);
1011
native PlayerModel_Update(pPlayer);
1112
native PlayerModel_Reset(pPlayer);

0 commit comments

Comments
 (0)