tanduk.setan Posted August 28, 2017 Share Posted August 28, 2017 There is this mod: http://www.gtainside.com/en/sanandreas/mods/96217-swat-bodyguard-for-android It is a script that enables bodyguards in the form of a S.W.A.T team. I wanted a mod similar to this, but with FBI agents. I would enjoy the protection of FBI agents in the game. It would fit the scene when I do missions for Toreno. http://vignette3.wikia.nocookie.net/gtawiki/images/c/c5/FBIAgent-GTASA-Badlands.png/revision/latest?cb=20130210024218 here. https://mega.nz/#!0jAVGKbB!TwuuiY7Ho9zqm9b9m4kD_K5uIAicn4HazL1719tR0WA Link to comment Share on other sites More sharing options...
Osaru2846 Posted August 28, 2017 Share Posted August 28, 2017 (edited) There is this mod: http://www.gtainside.com/en/sanandreas/mods/96217-swat-bodyguard-for-android It is a script that enables bodyguards in the form of a S.W.A.T team. I wanted a mod similar to this, but with FBI agents. I would enjoy the protection of FBI agents in the game. It would fit the scene when I do missions for Toreno. http://vignette3.wikia.nocookie.net/gtawiki/images/c/c5/FBIAgent-GTASA-Badlands.png/revision/latest?cb=20130210024218 here. https://mega.nz/#!0jAVGKbB]https://mega.nz/#!0jAVGKbB!TwuuiY7Ho9zqm9b9m4kD_K5uIAicn4HazL1719tR0WAThank you so much. I was wondering if you could please change the weapons that 2 of the FBI agents are holding. All of the FBI agents have M4s.Can you please modify the script and make two of agents have to MP5s while only one of them has an M4? First FBI agent Second FBI agent Third FBI agent It would be like a team where weapon classes are combined to complete an objective. It would be realistic. I hope I am not causing inconvenience. Edited August 28, 2017 by Osaru2846 Link to comment Share on other sites More sharing options...
tanduk.setan Posted August 28, 2017 Share Posted August 28, 2017 There is this mod: http://www.gtainside.com/en/sanandreas/mods/96217-swat-bodyguard-for-android It is a script that enables bodyguards in the form of a S.W.A.T team. I wanted a mod similar to this, but with FBI agents. I would enjoy the protection of FBI agents in the game. It would fit the scene when I do missions for Toreno. http://vignette3.wikia.nocookie.net/gtawiki/images/c/c5/FBIAgent-GTASA-Badlands.png/revision/latest?cb=20130210024218 here. https://mega.nz/#!0jAVGKbB]https://mega.nz/#!0jAVGKbB!TwuuiY7Ho9zqm9b9m4kD_K5uIAicn4HazL1719tR0WA Thank you so much. I was wondering if you could please change the weapons that 2 of the FBI agents are holding. All of the FBI agents have M4s.Can you please modify the script and make two of agents have to MP5s while only one of them has an M4? First FBI agent Second FBI agent Third FBI agent It would be like a team where weapon classes are combined to complete an objective. It would be realistic. I hope I am not causing inconvenience. not at all https://mega.nz/#!diAWyI7R!jGIvk9q0M4KTyygrap9HdvKUBYKCJkwyRjYRYibOcZA Link to comment Share on other sites More sharing options...
Osaru2846 Posted August 28, 2017 Share Posted August 28, 2017 (edited) There is this mod: http://www.gtainside.com/en/sanandreas/mods/96217-swat-bodyguard-for-android It is a script that enables bodyguards in the form of a S.W.A.T team. I wanted a mod similar to this, but with FBI agents. I would enjoy the protection of FBI agents in the game. It would fit the scene when I do missions for Toreno. http://vignette3.wikia.nocookie.net/gtawiki/images/c/c5/FBIAgent-GTASA-Badlands.png/revision/latest?cb=20130210024218 here. https://mega.nz/#!0jAVGKbB]https://mega.nz/#!0jAVGKbB!TwuuiY7Ho9zqm9b9m4kD_K5uIAicn4HazL1719tR0WA Thank you so much. I was wondering if you could please change the weapons that 2 of the FBI agents are holding. All of the FBI agents have M4s.Can you please modify the script and make two of agents have to MP5s while only one of them has an M4? First FBI agent Second FBI agent Third FBI agent It would be like a team where weapon classes are combined to complete an objective. It would be realistic. I hope I am not causing inconvenience. not at allhttps://mega.nz/#!diAWyI7R!jGIvk9q0M4KTyygrap9HdvKUBYKCJkwyRjYRYibOcZAThank you, but the FBI agent that has an M4 walks like a female. Was there an error in the script? I can manage if this error cannot be resolved. I appreciate your effort. Edited August 29, 2017 by Osaru2846 Link to comment Share on other sites More sharing options...
XMDS Posted August 29, 2017 Share Posted August 29, 2017 sorry for bad english. just found my old code, i decided edit a little bit, and make it open source, if you want, i will add more, but not cleo script(im now addicted to c++) please share https://mega.nz/#!4yBiwSIR!Rtj0EAzeygxVNbyLfCs0b-AKofPBDGlVTw1LahE-9MY you can do anything you like with this // by tanduk.setan// clang-format off#pragma GCC diagnostic push#pragma GCC diagnostic ignored "-Wcast-align"inline void*operator new(unsigned,void*t)noexcept{return t;}// address == char*class Class final{ typedef unsigned long size_t; static_assert(sizeof(size_t)==4);public: Class(void*ib) :_ib((char*)ib) ,_cleoBase([this]{ auto p=*(char**)(_ib+0x1D9448); if((size_t)p==0x5c08f843)asm volatile(".long 0xffffffff");//no way out p=(char*)(size_t(p-0x007E40)&~1UL); return p; }()) ,_gtaHandle(*(void**)(size_t(_cleoBase+0x015034)&~1UL)){ WriteMem<unsigned char>(0x5197BC,255);// taillight intensity WriteMem(0x5198A8,-96.f); WriteMem(0x5198A4,1.f);//flt_5198A4 DCFS 0.2 WriteMem(0x5198A0,350.f);//flt_5198A0 DCFS 150.0 mkHook(0x51975A,TaillightBrake,true).mkHook(0x519802,TaillightReverse,true); mkHook(Sym("_ZN6CRadar15LimitRadarPointER9CVector2D"),CRadar_LimitRadarPoint_entry,false,false); WriteMem(0x3DC6A4,0.075f).WriteMem(0x3DC7B4,0.055f).WriteMem(0x27FCBC,0.f).WriteMem(0x3DED84,0.f); textbox("all done!"); } Class(Class const&)=delete;//private: static Class&This(Class*p=nullptr){static Class*r{};if(p)r=p;return*r;}// auto assign=[this,&c](auto&f,auto const&o,bool t=true){auto const a{size_t((c?_cleoBase:_ib)+o)};f=(rmr_t<decltype(f)>)(t?a|1UL:a&~1UL);}; template<class F>F LinkFromCleo(F const&,size_t o,bool t=true){auto const a{size_t(_cleoBase+o)};return F(t?a|1UL:a&~1UL);} template<class F>F LinkFromGta (F const&,size_t o,bool t=true){auto const a{size_t(_ib+o)};return F(t?a|1UL:a&~1UL);}// auto assignsym=[this](auto&f,char const*s){f=(rmr_t<decltype(f)>)(Sym(s));}; template<class F>F LinkFromSym (F const&,char const*s){return F(Sym(s));} enum class eRv:int{ok=0,wrong_base}; template<class T>struct priv_rmr final{typedef T t;}; template<class T>struct priv_rmr<T&>final{typedef T t;}; template<class T>using rmr_t=typename priv_rmr<T>::t; template<class T>static T*EnsureARM (T*p){return(T*)(size_t(p)&~1UL);} template<class T>static T*EnsureThumb(T*p){return(T*)(size_t(p)| 1UL);} unsigned _unused1[[maybe_unused]][5];//+isInit char*const _ib; unsigned _gtaver[[maybe_unused]]; char*const _cleoBase; void*const _gtaHandle; char*(*const writeMem)(void*dst,void*src,size_t sz,bool unprotect){LinkFromCleo(writeMem,0x008324)}; int (*const mprotect)(void*addr,size_t len,int prot){LinkFromCleo(mprotect,0x015034,false)}; void*(*const dlsym)(void*handle,char const*name){LinkFromCleo(dlsym,0x004288,false)}; void*(*const encodebl)(void*from,void*to){LinkFromCleo(encodebl,0x0083FC)}; void*(*const encodebw)(void*from,void*to){LinkFromCleo(encodebw,0x0083C8)}; size_t* _fnPool{(decltype(_fnPool))EnsureARM(Sym("_Z18PerformanceWarningPKciS0_"))};// any unused fn will do(where direct branch can reach), prefer large fn struct{ void(*const SetHelpMessage)(char const*gxt,char const*text,bool quickMessage,bool permanent,bool addToBrief) =[this]{return This().LinkFromSym(SetHelpMessage,"_ZN4CHud14SetHelpMessageEPKcPtbbbj");}(); }CHud;// incomplete char*const gMobileMenu{(char*)Sym("gMobileMenu")};// incomplete float(*const atan2f)(float y,float x){LinkFromGta(atan2f,0x179288,false)}; float(*const sinf )(float x){LinkFromGta(sinf,0x179D70,false)}; float(*const cosf )(float x){LinkFromGta(cosf,0x179A44,false)}; void*Sym(char const*name)const{return dlsym(_gtaHandle,name);} template<class T,class D> Class&WriteMem(D const&dest,T const&src,bool ib=true,bool unprotect=true) {writeMem((void*)(((char*)dest)+size_t(ib?_ib:nullptr)),(void*)&src,sizeof(T),unprotect);return*this;} template<size_t n>Class&textbox(char const(&s)[n]){char c[n*2];AsciiToGxtChar(s,c);CHud.SetHelpMessage(nullptr,c,false,false,false);return*this;} /// assume diff is very large for direct branch to encode template<class F,class T> Class&mkHook(F const&from,T*to,bool link,bool ib=true,bool thumb=true){ // single thread only, no check for(;*_fnPool==*(size_t*)"SIGN";_fnPool+=4){} auto p=(size_t)to; if(thumb)p|= 1UL; else p&=~1UL; auto const f=(void*)((size_t(from)&~1UL)+size_t(ib?_ib:nullptr)); if(link)encodebl(f,_fnPool+1); else encodebw(f,_fnPool+1); writeMem(_fnPool++,(void*)"SIGN" "SIGN" "SIGN" "SIGN",4*4,true); *_fnPool++=0xc004f8df;//DFF804C0 ldr r12, asm_hook_dest ; == dynamic linker in android, i think *_fnPool++=0xbf004760;//6047 bx r12 //00BF nop //asm_hook_dest: *_fnPool++=p; //00000000 .long 0x0 return*this; } eRv start(void*ib)__attribute((noinline)){ This(this); ::new(this)Class(ib); return eRv::ok; } eRv cleo_entry(void*ib)__attribute((used)){ asm volatile(".long 0x66666666\n.long 0x66666666"); return start(ib); } static void TaillightBrake()__attribute((naked)){ asm( "ldr.w r2, [r5, #0x4A0] \n" "mov.w r1, #0x3F800000 \n" "cmp r1, r2 \n" "ite eq \n" "movteq.w r1, #0x3F12 \n" "movtne.w r1, #0x3EAA \n" "vmov s15, r1 \n" "ldr.w r2, [r5,#0x5A0] \n" "bx lr"); } static void TaillightReverse()__attribute((naked)){ asm( "vstr s15, [sp, #0x10] \n" "ldr.w r4, [r1, #0x49C] \n" "cmp r4, #0 \n" "ite pl \n" "movpl r3, #0 \n" "movmi r3, r2 \n" "mov r4, r3 \n" "str r3, [sp] \n" "bx lr" ); } class CVector2D_ final{ float x{},y{}; public: constexpr CVector2D_(){} };// incomplete static float CRadar_LimitRadarPoint_entry(char*CVector2D){return This().CRadar_LimitRadarPoint(CVector2D);} static float sqrtf(float f){float r;asm("vsqrt.f32 %0, %1":"=" "t"®:"t"(f));return r;} float CRadar_LimitRadarPoint(char*CVector2D){//(CVector2D&v){ // steal from dk22pac code void *v1; // [email protected] float v2; // [email protected] float result; // [email protected] float v5; // [email protected] float v6; // [email protected] float v7; // [email protected] short v8; // [email protected] float v9; // [email protected] float v10; // [email protected] float v11; // [email protected] float v12; // [sp+8h] [bp-8h]@3 if (gMobileMenu[108]) // MobileSettings::settings.drawRadarOrMap { v2 = *(float *)(CVector2D + 4) * *(float *)(CVector2D + 4) + *(float *)CVector2D * *(float *)CVector2D; return (float)sqrtf(v2); } v5 = *(float *)(CVector2D + 4) * *(float *)(CVector2D + 4) + *(float *)CVector2D * *(float *)CVector2D; v6 = sqrtf(v5); result = v6; v12 = v6; if (v6 > 1.0f) { if (*(float *)CVector2D > -1.0f && *(float *)CVector2D < 1.0f && *(float *)(CVector2D + 4) > -1.0f && *(float *)(CVector2D + 4) < 1.0f) { return 0.99f; } if (v12 <= 5.f/*mfConfRadarBlipMxDistFactor*/) v12 = 0.99f; v7 = *(float *)(CVector2D + 4); v7 = atan2f(v7, *(float *)CVector2D); v9 = v7; v10 = v9 * 57.295779513f; if (v10 > 45.0f || v10 <= -45.0f) { if (v10 > 45.0f && v10 <= 135.0f) { *(float *)CVector2D = cosf(v10 / 57.295779513f) * 1.4142135623f; *(float *)(CVector2D + 4) = 1.0f; return v12; } if (v10 <= 135.0f && v10 > -135.0f) { *(float *)CVector2D = cosf(v10 / 57.295779513f) * 1.4142135623f; *(float *)(CVector2D + 4) = -1.0f; return v12; } v11 = -1.0f; } else { v11 = 1.0f; } *(float *)CVector2D = v11; *(float *)(CVector2D + 4) = sinf(v10 / 57.295779513f) * 1.4142135623f; result = v12; } return result; } static char const*AsciiToGxtChar(char const*in,char*out){ //steal from gtasa code char v2; // [email protected] int v3; // [email protected] auto const r{out}; v2=*(char*)in; do{ *(short*)out=v2; out+=2; v3=*(char*)(in+++1); v2=(char)v3; }while(v3); *(short*)out=0; return r; } };#pragma GCC diagnostic pop // top {$CLEO .csa}/* by tanduk.setan --public domain--*/goto @start:_ZN11CTheScripts11ScriptSpaceEhex"_ZN11CTheScripts11ScriptSpaceE"00endconst m_var_pool [email protected] // prefix with number, so that sanny builder highlight this variable 0r [email protected] 1r [email protected] 2r [email protected] 3r [email protected] 4r [email protected] 5r [email protected] 6r [email protected] 7r [email protected] 8r [email protected] 9r [email protected] 10r [email protected] 11r [email protected] 12r [email protected] 13r [email protected] 14r [email protected] 15r [email protected] 16r [email protected] 17r [email protected] 18r [email protected] 19r [email protected] 20r [email protected] 21r [email protected] 22r [email protected] 23r [email protected] 24r [email protected] 25r [email protected] 26r [email protected] 27r [email protected] 28r [email protected] 29r [email protected] 30r [email protected] 0iIsInit $4([email protected],1i) 0iGTAImageBase $5([email protected],1i) 0iGTAVersion $6([email protected],1i)end// make sure that:// address is aligned by 4 (required for ARM)// address protection flag is rwx(read-write-execute):prepare_asm__30r_p__29r_pEnd__ret_26r_alignedAddress // super slow code eqi 27r 30r cbi 27r 0 cbi 27r 1 eqi 26r 27r repeat // ::memcpy(&r28,(void*)(((char*)r30)+(ib?pGTAImageBase:0)),size); eq_rm_s_ib 28r 30r 4 0 // if(protect)::mprotect((void*)(((char*)r27)+(ib?pGTAImageBase:0)),size,PROT_READ|PROT_WRITE|PROT_EXEC); // //^^ actually, address and size must aligned to page(most case 4096) boundary, this is just example // ::memcpy((void*)(((char*)r27)+(ib?pGTAImageBase:0)),&r28,size); wm_to_s_ib_p 27r 28r 4 0 1 30r += 4 27r += 4 until is_eqgri 30r 29rret// assume everything is valid:find_asm_entry_point__26r_p__ret_26r while true eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue ret endret:start// [email protected] = 0 // this is timer// while not is_pla_def $2// wait 0// [email protected] > 10000// jf continue// enth// end// [email protected] = 0 // while not is_act_def $3// wai 0// [email protected] > 10000// jf continue// enth// end// wai 0// remtb// wai 0 eqadrl 0r @var_pool cbi 0r 0 cbi 0r 1 eqadrl 1r @_ZN11CTheScripts11ScriptSpaceE // r1 = &_ZN11CTheScripts11ScriptSpaceE; eqadrf 1r 1r // r1 = ::dlsym(gtasa_so_handle,(char const*)r1); sui 0r 1r //also remove image base 0r /= 4 eqi m_var_pool 0r eqib 0iGTAImageBase eqver 0iGTAVersion 0iGTAVersion == 13 jf @ret eqadrl 30r @asm_base_begin eqadrl 29r @asm_base_end sub @prepare_asm__30r_p__29r_pEnd__ret_26r_alignedAddress sub @find_asm_entry_point__26r_p__ret_26r eqadrl 0r @var_pool cbi 0r 0 cbi 0r 1 regto 0 0r // mov R0(arm register), r0(cleo register) regto 1 0iGTAImageBase sbi 26r 0 // switch to thumb mode// wait 0 callf 26r // r0=(decltype(r0))(((int(*)(u32*))r26)((u32*)r0)); eqreg 0r 0 while 0r <> 0 showth_gxt_num_time_flag 'NUMBER' 0r 10000 1 wait 1000 end while true wait 0x70ff00ff end:retret :var_poolhex// variable pool, workaround for limited cleo register, and to communicate with asm// static u32 pVarPool[128]; 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000//-00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 end :asm_base_beginhex// padding, incase code not aligned, because to align code, we must move forward (clear bit 0 1)00000000000000000000000000000000 endhexD5F8A0244FF07E5191420CBFC3F61271C3F6AA6107EE901AD5F8A025704700BFCDED047AD1F89C44002C54BF002313461C460093704700BF38B56C4B2DED028B7B441D682B6C93F86C30002B63D1D0ED007AF7EE006A27EEA78A90ED017AA7EE078AB1EEC88AB4EEE68AF1EE10FA4DDDBFEE006AF4EEC67AF1EE10FA05DDF4EEE67AF1EE10FA00F18280B1EE046A0446DFED4F6A17EE901AB4EE468A17EE100A6B6CF1EE10FA98BFB0EE668A984707EE900A9FED487ADFED486A67EE877AF4EEE67AF1EE10FA35DDDFED446AF4EEE67AF1EE10FA6AD99FED417AF4EEC77AF1EE10FA38D90023CBF680739FED3A7A2360C7EE876AAB6C16EE900A984707EE100ADFED377A67EE277AC4ED017A18EE100ABDEC028B38BD90ED008AD0ED017A28EE088AA7EEA78AB1EEC88A18EE100ABDEC028B38BD9FED2B7AF4EEC77AF1EE10FA88BF4FF07E53D0D89FED247AF4EEC77AF1EE10FAC6D89FED247AF4EEC77AF1EE10FABFDD9FED1B7AEB6CC7EE876A16EE900A984707EE100ADFED197A0023CBF68073636067EE277AC4ED007ABEE7B4EEC67AF1EE10FA7FF778AFB4EEE67AF1EE10FA7FF572AF9FED0A8AAFE7C7EE876AEB6C16EE900A984707EE100ADFED087A4FF07E53636067EE277AC4ED007A9DE7A4707D3FE12E65420000344200000743F304B53F000034C2000007C3A0150000C64B4FF643022DE9F04349F248457B448BB0C0F21D050446186041614B59C5F60842934200F07681BD49A3F5FC43403B0AAE23F00103E36103F5A832794403F50347506B3432A2623D4620623A46FC352437C83203F5854342F001020833626347F00107676245F00105256349F28825E362C0F217059847AA4BAB497B4420F001001B68A063DA6A186A79449047A749E063E36A7944206A9847D4F814E049F67051C0F2170149F64422C0F217024FF0FF0C7544012371447244206449F2BC7025F00107C0F2510021F0010522F001011A4606F814CD704467640027A564E1643146656AC4F2AF37A84762690025CCF2C02549F6A800C0F2510031461044012305950422656AA847626949F6A400C0F251004FF07E551044314605950123656A0422A84760693146656A0123059700F5A300042200F5C550A847A16B44F65313C4F647630A689A4204D151F8103F9342FBD0A163636949F25A70C0F2510004311844236B724D9847A06B0123714910227D44071D794445F00105A763676AB847A36B44F65310C4F647604FF6DF0EDA6844F26077CCF2040E03F10C018242CBF60077C3F800E05F60A1639D6004D151F8103F9342FBD0A163636949F60200C0F2510004311844236B5B4D9847A06B01235A4910227D44071D794445F00105A763676AB847A36B4FF6DF01CCF2040144F26072196003F10C005149CBF600725A607944A063E26A206A9D609047A16B44F65313C4F647630D689D4207D101F11003194653F8102BAA42FAD0A163636B043120F001004FF00008DFF808919847A06B012341491022F944071D79446125A763676AB847A16B44F26073606949F69A17CBF600734FF6DF0ECCF2040E49F001024B6000F57710C3F6995701F10C03C1F800E000F2A460A36301238A60042205973146676AB84760690AA9676A44F2AE72C3F6615200F5771041F8182D0123042200F2B470B84762690AA9676A4FF6BC40C0F22700012341F81C8D10440422B84767690AA94EF684500123C0F23D000422384441F8208D676AB847184A33467A4423F8025B12F8015F002DF9D11D80284600953146E46B2B462A46A04728460BB0BDE8F083FFFFFFFF86E600BFE21300002803000074130000FA020000140300009DFCFFFF4002000059FCFFFFDC010000C8010000FFFBFFFF6A0100006A0000006666666666666666FFF752BE616C6C20646F6E65210000005F5A3138506572666F726D616E63655761726E696E67504B636953305F0000005F5A4E3443487564313453657448656C704D65737361676545504B6350746262626A0000674D6F62696C654D656E75005349474E5349474E5349474E5349474E000000005F5A4E3643526164617231354C696D69745261646172506F696E7445523943566563746F72324400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78960000789600007C960000endhex66666666 66666666ff20 // mov r0, #ff 7047 // bx lrc046 // nopend:asm_base_endhex // pad00000000000000000000000000000000end Do you know how to encrypt cleo? Or how to crack encryption? How does android use API functions to configure ini files? Link to comment Share on other sites More sharing options...
Osaru2846 Posted August 29, 2017 Share Posted August 29, 2017 There is this mod: http://www.gtainside.com/en/sanandreas/mods/96217-swat-bodyguard-for-android It is a script that enables bodyguards in the form of a S.W.A.T team. I wanted a mod similar to this, but with FBI agents. I would enjoy the protection of FBI agents in the game. It would fit the scene when I do missions for Toreno. http://vignette3.wikia.nocookie.net/gtawiki/images/c/c5/FBIAgent-GTASA-Badlands.png/revision/latest?cb=20130210024218 here. https://mega.nz/#!0jAVGKbB]https://mega.nz/#!0jAVGKbB!TwuuiY7Ho9zqm9b9m4kD_K5uIAicn4HazL1719tR0WA Thank you so much. I was wondering if you could please change the weapons that 2 of the FBI agents are holding. All of the FBI agents have M4s.Can you please modify the script and make two of agents have to MP5s while only one of them has an M4? First FBI agent Second FBI agent Third FBI agent It would be like a team where weapon classes are combined to complete an objective. It would be realistic. I hope I am not causing inconvenience. not at allhttps://mega.nz/#!diAWyI7R!jGIvk9q0M4KTyygrap9HdvKUBYKCJkwyRjYRYibOcZA Thank you, but the FBI agent that has an M4 walks like a female. Was there an error in the script? I can manage if this error cannot be resolved. I appreciate your effort. Observe the left side of the images below Link to comment Share on other sites More sharing options...
tanduk.setan Posted August 29, 2017 Share Posted August 29, 2017 sorry for bad english. just found my old code, i decided edit a little bit, and make it open source, if you want, i will add more, but not cleo script(im now addicted to c++) please share https://mega.nz/#!4yBiwSIR!Rtj0EAzeygxVNbyLfCs0b-AKofPBDGlVTw1LahE-9MY you can do anything you like with this // by tanduk.setan// clang-format off#pragma GCC diagnostic push#pragma GCC diagnostic ignored "-Wcast-align"inline void*operator new(unsigned,void*t)noexcept{return t;}// address == char*class Class final{ typedef unsigned long size_t; static_assert(sizeof(size_t)==4);public: Class(void*ib) :_ib((char*)ib) ,_cleoBase([this]{ auto p=*(char**)(_ib+0x1D9448); if((size_t)p==0x5c08f843)asm volatile(".long 0xffffffff");//no way out p=(char*)(size_t(p-0x007E40)&~1UL); return p; }()) ,_gtaHandle(*(void**)(size_t(_cleoBase+0x015034)&~1UL)){ WriteMem<unsigned char>(0x5197BC,255);// taillight intensity WriteMem(0x5198A8,-96.f); WriteMem(0x5198A4,1.f);//flt_5198A4 DCFS 0.2 WriteMem(0x5198A0,350.f);//flt_5198A0 DCFS 150.0 mkHook(0x51975A,TaillightBrake,true).mkHook(0x519802,TaillightReverse,true); mkHook(Sym("_ZN6CRadar15LimitRadarPointER9CVector2D"),CRadar_LimitRadarPoint_entry,false,false); WriteMem(0x3DC6A4,0.075f).WriteMem(0x3DC7B4,0.055f).WriteMem(0x27FCBC,0.f).WriteMem(0x3DED84,0.f); textbox("all done!"); } Class(Class const&)=delete;//private: static Class&This(Class*p=nullptr){static Class*r{};if(p)r=p;return*r;}// auto assign=[this,&c](auto&f,auto const&o,bool t=true){auto const a{size_t((c?_cleoBase:_ib)+o)};f=(rmr_t<decltype(f)>)(t?a|1UL:a&~1UL);}; template<class F>F LinkFromCleo(F const&,size_t o,bool t=true){auto const a{size_t(_cleoBase+o)};return F(t?a|1UL:a&~1UL);} template<class F>F LinkFromGta (F const&,size_t o,bool t=true){auto const a{size_t(_ib+o)};return F(t?a|1UL:a&~1UL);}// auto assignsym=[this](auto&f,char const*s){f=(rmr_t<decltype(f)>)(Sym(s));}; template<class F>F LinkFromSym (F const&,char const*s){return F(Sym(s));} enum class eRv:int{ok=0,wrong_base}; template<class T>struct priv_rmr final{typedef T t;}; template<class T>struct priv_rmr<T&>final{typedef T t;}; template<class T>using rmr_t=typename priv_rmr<T>::t; template<class T>static T*EnsureARM (T*p){return(T*)(size_t(p)&~1UL);} template<class T>static T*EnsureThumb(T*p){return(T*)(size_t(p)| 1UL);} unsigned _unused1[[maybe_unused]][5];//+isInit char*const _ib; unsigned _gtaver[[maybe_unused]]; char*const _cleoBase; void*const _gtaHandle; char*(*const writeMem)(void*dst,void*src,size_t sz,bool unprotect){LinkFromCleo(writeMem,0x008324)}; int (*const mprotect)(void*addr,size_t len,int prot){LinkFromCleo(mprotect,0x015034,false)}; void*(*const dlsym)(void*handle,char const*name){LinkFromCleo(dlsym,0x004288,false)}; void*(*const encodebl)(void*from,void*to){LinkFromCleo(encodebl,0x0083FC)}; void*(*const encodebw)(void*from,void*to){LinkFromCleo(encodebw,0x0083C8)}; size_t* _fnPool{(decltype(_fnPool))EnsureARM(Sym("_Z18PerformanceWarningPKciS0_"))};// any unused fn will do(where direct branch can reach), prefer large fn struct{ void(*const SetHelpMessage)(char const*gxt,char const*text,bool quickMessage,bool permanent,bool addToBrief) =[this]{return This().LinkFromSym(SetHelpMessage,"_ZN4CHud14SetHelpMessageEPKcPtbbbj");}(); }CHud;// incomplete char*const gMobileMenu{(char*)Sym("gMobileMenu")};// incomplete float(*const atan2f)(float y,float x){LinkFromGta(atan2f,0x179288,false)}; float(*const sinf )(float x){LinkFromGta(sinf,0x179D70,false)}; float(*const cosf )(float x){LinkFromGta(cosf,0x179A44,false)}; void*Sym(char const*name)const{return dlsym(_gtaHandle,name);} template<class T,class D> Class&WriteMem(D const&dest,T const&src,bool ib=true,bool unprotect=true) {writeMem((void*)(((char*)dest)+size_t(ib?_ib:nullptr)),(void*)&src,sizeof(T),unprotect);return*this;} template<size_t n>Class&textbox(char const(&s)[n]){char c[n*2];AsciiToGxtChar(s,c);CHud.SetHelpMessage(nullptr,c,false,false,false);return*this;} /// assume diff is very large for direct branch to encode template<class F,class T> Class&mkHook(F const&from,T*to,bool link,bool ib=true,bool thumb=true){ // single thread only, no check for(;*_fnPool==*(size_t*)"SIGN";_fnPool+=4){} auto p=(size_t)to; if(thumb)p|= 1UL; else p&=~1UL; auto const f=(void*)((size_t(from)&~1UL)+size_t(ib?_ib:nullptr)); if(link)encodebl(f,_fnPool+1); else encodebw(f,_fnPool+1); writeMem(_fnPool++,(void*)"SIGN" "SIGN" "SIGN" "SIGN",4*4,true); *_fnPool++=0xc004f8df;//DFF804C0 ldr r12, asm_hook_dest ; == dynamic linker in android, i think *_fnPool++=0xbf004760;//6047 bx r12 //00BF nop //asm_hook_dest: *_fnPool++=p; //00000000 .long 0x0 return*this; } eRv start(void*ib)__attribute((noinline)){ This(this); ::new(this)Class(ib); return eRv::ok; } eRv cleo_entry(void*ib)__attribute((used)){ asm volatile(".long 0x66666666\n.long 0x66666666"); return start(ib); } static void TaillightBrake()__attribute((naked)){ asm( "ldr.w r2, [r5, #0x4A0] \n" "mov.w r1, #0x3F800000 \n" "cmp r1, r2 \n" "ite eq \n" "movteq.w r1, #0x3F12 \n" "movtne.w r1, #0x3EAA \n" "vmov s15, r1 \n" "ldr.w r2, [r5,#0x5A0] \n" "bx lr"); } static void TaillightReverse()__attribute((naked)){ asm( "vstr s15, [sp, #0x10] \n" "ldr.w r4, [r1, #0x49C] \n" "cmp r4, #0 \n" "ite pl \n" "movpl r3, #0 \n" "movmi r3, r2 \n" "mov r4, r3 \n" "str r3, [sp] \n" "bx lr" ); } class CVector2D_ final{ float x{},y{}; public: constexpr CVector2D_(){} };// incomplete static float CRadar_LimitRadarPoint_entry(char*CVector2D){return This().CRadar_LimitRadarPoint(CVector2D);} static float sqrtf(float f){float r;asm("vsqrt.f32 %0, %1":"=" "t"®:"t"(f));return r;} float CRadar_LimitRadarPoint(char*CVector2D){//(CVector2D&v){ // steal from dk22pac code void *v1; // [email protected] float v2; // [email protected] float result; // [email protected] float v5; // [email protected] float v6; // [email protected] float v7; // [email protected] short v8; // [email protected] float v9; // [email protected] float v10; // [email protected] float v11; // [email protected] float v12; // [sp+8h] [bp-8h]@3 if (gMobileMenu[108]) // MobileSettings::settings.drawRadarOrMap { v2 = *(float *)(CVector2D + 4) * *(float *)(CVector2D + 4) + *(float *)CVector2D * *(float *)CVector2D; return (float)sqrtf(v2); } v5 = *(float *)(CVector2D + 4) * *(float *)(CVector2D + 4) + *(float *)CVector2D * *(float *)CVector2D; v6 = sqrtf(v5); result = v6; v12 = v6; if (v6 > 1.0f) { if (*(float *)CVector2D > -1.0f && *(float *)CVector2D < 1.0f && *(float *)(CVector2D + 4) > -1.0f && *(float *)(CVector2D + 4) < 1.0f) { return 0.99f; } if (v12 <= 5.f/*mfConfRadarBlipMxDistFactor*/) v12 = 0.99f; v7 = *(float *)(CVector2D + 4); v7 = atan2f(v7, *(float *)CVector2D); v9 = v7; v10 = v9 * 57.295779513f; if (v10 > 45.0f || v10 <= -45.0f) { if (v10 > 45.0f && v10 <= 135.0f) { *(float *)CVector2D = cosf(v10 / 57.295779513f) * 1.4142135623f; *(float *)(CVector2D + 4) = 1.0f; return v12; } if (v10 <= 135.0f && v10 > -135.0f) { *(float *)CVector2D = cosf(v10 / 57.295779513f) * 1.4142135623f; *(float *)(CVector2D + 4) = -1.0f; return v12; } v11 = -1.0f; } else { v11 = 1.0f; } *(float *)CVector2D = v11; *(float *)(CVector2D + 4) = sinf(v10 / 57.295779513f) * 1.4142135623f; result = v12; } return result; } static char const*AsciiToGxtChar(char const*in,char*out){ //steal from gtasa code char v2; // [email protected] int v3; // [email protected] auto const r{out}; v2=*(char*)in; do{ *(short*)out=v2; out+=2; v3=*(char*)(in+++1); v2=(char)v3; }while(v3); *(short*)out=0; return r; } };#pragma GCC diagnostic pop // top {$CLEO .csa}/* by tanduk.setan --public domain--*/goto @start:_ZN11CTheScripts11ScriptSpaceEhex"_ZN11CTheScripts11ScriptSpaceE"00endconst m_var_pool [email protected] // prefix with number, so that sanny builder highlight this variable 0r [email protected] 1r [email protected] 2r [email protected] 3r [email protected] 4r [email protected] 5r [email protected] 6r [email protected] 7r [email protected] 8r [email protected] 9r [email protected] 10r [email protected] 11r [email protected] 12r [email protected] 13r [email protected] 14r [email protected] 15r [email protected] 16r [email protected] 17r [email protected] 18r [email protected] 19r [email protected] 20r [email protected] 21r [email protected] 22r [email protected] 23r [email protected] 24r [email protected] 25r [email protected] 26r [email protected] 27r [email protected] 28r [email protected] 29r [email protected] 30r [email protected] 0iIsInit $4([email protected],1i) 0iGTAImageBase $5([email protected],1i) 0iGTAVersion $6([email protected],1i)end// make sure that:// address is aligned by 4 (required for ARM)// address protection flag is rwx(read-write-execute):prepare_asm__30r_p__29r_pEnd__ret_26r_alignedAddress // super slow code eqi 27r 30r cbi 27r 0 cbi 27r 1 eqi 26r 27r repeat // ::memcpy(&r28,(void*)(((char*)r30)+(ib?pGTAImageBase:0)),size); eq_rm_s_ib 28r 30r 4 0 // if(protect)::mprotect((void*)(((char*)r27)+(ib?pGTAImageBase:0)),size,PROT_READ|PROT_WRITE|PROT_EXEC); // //^^ actually, address and size must aligned to page(most case 4096) boundary, this is just example // ::memcpy((void*)(((char*)r27)+(ib?pGTAImageBase:0)),&r28,size); wm_to_s_ib_p 27r 28r 4 0 1 30r += 4 27r += 4 until is_eqgri 30r 29rret// assume everything is valid:find_asm_entry_point__26r_p__ret_26r while true eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue eq_rm_s_ib 28r 26r 1 0 26r += 1 28r == 0x66 jf continue ret endret:start// [email protected] = 0 // this is timer// while not is_pla_def $2// wait 0// [email protected] > 10000// jf continue// enth// end// [email protected] = 0 // while not is_act_def $3// wai 0// [email protected] > 10000// jf continue// enth// end// wai 0// remtb// wai 0 eqadrl 0r @var_pool cbi 0r 0 cbi 0r 1 eqadrl 1r @_ZN11CTheScripts11ScriptSpaceE // r1 = &_ZN11CTheScripts11ScriptSpaceE; eqadrf 1r 1r // r1 = ::dlsym(gtasa_so_handle,(char const*)r1); sui 0r 1r //also remove image base 0r /= 4 eqi m_var_pool 0r eqib 0iGTAImageBase eqver 0iGTAVersion 0iGTAVersion == 13 jf @ret eqadrl 30r @asm_base_begin eqadrl 29r @asm_base_end sub @prepare_asm__30r_p__29r_pEnd__ret_26r_alignedAddress sub @find_asm_entry_point__26r_p__ret_26r eqadrl 0r @var_pool cbi 0r 0 cbi 0r 1 regto 0 0r // mov R0(arm register), r0(cleo register) regto 1 0iGTAImageBase sbi 26r 0 // switch to thumb mode// wait 0 callf 26r // r0=(decltype(r0))(((int(*)(u32*))r26)((u32*)r0)); eqreg 0r 0 while 0r <> 0 showth_gxt_num_time_flag 'NUMBER' 0r 10000 1 wait 1000 end while true wait 0x70ff00ff end:retret :var_poolhex// variable pool, workaround for limited cleo register, and to communicate with asm// static u32 pVarPool[128]; 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000//-00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 end :asm_base_beginhex// padding, incase code not aligned, because to align code, we must move forward (clear bit 0 1)00000000000000000000000000000000 endhexD5F8A0244FF07E5191420CBFC3F61271C3F6AA6107EE901AD5F8A025704700BFCDED047AD1F89C44002C54BF002313461C460093704700BF38B56C4B2DED028B7B441D682B6C93F86C30002B63D1D0ED007AF7EE006A27EEA78A90ED017AA7EE078AB1EEC88AB4EEE68AF1EE10FA4DDDBFEE006AF4EEC67AF1EE10FA05DDF4EEE67AF1EE10FA00F18280B1EE046A0446DFED4F6A17EE901AB4EE468A17EE100A6B6CF1EE10FA98BFB0EE668A984707EE900A9FED487ADFED486A67EE877AF4EEE67AF1EE10FA35DDDFED446AF4EEE67AF1EE10FA6AD99FED417AF4EEC77AF1EE10FA38D90023CBF680739FED3A7A2360C7EE876AAB6C16EE900A984707EE100ADFED377A67EE277AC4ED017A18EE100ABDEC028B38BD90ED008AD0ED017A28EE088AA7EEA78AB1EEC88A18EE100ABDEC028B38BD9FED2B7AF4EEC77AF1EE10FA88BF4FF07E53D0D89FED247AF4EEC77AF1EE10FAC6D89FED247AF4EEC77AF1EE10FABFDD9FED1B7AEB6CC7EE876A16EE900A984707EE100ADFED197A0023CBF68073636067EE277AC4ED007ABEE7B4EEC67AF1EE10FA7FF778AFB4EEE67AF1EE10FA7FF572AF9FED0A8AAFE7C7EE876AEB6C16EE900A984707EE100ADFED087A4FF07E53636067EE277AC4ED007A9DE7A4707D3FE12E65420000344200000743F304B53F000034C2000007C3A0150000C64B4FF643022DE9F04349F248457B448BB0C0F21D050446186041614B59C5F60842934200F07681BD49A3F5FC43403B0AAE23F00103E36103F5A832794403F50347506B3432A2623D4620623A46FC352437C83203F5854342F001020833626347F00107676245F00105256349F28825E362C0F217059847AA4BAB497B4420F001001B68A063DA6A186A79449047A749E063E36A7944206A9847D4F814E049F67051C0F2170149F64422C0F217024FF0FF0C7544012371447244206449F2BC7025F00107C0F2510021F0010522F001011A4606F814CD704467640027A564E1643146656AC4F2AF37A84762690025CCF2C02549F6A800C0F2510031461044012305950422656AA847626949F6A400C0F251004FF07E551044314605950123656A0422A84760693146656A0123059700F5A300042200F5C550A847A16B44F65313C4F647630A689A4204D151F8103F9342FBD0A163636949F25A70C0F2510004311844236B724D9847A06B0123714910227D44071D794445F00105A763676AB847A36B44F65310C4F647604FF6DF0EDA6844F26077CCF2040E03F10C018242CBF60077C3F800E05F60A1639D6004D151F8103F9342FBD0A163636949F60200C0F2510004311844236B5B4D9847A06B01235A4910227D44071D794445F00105A763676AB847A36B4FF6DF01CCF2040144F26072196003F10C005149CBF600725A607944A063E26A206A9D609047A16B44F65313C4F647630D689D4207D101F11003194653F8102BAA42FAD0A163636B043120F001004FF00008DFF808919847A06B012341491022F944071D79446125A763676AB847A16B44F26073606949F69A17CBF600734FF6DF0ECCF2040E49F001024B6000F57710C3F6995701F10C03C1F800E000F2A460A36301238A60042205973146676AB84760690AA9676A44F2AE72C3F6615200F5771041F8182D0123042200F2B470B84762690AA9676A4FF6BC40C0F22700012341F81C8D10440422B84767690AA94EF684500123C0F23D000422384441F8208D676AB847184A33467A4423F8025B12F8015F002DF9D11D80284600953146E46B2B462A46A04728460BB0BDE8F083FFFFFFFF86E600BFE21300002803000074130000FA020000140300009DFCFFFF4002000059FCFFFFDC010000C8010000FFFBFFFF6A0100006A0000006666666666666666FFF752BE616C6C20646F6E65210000005F5A3138506572666F726D616E63655761726E696E67504B636953305F0000005F5A4E3443487564313453657448656C704D65737361676545504B6350746262626A0000674D6F62696C654D656E75005349474E5349474E5349474E5349474E000000005F5A4E3643526164617231354C696D69745261646172506F696E7445523943566563746F72324400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78960000789600007C960000endhex66666666 66666666ff20 // mov r0, #ff 7047 // bx lrc046 // nopend:asm_base_endhex // pad00000000000000000000000000000000end Do you know how to encrypt cleo? Or how to crack encryption? How does android use API functions to configure ini files? yes, but first can you confirm this code cause crash? 0DD9: 0x53eb983c 0xe28fc604 4 1 1 @osaru2846 https://goo.gl/MU8Dqc Link to comment Share on other sites More sharing options...
Osaru2846 Posted August 29, 2017 Share Posted August 29, 2017 There is this mod: http://www.gtainside.com/en/sanandreas/mods/96217-swat-bodyguard-for-android It is a script that enables bodyguards in the form of a S.W.A.T team. I wanted a mod similar to this, but with FBI agents. I would enjoy the protection of FBI agents in the game. It would fit the scene when I do missions for Toreno. http://vignette3.wikia.nocookie.net/gtawiki/images/c/c5/FBIAgent-GTASA-Badlands.png/revision/latest?cb=20130210024218 here. https://mega.nz/#!0jAVGKbB]https://mega.nz/#!0jAVGKbB!TwuuiY7Ho9zqm9b9m4kD_K5uIAicn4HazL1719tR0WA Thank you so much. I was wondering if you could please change the weapons that 2 of the FBI agents are holding. All of the FBI agents have M4s.Can you please modify the script and make two of agents have to MP5s while only one of them has an M4? First FBI agent Second FBI agent Third FBI agent It would be like a team where weapon classes are combined to complete an objective. It would be realistic. I hope I am not causing inconvenience. not at allhttps://mega.nz/#!diAWyI7R!jGIvk9q0M4KTyygrap9HdvKUBYKCJkwyRjYRYibOcZA Is it okay if I upload this mod to GTA Inside, and give you credit and ownership. Similar to what I did for ChinaXMDS: http://www.gtainside.com/en/sanandreas/mods/109264-unlimited-height-for-all-aircrafts-for-android/ Link to comment Share on other sites More sharing options...
tanduk.setan Posted August 30, 2017 Share Posted August 30, 2017 There is this mod: http://www.gtainside.com/en/sanandreas/mods/96217-swat-bodyguard-for-android It is a script that enables bodyguards in the form of a S.W.A.T team. I wanted a mod similar to this, but with FBI agents. I would enjoy the protection of FBI agents in the game. It would fit the scene when I do missions for Toreno. http://vignette3.wikia.nocookie.net/gtawiki/images/c/c5/FBIAgent-GTASA-Badlands.png/revision/latest?cb=20130210024218 here. https://mega.nz/#!0jAVGKbB]https://mega.nz/#!0jAVGKbB!TwuuiY7Ho9zqm9b9m4kD_K5uIAicn4HazL1719tR0WA Thank you so much. I was wondering if you could please change the weapons that 2 of the FBI agents are holding. All of the FBI agents have M4s.Can you please modify the script and make two of agents have to MP5s while only one of them has an M4? First FBI agent Second FBI agent Third FBI agent It would be like a team where weapon classes are combined to complete an objective. It would be realistic. I hope I am not causing inconvenience. not at allhttps://mega.nz/#!diAWyI7R!jGIvk9q0M4KTyygrap9HdvKUBYKCJkwyRjYRYibOcZA Is it okay if I upload this mod to GTA Inside, and give you credit and ownership. Similar to what I did for ChinaXMDS: http://www.gtainside.com/en/sanandreas/mods/109264-unlimited-height-for-all-aircrafts-for-android/ not for fbi protection, because I edit from swat protection Link to comment Share on other sites More sharing options...
Osaru2846 Posted August 30, 2017 Share Posted August 30, 2017 (edited) There is this mod: http://www.gtainside.com/en/sanandreas/mods/96217-swat-bodyguard-for-android It is a script that enables bodyguards in the form of a S.W.A.T team. I wanted a mod similar to this, but with FBI agents. I would enjoy the protection of FBI agents in the game. It would fit the scene when I do missions for Toreno. http://vignette3.wikia.nocookie.net/gtawiki/images/c/c5/FBIAgent-GTASA-Badlands.png/revision/latest?cb=20130210024218 here. https://mega.nz/#!0jAVGKbB]https://mega.nz/#!0jAVGKbB!TwuuiY7Ho9zqm9b9m4kD_K5uIAicn4HazL1719tR0WA Thank you so much. I was wondering if you could please change the weapons that 2 of the FBI agents are holding. All of the FBI agents have M4s.Can you please modify the script and make two of agents have to MP5s while only one of them has an M4? First FBI agent Second FBI agent Third FBI agent It would be like a team where weapon classes are combined to complete an objective. It would be realistic. I hope I am not causing inconvenience. not at allhttps://mega.nz/#!diAWyI7R!jGIvk9q0M4KTyygrap9HdvKUBYKCJkwyRjYRYibOcZAI have another idea. By the way, how much time do you spend on working on my request? If not for my malfunctioning hard drive, I would try to what you do. Whenever I try to open .csi .cs files on ordinary text editor's, the writing is scramble and it is incomprehensible. I suppose these files are compiled and can only be decompiled using Sanny Builder - which I can only have access to when I fix my computer. Anyway, I have another idea. I would like you to adapt on the same script that you edited before. This time, I would like the protection of secret agents. There are three of these secret agents and one of them is black and the other two are white. The first white agent possesses an AK-47. The second white agent has a Tec-9. The black agent is equipped with an M4. First Agent Skin: WMOMIB Skin: BMYMIB Skin: WMOMIB Edited August 30, 2017 by Osaru2846 Link to comment Share on other sites More sharing options...
tanduk.setan Posted August 31, 2017 Share Posted August 31, 2017 (edited) There is this mod: http://www.gtainside.com/en/sanandreas/mods/96217-swat-bodyguard-for-android It is a script that enables bodyguards in the form of a S.W.A.T team. I wanted a mod similar to this, but with FBI agents. I would enjoy the protection of FBI agents in the game. It would fit the scene when I do missions for Toreno. http://vignette3.wikia.nocookie.net/gtawiki/images/c/c5/FBIAgent-GTASA-Badlands.png/revision/latest?cb=20130210024218 here. https://mega.nz/#!0jAVGKbB]https://mega.nz/#!0jAVGKbB!TwuuiY7Ho9zqm9b9m4kD_K5uIAicn4HazL1719tR0WA Thank you so much. I was wondering if you could please change the weapons that 2 of the FBI agents are holding. All of the FBI agents have M4s.Can you please modify the script and make two of agents have to MP5s while only one of them has an M4? First FBI agent Second FBI agent Third FBI agent It would be like a team where weapon classes are combined to complete an objective. It would be realistic. I hope I am not causing inconvenience. not at allhttps://mega.nz/#!diAWyI7R!jGIvk9q0M4KTyygrap9HdvKUBYKCJkwyRjYRYibOcZAI have another idea. By the way, how much time do you spend on working on my request? If not for my malfunctioning hard drive, I would try to what you do. Whenever I try to open .csi .cs files on ordinary text editor's, the writing is scramble and it is incomprehensible. I suppose these files are compiled and can only be decompiled using Sanny Builder -which I can only have access to when I fix my computer. Anyway, I have another idea. I would like you to adapt on the same script that you edited before. This time, I would like the protection of secret agents. There are three of these secret agents and one of them is black and the other two are white. The first white agent possesses an AK-47. The second white agent has a Tec-9. The black agent is equipped with an M4. First Agent Skin: WMOMIB Skin: BMYMIB Skin: WMOMIB sorry for late reply, its fast actually, just a matter of replacing models name https://mega.nz/#!NyZSFLSZ!mODLyUVZCoE36KwmCfI8Mo6-RJgiAgWxfTBYL-CqsLU Edited August 31, 2017 by tanduk.setan Link to comment Share on other sites More sharing options...
Osaru2846 Posted September 1, 2017 Share Posted September 1, 2017 (edited) There is this mod:http://www.gtainside.com/en/sanandreas/mods/96217-swat-bodyguard-for-android It is a script that enables bodyguards in the form of a S.W.A.T team. I wanted a mod similar to this, but with FBI agents. I would enjoy the protection of FBI agents in the game. It would fit the scene when I do missions for Toreno.http://vignette3.wikia.nocookie.net/gtawiki/images/c/c5/FBIAgent-GTASA-Badlands.png/revision/latest?cb=20130210024218 here. https://mega.nz/#!0jAVGKbB]https://mega.nz/#!0jAVGKbB!TwuuiY7Ho9zqm9b9m4kD_K5uIAicn4HazL1719tR0WA Thank you so much. I was wondering if you could please change the weapons that 2 of the FBI agents are holding. All of the FBI agents have M4s.Can you please modify the script and make two of agents have to MP5s while only one of them has an M4?First FBI agent Second FBI agent Third FBI agent It would be like a team where weapon classes are combined to complete an objective. It would be realistic. I hope I am not causing inconvenience. not at allhttps://mega.nz/#!diAWyI7R!jGIvk9q0M4KTyygrap9HdvKUBYKCJkwyRjYRYibOcZAIs it okay if I upload this mod to GTA Inside, and give you credit and ownership.Similar to what I did for ChinaXMDS:http://www.gtainside.com/en/sanandreas/mods/109264-unlimited-height-for-all-aircrafts-for-android/ not for fbi protection, because I edit from swat protection What if I gave "The Alien" full ownership of the original cleo script "swat protection". Yet, you still have some credit for editing parts of the script. That way, could I still upload the mod to GTA Inside? The Alien - script creator http://www.gtainside.com/user/The%20Alien This mod is very useful. Although it was easy for you to make, there are those like me that would make such make such mods if they could but lack a functioning computer. I just need your permission. The original script creator will also get the credit that he deserves. Here are some screenshots: Edited September 1, 2017 by Osaru2846 Link to comment Share on other sites More sharing options...
tanduk.setan Posted September 1, 2017 Share Posted September 1, 2017 ok Link to comment Share on other sites More sharing options...
Osaru2846 Posted September 2, 2017 Share Posted September 2, 2017 okCan you convert this Cleo script? http://www.atpspage.com/gta/rusty-browns-ring-donuts/ Link to comment Share on other sites More sharing options...
Osaru2846 Posted September 2, 2017 Share Posted September 2, 2017 (edited) Is it possible? http://www.atpspage.com/gta/rusty-browns-ring-donuts/ Edited September 2, 2017 by Osaru2846 Link to comment Share on other sites More sharing options...
tanduk.setan Posted September 3, 2017 Share Posted September 3, 2017 it use cleo 4 feature(pc) i didnt do cleo convert stuff anymore, but if just a small edit, i can help Link to comment Share on other sites More sharing options...
Osaru2846 Posted September 3, 2017 Share Posted September 3, 2017 (edited) it use cleo 4 feature(pc) i didnt do cleo convert stuff anymore, but if just a small edit, i can helpCan you create a mod that activates the search light for police helicopters on the Android version? https://vignette.wikia.nocookie.net/gta/images/5/53/200px-PoliceMaverick-GTASA-searchlight.jpg/revision/latest?cb=20150220184848&path-prefix=pt To activate it on other ports such as the PC version, you will have to press the horn by pressing the "H" key. This only works during the night in the game. So I suppose that all you might need to do is to make it possible to horn while being in a police helicopter. You might need to create a script that activates the horn function for police helicopters on android. "Horn\Siren" That icon on the GTA San Andreas Android port. The function. Edited September 4, 2017 by Osaru2846 Link to comment Share on other sites More sharing options...
MilkyOregano21 Posted September 3, 2017 Share Posted September 3, 2017 Is plugins going to be ported to android/ios versions of gta sa/III/VC ((.asi, .ini))? Link to comment Share on other sites More sharing options...
RU VpridGameStudio Posted September 3, 2017 Share Posted September 3, 2017 Is plugins going to be ported to android/ios versions of gta sa/III/VC ((.asi, .ini))?No Can anyone post the widget numbers for the opcode 0A51? Use this script to find widgets that you need. 4: Widget ID +1 5: Exit 6: Widget ID -1 When you press the correct widget, mission passed sound will start. (In this case, Nitrous widget ID is 30)Can any body give me this script, plz? Link to comment Share on other sites More sharing options...
tanduk.setan Posted September 6, 2017 Share Posted September 6, 2017 @osaru, moving(like ai heli targeting criminal) or not? @milky, maybe @ru vprid just reupload, https://goo.gl/hL3ZNU Link to comment Share on other sites More sharing options...
Osaru2846 Posted September 6, 2017 Share Posted September 6, 2017 Is plugins going to be ported to android/ios versions of gta sa/III/VC ((.asi, .ini))? No Can anyone post the widget numbers for the opcode 0A51? Use this script to find widgets that you need. 4: Widget ID +1 5: Exit 6: Widget ID -1 When you press the correct widget, mission passed sound will start. (In this case, Nitrous widget ID is 30)Can any body give me this script, plz?This is from Markuza himself. He sent it to me just 5 hours ago, after I contacted him on your behalf. https://drive.google.com/open?id=0B-SvdPSZgOkRWmZabExoSjlKbUU @osaru, moving(like ai heli targeting criminal) or not? @milky, maybe @ru vprid just reupload, https://goo.gl/hL3ZNU Either is okay. If it is not possible to make it target criminals on Android then I will be fine with an uncontrollable searchlight. I want whichever one that is possible to add on Android. Link to comment Share on other sites More sharing options...
tanduk.setan Posted September 9, 2017 Share Posted September 9, 2017 i never play pc version, i didnt know you can activate searchlight, ok i will try Link to comment Share on other sites More sharing options...
tanduk.setan Posted September 9, 2017 Share Posted September 9, 2017 https://mega.nz/#!c6piyDBb!FYQER8v64HKslnkXPOXGj4j0D-rD-f69I8HilRUzBZU double tap nitro = enable disableswipe nitro = find gang member/criminal/dealer on foot/driving, it also make targetted actor wanted by police.it might crash if targetted actor dissapear suddenly, i think because searchlight target originally designed for mission actor src script is very ugly {$CLEO .csa}const 0r [email protected] 1r [email protected] 2r [email protected] 3r [email protected] 4r [email protected] 5r [email protected] apool [email protected] apoolm [email protected] apoolst [email protected] apoola [email protected] sl [email protected] veh [email protected] is_slspot [email protected] slx [email protected] sly [email protected] slz [email protected] nx [email protected]endint 0rint apoolaeqadrl 0r @_ZN6CPools15ms_pVehiclePoolEeqadrf apool 0rapool += 4is_slspot = 0apoola = 0while true :loop wait 2000 056D: is $3 definedjf continue 00DD: is $3 driv_veh_model #POLMAVjf continue while true wait 0 00DD: is $3 driv_veh_model #POLMAV jf @loop 0A53: is_wdtapped 30 jf continue wait 1000 break end nx = 1 veh = Actor.CurrentCar($3) 0407: slx sly slz <- veh pos_offset 0.0 5.0 0.0 02CE: slz <- ground_z slx sly slz 06C1: sl <- attach_searchlight_to veh offset 0.0 1.0 -0.5 radius 0.4 target slx sly slz radius 7.0 while 00DD: is $3 driv_veh_model #POLMAV wait 0 if 0A53: is_wdtapped 30 then 06B2: sl ~ goto @loop end if 056D: is apoola defined then if 80F2: is not apoola near $3 40.0 40.0 40.0 then is_slspot = 0 //nx = 1 end end if or is_slspot == 0 856D: is not apoola defined then is_slspot = 0 0407: 3r 4r 5r <- veh pos_offset 1.0 5.0 0.0 02CE: 5r <- 3r 4r 5r ground_z 06B4: sl go_from slx sly slz to 3r 4r 5r speed 2.0 eqf slx 3r eqf sly 4r eqf slz 5r end if 0A54: is_wswiped 30 then nx = 1 end nx == 1 jf continue nx = 0 0DD8: apoolm apool 4 0 apoolm += 4 0DD8: apoolm apoolm 4 0 is_slspot = 0 for apoolst = 0 to 0x8B00 step 0x100 0DD8: 0r apoolm 1 0 apoolm += 1 if and 0r >= 0x00 0x80 > 0r jf continue pli 0r apoolst 089F: 0r pedtype-> 1r 1r <> 6 // cop jf continue 00F2: is 0r near $3 40.0 40.0 40.0 jf continue if or 1r < 7 //gang 1r > 16 jf @target_ok if and 1r <> 17 // dealer 1r <> 20 // criminal jf @target_ok continue :target_ok if apoola == 0r then is_slspot = 1 continue end eqi apoola 0r 06B2: sl ~ 06C1: sl <- attach_searchlight_to veh offset 0.0 1.0 -0.5 radius 0.4 target slx sly slz radius 7.0 00A0: apoola pos -> slx sly slz 06B6: sl follow apoola speed 2.0 09B6: apoola wanted 1 is_slspot = 1 end // for end // while 06B2: sl ~end:_ZN6CPools15ms_pVehiclePoolEhex"_ZN6CPools15ms_pVehiclePoolE"00end Link to comment Share on other sites More sharing options...
Osaru2846 Posted September 9, 2017 Share Posted September 9, 2017 (edited) https://mega.nz/#!c6piyDBb!FYQER8v64HKslnkXPOXGj4j0D-rD-f69I8HilRUzBZU double tap nitro = enable disable swipe nitro = find gang member/criminal/dealer on foot/driving, it also make targetted actor wanted by police. it might crash if targetted actor dissapear suddenly, i think because searchlight target originally designed for mission actor src script is very ugly {$CLEO .csa} const 0r [email protected] 1r [email protected] 2r [email protected] 3r [email protected] 4r [email protected] 5r [email protected] apool [email protected] apoolm [email protected] apoolst [email protected] apoola [email protected] sl [email protected] veh [email protected] is_slspot [email protected] slx [email protected] sly [email protected] slz [email protected] nx [email protected] end int 0r int apoola eqadrl 0r @_ZN6CPools15ms_pVehiclePoolE eqadrf apool 0r apool += 4 is_slspot = 0 apoola = 0 while true :loop wait 2000 056D: is $3 defined jf continue 00DD: is $3 driv_veh_model #POLMAV jf continue while true wait 0 00DD: is $3 driv_veh_model #POLMAV jf @loop 0A53: is_wdtapped 30 jf continue wait 1000 break end nx = 1 veh = Actor.CurrentCar($3) 0407: slx sly slz <- veh pos_offset 0.0 5.0 0.0 02CE: slz <- ground_z slx sly slz 06C1: sl <- attach_searchlight_to veh offset 0.0 1.0 -0.5 radius 0.4 target slx sly slz radius 7.0 while 00DD: is $3 driv_veh_model #POLMAV wait 0 if 0A53: is_wdtapped 30 then 06B2: sl ~ goto @loop end if 056D: is apoola defined then if 80F2: is not apoola near $3 40.0 40.0 40.0 then is_slspot = 0 //nx = 1 end end if or is_slspot == 0 856D: is not apoola defined then is_slspot = 0 0407: 3r 4r 5r <- veh pos_offset 1.0 5.0 0.0 02CE: 5r <- 3r 4r 5r ground_z 06B4: sl go_from slx sly slz to 3r 4r 5r speed 2.0 eqf slx 3r eqf sly 4r eqf slz 5r end if 0A54: is_wswiped 30 then nx = 1 end nx == 1 jf continue nx = 0 0DD8: apoolm apool 4 0 apoolm += 4 0DD8: apoolm apoolm 4 0 is_slspot = 0 for apoolst = 0 to 0x8B00 step 0x100 0DD8: 0r apoolm 1 0 apoolm += 1 if and 0r >= 0x00 0x80 > 0r jf continue pli 0r apoolst 089F: 0r pedtype-> 1r 1r <> 6 // cop jf continue 00F2: is 0r near $3 40.0 40.0 40.0 jf continue if or 1r < 7 //gang 1r > 16 jf @target_ok if and 1r <> 17 // dealer 1r <> 20 // criminal jf @target_ok continue :target_ok if apoola == 0r then is_slspot = 1 continue end eqi apoola 0r 06B2: sl ~ 06C1: sl <- attach_searchlight_to veh offset 0.0 1.0 -0.5 radius 0.4 target slx sly slz radius 7.0 00A0: apoola pos -> slx sly slz 06B6: sl follow apoola speed 2.0 09B6: apoola wanted 1 is_slspot = 1 end // for end // while 06B2: sl ~ end :_ZN6CPools15ms_pVehiclePoolE hex "_ZN6CPools15ms_pVehiclePoolE"00 end Thank you, but is it possible for you to remove the red marker that appears when the helicopter is at a low altitude? Edited September 9, 2017 by Osaru2846 Link to comment Share on other sites More sharing options...
tanduk.setan Posted September 9, 2017 Share Posted September 9, 2017 https://goo.gl/LMxajp Link to comment Share on other sites More sharing options...
Osaru2846 Posted September 10, 2017 Share Posted September 10, 2017 https://goo.gl/LMxajp Thank you. It works fine. Link to comment Share on other sites More sharing options...
tanduk.setan Posted September 10, 2017 Share Posted September 10, 2017 is light source position ok? Link to comment Share on other sites More sharing options...
Osaru2846 Posted September 10, 2017 Share Posted September 10, 2017 (edited) is light source position ok?Although the searchlight is usually positioned in front of the helicopters for the police AI, I am able to enjoy the mod with the position that you placed the searchlight. I also wanted to know if you can modify the game controls. I am not asking for you to replace functions, but for you to add controls that are able to used in PS2 and PC, but not on Android; it is similar to the police searchlight that you recently made. I wanted to know if you could make it possible for players on Android to turn or rotate their airplanes without always having to tilt it. This On PS2 and PC, players are able to turn their planes with controls similar to those of helicopters on Android. These controls: Is it possible for you add these controls to the airplanes on Android? Edited September 10, 2017 by Osaru2846 Link to comment Share on other sites More sharing options...
Osaru2846 Posted September 10, 2017 Share Posted September 10, 2017 (edited) is light source position ok?Is it possibe? Edited September 10, 2017 by Osaru2846 Link to comment Share on other sites More sharing options...
Marsi4eg Posted September 10, 2017 Share Posted September 10, 2017 Please more giant images without spoilers and thumbnails RU VpridGameStudio and Blackbird88 2 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now