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=4394)

Belamore 09.09.2007 22:28

Вопросы по синтаксису языка BlitzBasic
 
[blitz]
If
GM\name = "фриц" U\mesh = CopyEntity GM\Mesh; еслиимямодели - "фриц" то копируем мешвюнита.
[/blitz]

Запускаю, ругается:

Цитата:

Expecting variable assignment
Уж и не знаю, в чём дело :dontknow:

Помогите, может, туплю не по-детски, но всё равно просьба ногами не бить, я только учусь :)

Кстати вот код типов, всё с комментариями:

[blitz]
Type
GameModel; Тип, вкоторомхранитсяигроваямодель + еёназвание.
Field Mesh; Самамоделька, собственно
Fieldname$ ; Имямодели
EndType
Type unit ; Очень ёмкое понятие. Пока что и в основном это враги,
; но также могут быть и здания, и всё другое что атакует и что можно убить.
Field HP = 100 ; Единицы здоровья. Куды ж без этого?
Field Mesh ; моделька юнита.
Field status$ = "идёт к цели" ; статус бота. По нему программа определит, как анимировать модель и какие действа выполнять
Field anim_status$ = "нифига не делает" ; статус анимации бота, указывает, как в данный момент анимирована модель.
Field speed# = 0 ; скорость бега бота (он не стартует с места сразу, а немного "разгоняется", по сему нужна эта переменная)
Field target.target ; цель, к которой бежит бот, котоая описана в отдельном типе (хз, а может ещё и не описана - всё времени нету прогу писать)
Field Kind$ = "фриц" ; тип монстра (бота), в данном случае - "фриц"
End Type ; вроде для юнитов на данном этапе всё.
[/blitz]

MiXaeL 09.09.2007 22:33

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
А ты определял GM и U как указатели к типам? (Кстати, разве можно присавивать значения прямо в описание филдов?!). Выложи весь код (Не сопру!)

Belamore 09.09.2007 22:40

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то руга
 
Цитата:

Сообщение от Michael
А ты определял GM и U как указатели к типам? (Кстати, разве можно присавивать значения прямо в описание филдов?!). Выложи весь код (Не сопру!)

Кода у меня уже очень много, покажу функцию, в которой я копирую меш:

[blitz]
Function Create_Unit() ; Создаёт юнита в игре. В функцию нужно передать цель бота. (или не надо...)

U.unit = New unit ; Создаём новый элемент типа "юнит"
U\HP = 100 ; Устанавливает здоровье юнита на сотню!

For GM.GameModel = Each GameModel ; перебираем все загруженные модели
If GM\name = "фриц" U\mesh = CopyEntity GM\Mesh ; если имя модели - "фриц" то копируем меш в юнита.
Next

; U\target = target ; ставим боту цель, которая была передана в функцию ПОКА НЕ СТАВИМ

End Function ; Кажись, всё.

[/blitz]

Но если нужно, могу дать и весь исходник с ресурсами.

tormoz 09.09.2007 23:01

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
Цитата:

U.unit = Newunit
U.unit = New unit
:-D

Belamore 09.09.2007 23:21

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
tormoz, дело в том, что я при копировании кода из Блитза в сообщение использовал ИЕ7 т.к. он сохраняет разноцветный синтаксис. Однако, он почему-то "зохавал" некоторые пробелы (знаю, звучит нереально, но всё же), мне их пришлось вставлять заново, кое где пропустил, как в этом случае. В коде у меня все пробелы на месте, даже в сообщении видно, что слово New выделено синеньким, а Unit - белым.
Впредь буду Оперу юзать - она пробелы никогда не теряет..

Ну что, кто нибудь знает решение проблемы?

jimon 09.09.2007 23:25

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
Belamore
я цвет и шрифт подправил :) а то уж слишком сильно давило на глаза
подправь тогда и пробелы

Frank 09.09.2007 23:41

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
Аргументы к функциям, которые возвращают какие-либо значения нужно писать в скобках!
U\mesh = CopyEntity(GM\Mesh)

Belamore 11.09.2007 18:58

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
Frank, спасибо, помогло!
Теперь другой вопрос.
Пытаюсь проверить существование в филде бота цели:

[blitz]If bot\target <> Null[/blitz]

Пишет:
Цитата:

Illegal type conversion!
Хотя типа цели существует:

[blitz]Type target ; Тип цели, к которой следует направлять ботов.
Field target_unit.unit ; целевой юнит, на который будет производиться атака либо другие манипуляции вроде заклинаний и т.п.
; либо если отсутствует целевой юнит будет создаваться меркер для атаки на него, если, например, надо атаковать просто землю
; я ещё не решил до конца, может, создам юнита-пустышку чтоб атаковать его без геморроя с маркерами.
Field action ; действие, которое будем применять к целевому юниту, будь то атака, либо заклинание.
End Type
[/blitz]

Объясните, в чём дело? Извините, если вопрос тупой, но всё же мне нужна ваша помощь.

Belamore 11.09.2007 19:42

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
Так-с, с пердыдущим вопросом я разобрался...
Теперь новый:
[blitz]
Function
CreateUnit() ; Создаёт юнита в игре. В функцию нужно передать цель бота. (или не надо...)
U.unit = New unit ; Создаём новый элемент типа "юнит"
U\HP = 100 ; Устанавливает здоровье юнита на сотню!
For GM.GameModel = Each GameModel ; перебираем все загруженные модели
If GM\name = "фриц" U\mesh = CopyEntity (GM\Mesh) ; если имя модели - "фриц" то копируем меш в юнита.
Next
Return
U
[/blitz]
На строчке
Return U
Выдаёт тот самый
Цитата:

Illegal type conversion!
Разве нельзя возвращать созданный элемент типа?

Raiter 11.09.2007 19:55

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
ыыы... возвращай что-то конкретное

Return U\mesh

Belamore 11.09.2007 20:06

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
Raiter, мне нужно именно возвратить целый элемент типа.

Raiter 11.09.2007 20:08

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
Зачем?

Belamore 11.09.2007 20:14

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
Raiter, чтобы потом к нему (элементу) можно было обратиться

breadman 11.09.2007 20:27

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
Может хенндлами лехче было бы? )))
Сам недавно начал про них узнавать.
Конечно может я не прав, ну если я прав то форумчане-ветераны
тебе точно всё обьяснят.

Belamore 11.09.2007 20:32

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
breadman, нельзя ли не так лаконично? Можно поподробнее про хендлы?

breadman 11.09.2007 20:37

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
Я сам в них ещё не разобрался((
Спроси у ветеранов.

Belamore 11.09.2007 20:48

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
Цитата:

Сообщение от breadman
Я сам в них ещё не разобрался((
Спроси у ветеранов.

Господа ветераны, как можно возвратить хендл элемента типа, созданного функцией?

Frank 11.09.2007 20:48

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
Нужно указать тип функции вот так:
Function CreateUnit.Unit()
u.unit=new unit
;.....
return u
end function

Belamore 11.09.2007 20:52

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
Frank, и опять ты меня выручил!

MiXaeL 11.09.2007 22:31

Re: При попытке копирования Ентити из филда одного типа в другой блиц почему-то ругается
 
Вот про хендлы - читай.


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

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