Ты будешь удивлён(возможно), но Как это сделать в коде? Я себе это примерно так и представлял как ты сказал.Проверить расстояние от игрока до существующих кнопок. Зачем столько глупых вопросов?
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);
}
}
Но ведь 2048 - максимальный индекс сущностей, вдруг кнопка имеет индекс 2047? или 2048? Надо все проверить... Или же через FindEntityByName, но я не вкурсе, как с ней работать корректно, потом научусь.@inklesspen, что же ты прицепился к этой цифре 2048? Забудь о ней, никогда не трогай. Слишком большой обход цикла.
Но иногда без такого цикла не обойтись... Если мой код пихать в OnPlayerRunCmd, то да, надо минимум нагрузки сделать, например цикл 2048 заменить на FindEntityByName.@inklesspen, делай всё в минимум действий, минимум переменных. Вот этот бред местных профессоров о том как объявлять переменные и прочую чепуху даже не слушай.
Возможно... Но попробуй привести пример, где не обойтись без этого...@inklesspen, без такого цикла обойтись всегда. Не неси бред.
ОффтопВот этот бред местных профессоров о том как объявлять переменные и прочую чепуху даже не слушай.
Когда нужно найти по совпадению, то FindEntityByClassname не поможет. Например, на DM нужно найти и удалить всё оружие и дефузы на земле.попробуй привести пример, где не обойтись без этого
Проехали... Тогда можешь подсказать, как обойти эти ненужные циклы?@inklesspen, без нескольких тысяч ненужный действий? Я не совсем понимаю суть вопроса. Спрашивай конкретней.
В общем, смысл прост. При объявлении через decl массив не заполняется нулями, в отличии от new. По-этому рекомендуют большие массивы в функциях с частым вызовом объявлять через decl. В OnGameFrame например. Не стоит на этом делать большое ударение, а тут это считают за святое.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.