Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // An example native of my plugin passing arguments by reference <- of course works
- cell AMX_NATIVE_CALL AMX_GetBObjectPosEx(AMX *amx, cell *params) // GetBObjectPosEx(bobjectid, &Float:x, &Float:y, &Float:z, &Float:rx, &Float:ry, &Float:rz)
- {
- if(IsInvalidBObject(params[1])) return 0;
- vector_foreach(B_STREAM, b_stream, amx_it)
- {
- if(amx_it->amx_ptr != amx) continue;
- B_OBJECT *object_ptr = &amx_it->object.at(params[1]);
- //if(t_object.id != params[1]) continue;
- if(!object_ptr->is) return 0;
- cell *addr[6] = {NULL, NULL, NULL, NULL, NULL, NULL};
- amx_GetAddr(amx, params[2], &addr[0]);
- amx_GetAddr(amx, params[3], &addr[1]);
- amx_GetAddr(amx, params[4], &addr[2]);
- amx_GetAddr(amx, params[5], &addr[3]);
- amx_GetAddr(amx, params[6], &addr[4]);
- amx_GetAddr(amx, params[7], &addr[5]);
- if(object_ptr->is_moving)
- {
- clock_t current_clock = clock();
- if(object_ptr->move_start+object_ptr->move_time > current_clock)
- {
- float multiplicate_time = (float)(current_clock-object_ptr->move_start)/(float)object_ptr->move_time, result = (multiplicate_time*(object_ptr->move_to_x-object_ptr->x))+object_ptr->x;
- *addr[0] = amx_ftoc(result);
- result = (multiplicate_time*(object_ptr->move_to_y-object_ptr->y))+object_ptr->y;
- *addr[1] = amx_ftoc(result);
- result = (multiplicate_time*(object_ptr->move_to_z-object_ptr->z))+object_ptr->z;
- *addr[2] = amx_ftoc(result);
- result = (multiplicate_time*(object_ptr->move_to_rx-object_ptr->rx))+object_ptr->rx;
- *addr[3] = amx_ftoc(result);
- result = (multiplicate_time*(object_ptr->move_to_ry-object_ptr->ry))+object_ptr->ry;
- *addr[4] = amx_ftoc(result);
- result = (multiplicate_time*(object_ptr->move_to_rz-object_ptr->rz))+object_ptr->rz;
- *addr[5] = amx_ftoc(result);
- }
- else
- {
- *addr[0] = amx_ftoc(object_ptr->move_to_x);
- *addr[1] = amx_ftoc(object_ptr->move_to_y);
- *addr[2] = amx_ftoc(object_ptr->move_to_z);
- *addr[3] = amx_ftoc(object_ptr->move_to_rx);
- *addr[4] = amx_ftoc(object_ptr->move_to_ry);
- *addr[5] = amx_ftoc(object_ptr->move_to_rz);
- }
- }
- else
- {
- *addr[0] = amx_ftoc(object_ptr->x);
- *addr[1] = amx_ftoc(object_ptr->y);
- *addr[2] = amx_ftoc(object_ptr->z);
- *addr[3] = amx_ftoc(object_ptr->rx);
- *addr[4] = amx_ftoc(object_ptr->ry);
- *addr[5] = amx_ftoc(object_ptr->rz);
- }
- return 1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement