|
12.09.2016, 17:15
|
#1
|
Разработчик
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений (для 36 пользователей)
|
Чтение записи после перезагрузки приложения
Здраствуй Булка!!! Живали еще ты?!)))
Вот код. Закоментите текстуру если лень добавлять свою пжлст.
Graphics3D 800,600,16
SetBuffer BackBuffer()
font=LoadFont("Blitz",14,True)
SetFont font
Camera=CreateCamera()
PositionEntity Camera,0,2,-2
plan=CreatePlane()
Texture=LoadTexture("text.jpg")
ScaleTexture(Texture,3,3)
EntityTexture(plan,Texture)
Global xm=3,zm=5
Global Newz,ner,Select1
Type Neur
Field x#,y#,z#
Field mass
Field func
Field Ent
Field Child[99],CountChld
End Type
Type Buton
Field x,y
Field Status
End Type
Save=CreateCube();save
ScaleEntity Save,0.51,0.1,0.51
EntityPickMode Save,2
PositionEntity Save,-2,0,5
Load=CreateCube();load
ScaleEntity Load,0.51,0.1,0.51
EntityPickMode Load,2
PositionEntity Load,-4,0,5
Light=CreateLight()
RotateEntity Light,90,0,0
For i=0 To xm
For i2=0 To zm
NewNeur.Neur=New Neur
NewNeur\Ent=CreateCube()
ScaleEntity NewNeur\Ent,0.3,0.1,0.3
NameEntity(NewNeur\Ent, Handle(NewNeur)) ;"Neur"+Str( i )+","+Str(i2))
NewNeur\x=(i2)
NewNeur\y=0
NewNeur\z=i
PositionEntity(NewNeur\Ent,NewNeur\x,NewNeur\y,NewNeur\z)
EntityPickMode NewNeur\Ent,2
Next
Next
While Not KeyDown(1)
CameraProject(camera,EntityX(Save),EntityY(Save),EntityZ(Save))
x1b=ProjectedX()
y1b=ProjectedY()
CameraProject(camera,EntityX(Load),EntityY(Load),EntityZ(Load))
x2b=ProjectedX()
y2b=ProjectedY()
select1=0
If MouseHit(1)
CameraPick(camera,MouseX(),MouseY())
If PickedEntity()=Save
File=WriteFile("save01.dat")
WriteInt(File,xm)
WriteInt(File,zm)
For NewNeur.Neur=Each Neur
WriteInt(File,NewNeur\CountChld)
For i=1 To NewNeur\CountChld
WriteInt(File,NewNeur\Child[i])
Next
Next
CloseFile(File)
ElseIf PickedEntity()=Load
File=OpenFile("save01.dat")
If File<>0
xm=ReadInt(File)
zm=ReadInt(File)
For NewNeur.Neur=Each Neur
NewNeur\CountChld=ReadInt(File)
For i=1 To NewNeur\CountChld
NewNeur\Child[i]=ReadInt(File)
Next
Next
CloseFile(File)
EndIf
Else
select1=1
EndIf
ElseIf MouseHit(2)
CameraPick(camera,MouseX(),MouseY())
If PickedEntity()=Save
ElseIf PickedEntity()=Load
Else
select1=2
EndIf
Else
EntityPick(Save,0)
EndIf
If PickedEntity()<>0
ext=0
If select1=1
If LastEnt=0
LastEnt=PickedEntity()
EntityColor(LastEnt,250,50,50)
Else
If LastEnt<>PickedEntity()
NewNeur.Neur=Object.Neur(EntityName(LastEnt))
mem=0
For i=1 To NewNeur\CountChld
If NewNeur\Child[i]=PickedEntity()
ext=1
Exit
Else
ext=0
EndIf
Next
If ext=0
;Stop()
NewNeur\CountChld=NewNeur\CountChld+1
NewNeur\Child[NewNeur\CountChld]=PickedEntity()
EndIf
Else
EntityColor(LastEnt,250,250,250)
LastEnt=0
EndIf
EndIf
EndIf
If select1=2
If LastEnt<>PickedEntity() And LastEnt<>0
NewNeur.Neur=Object.Neur(EntityName(LastEnt))
ext=0
For i=1 To NewNeur\CountChld
If NewNeur\Child[i]=PickedEntity()
ext=1
Exit
EndIf
Next
If ext=1
NewNeur\Child[i]=NewNeur\Child[NewNeur\CountChld]
NewNeur\CountChld=NewNeur\CountChld-1
EndIf
EndIf
EndIf
EndIf
mxspd#=MouseXSpeed()*0.25
myspd#=MouseYSpeed()*0.25
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
campitch#=EntityPitch(Camera)+myspd#
If campitch#<-85 Then campitch#=-85
If campitch#>85 Then campitch#=85
RotateEntity Camera,campitch#,EntityYaw(Camera)-mxspd#,EntityRoll(Camera)
If KeyDown(17) MoveEntity Camera,0,0,.2
If KeyDown(31) MoveEntity Camera,0,0,-.2
If KeyDown(32) MoveEntity Camera,.2,0,0
If KeyDown(30) MoveEntity Camera,-.2,0,0
RenderWorld
UpdateWorld
If KeyHit(57) Then w=1-w
WireFrame w
Text 10,10,"----------TESTING----------"
For NewNeur.Neur=Each Neur
CameraProject(camera,EntityX(NewNeur\Ent),EntityY(NewNeur\Ent),EntityZ(NewNeur\Ent))
xb=ProjectedX()
yb=ProjectedY()
Text xb,yb,EntityName(NewNeur\Ent)
For i=1 To NewNeur\CountChld
CameraProject(camera,EntityX(NewNeur\Child[i]),EntityY(NewNeur\Child[i]),EntityZ(NewNeur\Child[i]))
Line(xb,yb,ProjectedX(),ProjectedY())
Text(10,30,NewNeur\CountChld)
Next
Next
Color(250,50,50)
Text(x1b,y1b-30,"Save")
Text(x2b,y2b-30,"Load")
Flip
Wend
End
Function UpdateNeurs()
End Function
;__________________________________________________________________
EntityColor(PickedEntity(),10,210,10)
If LastEnt<>0
EntityColor(LastEnt,250,250,250)
EndIf
If Select1<1 Select1=Select1+1
If Select1=2
If LastEnt<>PickedEntity()
NewNeur.Neur=Object.Neur(EntityName(LastEnt))
NewNeur\CountChld=NewNeur\CountChld+1
NewNeur\Child[NewNeur\CountChld]=PickedEntity()
Else
Select1=0
LastEnt= 0
EndIf
Else
;Stop()
If LastEnt=0 LastEnt=PickedEntity()
EndIf
;ElseIf LastEnt<>0
If Select1=0
EntityColor(LastEnt,250,250,250)
ElseIf Select1=1
EntityColor(LastEnt,250,50,50)
EndIf
Вопрос в следующем. Если сохранять и загружать сохранения в запущенной программе то никаких проблем. Но перезагрузив программу уже считать то что было сохранено в последний раз не выходит. Подскажите нюанс, чего не доделал?
Сохраняю чилды объектов. Чтобы добавить чилд к объекту надо щелкнуть по нему, и после щелкнуть по объекту который нужно к нему подцепить. закончить добавление щелчком по объекту к которому добавляли чилды.
|
|
(Offline)
|
|
12.09.2016, 17:35
|
#2
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Чтение записи после перезагрузки приложения
Ты жива ещё моя булочка? Жив и я. Привет тебе, привет!
Код не запускал. Архив бы приложил, сырец+текстуры, чтоб можно было распаковать и запустить.
Что значит не выходит считать?
Ошибки какие-то вылетают или просто ничего не происходит (происходит то, чего не надо)?
Ты хендлы ентитей что ли пишешь в файл? Тогда понятно в чём дело: хендлы (адреса в памяти) при каждом запуске будут другие. Придумай другой способ идентификации.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
12.09.2016, 17:53
|
#3
|
Разработчик
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений (для 36 пользователей)
|
Ответ: Чтение записи после перезагрузки приложения
ABTOMAT, даров "сторожил" булочки)) там текстура и не нужна впрынцыпе)
|
(Offline)
|
|
12.09.2016, 18:47
|
#4
|
Разработчик
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений (для 36 пользователей)
|
Ответ: Чтение записи после перезагрузки приложения
Как раз через хендлы все заработало. У меня привязка чилда к родителю идет по ссылке на объект который привязан к типу. Стал записывать имя объекта в котором записан хендл. Теперь все работает чисто.
|
(Offline)
|
|
12.09.2016, 18:55
|
#5
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Чтение записи после перезагрузки приложения
Сообщение от CRASHER
ABTOMAT, даров "сторожил" булочки)) там текстура и не нужна впрынцыпе)
|
Ну да, ещё искать, где там её использование в коде убрать.
Короче, блин, вопросы в таком виде (просто простыня кода, которую надо копировать куда-то в файл, чтобы запустить, папку ему создавать и т.д.) имеют низкие шансы на то, что кто-то захочет помогать. У меня вот Блиц не запускался уже сто лет на компе. Я думал сначала, если б был bb-файл, я бы его двойным кликом открыл, может, в недрах системы на это расширение Блиц и откликнется. А спецом его искать... Это не просьба. Просто информация к размышлению.
Я уже это запускать не буду, т.к. мне кажется, что проблема в том, что ты записываешь хендлы ентитей, что бессмысленно, т.к. они являют собой адреса в памяти, которые при каждом запуске игры новые, никак не связанные с теми, что ты записал в файл.
Вот что именно ты записываешь в файл? Ответь сам себе на этот вопрос и, возможно, поймёшь, почему у тебя не работает.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
12.09.2016, 19:10
|
#6
|
Разработчик
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений (для 36 пользователей)
|
Ответ: Чтение записи после перезагрузки приложения
ABTOMAT, ды нет работает. Хендл записываю в имя энтити, после пробегаюсь по чилдам и считываю имя энтити, где записан хендл. До этого просто энтити писал, не работало. Ну я бы сформировалб ланчер, но теперь уже проблема решена. смотреть нечего))
Последний раз редактировалось CRASHER, 19.09.2016 в 22:21.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:39.
|