Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 21.09.2007, 17:33   #16
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Re: Редактор карт

да былобы здорово если это было выделено как алкоголик сказал
лучше в тег Коде
ну и как сказали весь код в конце было норм!

в целом все нормально!
только не оч понятно зачем полный перебор
можно через оюъект-хандел сделать!
(Offline)
 
Ответить с цитированием
Старый 21.09.2007, 17:39   #17
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,693 пользователей)
Re: Редактор карт

в целом, чисто туториал для копипастеров...

Глянь мой тутор, там йа чуть ли не каждую команду расписал )

И орфография с пунктуацией.
(Offline)
 
Ответить с цитированием
Старый 23.09.2007, 15:03   #18
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,569
Написано 544 полезных сообщений
(для 1,526 пользователей)
Re: Редактор карт

Это весь код:

 
Type MObject
Field Entity
Field SX#,SY#,SZ#
Field X#,Y#,Z#
Field Picked
End Type
 
 
;Сдесь находятся все глобальные переменные
Global camera
Global world
 
Graphics3D 1024,768,32,1
SetBuffer BackBuffer()
 
camera=CreateCamera()
PositionEntity camera,0,5,0
 
world=CreatePlane()
EntityPickMode world,2
 
Repeat
For m.mobject = Each Mobject
pik=CameraPick(camera,MouseX(),Mouse())
If pik = world Then
If MouseHit(1) Then
CreateStena(PickedX(),PickedY(),PickedZ(),0,0,0,0. 5,2,2)
End If
End If
 
If pik=m\entity then 
m\picked=1-m\picked
End if
 
