
if (!strcmp(FunctionName, "Function avaGame.avaGameViewportClient.PostRender"))
{
UGameViewportClient* viewport = (UGameViewportClient*)pCallObject;
Logf("viewport = (UGameViewportClient*)pCallObject\n");
if (viewport)
{
UGameViewportClient_eventPostRender_Parms* parameters = (UGameViewportClient_eventPostRender_Parms*)pParms;
Logf("parameters = (UGameViewportClient_eventPostRender_Parms*)pParms\n");
if (parameters)
{
// PostRender(parameters->Canvas); // when do this game crashed
Logf("//PostRender(parameters->Canvas); // if don't do postRender ,logf success,and game not crash
}
}
}
void PostRender ( UCanvas* pCanvas ) //Hooked postrender, draw stuff here!
{
if (pCanvas)
{
Logf("=In the DrawCrossHair=");
DrawCossHair(pCanvas); // Crash here
}
}
void DrawCossHair(UCanvas* pCanvas)
{
Logf("=In CrossHair=\n");
FColor Green = MakeColor(0,255,0,255);
Logf("=Ready Draw2DLine=\n");
pCanvas->UCanvas::Draw2DLine(200, 200, 400, 400, Green);//Error
Logf("=After Draw2DLine=\n");
// pCanvas->Draw2DLine(pCanvas->ClipX/2 ,pCanvas->ClipY/2 -10, pCanvas->ClipX/2 ,pCanvas->ClipY/2 +10,Green);// Crashed Here
Logf("=End CrossHair=\n");
}
need master for help, so =new toolkit::VMTHook(obj)= =Hook->GetMethod<tProcessEvent>(59) = =HookMethod(&hkProcessEvent, 59= <<<<<<<<<<Function Engine.GameViewportClient.Tick>>>>>>>> <<<<<<<<<<Function avaGame.avaGameViewportClient.LayoutPlayers>>>>>>>> <<<<<<<<<<Function Engine.GameViewportClient.GetSubtitleRegion>>>>>>>> <<<<<<<<<<Function avaGame.avaGameViewportClient.PostRender>>>>>>>> viewport = (UGameViewportClient*)pCallObject parameters = (UGameViewportClient_eventPostRender_Parms*)pParms //PostRender(parameters->Canvas); // call a hooked postrender method <<<<<<<<<<Function Engine.GameViewportClient.Tick>>>>>>>> <<<<<<<<<<Function avaGame.avaGameViewportClient.LayoutPlayers>>>>>>>> <<<<<<<<<<Function Engine.GameViewportClient.GetSubtitleRegion>>>>>>>> <<<<<<<<<<Function avaGame.avaGameViewportClient.PostRender>>>>>>>> viewport = (UGameViewportClient*)pCallObject parameters = (UGameViewportClient_eventPostRender_Parms*)pParms //PostRender(parameters->Canvas); // call a hooked postrender method <<<<<<<<<<Function Engine.GameViewportClient.Tick>>>>>>>> <<<<<<<<<<Function avaGame.avaGameViewportClient.LayoutPlayers>>>>>>>> <<<<<<<<<<Function Engine.GameViewportClient.GetSubtitleRegion>>>>>>>> <<<<<<<<<<Function avaGame.avaGameViewportClient.PostRender>>>>>>>> viewport = (UGameViewportClient*)pCallObject parameters = (UGameViewportClient_eventPostRender_Parms*)pParms //PostRender(parameters->Canvas); // call a hooked postrender method <<<<<<<<<<Function Engine.GameViewportClient.Tick>>>>>>>> <<<<<<<<<<Function avaGame.avaGameViewportClient.LayoutPlayers>>>>>>>> <<<<<<<<<<Function Engine.GameViewportClient.GetSubtitleRegion>>>>>>>> <<<<<<<<<<Function avaGame.avaGameViewportClient.PostRender>>>>>>>>
In CrossHair= =Ready Draw2DLine=

raw2DLine(200, 200, 400, 400, Green);//Errorvoid DrawCossHair(UCanvas* pCanvas)
{
Logf("=In CrossHair=\n");
FColor Green = MakeColor(0,255,0,255);
Logf("=Ready Draw2DLine=\n");
pCanvas->UCanvas::Draw2DLine(200, 200, 400, 400, Green);//Error
Logf("=After Draw2DLine=\n");
// pCanvas->Draw2DLine(pCanvas->ClipX/2 ,pCanvas->ClipY/2 -10, pCanvas->ClipX/2 ,pCanvas->ClipY/2 +10,Green);// Crashed Here
Logf("=End CrossHair=\n");
}
void DrawCossHair(UCanvas* pCanvas)
{
Logf("=In CrossHair=\n");
FColor Green = MakeColor(0,255,0,255);
Logf("=Ready Draw2DLine=\n");
pCanvas->Draw2DLine(200, 200, 400, 400, Green);
Logf("=After Draw2DLine=\n");
// pCanvas->Draw2DLine(pCanvas->ClipX/2 ,pCanvas->ClipY/2 -10, pCanvas->ClipX/2 ,pCanvas->ClipY/2 +10,Green);
Logf("=End CrossHair=\n");
}