Как узнать номер объекта
|
|
BoT | Дата: Пятница, 14 Марта 2008, 15:19 | Сообщение # 1 |
Группа: Гости
| Вот к примеру создаю я в цикле кучу объектов (к примеру 100) хожу игроком При сталкивании с одним из этих объектов (ну к примеру 75) сверху надпись "вы столкнулись с объектом номер 75" Может кто подскажет как это сделать? P.S. Меня именно интерисует вот что - Как вычислить эго номер Как создавать цикл, массив, коллизию и выводить текст я знаю, не дурак))) так что не пишите громоздкие коды) Только то что нужно для вычисления номера
|
|
| |
Гость | Дата: Пятница, 14 Марта 2008, 16:33 | Сообщение # 2 |
Группа: Гости
| Да нет, ты не понял. Quote Как создавать цикл, массив, коллизию и выводить текст я знаю, не дурак))) Возле меня расбросаны обьекты, которые созданы в цикле (пусть будет в том, который ты написал). Первый обьект имеет имя - cub(1), второй - cub(2), третий - cub(3) и так далее аж до 100! Так вот. Они расбросаны по карте. Я иду, сталкиваюсь с каким-то из них (я незнаю с каким из них столкнусь) и вылетает надпись "номер объекта с которым вы столкнулись - такой-то" (например 56).
|
|
| |
BoT | Дата: Пятница, 14 Марта 2008, 17:50 | Сообщение # 3 |
Группа: Гости
| Да уж...Чтоже мне писать сто типов столкновений? Вручную? Нет! Это явно сильный гон! Должен быть какой-то другой выход.
|
|
| |
Гость | Дата: Суббота, 15 Марта 2008, 00:46 | Сообщение # 4 |
Группа: Гости
| For col=1 To 100 cub(col)=CreateCube() NameEntity(cub(col),col) Next if entitycollided(cub, bla) return EntityName(cub) end if
|
|
| |
Гость | Дата: Суббота, 15 Марта 2008, 00:51 | Сообщение # 5 |
Группа: Гости
| Разумеется для проверки на столкновения создается отдельная функция например CheckCollision(обект с которым столкнулся игрок) и если игрок сталкивается с любим обектом мы вызываем даную функцию а параметром который мы ей передадим будет обект с которым столкнулся игрок, фкнкция возвратит номер обекта а ето то что тебе нужно
|
|
| |
BoT | Дата: Суббота, 15 Марта 2008, 15:38 | Сообщение # 6 |
Группа: Гости
| При таком коде: For col=1 To 100 cub(col)=CreateCube() NameEntity(cub(col),col) Next Ошибка Function 'cub' not found При таком коде Dim cub(100) For col=1 To 100 cub(col)=CreateCube() NameEntity(cub(col),col) Next repeat if entitycollided(cub, bla) return EntityName(cub) end if Entity does'nt exist cub(col) Ну а вообще признаюсь, это нужно для AI Я расбразываю вейпоинты, затем игрок ходит от одного к другому. Но я незнаю как сделать так, чтобы "если игрок находится близко к обьекту, то перемещаем бота к обьекту номер "????" Вот зачем мне знать номер вейпоинта, иначе он не будет знать к камому вейпоинту двигатся! Так тут у меня пару вопросов, сколько статей не читал, так и не понял: 1) Бот может ли выбирать к какому вейпоинту двигатся, если он находится вблизи сразу 2-х вейпоинтов? 2) Он двигается только строго от одного к другому вейпоинту, или может пройти около этого вейпоинта?
|
|
| |
BoT | Дата: Суббота, 15 Марта 2008, 15:40 | Сообщение # 7 |
Группа: Гости
| тоесть ошибочка вышла, там не ИГРОК находится близко к обьекту, а если БОТ находится близко к обекту, то перемещаем БОТА к обьекту номер "????" (какому-то)...Блин, и всё же ничего не выходит с узнаванием его номера
|
|
| |
Гость | Дата: Суббота, 15 Марта 2008, 17:30 | Сообщение # 8 |
Группа: Гости
| Quote (BoT) if entitycollided(cub, bla)return EntityName(cub)end if Значение возвращается в "никуда" ЗЫ Делай все через цикл For - Next const max_enemys = 20 dim enemys(max_enemys) for i = 1 to max_enemys создвем ботов next в цикле for i = 1 to max_enemys CheckCollision(enemys(i)) next функция function CheckCollision(obj) if entitycollided(player, obj) return entityname(obj) end if end function PS Я не знаю синтаксис блица, но идею ты надеюсь понял
|
|
| |
ВоТ | Дата: Суббота, 15 Марта 2008, 17:39 | Сообщение # 9 |
Группа: Гости
| Идею понял спасибо! Но тупить наверное будет... етож два цикла сразу И ещё функция на проверку столкновения каждый раз))))) Не думал что узнать номер объекта будет так сложно и тормозно))) Но за идею спасибо!!!!!!!!!! 
|
|
| |
Гость | Дата: Суббота, 15 Марта 2008, 17:48 | Сообщение # 10 |
Группа: Гости
| Оптимизируй, можно сделать проверку на дисатнцию.
|
|
| |
Гость | Дата: Суббота, 15 Марта 2008, 17:49 | Сообщение # 11 |
Группа: Гости
| Можно через Handle( неявный указатель )
|
|
| |
BoT | Дата: Суббота, 15 Марта 2008, 17:53 | Сообщение # 12 |
Группа: Гости
| Самое странное что не тупит) Что проверка на столкновение, что на дистанцию. Хотя может из-за того что пока мир не загружен. Посмотрим дальше... Гость из поста 13. Это как? Пожалуйста поподробнее, я хочу насобирать как можно больше информации!
|
|
| |
Гость | Дата: Суббота, 15 Марта 2008, 17:59 | Сообщение # 13 |
Группа: Гости
| Долго обяснять на булке была статья по этомо поводу, хочу заметить что это недокументированная возможность блица
|
|
| |