If KeyDown(200) Then MoveEntity camera,0,0,.1
If KeyDown(208) Then MoveEntity camera,0,0,-.1
If KeyDown(203) Then MoveEntity camera,.1,0,0
If KeyDown(205) Then MoveEntity camera,-.1,0,0
If KeyHit(64) Then WriteMap("map.shm") ;F6
If KeyHit(65) Then LoadMap("map.shm") ;F7
Next
RenderWorld
Text MouseX(),MouseY(),"^"
Flip
Until KeyHit(1)
End
 
 
Function CreateStena(X#,Y#,Z#,P#,YA#,R#,SX#,SY#,SZ#)
o.MObject=New MObject
o\entity=CreateCube()
PositionEntity o\entity,X#,Y#,Z#
ScaleEntity o\entity,SX#,SY#,SZ#
RotateEntity o\entity,P#,YA#,R#
EntityPickMode o\entity,2
End Function
 
Function WriteMap(Path$)
file=WriteFile(Path$)
For m.MObject = Each MObject
WriteFloat file,EntityX(m\entity)
WriteFloat file,EntityY(m\entity)
WriteFloat file,EntityZ(m\entity)
WriteFloat file,EntityPitch(m\entity)
WriteFloat file,EntityYaw(m\entity)
WriteFloat file,EntityRoll(m\entity)
WriteFloat file,MeshWidth(m\entity)
WriteFloat file,MeshHeight(m\entity)
WriteFloat file,MeshDepth(m\entity)
Next
 
End Function
 
Function LoadMap(Path$)
fil=ReadFile(Path$)
;Удаляем старые стены
For m.MObject = each MObject
 
Next
While Not Eof(file)
X#=ReadFloat(File)
Y#=ReadFloat(File)
Z#=ReadFloat(File)
P#=ReadFloat(File)
YA#=ReadFloat(File)
R#=ReadFloat(File)
SX#=ReadFloat(File)
SY#=ReadFloat(File)
SZ#=ReadFloat(File)
CreateStena(X#,Y#,Z#,P#,YA#,R#,SX#,SY#,SZ#)
Wend
End Function
 
Function Deformation()
For m.mobject=Each Mobject
If m\picked=1 Then
If KeyDown(2) Then 
ScaleEntity m\entity,MeshWidth(m\entity)+0.01,MeshHeight(m\ent ity),MeshDepth(m\entity)
End If 
If KeyDown(3) Then 
ScaleEntity m\entity,MeshWidth(m\entity)-0.01,MeshHeight(m\entity),MeshDepth(m\entity)
End If 
If KeyDown(4) Then 
ScaleEntity m\entity,MeshWidth(m\entity),MeshHeight(m\entity)+ .01,MeshDepth(m\entity)
End If 
If KeyDown(5) Then 
ScaleEntity m\entity,MeshWidth(m\entity),MeshHeight(m\entity)-.01,MeshDepth(m\entity)
End If 
If KeyDown(6) Then 
ScaleEntity m\entity,MeshWidth(m\entity),MeshHeight(m\entity), MeshDepth(m\entity)+.01
End If 
If KeyDown(7) Then 
ScaleEntity m\entity,MeshWidth(m\entity),MeshHeight(m\entity)-.01,MeshDepth(m\entity)-0.01
End If 
 
 
If KeyDown(8) Then 
PositionEntity m\entity,EntityX(m\entity)+0.01,EntityY(m\entity), EntityZ(m\entity)
End If 
If KeyDown(9) Then 
PositionEntity m\entity,EntityX(m\entity)-0.01,EntityY(m\entity),EntityZ(m\entity)
End If 
 
If KeyDown(10) Then 
PositionEntity m\entity,EntityX(m\entity),EntityY(m\entity)+0.01, EntityZ(m\entity)
End If 
If KeyDown(11) Then 
PositionEntity m\entity,EntityX(m\entity),EntityY(m\entity)-0.01,EntityZ(m\entity)
End If 
 
If KeyDown(12) Then 
PositionEntity m\entity,EntityX(m\entity),EntityY(m\entity),Entit yZ(m\entity)-.01
End If 
If KeyDown(13) Then 
PositionEntity m\entity,EntityX(m\entity),EntityY(m\entity),Entit yZ(m\entity)+.01
End If 
End If
Next
 
End Function
__________________
Junior Tools Programmer at Larian Studios
ПеКа: AMD Ryzen 1700X 8@3.4 ГГц, 16 Гб ОЗУ,

NVIDIA GTX 960 4 Гб, SSD Samsung 960 EVO 500 Гб
(Offline)
 
Ответить с цитированием
Старый 23.09.2007, 15:35   #19
magpro
Разработчик
 
Аватар для magpro
 
Регистрация: 23.08.2006
Сообщений: 585
Написано 6 полезных сообщений
(для 7 пользователей)
Re: Редактор карт

Кое что новое узнал для себя. спс.
__________________
Никто не запомнит тебя за твои мысли...
(Offline)
 
Ответить с цитированием
Старый 24.09.2007, 12:57   #20
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,569
Написано 544 полезных сообщений
(для 1,526 пользователей)
Re: Редактор карт

Продолжаем модифицировать редактор. Сейчас сделаем переключение текстур на стене. Для этого нам в типе MObject понадобится еще одна переменная в которой будет храниться путь к файлу текстуры. Собсно добавляем в MObject:

Field TP$

И после сих изменений тип MObject будет выглядить так:

Type MObject
Field Entity
Field SX#,SY#,SZ#
Field X#,Y#,Z#
Field Picked
Field TP$
End Type
И еще одно в глобалах добавляем переменную для номера текстуры:

Global tn

Идем далее. Правим функцию деформации объектов(Deformation).Вписываем в эту ф-цию эти строчки кода:

If KeyHit(20) Then
tn=tn+1

End if
__________________
Junior Tools Programmer at Larian Studios
ПеКа: AMD Ryzen 1700X 8@3.4 ГГц, 16 Гб ОЗУ,

NVIDIA GTX 960 4 Гб, SSD Samsung 960 EVO 500 Гб
(Offline)
 
Ответить с цитированием
Старый 24.09.2007, 13:13   #21
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,569
Написано 544 полезных сообщений
(для 1,526 пользователей)
Re: Редактор карт

Дальше:
If KeyHit(21) Then
tn=tn-1
End if
Это все нужно для выбора текстуры: нажимаем на T(англ) появляется следующая тектура. На Y предыдущая соответственно.

Далее в главном цикле пишем.
If m\picked=1 then
if tn=1 then
m\TP$ = "1.jpg"
end if
if tn=2 then
m\TP$ = "2.jpg"
end if
entityTexture m\entity,LoadTexture(m\TP$)
End if

Вот этим куском у нас меняется текстура натянутая на выделенный объект. У нас для примера будет две текстурки. Возьмите любые JPG файлы и переименуйте их в 1 и 2, и собсно, киньте их в папку с редактором.
__________________
Junior Tools Programmer at Larian Studios
ПеКа: AMD Ryzen 1700X 8@3.4 ГГц, 16 Гб ОЗУ,

NVIDIA GTX 960 4 Гб, SSD Samsung 960 EVO 500 Гб
(Offline)
 
Ответить с цитированием
Старый 24.09.2007, 13:18   #22
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Re: Редактор карт

Я бы например сделал массив текстур, а tn был бы его индексом... впрочем у автора другой подход
__________________
(Offline)
 
Ответить с цитированием
Старый 24.09.2007, 13:28   #23
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,569
Написано 544 полезных сообщений
(для 1,526 пользователей)
Счастье Re: Редактор карт

Дальше мы немного подправим функцию создания стены и функцию загрузки и сохранения карты. Чем мы сейчас и займемся. Для начала подправим ф-цию создания стены:

Function CreateStena(X#,Y#,Z#,P#,YA#,R#,SX#,SY#,SZ#,TP$)
o.MObject=New MObject
o\entity=CreateCube()
o\TP$=TP$
PositionEntity o\entity,X#,Y#,Z#
ScaleEntity o\entity,SX#,SY#,SZ#
RotateEntity o\entity,P#,YA#,R#
EntityPickMode o\entity,2
EntityTexture o\entity,LoadTexture(o\TP$)
End Function

Надо было лишь всего-то добавить две строчки кода. Первая (o\TP$=TP$) у нас отвечает за имя файла текстуры. Вторая (EntityTexture o\entity,LoadTexture(o\TP$))
отвечает за применение данной текстуры к объекту. А и еще в функции появился новый параметр - TP$ - это путь к файлу текстуры.

Идем далее. Модифим сохранение карты:

Function WriteMap(Path$)
file=WriteFile(Path$)
For m.MObject = Each MObject
WriteFloat file,EntityX(m\entity)
WriteFloat file,EntityY(m\entity)
WriteFloat file,EntityZ(m\entity)
WriteFloat file,EntityPitch(m\entity)
WriteFloat file,EntityYaw(m\entity)
WriteFloat file,EntityRoll(m\entity)
WriteFloat file,MeshWidth(m\entity)
WriteFloat file,MeshHeight(m\entity)
WriteFloat file,MeshDepth(m\entity)
WriteString file,m\TP$
Next

Сдесь мы добавили одну строку которая отвечает за сохранение пути к файлу текстуры(TP$). Примечание: загружать данные из файла нужно в такой последовательности как они были записаны в файл( эт наверное применимо только к Блитцу).

Далее - модифим загрузку карты:

Function LoadMap(Path$)
fil=ReadFile(Path$)
;Удаляем старые стены
For m.MObject = each MObject
FreeEntity m\entity
Delete m
Next
While Not Eof(file)
X#=ReadFloat(File)
Y#=ReadFloat(File)
Z#=ReadFloat(File)
P#=ReadFloat(File)
YA#=ReadFloat(File)
R#=ReadFloat(File)
SX#=ReadFloat(File)
SY#=ReadFloat(File)
SZ#=ReadFloat(File)
TP$=ReadString(file)
CreateStena(X#,Y#,Z#,P#,YA#,R#,SX#,SY#,SZ#,Tp$)
Wend
End Function

Вот тута тоже мы добавили одну строку которая отвечает за загрузку из файла строковой переменной TP$ куда записан путь к файлу текстуры. И добавили один новый парметр в функцию(CreateStena(X#,Y#,Z#,P#,YA#,R#,SX#,SY#,SZ# ,Tp$)) в данном случае TP$.

Вот наш редактор теперь научился менять текстуры у объектов.
__________________
Junior Tools Programmer at Larian Studios
ПеКа: AMD Ryzen 1700X 8@3.4 ГГц, 16 Гб ОЗУ,

NVIDIA GTX 960 4 Гб, SSD Samsung 960 EVO 500 Гб
(Offline)
 
Ответить с цитированием
Старый 24.09.2007, 15:05   #24
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Re: Редактор карт

Не хочу быть навязчивым, но воизбежании дальнейших вопросов "А почему я жму а нифега не происходит, или происходит но не так?".
А это т.к. проверка на нажатие кнопок у тебя происходит по пути, mr.DIMAS, Пожалуста! Присваивай в начале цикла все нажатия кнопок к переменным, и только потом юзай переменные, так ты избежишь много недочётов, увеличишь динамику в коде и новички будут учиться хорошему стилю. Спасибо!
(Offline)
 
Ответить с цитированием
Старый 24.09.2007, 18:02   #25
kortesfil
Знающий
 
Регистрация: 16.10.2005
Сообщений: 310
Написано 7 полезных сообщений
(для 0 пользователей)
Re: Редактор карт

а у меня вообще не запускается, ошибки пигет, вот кен ай ду?????
(Offline)
 
Ответить с цитированием
Старый 20.01.2009, 09:25   #26
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,888
Написано 1,183 полезных сообщений
(для 3,292 пользователей)
Ответ: Редактор карт

Исправив пару ошибок в коде я смог запустить. Вот только че то ничего не работает... Даже не сохраняет.
(Offline)
 
Ответить с цитированием
Старый 25.01.2009, 20:55   #27
mumo1991
Оператор ЭВМ
 
Аватар для mumo1991
 
Регистрация: 29.07.2008
Адрес: Украина\Харьков
Сообщений: 23
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Редактор карт

было бы не плохо если бы автор скинул исходник !!)
__________________
1
(Offline)
 
Ответить с цитированием
Старый 31.01.2009, 16:12   #28
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,569
Написано 544 полезных сообщений
(для 1,526 пользователей)
Re: Редактор карт

изыни но исходник я потерял после очередной скриптовой чистки копма
__________________
Junior Tools Programmer at Larian Studios
ПеКа: AMD Ryzen 1700X 8@3.4 ГГц, 16 Гб ОЗУ,

NVIDIA GTX 960 4 Гб, SSD Samsung 960 EVO 500 Гб
(Offline)
 
Ответить с цитированием
Старый 22.02.2009, 05:45   #29
Gide_
AnyKey`щик
 
Регистрация: 17.12.2008
Сообщений: 4
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Редактор карт

Код кривой и не рабочий. Ужас просто.
(Offline)
 
Ответить с цитированием
Старый 22.02.2009, 10:21   #30
Nuprahtor
Элита
 
Аватар для Nuprahtor
 
Регистрация: 26.07.2008
Сообщений: 1,972
Написано 1,095 полезных сообщений
(для 3,922 пользователей)
Ответ: Редактор карт

Хороший код, позволяющий понять, как вообще можно написать примитивный редактор карт.
Исправив пару ошибок в коде я смог запустить. Вот только че то ничего не работает... Даже не сохраняет.
Хмм, после исправления всех ошибок программа стала нормально работать и все записывать.
К слову, на этом редакторе карт основан мой редактор для игры, только сильно переделанный.
Спасибо автору за старания.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посоветуйте игру(РПГ) Yalenz Болтовня 63 10.06.2009 12:19
Редактор карт для игр на движке irrlicht Dronchik 3D Моделирование 5 20.01.2008 15:33
Как сделать игру? alcoSHoLiK FAQ 10 25.08.2007 21:22
Редактор 2D карт. Enemy Болтовня 8 05.01.2007 06:33
Редактор карт vadim2 3D-программирование 7 28.07.2006 14:28


Часовой пояс GMT +1, время: 15:57.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com