@@ -31,12 +31,14 @@ extern "C" JNIEXPORT jobjectArray JNICALL
3131Java_com_android_support_Menu_getFeatureList (JNIEnv *env, jobject thiz) {
3232 std::string featList[] = {
3333 " Toggle:Currencies" ,
34+ " Toggle:Promote Progress:true" ,
3435 " Seekbar:Reward:1_10" ,
3536 };
3637 return toJobjectArray (env, featList, std::size (featList));
3738}
3839
3940bool currencies = false ;
41+ bool promote = true ;
4042int reward = 1 ;
4143extern " C" JNIEXPORT void JNICALL
4244Java_com_android_support_Menu_valueChange (
@@ -53,6 +55,10 @@ Java_com_android_support_Menu_valueChange(
5355 break ;
5456 }
5557 case 1 : {
58+ promote = toJboolean (env, value);
59+ break ;
60+ }
61+ case 2 : {
5662 reward = toJint (env, value);
5763 break ;
5864 }
@@ -62,24 +68,34 @@ Java_com_android_support_Menu_valueChange(
6268}
6369
6470
65- bool (*old_CurrenciesTryAdd )(void *instance, int type, int amount, void *param);
71+ bool (*old_TryAdd )(void *instance, int type, int amount, void *param);
6672
67- bool CurrenciesTryAdd (void *instance, int type, int amount, void *param) {
68- return old_CurrenciesTryAdd (instance, type, amount * reward, param);
73+ bool new_TryAdd (void *instance, int type, int amount, void *param) {
74+ return old_TryAdd (instance, type, amount * reward, param);
6975}
7076
71- bool (*old_CurrenciesSpend )(void *instance, int type, int value, void *param);
77+ bool (*old_Spend )(void *instance, int type, int value, void *param);
7278
73- bool CurrenciesSpend (void *instance, int type, int value, void *param) {
79+ bool new_Spend (void *instance, int type, int value, void *param) {
7480 if (instance != nullptr ) {
7581 if (currencies) {
76- CurrenciesTryAdd (instance, type, value, param);
82+ new_TryAdd (instance, type, value, param);
7783 return true ;
7884 }
7985 }
80- return old_CurrenciesSpend (instance, type, value, param);
86+ return old_Spend (instance, type, value, param);
8187}
8288
89+ void (*old_Init)(void *instance, int level, int progress);
90+
91+ void new_Init (void *instance, int level, int progress) {
92+ if (instance != nullptr ) {
93+ if (promote) {
94+ progress = 1000 ;
95+ }
96+ }
97+ return old_Init (instance, level, progress);
98+ }
8399
84100// Example Game: [Horny Villa](https://www.nutaku.net/games/horny-villa/)
85101void OnLoaded () {
@@ -88,6 +104,10 @@ void OnLoaded() {
88104 auto Currencies = BNM::Class (" StripClub.Model" , " Currencies" , AssemblyCSharp);
89105 auto Spend = Currencies.GetMethod (" Spend" , 3 );
90106 auto TryAdd = Currencies.GetMethod (" TryAdd" , 3 );
91- BNM::BasicHook (Spend, CurrenciesSpend, old_CurrenciesSpend);
92- BNM::BasicHook (TryAdd, CurrenciesTryAdd, old_CurrenciesTryAdd);
107+ auto Promote = BNM::Class (" StripClub.Model.Cards" , " Promote" , AssemblyCSharp);
108+ auto Init = Promote.GetMethod (" Init" );
109+
110+ BNM::BasicHook (Spend, new_Spend, old_Spend);
111+ BNM::BasicHook (TryAdd, new_TryAdd, old_TryAdd);
112+ BNM::BasicHook (Init, new_Init, old_Init);
93113}
0 commit comments