|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
Расстояние между 2 объектами
|
|
defaultNick8433 | Дата: Суббота, 05.12.2009, 21:59:54 | Сообщение # 1 |
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Статус: Не в сети
| К примеру мне нужно чтобы при приближении игрока к объекту измерялось расстояние между ними.Вот какой функцией выполняется данное действие?
Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001
|
|
| |
PomanoB | Дата: Суббота, 05.12.2009, 22:35:30 | Сообщение # 2 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| http://www.amxmodx.org/funcwiki.php?search=get_distance&go=search
http://romanov4400.mybrute.com
|
|
| |
defaultNick8433 | Дата: Воскресенье, 06.12.2009, 08:13:59 | Сообщение # 3 |
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Статус: Не в сети
| спс,а вот нужно было измерить расстояние между игроком и дверью.Причём если игрок приближается к двери,и между ними остаётся определённое расстояние,то дверь сама открывается.Пока двери не задавал угол направление через angle_vector,а просто решил отловить этот момент,но никак не хочет реагировать: Code #include <amxmodx> #include <fakemeta>
new bool:door[255]
public plugin_init() { register_plugin("Auto Open The Door","Final","defa") register_forward(FM_PlayerPreThink,"fwPlayer") } public fwPlayer(id) { new player_origin[3],door_origin[3] new func_class[]="func_door" new ent=engfunc(EngFunc_FindEntityByString,ent,"classname",func_class) pev(ent,pev_origin,door_origin) pev(id,pev_origin,player_o rigin ,3) i f(get_distance(door_origin,player_origin)<35) { door[ent]=true client_print(0,print_chat,"Door is Open!!!") } }
Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001
Сообщение отредактировал defaultNick8433 - Воскресенье, 06.12.2009, 08:16:19 |
|
| |
PomanoB | Дата: Воскресенье, 06.12.2009, 09:45:39 | Сообщение # 4 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Тебе надо цикл делать по всем ентити, и лучше делать FindEntityInSphere
http://romanov4400.mybrute.com
|
|
| |
defaultNick8433 | Дата: Воскресенье, 06.12.2009, 09:52:06 | Сообщение # 5 |
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Статус: Не в сети
| А почему именно по всем?
Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001
|
|
| |
PomanoB | Дата: Воскресенье, 06.12.2009, 10:06:04 | Сообщение # 6 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Потому что ну нашёл ты 1 дверь а она может на другом конце карты, надо искать следующую
http://romanov4400.mybrute.com
|
|
| |
defaultNick8433 | Дата: Воскресенье, 06.12.2009, 10:17:12 | Сообщение # 7 |
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Статус: Не в сети
| А ты можешь код показать примерный с находкой дверей
Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001
|
|
| |
PomanoB | Дата: Воскресенье, 06.12.2009, 10:40:18 | Сообщение # 8 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Как-то так Code new i = 0, Float:origin[3], Float:range = 350.0, classname[32] pev(id, pev_origin, origin) while ((i = engfunc(EngFunc_FindEntityInSphere, i, origin, range))) { pev(i, pev_classname, classname, 31) if (equal(classname, "func_door")) dllfunc(DLLFunc_Touch, id, i) }
http://romanov4400.mybrute.com
|
|
| |
defaultNick8433 | Дата: Воскресенье, 06.12.2009, 11:13:20 | Сообщение # 9 |
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Статус: Не в сети
| Не срабатывает,пишет,когда я подключаюсь сообщение моё в чат,хотя я не около двери находился.Ещё dllfunc(DLLFunc_Touch,id,i) не срабытвает
Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001
|
|
| |
PomanoB | Дата: Воскресенье, 06.12.2009, 11:24:46 | Сообщение # 10 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Покажи код полностью
http://romanov4400.mybrute.com
|
|
| |
defaultNick8433 | Дата: Воскресенье, 06.12.2009, 11:50:02 | Сообщение # 11 |
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Статус: Не в сети
| Code #include <amxmodx> #include <fakemeta>
new bool:door[255]
public plugin_init() { register_plugin("Auto Open The Door","Final","defa") register_forward(FM_PlayerPreThink,"fwPlayer") } public fwPlayer(id) { new player_origin[3],door_origin[3] new i=0,Float:origin[3],Float:range=350.0,classname[32] pev(id,pev_origin,origin) i=engfunc(EngFunc_FindEntityInSphere,i,origin,range) pev(i,pev_classname,classname,31)
if(equal(classname,"func_door")) { pev(i,pev_origin,door_origin) } pev(id,pev_origin,player_origin,3)
if(get_distance(door_origin,player_origin)<200) { door[i]=true dllfunc(DLLFunc_Touch,id,i) client_print(0,print_chat,"Door is Open!!!") } }
Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001
|
|
| |
PomanoB | Дата: Воскресенье, 06.12.2009, 11:59:18 | Сообщение # 12 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Ну во первых ты убрал while непонятно почему Во вторых в if(equal(classname,"func_door")) { pev(i,pev_origin,door_origin) } неправильно, надо все действия внутри условия помещать door[255] явно мало для ентитей pev(i,pev_origin,door_origin) и pev(id,pev_origin,player_origin,3) тоже неправильно, так нужно массив типа Float pev(id,pev_origin,player_origin,3) - это не строка вообще-то) И вообще говоря в FM_PlayerPreThink это явно слишком часто И не помешало бы проверку на то, что дверь уже открыта
http://romanov4400.mybrute.com
|
|
| |
defaultNick8433 | Дата: Воскресенье, 06.12.2009, 12:05:28 | Сообщение # 13 |
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Статус: Не в сети
| Quote (PomanoB) массив типа Float а если у меня числа не Float?
Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001
|
|
| |
PomanoB | Дата: Воскресенье, 06.12.2009, 12:46:51 | Сообщение # 14 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Координаты всегда Float
http://romanov4400.mybrute.com
|
|
| |
defaultNick8433 | Дата: Воскресенье, 06.12.2009, 14:18:07 | Сообщение # 15 |
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Статус: Не в сети
| Если я задаю координаты Float:,и убираю 3 у player_origin,то из-за строки if(get_distance(door_origin,player_origin)<200) компилятор выдаёт tag mistmach
Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001
|
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |