forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   И опять она, глючная коллизия (http://forum.boolean.name/showthread.php?t=5143)

AndruXa 27.11.2007 17:39

И опять она, глючная коллизия
 
Вобщем такая фигня получается. Есть переменная, допустим а=0
Мне надо, чтобы при коллизии 2 объектов при а=0 выполнялось одно действие, а при а=1 другое.:wallbash:
Пробовал так
Код:

If entitycollided (...) and a=0 then b=b-1
If entitycollided (...) and a=1 then c=c-1

Неполучается
И так пробовал
Код:

If entitycollided (...) and a=0
b=b-1
elseif a=1
c=c-1
endif

И так не получается
Помогите разобраться плиз!

johnk 27.11.2007 18:11

Re: И опять она, глючная коллизия
 
Совет: проверяй переменную до проверки объектов на коллизию.

AndruXa 27.11.2007 18:18

Re: И опять она, глючная коллизия
 
Цитата:

Совет: проверяй переменную до проверки объектов на коллизию.
Ты не понял, у меня ситуация: подхожу я к боту,толкаю его он мне пихает речь, типа привет,ты че талкаешься меня зовут.... если я подхожу к нему 2 раз он мне говорит типа ты еще сдесь...(после первого диалога переменная встает в положение1)

Diplomat 27.11.2007 18:23

Re: И опять она, глючная коллизия
 
Это не коллизия глючная, это логическое мышление сбито вольностями Блицевского синтаксиса, допускающими противоречащие духу Бейсиков кошмары типа "IF a b=b+1" вместо "IF a<>0 THEN b=b+1".

Вопрос: что возвращает твой ЁнтитиКоллидед, и как следует это анализировать?
Ответ: ЁнтитиКоллидед возвращает что характерно либо 0, либо хендл ёнтити, с которым собсно коллидед. Поэтому для определения факта коллизии следует проверять возвращаемое значение на неравенство нулю... а лучше делать то же самое, но с функцией CountCollisions - она работает процентов на 20 быстрее.

P.S. Локальную переменную для хранения возвращаемого значения флага коллизии- завести стоит, если ты проводишь проверки неоднократно.

AndruXa 27.11.2007 18:29

Re: И опять она, глючная коллизия
 
Цитата:

IF a<>0 THEN b=b+1
Дык, если так сделать то диалоговая надпись будет выскакивать сразу после первого диалога, а мне нужно, чтобы она выскакивала после толчка бота игроком
Хорошо, задам свой вопрос подругому, как зафиксировать коллизию, чтобы например, когда врезаешься в объект 2 раз, чтобы блиц знал, что это уже 2 раз.

У меня а=0 и а=1 как раз и есть эта переменная, после 1 коллизии она стает равной 1, после 2 она стает равной2... Блин, чет я совсем запутался.....

IGR 27.11.2007 18:32

Re: И опять она, глючная коллизия
 
попробуй так:
If entitycollided (...)
if a=0 then b=b-1
if a=1 then c=c-1
endif

AndruXa 27.11.2007 18:38

Re: И опять она, глючная коллизия
 
Цитата:

If entitycollided (...)
if a=0 then b=b-1
if a=1 then c=c-1
endif
...А это не нарушение синтаксиса блица?

dimanche13 27.11.2007 18:53

Re: И опять она, глючная коллизия
 
Код:

If entitycollided (...) = true
 print("столкнулся")
 if(first = true)
  first = not first
  ' здесь первый контакт
  print("впервые")
 else
  ' здесь все последующие
  print("не в первой уже...")
 end if
endif


Diplomat 27.11.2007 18:54

Re: И опять она, глючная коллизия
 
Цитата:

Дык, если так сделать то диалоговая надпись будет выскакивать сразу после первого диалога,
Прочти пост еще раз, а именно наклонный текст, находящийся после подстроки "Ответ". Подразумевалось нечто класса
Код:

CollFlag=EntityCollided(...)
If CollFlag<>0 And A=1 Then ...
If CollFlag<>0 And A=0 Then ...

Цитата:

...А это не нарушение синтаксиса блица?
Нет, это просто бэссграмотность.

IGR 27.11.2007 18:54

Re: И опять она, глючная коллизия
 
Цитата:

...А это не нарушение синтаксиса блица?
невкоем случае !!
юзай !! :)

IGR 27.11.2007 19:03

Re: И опять она, глючная коллизия
 
Цитата:

Нет, это просто бэссграмотность.
а сорри !!
как же я мог допустить такое !!
вот правельный код:
If entitycollided (...) Then
if a=0 then b=b-1
if a=1 then c=c-1
endif

HolyDel 28.11.2007 01:06

Re: И опять она, глючная коллизия
 
IGR, ты издеваешся?
Андрюха, кой черт дернул тебя юзать коллизии для ТАКОЙ задачи? проверяй расстояние до объекта. дальше - сам знаеш.

Crystal 29.11.2007 17:28

Re: И опять она, глючная коллизия
 
Код:

If EntityDistance(юзер,бот)<расстояние Then что то происходит
вот так делать надо.

Alex_Noc 09.12.2007 03:20

Re: И опять она, глючная коллизия
 
думаю case здесь точно поможет , как им пользоваться надеюсь обьяснять не нужно

AndruXa 09.12.2007 14:27

Re: И опять она, глючная коллизия
 
Цитата:

думаю case здесь точно поможет , как им пользоваться надеюсь обьяснять не нужно
Ну не фига себе вы че мертвых-то будите, я уже давним давно разобрался:)


Часовой пояс GMT +4, время: 18:26.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot