Скриптер
Участник
Пользователь
- Сообщения
- 265
- Реакции
- 315
- Помог
- 10 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Есть код получения координат игрока:
Суть проблемы - если получить координаты сразу в спавне(
Если сделать задержку в 0.2 секунды(на карте de_dus2), то все ок.
Вроде бы вот оно решение... Но как быть с картами типа 35HP, где игрок падает с неба?)
Код:
#include <amxmodx>
#include <reapi>
enum coords {
Float:ORIGIN[3],
Float:ANGLES[3]
}
new Float:g_fCoords[MAX_PLAYERS + 1][coords];
public plugin_init()
{
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn_Post", true);
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Post", true);
}
public CBasePlayer_Spawn_Post(const id)
{
if(!is_user_alive(id))
return;
// get_coords(id); // некорректные данные в координатах
// [old]Origin[448.000000/2368.000000/-87.000000] Angles[0.000000/255.000000/0.000000]
// [new]Origin[448.000000/2368.000000/-91.968750] Angles[0.000000/74.926757/0.000000]
set_task(0.2, "get_coords", id); // корректные данные
// [old]Origin[448.000000/2368.000000/-91.968750] Angles[0.000000/-105.001831/0.000000]
// [new]Origin[448.000000/2368.000000/-91.968750] Angles[0.000000/-105.001831/0.000000]
}
public CBasePlayer_Killed_Post(const id)
{
new Float:fOrigin[3], Float:fAngles[3];
get_entvar(id, var_origin, fOrigin);
get_entvar(id, var_angles, fAngles);
client_print(id, print_chat, "[old]Origin[%f/%f/%f] Angles[%f/%f/%f]", g_fCoords[id][ORIGIN][0], g_fCoords[id][ORIGIN][1], g_fCoords[id][ORIGIN][2], g_fCoords[id][ANGLES][0], g_fCoords[id][ANGLES][1], g_fCoords[id][ANGLES][2]);
client_print(id, print_chat, "[new]Origin[%f/%f/%f] Angles[%f/%f/%f]", fOrigin[0], fOrigin[1], fOrigin[2], fAngles[0], fAngles[1], fAngles[2]);
}
public get_coords(id)
{
get_entvar(id, var_origin, g_fCoords[id][ORIGIN]);
get_entvar(id, var_angles, g_fCoords[id][ANGLES]);
}
RG_CBasePlayer_Spawn
/RG_CSGameRules_PlayerSpawn
), то они получаются некорректные относительно тех, которые были получены в RG_CBasePlayer_Killed
Если сделать задержку в 0.2 секунды(на карте de_dus2), то все ок.
Вроде бы вот оно решение... Но как быть с картами типа 35HP, где игрок падает с неба?)
Последнее редактирование: