From 52ff202e5ff0799dfd217b315d49be998d6eafaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valdir=20da=20Costa=20J=C3=BAnior?= Date: Sat, 7 Nov 2020 19:22:32 -0300 Subject: [PATCH] v1.0.2 --- CLEOPlus/CLEOPlus.cpp | 9 +++++---- CLEOPlus/CLEOPlus.vcxproj | 6 +++--- CLEOPlus/Drawing.cpp | 4 ++-- CLEOPlus/Misc.cpp | 8 +++++--- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/CLEOPlus/CLEOPlus.cpp b/CLEOPlus/CLEOPlus.cpp index fb66dff..607a802 100644 --- a/CLEOPlus/CLEOPlus.cpp +++ b/CLEOPlus/CLEOPlus.cpp @@ -78,12 +78,12 @@ CdeclEvent , PRIORITY_BEFORE, ArgPickNone, void()> ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CPed*) > pedAfterSetModelIndex; ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CVehicle*)> vehiclePreRenderEvent; ThiscallEvent , PRIORITY_AFTER, ArgPickN, void(CVehicle*)> vehicleAfterCtor; -ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void()> drawAfterFade; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> drawAfterFade; CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> onMenu; CdeclEvent , PRIORITY_BEFORE, ArgPickNone, void()> beforeGameProcess; ThiscallEvent , PRIORITY_BEFORE, ArgPickNone, void(void*)> afterGameProcess; -CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> beforeHud; -CdeclEvent , PRIORITY_BEFORE, ArgPickNone, void()> afterHud; +CdeclEvent , PRIORITY_AFTER, ArgPickNone, void()> beforeHud; +ThiscallEvent , PRIORITY_AFTER, ArgPickNone, void(void*)> afterHud; void CacheOnePedTask(CPed *ped, PedExtended &xdata, int &activeTaskIndex, CTask *task, bool isSecondary); void ClearScriptLists(); @@ -444,7 +444,7 @@ class CLEOPlus return; } - Events::initRwEvent +=[] + Events::initRwEvent.after +=[] { if (initialized) return; @@ -1340,6 +1340,7 @@ class CLEOPlus UpdateKeyPresses(); // It's better to update all keys and buttons after all game processing, to make it compatible with script events }; + CLEO_AddScriptDeleteDelegate(ScriptDeleteEvent); } diff --git a/CLEOPlus/CLEOPlus.vcxproj b/CLEOPlus/CLEOPlus.vcxproj index 71bd663..5f85c32 100644 --- a/CLEOPlus/CLEOPlus.vcxproj +++ b/CLEOPlus/CLEOPlus.vcxproj @@ -164,13 +164,13 @@ MultiThreadedDebug $(PLUGIN_SDK_DIR)\plugin_sa\;$(PLUGIN_SDK_DIR)\plugin_sa\game_sa\;$(PLUGIN_SDK_DIR)\shared\;$(PLUGIN_SDK_DIR)\shared\game\;$(CLEO_SDK_SA_DIR)\;%(AdditionalIncludeDirectories) _DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NON_CONFORMING_SWPRINTFS;GTASA;GTAGAME_NAME="San Andreas";GTAGAME_ABBR="SA";GTAGAME_ABBRLOW="sa";GTAGAME_PROTAGONISTNAME="CJ";GTAGAME_CITYNAME="San Andreas";_LA_SUPPORT;PLUGIN_SGV_10US;%(PreprocessorDefinitions) - Default + stdcpp17 Debug Default - $(PLUGIN_SDK_DIR)\output\lib\;%(AdditionalLibraryDirectories) - plugin_d.lib;%(AdditionalDependencies) + $(PLUGIN_SDK_DIR)\output\lib\;$(CLEO_SDK_SA_DIR)\;%(AdditionalLibraryDirectories) + plugin_d.lib;CLEO.lib;%(AdditionalDependencies) Windows diff --git a/CLEOPlus/Drawing.cpp b/CLEOPlus/Drawing.cpp index 287592b..c42d2fb 100644 --- a/CLEOPlus/Drawing.cpp +++ b/CLEOPlus/Drawing.cpp @@ -147,7 +147,7 @@ void DrawMySprites(vector &spritesList) RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATESHADEMODE, (void*)1); //D3DSHADE_FLAT RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)1); //rwRENDERSTATETEXTURERASTER RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATEZWRITEENABLE, 0); - RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, 0); + RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)1); RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void*)3); //D3DTADDRESS_CLAMP RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATETEXTUREPERSPECTIVE, 0); RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATEALPHATESTFUNCTION, (void*)5); @@ -160,7 +160,7 @@ void DrawMySprites(vector &spritesList) RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)6u); RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)2u); RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATESHADEMODE, (void*)1); //D3DSHADE_FLAT - RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, 0); + RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)1); RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void*)2); //D3DTADDRESS_CLAMP RwEngineInstance->dOpenDevice.fpRenderStateSet(rwRENDERSTATETEXTUREPERSPECTIVE, 0); } diff --git a/CLEOPlus/Misc.cpp b/CLEOPlus/Misc.cpp index 3003783..8ec78da 100644 --- a/CLEOPlus/Misc.cpp +++ b/CLEOPlus/Misc.cpp @@ -1326,21 +1326,23 @@ OpcodeResult WINAPI GENERATE_RANDOM_INT_IN_RANGE_WITH_SEED(CScriptThread* thread int seed = CLEO_GetIntOpcodeParam(thread); int min = CLEO_GetIntOpcodeParam(thread); int max = CLEO_GetIntOpcodeParam(thread) - 1; + unsigned int resetSeed = rand() / 2; srand(seed); CLEO_SetIntOpcodeParam(thread, Random(min, max)); - srand(time(0)); // reset + srand((time(0) / 2) + resetSeed); // reset return OR_CONTINUE; } - + // 0xEBD=4,generate_random_float_in_range_with_seed %1d% min %2d% max %3d% store_to %4d% OpcodeResult WINAPI GENERATE_RANDOM_FLOAT_IN_RANGE_WITH_SEED(CScriptThread* thread) { int seed = CLEO_GetIntOpcodeParam(thread); float min = CLEO_GetFloatOpcodeParam(thread); float max = CLEO_GetFloatOpcodeParam(thread); + unsigned int resetSeed = rand() / 2; srand(seed); CLEO_SetFloatOpcodeParam(thread, fmaf((float)rand() / RAND_MAX, max - min, min)); - srand(time(0)); // reset + srand((time(0) / 2) + resetSeed); // reset return OR_CONTINUE; }