Определить Что игрок застрял...
|
|
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) Если ты внимательно посмотришь я добавил про это через пол минуты после своего сообщения, не посмотрел сначала Извиняюсь
|
|
| |