Skip to content

Commit

Permalink
Merge pull request #15 from d3m37r4/dev-branch
Browse files Browse the repository at this point in the history
Changes to mechanics of level with a grenade. And other small fixes.
  • Loading branch information
d3m37r4 committed Dec 7, 2023
2 parents 0c29bc6 + 4c4ad63 commit 7b313b9
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 71 deletions.
4 changes: 2 additions & 2 deletions cstrike/addons/amxmodx/scripting/include/regg.inc
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
**/

#define REGG_MAJOR_VERSION 0
#define REGG_MINOR_VERSION 3
#define REGG_MAINTENANCE_VERSION 34
#define REGG_MINOR_VERSION 4
#define REGG_MAINTENANCE_VERSION 35

#define REGG_VERSION str_to_num(fmt("%d%d%d", REGG_MAJOR_VERSION, REGG_MINOR_VERSION, REGG_MAINTENANCE_VERSION))
#define REGG_VERSION_STR fmt("%d.%d.%d-alpha", REGG_MAJOR_VERSION, REGG_MINOR_VERSION, REGG_MAINTENANCE_VERSION)
Expand Down
8 changes: 0 additions & 8 deletions cstrike/addons/amxmodx/scripting/regg/config.inl
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@
#include <amxmisc>

enum _:config_s {
// ReGG_Mode:CfgMode,
Float:CfgNadeRefresh,
CfgStealMode,
CfgStealValue,
CfgTeamStealValue,
Expand Down Expand Up @@ -53,12 +51,6 @@ new Config[config_s];
new GameCvars[game_cvars_s];

registerCvars() {
bind_pcvar_float(create_cvar(
"regg_nade_refresh", "5.0",
.has_min = true,
.min_val = 1.0
), Config[CfgNadeRefresh]);

// 0 - off, 1 - steal level, 2 - steal points
bind_pcvar_num(create_cvar(
"regg_steal_mode", "1",
Expand Down
20 changes: 3 additions & 17 deletions cstrike/addons/amxmodx/scripting/regg/functions.inl
Original file line number Diff line number Diff line change
Expand Up @@ -8,30 +8,26 @@

bool:start(const ReGG_Mode:mode) {
EXECUTE_FORWARD_PRE_ARGS(FWD_Start, false, mode);

// Mode = mode;

changeGameCvars();

EnableHookChain(Hooks[HookDropClient]);
EnableHookChain(Hooks[HookRestartRound]);
EnableHookChain(Hooks[HookHasRestrictItem]);
EnableHookChain(Hooks[HookDropPlayerItem]);
EnableHookChain(Hooks[HookOnSpawnEquip]);
EnableHookChain(Hooks[HookThrowHeGrenade]);
EnableHookChain(Hooks[HookExplodeHeGrenade]);
EnableHookChain(Hooks[HookKilled]);

EXECUTE_FORWARD_POST_ARGS(FWD_Start, mode);

Mode = mode;
set_member_game(m_bCompleteReset, true);
// rg_restart_round();

rg_round_end(
.tmDelay = 3.0,
.st = WINSTATUS_DRAW,
.event = ROUND_END_DRAW,
.message = "Message",
.message = "GunGame Mod started!",
.sentence = "",
.trigger = true
);
Expand All @@ -40,7 +36,6 @@ bool:start(const ReGG_Mode:mode) {
}

bool:finish(const killer, const victim) {
log_amx(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> finish");
EXECUTE_FORWARD_PRE_ARGS(FWD_Finish, false, killer, victim);
restoreGameCvars();
disableHooks();
Expand Down Expand Up @@ -132,7 +127,6 @@ ReGG_Result:killGrenade(const killer, const victim) {

new ReGG_Result:result = addPoints(killer, 1);
if(Config[CfgRefillOnKill] && result == ReGG_ResultPointsUp) {
remove_task(TASK_GRENADE_ID + killer);
rg_give_item(killer, "weapon_hegrenade", GT_REPLACE);
}
EXECUTE_FORWARD_POST_ARGS(FWD_KillEnemy, killer, victim, WEAPON_HEGRENADE, result, Players[killer][PlayerPoints], Players[killer][PlayerLevel]);
Expand All @@ -157,7 +151,6 @@ bool:giveWeapon(const id, const level) {
EXECUTE_FORWARD_PRE_ARGS(FWD_GiveWeapon, false, id, Levels[level][LevelWeaponID]);
switch (Levels[level][LevelWeaponID]) {
case WEAPON_KNIFE: {}

case WEAPON_HEGRENADE: {
rg_give_item(id, "weapon_hegrenade");
for(new i = 0, weapon, wname[32]; i < GrenadeWeaponsNum; i++) {
Expand All @@ -168,7 +161,6 @@ bool:giveWeapon(const id, const level) {
}
}
}

case WEAPON_AWP: {
new weapon = rg_give_item(id, "weapon_awp");
if(!is_nullent(weapon)) {
Expand All @@ -180,7 +172,6 @@ bool:giveWeapon(const id, const level) {
}
}
}

default: {
new wname[32];
new WeaponIdType:wid = Levels[level][LevelWeaponID];
Expand Down Expand Up @@ -630,26 +621,21 @@ roundPoints(num1, num2) {
}

getTeamPlayers(const slot) {
// rg_initialize_player_counts();
return slot == ReGG_SlotT
? get_member_game(m_iNumTerrorist)
: get_member_game(m_iNumCT);
}

resetPlayersStats() {
log_amx(">>> >>> >>> resetPlayersStats");
for(new player = 1; player <= MaxClients; player++) {
log_amx("Players[%d][PlayerPoints] = %d | Players[%d][PlayerLevel] = %d", player, Players[player][PlayerPoints], player, Players[player][PlayerLevel]);
Players[player][PlayerPoints] = 0;
Players[player][PlayerLevel] = 0;
}
}

resetTeamsStats() {
log_amx(">>> >>> >>> resetTeamssStats");
for(new slot = ReGG_SlotT; slot <= ReGG_SlotCT; slot++) {
log_amx("Teams[%d][TeamPoints] = %d | Teams[%d][TeamLevel] = %d", slot, Teams[slot][TeamPoints], slot, Teams[slot][TeamLevel]);
Teams[slot][TeamPoints] = 0;
Teams[slot][TeamLevel] = 0;
}
}
}
45 changes: 21 additions & 24 deletions cstrike/addons/amxmodx/scripting/regg/hooks.inl
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ enum _:hook_s {
HookChain:HookDropPlayerItem,
HookChain:HookFShouldSwitchWeapon,
HookChain:HookOnSpawnEquip,
HookChain:HookThrowHeGrenade,
HookChain:HookExplodeHeGrenade,
HookChain:HookKilled,
};

Expand All @@ -24,14 +24,13 @@ registerHooks() {
Hooks[HookDropPlayerItem] = RegisterHookChain(RG_CBasePlayer_DropPlayerItem, "CBasePlayer_DropPlayerItem_Pre", false);
Hooks[HookFShouldSwitchWeapon] = RegisterHookChain(RG_CSGameRules_FShouldSwitchWeapon, "CSGameRules_FShouldSwitchWeapon_Pre", false);
Hooks[HookOnSpawnEquip] = RegisterHookChain(RG_CBasePlayer_OnSpawnEquip, "CBasePlayer_OnSpawnEquip_Post", true);
Hooks[HookThrowHeGrenade] = RegisterHookChain(RG_ThrowHeGrenade, "CBasePlayer_ThrowHeGrenade_Post", true);
Hooks[HookExplodeHeGrenade] = RegisterHookChain(RG_CGrenade_ExplodeHeGrenade, "CGrenade_ExplodeHeGrenade_Pre", false);
Hooks[HookKilled] = RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Post", true);
}

disableHooks() {
for(new i = 0; i < sizeof(Hooks); i++) {
Hooks[i] && DisableHookChain(Hooks[i]);
// DisableHookChain(HookChain:Hooks[i]);
}
}

Expand All @@ -48,28 +47,10 @@ public SV_DropClient_Post(const id) {
}

public CSGameRules_RestartRound_Pre() {
log_amx(">>>>>>>>>>>>>>>>>>>> CSGameRules_RestartRound_Pre()");
// if(!get_member_game(m_bCompleteReset)) {
// return HC_CONTINUE;
// }

// for(new player = 1; player <= MaxClients; player++) {
// log_amx("Players[player][PlayerPoints] = %d | Players[player][PlayerLevel] = %d", Players[player][PlayerPoints], Players[player][PlayerLevel]);
// Players[player][PlayerPoints] = 0;
// Players[player][PlayerLevel] = 0;
// }

// for(new slot = ReGG_SlotT; slot <= ReGG_SlotCT; slot++) {
// Teams[slot][TeamPoints] = 0;
// Teams[slot][TeamLevel] = 0;
// }

if(get_member_game(m_bCompleteReset)) {
resetPlayersStats();
resetTeamsStats();
}

// return HC_CONTINUE;
}

public CBasePlayer_HasRestrictItem_Pre() {
Expand Down Expand Up @@ -108,8 +89,25 @@ public CBasePlayer_OnSpawnEquip_Post(const id) {
return HC_CONTINUE;
}

public CBasePlayer_ThrowHeGrenade_Post(const id) {
set_task(Config[CfgNadeRefresh], "TaskGiveGrenade", TASK_GRENADE_ID + id);
public CGrenade_ExplodeHeGrenade_Pre(const grenade) {
new player = get_entvar(grenade, var_owner);
if(!is_user_connected(player)) {
return HC_CONTINUE;
}

new level;
if(Mode == ReGG_ModeTeam) {
new slot = getTeamSlot(player);
level = Teams[slot][TeamLevel];
} else {
level = Players[player][PlayerLevel];
}

if(Levels[level][LevelWeaponID] == WEAPON_HEGRENADE) {
rg_give_item(player, "weapon_hegrenade");
}

return HC_CONTINUE;
}

public CBasePlayer_Killed_Post(const victim, const killer) {
Expand All @@ -133,6 +131,5 @@ public CBasePlayer_Killed_Post(const victim, const killer) {
}
}

remove_task(TASK_GRENADE_ID + victim);
return HC_CONTINUE;
}
20 changes: 0 additions & 20 deletions cstrike/addons/amxmodx/scripting/regg_core.sma
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
#include <reapi>
#include <regg>

const TASK_GRENADE_ID = 50;
const MAX_LEVELS = 30;
const MAX_LEVEL_TITLE_LENGTH = 32;
const MAX_GRENADE_WEAPONS = 5;
Expand Down Expand Up @@ -88,22 +87,3 @@ public client_putinserver(id) {
Players[id][PlayerPoints] = 0;
Players[id][PlayerLevel] = 0;
}

public TaskGiveGrenade(id) {
id -= TASK_GRENADE_ID;
if(!is_user_connected(id)) {
return;
}

new level;
if(Mode == ReGG_ModeTeam) {
new slot = getTeamSlot(id);
level = Teams[slot][TeamLevel];
} else {
level = Players[id][PlayerLevel];
}

if(Levels[level][LevelWeaponID] == WEAPON_HEGRENADE) {
rg_give_item(id, "weapon_hegrenade");
}
}

0 comments on commit 7b313b9

Please sign in to comment.