root | Дата: Воскресенье, 03.02.2013, 01:37 | Сообщение # 1 |
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
| Как можно получить координаты, куда смотрит ваш прицел:
Код #include <sourcemod> #include <sdktools>
public OnPluginStart() { HookEvent("player_say", player_say); }
public player_say(Handle:event, const String:name[], bool:dontBroadcast) { new i = GetClientOfUserId(GetEventInt(event, "userid")); decl String:t[3]; GetEventString(event, "text", t, 3); if (StrEqual(t, "1")) { decl Float:wS_Pos[3]; wS_GetLookPos(i, wS_Pos);
PrintToChatAll("%f, %f, %f", wS_Pos[0], wS_Pos[1], wS_Pos[2]); PrintToServer("%f, %f, %f", wS_Pos[0], wS_Pos[1], wS_Pos[2]);
new index = CreateEntityByName("weapon_awp"); if (index > 0) { DispatchKeyValueVector(index, "origin", wS_Pos); DispatchKeyValue(index, "spawnflags", "1"); DispatchSpawn(index); } } }
wS_GetLookPos(i, Float:wS_Pos[3]) { decl Float:EyePosition[3], Float:EyeAngles[3], Handle:h_trace; GetClientEyePosition(i, EyePosition); GetClientEyeAngles(i, EyeAngles); h_trace = TR_TraceRayFilterEx(EyePosition, EyeAngles, MASK_SOLID, RayType_Infinite, wS_GetLookPos_Filter, i); TR_GetEndPosition(wS_Pos, h_trace); CloseHandle(h_trace); }
public bool:wS_GetLookPos_Filter(ent, mask, any:i) { return i != ent; }
Сдвинуть позицию вперед, назад, влево, вправо:
Код decl Float:EyePos[3], Float:EyeAngles[3]; GetClientEyePosition(client, EyePos); GetClientEyeAngles(client, EyeAngles); Movepos_Func(EyePos, EyeAngles, 150.0);
Movepos_Func(Float:position[3], const Float:constAngles[3], const Float:distance) { decl Float:angles[3], Float:direction[3];
// Если вперед, то так angles[1] = constAngles[1];
// Если назад, то так angles[1] = constAngles[1] + 180.0;
// Если влево, то так angles[1] = constAngles[1] + 90.0;
// Если вправо, то так angles[1] = constAngles[1] + 270.0; GetAngleVectors(angles, direction, NULL_VECTOR, NULL_VECTOR); position[0] = position[0] + direction[0] * distance; position[1] = position[1] + direction[1] * distance; }
|
|
| |