Отлов кнопки рядом

Kruzi

Участник
Сообщения
153
Реакции
20
Как можно отловить находится ли игрок рядом с кнопкой? Не спрашивайте зачем :D
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
Проверить расстояние от игрока до существующих кнопок. Зачем столько глупых вопросов?
 

Kruzi

Участник
Сообщения
153
Реакции
20
Проверить расстояние от игрока до существующих кнопок. Зачем столько глупых вопросов?
Ты будешь удивлён(возможно), но Как это сделать в коде? Я себе это примерно так и представлял как ты сказал.
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
@Kruzi, то-есть ты абсолютно ничего не знаешь о сорспавне? Хорошо
PHP:
void DistToButtons(int client)
{
    float fClientPos[3], fButtonPos[3];
    GetClientAbsOrigin(client, fClientPos);
    int iEnt = -1;
    while((iEnt = FindEntityByClassname(iEnt, "func_button")) != -1)
    {
        GetEntPropVector(iEnt, Prop_Send, "m_vecOrigin", fButtonPos);
        PrintToServer("Distance: %f", GetVectorDistance(fClientPos, fButtonPos);
    }
}
Допустим дам такой пример. Какой план действий дальше?
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
967
new Float:pos[2][3]
GetClientEyePosition(client, pos[0])
pos[0][2]-=20.0
decl String:arg[64]
for(new i=1;i<=2048;i++)
{
if(IsValidEntity(i))
{
GetEntityClassname(i, arg, 64)
if(StrEqual(arg, "func_button")
{
GetEntPropVector(i, Prop_Send, "m_vecOrigin", pos[1])
if(GetPosDistance(pos[1], pos[0])<=60.0)
{
// Some doing...
}
}
}
}
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
@inklesspen, что же ты прицепился к этой цифре 2048? Забудь о ней, никогда не трогай. Слишком большой обход цикла.
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
967
@inklesspen, что же ты прицепился к этой цифре 2048? Забудь о ней, никогда не трогай. Слишком большой обход цикла.
Но ведь 2048 - максимальный индекс сущностей, вдруг кнопка имеет индекс 2047? или 2048? Надо все проверить... Или же через FindEntityByName, но я не вкурсе, как с ней работать корректно, потом научусь.
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
@inklesspen, делай всё в минимум действий, минимум переменных. Вот этот бред местных профессоров о том как объявлять переменные и прочую чепуху даже не слушай.
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
967
@inklesspen, делай всё в минимум действий, минимум переменных. Вот этот бред местных профессоров о том как объявлять переменные и прочую чепуху даже не слушай.
Но иногда без такого цикла не обойтись... Если мой код пихать в OnPlayerRunCmd, то да, надо минимум нагрузки сделать, например цикл 2048 заменить на FindEntityByName.
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
@inklesspen, без такого цикла обойтись всегда. Не неси бред.
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
@inklesspen, без нескольких тысяч ненужный действий? Я не совсем понимаю суть вопроса. Спрашивай конкретней.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Вот этот бред местных профессоров о том как объявлять переменные и прочую чепуху даже не слушай.
Оффтоп
попробуй привести пример, где не обойтись без этого
Когда нужно найти по совпадению, то FindEntityByClassname не поможет. Например, на DM нужно найти и удалить всё оружие и дефузы на земле.
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
967

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
@AlmazON, decl уже не совсем даже актуален. Лично я давно использую новый синтаксис. Хотя и тут есть свои приколы. Вот цитата с вики ам:
By default, all variables in Pawn are initialized to zero. If there is an explicit initializer, the variable is initialized to the expression after the = token. At a local scope, this can be a run-time expense. The decl keyword (which is only valid at local scope) was introduced to let users decide if they want variables initialized or not.

Note: decl should not be used on single cell variables. There is almost never any benefit.
В общем, смысл прост. При объявлении через decl массив не заполняется нулями, в отличии от new. По-этому рекомендуют большие массивы в функциях с частым вызовом объявлять через decl. В OnGameFrame например. Не стоит на этом делать большое ударение, а тут это считают за святое.
Ну и даже приписку сделали, чтобы не сильно фанатели, что при единичных переменных (не при массивах) объявление через decl почти никогда не приносит пользы.
Вообще половина замечаний просто нелепая, как правило. А нормальные подсказки не совсем съедают. Взять случай с Филипком и обходом кв. Или я тут как-то Чёрной Вдове пытался объяснить как работает профайлер. На этом форуме обычно такой тёмный лес. Хотя некоторые люди попросту тупые.
 
Сверху Снизу