Skip to content

Commit 30f719d

Browse files
authored
Goals (Pre GUI)
Hooks based on which team scored enabled, no GUI options yet.
1 parent 76460b4 commit 30f719d

File tree

2 files changed

+126
-43
lines changed

2 files changed

+126
-43
lines changed

RocketLeagueAssistant/RocketLeagueAssistant.cpp

Lines changed: 124 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ void RocketLeagueAssistant::onLoad()
3636
cvarManager->registerCvar("ha_mainmenu", "http://192.168.1.256:8123/api/webhook/webhook-light-example-mainmenu");
3737
cvarManager->registerCvar("ha_overtime", "http://192.168.1.256:8123/api/webhook/webhook-light-example-overtime");
3838
cvarManager->registerCvar("ha_exit", "http://192.168.1.256:8123/api/webhook/webhook-light-example-exit");
39+
cvarManager->registerCvar("ha_goalHome", "http://192.168.1.256:8123/api/webhook/webhook-light-example-exit");
40+
cvarManager->registerCvar("ha_goalAway", "http://192.168.1.256:8123/api/webhook/webhook-light-example-exit");
41+
42+
//Team CVAR
43+
cvarManager->registerCvar("ha_playersTeam", "2");
3944

4045
//Prep for possibly using tokens in the future for requests over https
4146
cvarManager->registerCvar("ha_token", "Generated Token", "Home Assistant URL");
@@ -49,7 +54,7 @@ void RocketLeagueAssistant::onLoad()
4954

5055
_globalCvarManager = cvarManager;
5156

52-
57+
5358
}
5459

5560
void RocketLeagueAssistant::onUnload()
@@ -67,12 +72,12 @@ void RocketLeagueAssistant::LoadHooks()
6772

6873

6974
//Goal Scored
70-
gameWrapper->HookEvent("Function TAGame.Ball_TA.Explode", std::bind(&RocketLeagueAssistant::GoalScoredHook, this, std::placeholders::_1));
75+
//gameWrapper->HookEvent("Function TAGame.Ball_TA.Explode", std::bind(&RocketLeagueAssistant::GoalScoredHook, this, std::placeholders::_1));
7176

72-
//Demo Feature
77+
//Stats Feature
7378
gameWrapper->HookEventWithCallerPost<ActorWrapper>("Function TAGame.GFxHUD_TA.HandleStatTickerMessage",
7479
[this](ActorWrapper caller, void* params, std::string eventname) {
75-
DemosHook(params);
80+
StatsHook(params);
7681
});
7782

7883
//Overtime
@@ -87,8 +92,25 @@ void RocketLeagueAssistant::LoadHooks()
8792
//Check if it is a replay
8893
gameWrapper->HookEvent("Function GameEvent_Soccar_TA.ReplayPlayback.BeginState", std::bind(&RocketLeagueAssistant::Replay, this, std::placeholders::_1));
8994
gameWrapper->HookEvent("Function GameEvent_Soccar_TA.ReplayPlayback.EndState", std::bind(&RocketLeagueAssistant::NotReplay, this, std::placeholders::_1));
95+
96+
97+
98+
99+
100+
101+
//Goal Scored Hook Test
102+
103+
104+
105+
106+
//gameWrapper->HookEventWithCallerPost<ServerWrapper>(
107+
// "Function TAGame.GFxHUD_TA.HandleStatTickerMessage",
108+
// std::bind(&RocketLeagueAssistant::GoalScoredTest, this,
109+
// std::placeholders::_1, std::placeholders::_2));
110+
90111
}
91112

113+
92114
void RocketLeagueAssistant::SendCommands(std::string reqUrl)
93115
{
94116

@@ -182,32 +204,40 @@ void RocketLeagueAssistant::LoadTeams(std::string name)
182204
if (!haHomeCVar) { return; }
183205
CVarWrapper haAwayCVar = cvarManager->getCvar("ha_away");
184206
if (!haAwayCVar) { return; }
207+
208+
//get current team cvar
209+
CVarWrapper ha_playersTeam = cvarManager->getCvar("ha_playersTeam");
210+
if (!ha_playersTeam) { return; }
185211
//
186212

187213
//this may be redundant?
188214
auto reqUrlHome = cvarManager->getCvar("ha_home");
189215
auto reqUrlAway = cvarManager->getCvar("ha_away");
216+
190217
//
191218

192219
//convert haurlcvars to string
193220
std::string reqUrlHomeString = reqUrlHome.getStringValue();
194221
std::string reqUrlAwayString = reqUrlAway.getStringValue();
195-
//
196222

197223
//Send based on home or away team
198224
if (teamnum <= 1) {
199225

200226
if (teamnum == 0) {
201227

228+
202229
std::string reqUrlTeam = reqUrlHomeString;
203230
SendCommands(reqUrlTeam);
231+
ha_playersTeam.setValue(teamnum);
204232
LOG("Using Home Team Colors");
233+
205234
}
206235

207236
if (teamnum == 1) {
208237

209238
std::string reqUrlTeam = reqUrlAwayString;
210239
SendCommands(reqUrlTeam);
240+
ha_playersTeam.setValue(teamnum);
211241
LOG("Using Away Team Colors");
212242
}
213243

@@ -242,7 +272,7 @@ void RocketLeagueAssistant::ConvertLinearColor(float red, float green, float blu
242272
}
243273

244274

245-
void RocketLeagueAssistant::DemosHook(void* params)
275+
void RocketLeagueAssistant::StatsHook(void* params)
246276
{
247277

248278
//Check if plugin is enabled
@@ -254,35 +284,87 @@ void RocketLeagueAssistant::DemosHook(void* params)
254284
//See if demos are enabled
255285
CVarWrapper demosEnabledCvar = cvarManager->getCvar("demos_enabled");
256286
bool demosEnabled = demosEnabledCvar.getBoolValue();
257-
if (!demosEnabled) { LOG("Demos Automations are not enabled"); return; }
287+
//if (!demosEnabled) { LOG("Demos Automations are not enabled"); return; }
258288

259289
//See if it is a replay
260290
CVarWrapper replayCvar = cvarManager->getCvar("isReplay");
261291
bool isReplay = replayCvar.getBoolValue();
262292
if (isReplay == true) { Log("It's a replay"); return; }
263293

294+
295+
//Get goals automation url, transform, and convert to string
296+
CVarWrapper haGoalHomeCVar = cvarManager->getCvar("ha_goalHome");
297+
if (!haGoalHomeCVar) { return; }
298+
CVarWrapper haGoalAwayCVar = cvarManager->getCvar("ha_goalAway");
299+
if (!haGoalAwayCVar) { return; }
300+
//
301+
302+
//Current team CVAR
303+
//get current team cvar
304+
CVarWrapper ha_playersTeam = cvarManager->getCvar("ha_playersTeam");
305+
if (!ha_playersTeam) { return; }
306+
//
307+
auto haplayersTeam = cvarManager->getCvar("ha_playersTeam");
308+
int haplayersTeam2 = haplayersTeam.getIntValue();
309+
310+
//convert team to int
311+
//int haplayersTeam = ha_playersTeam.getIntValue();
312+
//
313+
//
314+
//this may be redundant?
315+
auto reqGoalUrlHome = cvarManager->getCvar("ha_goalHome");
316+
auto reqGoalUrlAway = cvarManager->getCvar("ha_goalAway");
317+
//
318+
319+
//convert haurlcvars to string
320+
std::string reqUrlGoalHomeString = reqGoalUrlHome.getStringValue();
321+
std::string reqUrlGoalAwayString = reqGoalUrlAway.getStringValue();
322+
264323
//Get demos automation url, transform, and convert to string
265324
CVarWrapper haDemosCVar = cvarManager->getCvar("ha_demos");
266325
if (!haDemosCVar) { return; }
267326
auto reqUrlDemos = cvarManager->getCvar("ha_demos");
268327
std::string reqUrlDemosString = reqUrlDemos.getStringValue();
269328

270-
//Get a demo's info
329+
//Get a StatEvent's info
271330
struct StatTickerParams {
272331
uintptr_t Receiver;
273332
uintptr_t Victim;
274333
uintptr_t StatEvent;
275334
};
276335

336+
337+
277338
StatTickerParams* pStruct = (StatTickerParams*)params;
278339
PriWrapper receiver = PriWrapper(pStruct->Receiver);
279340
PriWrapper victim = PriWrapper(pStruct->Victim);
280341

281342
StatEventWrapper statEvent = StatEventWrapper(pStruct->StatEvent);
282343

283344
//
345+
LOG("StateEventOccured");
346+
if (statEvent.GetEventName() == "Goal") {
347+
int tmpCounter = 0;
348+
int lastGoalScoredBy = receiver.GetTeamNum();
284349

350+
if (lastGoalScoredBy <= 1) {
285351

352+
if (lastGoalScoredBy == haplayersTeam2) {
353+
354+
LOG("Your team scored");
355+
}
356+
357+
if (lastGoalScoredBy != haplayersTeam2) {
358+
359+
LOG("Other team scored");
360+
}
361+
362+
}
363+
364+
365+
366+
LOG("Using Goals Hook", lastGoalScoredBy);
367+
}
286368
if (statEvent.GetEventName() == "Demolish") {
287369

288370
CVarWrapper demosEnabledCvar = cvarManager->getCvar("demos_enabled");
@@ -301,6 +383,7 @@ void RocketLeagueAssistant::DemosHook(void* params)
301383
// Compare the primary player to the victim
302384
if (playerPRI.memory_address != victim.memory_address) {
303385

386+
LOG("Using Demos Hook");
304387
SendCommands(reqUrlDemosString);
305388

306389

@@ -317,11 +400,11 @@ void RocketLeagueAssistant::FreeplayHook()
317400

318401
if (!enabled) { LOG("RocketLeagueAssistant is not enabled"); return; }
319402

320-
//Check if it is a replay (this is may be temporary to minimize log flooding on Home Assistant)
403+
////Check if it is a replay (this is may be temporary to minimize log flooding on Home Assistant)
321404

322-
CVarWrapper replayCvar = cvarManager->getCvar("isReplay");
323-
bool isReplay = replayCvar.getBoolValue();
324-
if (!isReplay) { Log("It's a replay"); return; }
405+
//CVarWrapper replayCvar = cvarManager->getCvar("isReplay");
406+
//bool isReplay = replayCvar.getBoolValue();
407+
//if (!isReplay) { Log("It's a replay"); return; }
325408

326409
//May be redundant, but good to check
327410

@@ -363,35 +446,35 @@ void RocketLeagueAssistant::MainMenuHook(std::string name)
363446

364447
}
365448

366-
void RocketLeagueAssistant::GoalScoredHook(std::string name)
367-
{
368-
//Check if plugin is enabled
369-
CVarWrapper enableCvar = cvarManager->getCvar("ha_enabled");
370-
bool enabled = enableCvar.getBoolValue();
371-
372-
if (!enabled) { LOG("RocketLeagueAssistant is not enabled"); return; }
373-
374-
375-
//See if Goal Scored hook is enabled
376-
CVarWrapper goalScoredEnabledCvar = cvarManager->getCvar("goalScored_enabled");
377-
bool goalScoredEnabled = goalScoredEnabledCvar.getBoolValue();
378-
if (!goalScoredEnabled) { LOG("goalScored Automations are not enabled"); return; }
379-
380-
//See if it is a replay
381-
CVarWrapper replayCvar = cvarManager->getCvar("isReplay");
382-
bool isReplay = replayCvar.getBoolValue();
383-
if (isReplay == true) { Log("It's a replay"); return; }
384-
385-
//Get Goal Scored automation url, transform, and convert to string
386-
CVarWrapper hagoalScoredCVar = cvarManager->getCvar("ha_goalScored");
387-
if (!hagoalScoredCVar) { return; }
388-
auto reqUrlgoalScored = cvarManager->getCvar("ha_goalScored");
389-
std::string reqUrlgoalScoredString = reqUrlgoalScored.getStringValue();
390-
391-
LOG("Using Goal Scored Hook");
392-
SendCommands(reqUrlgoalScoredString);
393-
394-
}
449+
//void RocketLeagueAssistant::GoalScoredHook(std::string name)
450+
//{
451+
// //Check if plugin is enabled
452+
// CVarWrapper enableCvar = cvarManager->getCvar("ha_enabled");
453+
// bool enabled = enableCvar.getBoolValue();
454+
//
455+
// if (!enabled) { LOG("RocketLeagueAssistant is not enabled"); return; }
456+
//
457+
//
458+
// //See if Goal Scored hook is enabled
459+
// CVarWrapper goalScoredEnabledCvar = cvarManager->getCvar("goalScored_enabled");
460+
// bool goalScoredEnabled = goalScoredEnabledCvar.getBoolValue();
461+
// if (!goalScoredEnabled) { LOG("goalScored Automations are not enabled"); return; }
462+
//
463+
// //See if it is a replay
464+
// CVarWrapper replayCvar = cvarManager->getCvar("isReplay");
465+
// bool isReplay = replayCvar.getBoolValue();
466+
// if (isReplay == true) { Log("It's a replay"); return; }
467+
//
468+
// //Get Goal Scored automation url, transform, and convert to string
469+
// CVarWrapper hagoalScoredCVar = cvarManager->getCvar("ha_goalScored");
470+
// if (!hagoalScoredCVar) { return; }
471+
// auto reqUrlgoalScored = cvarManager->getCvar("ha_goalScored");
472+
// std::string reqUrlgoalScoredString = reqUrlgoalScored.getStringValue();
473+
//
474+
// LOG("Using Goal Scored Hook");
475+
// SendCommands(reqUrlgoalScoredString);
476+
//
477+
//}
395478

396479
void RocketLeagueAssistant::OvertimeHook(std::string name)
397480
{

RocketLeagueAssistant/RocketLeagueAssistant.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ class RocketLeagueAssistant: public BakkesMod::Plugin::BakkesModPlugin, public B
2222
void LoadHooks();
2323
void LoadTeams(std::string name);
2424
void ConvertLinearColor(float red, float green, float blue);
25-
void DemosHook(void* params);
25+
void StatsHook(void* params);
2626
void FreeplayHook();
2727
void MainMenuHook(std::string name);
2828
void OvertimeHook(std::string name);
29-
void GoalScoredHook(std::string name);
29+
//void GoalScoredHook(std::string name);
3030
void ExitHook(std::string name);
3131
void Replay(std::string name);
3232
void NotReplay(std::string name);

0 commit comments

Comments
 (0)