cell Call_Vector_Float_Cbase_Int(AMX *amx, cell *params) { SETUP(4); float f3=amx_ctof2(*MF_GetAmxAddr(amx, params[3])); int id4=*MF_GetAmxAddr(amx, params[4]); int i5=*MF_GetAmxAddr(amx, params[5]); CHECK_ENTITY(id4); void *p4=IndexToPrivate(id4); #if defined(_WIN32) Vector ret; reinterpret_cast<void(__fastcall *)(void *, int, Vector*, float, void *, int)>(__func)(pv, 0, &ret, f3, p4, i5); #elif defined(__linux__) || defined(__APPLE__) Vector ret = reinterpret_cast<Vector(*)(void *, float, void *, int)>(__func)(pv, f3, p4, i5); #endif float *out = (float *)MF_GetAmxAddr(amx, params[6]); out[0] = ret.x; out[1] = ret.y; out[2] = ret.z; return 1; }
cell Call_Int_Vector_Cbase(AMX *amx, cell *params) { SETUP(2); Vector v3; float *fl3=(float *)MF_GetAmxAddr(amx, params[3]); v3.x=fl3[0]; v3.y=fl3[1]; v3.z=fl3[2]; int id4=*MF_GetAmxAddr(amx, params[4]); CHECK_ENTITY(id4); void *p4=IndexToPrivate(id4); #if defined(_WIN32) int ret=reinterpret_cast<int (__fastcall *)(void *, int, Vector, void*)>(__func)(pv, 0, v3, p4); #elif defined(__linux__) || defined(__APPLE__) int ret=reinterpret_cast<int (*)(void *, Vector, void*)>(__func)(pv, v3, p4); #endif fl3[0]=v3.x; fl3[1]=v3.y; fl3[2]=v3.z; return ret; }
cell Call_Void_Cbase_pVector_Float(AMX *amx, cell *params) { SETUP(3); int id3=*MF_GetAmxAddr(amx, params[3]); CHECK_ENTITY(id3); void *i3=IndexToPrivate(id3); Vector v4; float *fl4=(float *)MF_GetAmxAddr(amx, params[4]); v4.x=fl4[0]; v4.y=fl4[1]; v4.z=fl4[2]; float f5=amx_ctof2(*MF_GetAmxAddr(amx, params[5])); #if defined(_WIN32) reinterpret_cast<void (__fastcall *)(void*, int, void *, Vector *, float)>(__func)(pv, 0, i3, &v4, f5); #elif defined(__linux__) || defined(__APPLE__) reinterpret_cast<void (*)(void *, void *, Vector *, float)>(__func)(pv, i3, &v4, f5); #endif fl4[0]=v4.x; fl4[1]=v4.y; fl4[2]=v4.z; return 1; }
cell AMX_NATIVE_CALL Rage::GetFunctionFromEntity(AMX* amx,cell* params) { int len; char *func_name = g_fn_GetAmxString(amx,params[1],0,&len); VirtualFunction** virtual_function_ptr = Global::virtualFunctionsManager.get_by_label(func_name); if(!virtual_function_ptr) { MF_LogError(amx, AMX_ERR_NATIVE, "Virtual function %s not registered",func_name); return -1; } VirtualFunction* virtual_function = *virtual_function_ptr; int entity = (int) params[2]; void* object = IndexToPrivate(entity); if(!object) { MF_LogError(amx, AMX_ERR_NATIVE, "Failed to get private data of entity '%d' for use with virtual function '%s'",entity,func_name); return -1; } return virtual_function->create_get_id(object); }
cell Call_Int_pVector_pVector_Float_Cbase_pVector(AMX *amx, cell *params) { SETUP(5); Vector v3; Vector v4; float *fl3=(float *)MF_GetAmxAddr(amx, params[3]); float *fl4=(float *)MF_GetAmxAddr(amx, params[4]); v3.x=fl3[0]; v3.y=fl3[1]; v3.z=fl3[2]; v4.x=fl4[0]; v4.y=fl4[1]; v4.z=fl4[2]; float f5=amx_ctof2(*MF_GetAmxAddr(amx, params[5])); int id6=*MF_GetAmxAddr(amx, params[6]); CHECK_ENTITY(id6); void *p6=IndexToPrivate(id6); Vector v7; float *fl7=(float *)MF_GetAmxAddr(amx, params[7]); v7.x=fl7[0]; v7.y=fl7[1]; v7.z=fl7[2]; #if defined(_WIN32) int ret=reinterpret_cast<int (__fastcall *)(void *, int, Vector*, Vector*, float, void*, Vector*)>(__func)(pv, 0, &v3, &v4, f5, p6, &v7); #elif defined(__linux__) || defined(__APPLE__) int ret=reinterpret_cast<int (*)(void *, Vector*, Vector*, float, void*, Vector*)>(__func)(pv, &v3, &v4, f5, p6, &v7); #endif fl3[0]=v3.x; fl3[1]=v3.y; fl3[2]=v3.z; fl4[0]=v4.x; fl4[1]=v4.y; fl4[2]=v4.z; fl7[0]=v7.x; fl7[1]=v7.y; fl7[2]=v7.z; return ret; }
cell Call_Void_Cbase_Cbase_Int_Float(AMX *amx, cell *params) { SETUP(4); int id3=*MF_GetAmxAddr(amx, params[3]); int id4=*MF_GetAmxAddr(amx, params[4]); int i5=*MF_GetAmxAddr(amx, params[5]); float f6=amx_ctof2(*MF_GetAmxAddr(amx, params[6])); CHECK_ENTITY(id3); CHECK_ENTITY(id4); void *p3=IndexToPrivate(id3); void *p4=IndexToPrivate(id4); #if defined(_WIN32) reinterpret_cast<void (__fastcall *)(void *, int, void *, void *, int, float)>(__func)(pv, 0, p3, p4, i5, f6); #elif defined(__linux__) || defined(__APPLE__) reinterpret_cast<void (*)(void *, void *, void *, int, float)>(__func)(pv, p3, p4, i5, f6); #endif return 1; }
cell Call_Float_Float_Cbase(AMX* amx, cell* params) { SETUP(3); float f3=amx_ctof2(*MF_GetAmxAddr(amx, params[3])); int id4=*MF_GetAmxAddr(amx, params[4]); CHECK_ENTITY(id4); void *p4 = IndexToPrivate(id4); #if defined(_WIN32) float ret = reinterpret_cast<float(__fastcall *)(void*, int, float, void*)>(__func)(pv, 0, f3, p4); #elif defined(__linux__) || defined(__APPLE__) float ret = reinterpret_cast<float (*)(void*, float, void*)>(__func)(pv, f3, p4); #endif *MF_GetAmxAddr(amx, params[5]) = amx_ftoc2(ret); return 1; }
cell Call_Void_Cbase_Bool(AMX *amx, cell *params) { SETUP(2); int id3=*MF_GetAmxAddr(amx, params[3]); CHECK_ENTITY(id3); void *p8=IndexToPrivate(id3); bool b4=*MF_GetAmxAddr(amx, params[4]) ? true : false; #if defined(_WIN32) reinterpret_cast<void (__fastcall *)(void*, int, void *, bool)>(__func)(pv, 0, p8, b4); #elif defined(__linux__) || defined(__APPLE__) reinterpret_cast<void (*)(void *, void *, bool)>(__func)(pv, p8, b4); #endif return 1; }
cell Call_Int_pVector_pVector_Cbase_pFloat(AMX *amx, cell *params) { SETUP(4); Vector v3; Vector v4; float *fl3=(float *)MF_GetAmxAddr(amx, params[3]); float *fl4=(float *)MF_GetAmxAddr(amx, params[4]); v3.x=fl3[0]; v3.y=fl3[1]; v3.z=fl3[2]; v4.x=fl4[0]; v4.y=fl4[1]; v4.z=fl4[2]; int id5=*MF_GetAmxAddr(amx, params[5]); CHECK_ENTITY(id5); void *p5=IndexToPrivate(id5); float f6; #if defined(_WIN32) int ret=reinterpret_cast<int (__fastcall *)(void *, int, Vector*, Vector*, void*, float*)>(__func)(pv, 0, &v3, &v4, p5, &f6); #elif defined(__linux__) || defined(__APPLE__) int ret=reinterpret_cast<int (*)(void *, Vector*, Vector*, void*, float*)>(__func)(pv, &v3, &v4, p5, &f6); #endif fl3[0]=v3.x; fl3[1]=v3.y; fl3[2]=v3.z; fl4[0]=v4.x; fl4[1]=v4.y; fl4[2]=v4.z; *MF_GetAmxAddr(amx, params[6]) = amx_ftoc2(f6); return ret; }
cell Call_Void_Str_Float_Float_Float_Int_Cbase(AMX *amx, cell *params) { SETUP(6); char *sz3=MF_GetAmxString(amx, params[3], 0, NULL); float f4=amx_ctof2(*MF_GetAmxAddr(amx, params[4])); float f5=amx_ctof2(*MF_GetAmxAddr(amx, params[5])); float f6=amx_ctof2(*MF_GetAmxAddr(amx, params[6])); int i7=*MF_GetAmxAddr(amx, params[7]); int id8=*MF_GetAmxAddr(amx, params[8]); CHECK_ENTITY(id8); void *p8=IndexToPrivate(id8); #if defined(_WIN32) reinterpret_cast<void (__fastcall *)(void*, int, const char *, float, float, float, int, void *)>(__func)(pv, 0, sz3, f4, f5, f6, i7, p8); #elif defined(__linux__) || defined(__APPLE__) reinterpret_cast<void (*)(void *, const char *, float, float, float, int, void *)>(__func)(pv, sz3, f4, f5, f6, i7, p8); #endif return 1; }
void* Rage::index_to_private(int index) { return IndexToPrivate(index); }