Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Определить Что игрок застрял...
iEx Дата: Воскресенье, 25.08.2013, 03:46:54 | Сообщение # 1
Сообщений: 304
Репутация: 23 [ +/- ]
Надо определить,что игрок застрял в стене,
Я пытался подбросить его в воздух вверх,
Если коорды z не меняются,то застрял,если поменялась в + то все ок...
Ибо я кривой(хотя так наверно и есть) или не вышло ничего,
Если есть какие идеи как еще проверить,напишите)
 
Darkeneez Дата: Воскресенье, 25.08.2013, 06:03:11 | Сообщение # 2
Сообщений: 221
Репутация: 18 [ +/- ]
В smlib есть такая функция:
stock bool:Client_IsLookingAtWall(client, Float:distance=40.0)

Попробуй побаловаться.
 
panorama Дата: Вторник, 27.08.2013, 10:21:00 | Сообщение # 3
Сообщений: 203
Репутация: 2 [ +/- ]
Цитата (Darkeneez)
В smlib есть такая функция:
stock bool:Client_IsLookingAtWall(client, Float:distance=40.0)

Попробуй побаловаться.


Ничего не вышло !

Код

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

public OnPluginStart()
{
  RegConsoleCmd("unblock", unblock);  
}

public Action:unblock(client, args) {
     if (Client_IsLookingAtWall(client)) {
         PrintToChatAll("Застрял");
     }
}

stock bool:Client_IsLookingAtWall(client, Float:distance=40.0) {

  decl Float:posEye[3], Float:posEyeAngles[3];
  new bool:isClientLookingAtWall = false;
   
  GetClientEyePosition(client,    posEye);
  GetClientEyeAngles(client,  posEyeAngles);
   
  posEyeAngles[0] = 0.0;

  new Handle:trace = TR_TraceRayFilterEx(posEye, posEyeAngles, CONTENTS_SOLID, RayType_Infinite, _smlib_TraceEntityFilter);
   
  if (TR_DidHit(trace)) {
    
   if (TR_GetEntityIndex(trace) > 0) {
    CloseHandle(trace);
    return false;
   }
    
   decl Float:posEnd[3];

   TR_GetEndPosition(posEnd, trace);
    
   if (GetVectorDistance(posEye, posEnd) <= distance) {
    isClientLookingAtWall = true;
   }
  }
   
  CloseHandle(trace);
   
  return isClientLookingAtWall;
}

public bool:_smlib_TraceEntityFilter(entity, contentsMask)
{
  return entity == 0;
}

 
Darkeneez Дата: Вторник, 27.08.2013, 10:37:58 | Сообщение # 4
Сообщений: 221
Репутация: 18 [ +/- ]
smlib подключи...
 
Scarface_slv Дата: Вторник, 27.08.2013, 12:12:03 | Сообщение # 5
Сообщений: 737
Репутация: 61 [ +/- ]
Darkeneez, Зачем? Он скорее всего вытащил функции отуда, единственное что я не вижу
if (Client_IsLookingAtWall(client)) где тут Float? Ты же его вроде не передаешь а нужно
Client_IsLookingAtWall(client, Float:distance=40.0)

Добавлено (27.08.2013, 12:12:03)
---------------------------------------------
Хотя он должен работать, по стандарту ведь 40.0)

 
panorama Дата: Вторник, 27.08.2013, 12:14:54 | Сообщение # 6
Сообщений: 203
Репутация: 2 [ +/- ]
Цитата (Scarface_slv)
Darkeneez, Зачем? Он скорее всего вытащил функции отуда, единственное что я не вижу
if (Client_IsLookingAtWall(client)) где тут Float? Ты же его вроде не передаешь а нужно
Client_IsLookingAtWall(client, Float:distance=40.0)
Добавлено (27.08.2013, 12:12:03)
---------------------------------------------
Хотя он должен работать, по стандарту ведь 40.0)

stock bool:Client_IsLookingAtWall(client, Float:distance=40.0)
Уже заданно 40
 
Scarface_slv Дата: Вторник, 27.08.2013, 12:17:20 | Сообщение # 7
Сообщений: 737
Репутация: 61 [ +/- ]
Если ты внимательно посмотришь я добавил про это через пол минуты после своего сообщения, не посмотрел сначала


Сообщение отредактировал Scarface_slv - Вторник, 27.08.2013, 12:17:59
 
panorama Дата: Вторник, 27.08.2013, 12:18:38 | Сообщение # 8
Сообщений: 203
Репутация: 2 [ +/- ]
Цитата (Scarface_slv)
Если ты внимательно посмотришь я добавил про это через пол минуты после своего сообщения, не посмотрел сначала

Извиняюсь
 
  • Страница 1 из 1
  • 1
Поиск: