[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Как узнать номер объекта
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(обект с которым столкнулся игрок) и если игрок сталкивается с любим обектом мы вызываем даную функцию а параметром который мы ей передадим будет обект с которым столкнулся игрок, фкнкция возвратит номер обекта а ето то что тебе нужно smile
 
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

Я расбразываю вейпоинты, затем игрок ходит от одного к другому. Но я незнаю как сделать так, чтобы "если игрок находится близко к обьекту, то перемещаем бота к обьекту номер "????" Вот зачем мне знать номер вейпоинта, иначе он не будет знать к камому вейпоинту двигатся! cry cry cry

Так тут у меня пару вопросов, сколько статей не читал, так и не понял:
1) Бот может ли выбирать к какому вейпоинту двигатся, если он находится вблизи сразу 2-х вейпоинтов?

2) Он двигается только строго от одного к другому вейпоинту, или может пройти около этого вейпоинта?

 
BoTДата: Суббота, 15 Марта 2008, 15:40 | Сообщение # 7
Группа: Гости





тоесть ошибочка вышла, там не ИГРОК находится близко к обьекту, а если БОТ находится близко к обекту, то перемещаем БОТА к обьекту номер "????" (какому-то)...Блин, и всё же ничего не выходит с узнаванием его номера cry
 
ГостьДата: Суббота, 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
Группа: Гости





Идею понял спасибо! Но тупить наверное будет... surprised етож два цикла сразу happy И ещё функция на проверку столкновения каждый раз)))))

Не думал что узнать номер объекта будет так сложно и тормозно)))
Но за идею спасибо!!!!!!!!!! smile

 
ГостьДата: Суббота, 15 Марта 2008, 17:48 | Сообщение # 10
Группа: Гости





Оптимизируй, можно сделать проверку на дисатнцию.
 
ГостьДата: Суббота, 15 Марта 2008, 17:49 | Сообщение # 11
Группа: Гости





Можно через Handle( неявный указатель )
 
BoTДата: Суббота, 15 Марта 2008, 17:53 | Сообщение # 12
Группа: Гости





Самое странное что не тупит) Что проверка на столкновение, что на дистанцию. Хотя может из-за того что пока мир не загружен. Посмотрим дальше...

Гость из поста 13. Это как? Пожалуйста поподробнее, я хочу насобирать как можно больше информации!

 
ГостьДата: Суббота, 15 Марта 2008, 17:59 | Сообщение # 13
Группа: Гости





Долго обяснять на булке была статья по этомо поводу, хочу заметить что это недокументированная возможность блица wink
 
  • Страница 1 из 1
  • 1
Поиск: