[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Работа с координатами (x, y, z) (Взято с world-source.ru)
Работа с координатами (x, y, z)
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;  
}
 
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Работа с координатами (x, y, z) (Взято с world-source.ru)
  • Страница 1 из 1
  • 1
Поиск: