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

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

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

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 03.12.2006, 14:58   #1
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
BlitzXML.bb

Всем привет!
Объясните пожалуйсто принцип работы с XML файлами (создание , сохранение, чтение и т.д) для Блитца и в блитце!

или описание на русском я сам тода разберусь)
(Offline)
 
Ответить с цитированием
Старый 03.12.2006, 15:00   #2
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Re: BlitzXML.bb

А стоит ли это изучать?? или достаточно простого сохранение в файл
(Offline)
 
Ответить с цитированием
Старый 03.12.2006, 15:46   #3
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: BlitzXML.bb

http://www.boolean.name/showthread.php?t=969 xml для b3d
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 03.12.2006, 23:17   #4
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Re: BlitzXML.bb

impersonalis Спасибо! Но у меня сама либа была!
меня интерересовал вопрос чтения и сохранения!
типо по карте у меня разбросанно много обЪектов( к примеру деревьев)
как их всех сохранить в хмл-ку
ЗАРАНИЕ СПАСИБО) vbmenu_register("postmenu_23700", true);
(Offline)
 
Ответить с цитированием
Старый 04.12.2006, 01:29   #5
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: BlitzXML.bb

Ну сперва глянь примеры с работой, они то о всём и раскажут, ну и кратко от меня:
Есть раздела, в разделах могут быть ещё разделы, и чайлды. что-либо (раздел или чайлд), может иметь значения как в них так и отдельно но относящиеся к ним (новой строкой). Ты можешь их читать, находить и узнавать значения, и можешь делать свои хмлки. всё просто, смотри пример, в само устройство хмл не смотри там ты ничего почти не найдёшь кроме комментов.

ЗЫ
Хорошо сделан парсер, очень...
(Offline)
 
Ответить с цитированием
Старый 04.12.2006, 20:33   #6
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Re: BlitzXML.bb

MoKa как построить саму хмлку я понял ! как читать я понял из примера ! а вот как сохранять кучу объектов в хмлку так и непонимаю)
ну типо я поставил объект в случайном месте как координыты сохранить , угол повора и т.д. в хмл...
(Offline)
 
Ответить с цитированием
Старый 05.12.2006, 04:51   #7
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: BlitzXML.bb

Для объектов создаёшь массив, со значениями координат и поворотов, ну и того что нужно сохранять.
Затем в цикле обновляешь данные для каждого состовляющего массива.
Потом что-бы сохранить, перебираешь весь массив и сохраняешь в разделе, подряд. В примере есть.
Там будет типо, найти колличество чайлдов, затем делаешь:
For С=1 to ChildCnt
Тут, комманда, которая будет брать чайлд под номером С.
Next
В примере должно быть.
(Offline)
 
Ответить с цитированием
Старый 14.05.2007, 15:30   #8
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Re: BlitzXML.bb

У меня Снова вопрос по ХМЛу
Вообщем сохранение и загрузку сделал
НО при загрузки если элемент пустой
то выдает ошибку как это исправить?

 
rootnode = xmlLoad("Maps\Level.xml")
worldnode = xmlNodeFind("Level", rootnode) 
 
; Стены
LoadLevWall=xmlNodeFind("Wall",worldnode)
WCnt%=xmlNodeChildCount(LoadLevWall)
  For w=1 To WCnt
    Node=xmlNodeChild(LoadLevWall,w)
      If xmlNodeNameGet(node) = "Object" Then 
        wtyp= xmlNodeAttributeValueGet(node, "type")
        wX= xmlNodeAttributeValueGet(node, "X")
        wY= xmlNodeAttributeValueGet(node, "Y")
        wZ= xmlNodeAttributeValueGet(node, "Z")
        wYaw=xmlNodeAttributeValueGet(node, "Yaw")
        CreateModel(wX,wY,wZ,wYaw,wtyp)
      End If
  Next
ХМЛка выглядит так:
 
<Level>
 <Wall>
  <Object type="4" X="-214.972" Y="0.0" Z="189.818" Yaw="0.0"/>
  <Object type="4" X="-216.823" Y="0.0" Z="109.447" Yaw="0.0"/>
  <Object type="4" X="-222.078" Y="0.0" Z="-19.1" Yaw="0.0"/>
  <Object type="4" X="-221.069" Y="0.0" Z="-107.484" Yaw="0.0"/>
 </Wall>
...

Что не так? ЧТо дописать?
(Offline)
 
Ответить с цитированием
Старый 14.05.2007, 15:32   #9
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Re: BlitzXML.bb

А и забыл (в моем понимание пустоu это)
<Level>
 <Wall>
 </Wall>
</Level>
(Offline)
 
Ответить с цитированием
Старый 14.05.2007, 23:22   #10
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: BlitzXML.bb

На какой именно строке выдаёт ошибку? Это важно.
(Offline)
 
Ответить с цитированием
Старый 15.05.2007, 00:20   #11
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Re: BlitzXML.bb

Вроде понял как исправить ! домой приду попробую

а ошибки... он в либу переключается
вообщем
при сохранение
он сохраняет,
не так , как я написал ,
а так
<Level>
 <Wall/>
...
т.е. сразу закрывающий тег (если пусто)
и видимо он найти не может Wall

как сказал приеду отпишусь...
(Offline)
 
Ответить с цитированием
Старый 21.05.2007, 18:34   #12
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Re: BlitzXML.bb

НЕ не выходит! ошибка тута:
http://savepic.ru/5278.jpg
ну естественно не там а гдето в моем коде вот снова он:
СОХРАНЕНИЕ
Function SaveLevel(Lev%)
 XLevSave=xmlNodeAdd(XLevSave,"Level")
 
  XglSave=xmlNodeAdd(XLevSave,"Globals")
   // Xcol=xmlNodeAdd(XglSave,"int")
   // xmlNodeAttributeValueSet(Xcol,"AmbientLight",Al)
XenSave=xmlNodeAdd(XLevSave,"Entitys")
 ;Стены
 XLevWall=xmlNodeAdd(XenSave,"Wall")
 For o.TWallObject=Each TWallObject
   Node=xmlNodeAdd(XLevWall,"Object")
   xmlNodeAttributeValueSet(Node,"type",o\typ)
   xmlNodeAttributeValueSet(Node,"X",EntityX(o\ent))
   xmlNodeAttributeValueSet(Node,"Y",EntityY(o\ent))
   xmlNodeAttributeValueSet(Node,"Z",EntityZ(o\ent))
   ;NodeP=xmlNodeAdd(Node,"Rotation")
   xmlNodeAttributeValueSet(Node,"Yaw",EntityYaw(o\ent))
 Next
xmlSave("Maps\Level"+Lev+".xml",XLevSave) 
End Function
ЗАГРУЗКА
Function LoadLevel(Lev%)
rootnode = xmlLoad("Maps\Level"+Lev+".xml")
levelnode= xmlNodeFind("Level", rootnode)
worldnode = xmlNodeFind("Entitys", levelnode) 
 
 ;   Стены
LoadLevWall=xmlNodeFind("Wall",worldnode)
WCnt%=xmlNodeChildCount(LoadLevWall)
For w=1 To WCnt
 Node=xmlNodeChild(LoadLevWall,w)
  If xmlNodeNameGet(node) = "Object" Then  
   wtyp=    xmlNodeAttributeValueGet(node, "type")
   wX=     xmlNodeAttributeValueGet(node, "X")
   wY=     xmlNodeAttributeValueGet(node, "Y")
   wZ=     xmlNodeAttributeValueGet(node, "Z")
          wYaw=xmlNodeAttributeValueGet(node, "Yaw")
   CreateModel(wX,wY,wZ,wYaw,wtyp) //Моя функция объект создает где надо
   End If
Next 
End Function
и все таже проблема
если ни одного объекта не сохранил
то при загруки ошибка...
(Offline)
 
Ответить с цитированием
Старый 23.05.2007, 23:32   #13
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: BlitzXML.bb

Угу.
Тогда выход: при сохранении проверять на колличество сохраняемых нод, если их 0, то сохранять ноду просто "Empty", и затем при считывании проверять на ChildName если он "Empty", то пропускать.
(Offline)
 
Ответить с цитированием
Старый 24.05.2007, 23:14   #14
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Re: BlitzXML.bb

MoKa
я так уже думал
но как определить колво элементов в типе?
Сначало сделал переменную и при создание каждого эл.типа
прибовлял к ней 1 и следовательно если ни один тип не создан
перемення остается 0 и тогда при сохранение этот тип он не сохраняет

НО так как типов уже придостаточно то это ни очень удобно))
[всмысле не элементов типа , а разных типов]

или ты предлогаешь всегда записывать
пустой элемент

мм надо попробывать

А как ты делал в своем редакторе? там вроде есть пустые поля (
(Offline)
 
Ответить с цитированием
Старый 24.05.2007, 23:44   #15
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: BlitzXML.bb

Как в редакторе, уже и не помню, больше пол года прошло.
Нет зачем делать глобальную и прибовлять, всё проще =).
В цикле когда сохраняешь эллементы:
Count%=0
For n.N=Each N
Count=Count+1
Next
If Count=0
Пишем пустую ноду.
Endif

Всё просто
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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