|
07.01.2010, 00:14
|
#16
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Ответ: Function не дает имена
Ну до этого юзал ClearWorld() , Global'ы приходилось переписывать
Щас сделал по другому, работает без багов, только очистку уровня сделать надо
А вообще глобал это хорошая вещь И GOTO тоже, не знаю почему его так не любят
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.01.2010, 01:57
|
#17
|
Бывалый
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений (для 1,836 пользователей)
|
Ответ: Function не дает имена
Я тут игру пытаюсь зделать, и думаю у меня гдето столько же глобалов будет.
Ето что плохо? почему?
|
Действительно, почему? Жрет больше памяти?
У меня в программе 6 global image. Чем это может быть плохо?
|
(Offline)
|
|
07.01.2010, 02:14
|
#18
|
Мастер
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений (для 3,006 пользователей)
|
Ответ: Function не дает имена
Почти любая глобальная ссылка на объект - говнокод.
|
(Offline)
|
|
07.01.2010, 02:18
|
#19
|
Бывалый
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений (для 1,836 пользователей)
|
Ответ: Function не дает имена
Почему говнокод? В BlitzBasic - почти единственный способ обратиться к объекту из любой точки кода...
В таком случае вот такой код на Си, тоже говнокод:
int global=0; int main(){ return 0; }
|
(Offline)
|
|
07.01.2010, 02:31
|
#20
|
Мастер
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений (для 3,006 пользователей)
|
Ответ: Function не дает имена
Сообщение от FireOwl
Почему говнокод? В BlitzBasic - почти единственный способ обратиться к объекту из любой точки кода...
|
Потому, что в нормальном проекте таких объектов быть не должно ) Ресурсы хранят в рес менеджерах, игровые обьекты в обычных типах и так далее.
|
(Offline)
|
|
Эти 6 пользователя(ей) сказали Спасибо EvilChaotic за это полезное сообщение:
|
|
07.01.2010, 02:32
|
#21
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Function не дает имена
В глобалы разве что настройки приложения можно выносить.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.01.2010, 02:35
|
#22
|
Бывалый
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений (для 1,836 пользователей)
|
Ответ: Function не дает имена
Я почему-то всегда считал что типы - удобное средство для создания и обработки неопределённого количества объектов. Остальное всегда храню в массивах и переменных.
|
(Offline)
|
|
07.01.2010, 03:48
|
#23
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Function не дает имена
храните всё в глобалах - BlitzHack уже идёт за вами!
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Эти 8 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
|
|
07.01.2010, 13:53
|
#24
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Ответ: Function не дает имена
resHack нам в помощь Не увидите наших глобалов
|
(Offline)
|
|
07.01.2010, 15:23
|
#25
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Function не дает имена
Сообщение от Павел
resHack нам в помощь Не увидите наших глобалов
|
КЭП ты где?
__________________
|
(Offline)
|
|
07.01.2010, 15:56
|
#26
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Function не дает имена
Global Mode=-1
Global group,window,statusbar,boxbutton,snaptoggle,viewwindow,toggleSolid,toggleWire,toggleEdged,modelbutton,mviewer,mviewcancel
Global mviewimport,propertieswindow,propXedit,propYedit,propZedit,propRXedit,propRYedit,propRZedit,modeMove,modeRotate,groupModels
Global timetouseimport,mviewplank,previewCam,mviewInsert,objwindow,groupObjects,mviewWithChildren,matedbutton,mateditor,matedclose
Global matNotSimple,matUseLighting,matUseAmb,matUseDiff,matUseLM,matUseRLM,matUseBump,matNoMips,matBright,matContrast,matHue,MatSaturation
Global matCR,matCG,matCB,matUseSpec,matSpec,matSpecPow,matUseEnv,matEnvInt,matAR,matAG,matAB,matUseRim,matRim,matRimPow,matPreDiff
Global matPreNS,matApply,matListWindow,groupMaterials,matListAdd,modeScale,propSXedit,propSYedit,propSZedit,DelayedPent,matMasked
Global matAlpha,mat2Sided,matExport,matImport,matListRename,matListDel,mviewarea,matListArea,objWindowArea,objWindowAreaM,objWindowAreaS
Global mviewRemove,mapbutton,mapwindow,mapclose,mapselectface,mapU,mapV,mapchangetimeout,mapUV,objdelete,matLambert,matHLambert
Global matOrenNayar,matAS,matPhong,matBlinn,matWI,matCT,groupMatDiff,groupMatSpec,anglesnap,renamewindow,rentextbox,renok,rencancel
Global matListRenaming,WorkedIn6Mode,mapPlanarMap,movingplane,mapUM,mapVM,matDepthmap,matParallax,matAlphaSlider,matRefract
Global FinalizingButton,FinalizingWindow,FinRender,FinCancel,Bhdrmap,Bhdrfile,Bhdrint,Bhdrblur,BGI,B1GI,B2GI,BFGRays,Bptpaths,Bptsize
Global BGI1_pm,BGI1_dpm,BGI1_pt,BGI1_fg,BGI1_mc,BGI2_pm,BGI2_dpm,BGI2_pt,BGI2_fg,BGI2_mc,lightbutton,lightwindow,lightcancel,lightlist
Global lightinsert,lightlistadd,lightlistremove,lightint,groupLights,lightR,lightG,lightB,lightShadRad,FinPreview,FinLoadLmaps,Bres
Global ProgressWin,ProgressBar,modeAlign,BGI1_None,BGI2_None,BGI1_Int,BGI2_Int,Bmcrays,Bphotons,BphotonRad,B_ar,B_ag,B_ab,BGIdiffint
Global B_aa,matOverdiff,FinAO,FinUW,Entitybutton,entwindow,entinsert,entcancel,entlist,groupEntities,ppbutton,ppwindow,ppclose,ppssao
Global matPaint,WorkedIn11Mode,PrtButton,PrtWindow,PrtCancel,PrtInsert,groupShapes,prtWall1,ActivePSys.PSystem,ActivePE.PEmitter
Global prtshiftx,prtshifty,prtshiftz,groupEmitters,PrtEArea,PrtSArea,PrtShapeSphere,PrtShapeCube,PrtSphereHotSpot,PrtSphereFalloff
Global PrtCubeBounds,PrtShapeAreaSphere,PrtShapeAreaCube,PrtCycle,PrtCDelay,PrtCDRnd,PrtMass,PrtLife,PrtLifeRnd,PrtRate,PrtTrails
Global PrtSoft,PrtDirX,GraphWindow,GraphBG,GraphClose,PrtDirY,PrtDirZ,PrtSize,PrtRotate,PrtAlpha,PrtRangeX,PrtRangeY,PrtRangeZ,groupPSystems
Global PrtSAdd,PrtModel,PrtMat,mviewHiddenOk,mviewHiddenSP,matListHiddenOk,PrtSRemove,PrtEAdd,PrtERemove,GraphExport,GraphImport
Global PrtImport,PrtExport,PrtAdditive,PrtMax,GraphXEdit,GraphYEdit,onMouse3,SelectedGraphPoint,ppssaopower,ppssaoscale,phywindow
Global phyclose,phygencol,phybutton,phythrow,phyhull,phytrimesh,phynone,DynWindow,DynClose,dyndyn,dynphys,dynmass,dynbutton
Global dynenable,dyngetback,matphysbutton,matphyswindow,matphysenable,matphysfriction,matphyshardtouch,matphyssofttouch,matphysbreakable
Global matphyshardsound,matphyssoftsound,matphysscrapesound,matphysbreaksound,matphysclose,matphysbullsound,matphysscrape,toolsbutton
Global toolswindow,toolsclose,toolsconvmtos,scriptbutton,scriptwindow,scriptnew,scriptsave,scriptcombobox,scriptdelete,scriptcreate
Global scriptcedit,scriptcok,scriptccancel,scriptarea,dynscript,dynchoosescript,dyncsarea,dyncsok,groupScripts,scriptglobal,bspwindow
Global bspbutton,bspclose,bspbuild,bspdebug,bspleafsarea,groupLeafs,bspshowallleafs,bspleafrename,primwindow,primcancel,primbox,primcyl
Global primsegs,propGlobal,propGWindow,propGClose,propGSkybox,propGSkyOn,propGOceanOn,phyboat,dboatWindow,dboatClose,dboatOn,phykeps
Global phymodel,pkeparea,pkepadd,pkepremove,pkepX,pkepY,pkepZ,pkepBuo,pkepLinDamp,groupKeps,pkeprenset,groupKepSets,pkepsetimport
Global phymcx,phymcy,phymcz,pkwindow,pkclose,pkepsetarea,pkepaddset,pkepdelset,pkepsetexport,dboatmaxdrag,dboatpower,groupBoats,dboatadd
Global dboatdel,dboatarea,dboatname,dboatdrivesound,dboatidlesound,dynai,aibutton,aiwindow,ainew,aicreate,aicedit,aicok,aiccancel,aicombobox
Global aisensing,aisensetypeslist,aisenseuse,aisensetypes,aisenseltypes,aisenselprops,aisenseaddtype,aisenseremovetype,aicondif,aicond1
Global aicondop,aicond2,aicondadd,aicondremove,aishedule,aitaskadd,aitaskremove,aitaskfunc,aitasktarget,aitaskparam,aisave,aidelete,aiimport
Global aiexport,dynchooseai,dyncaarea,dyncaok,groupAI,propGTeamsArea,propGTeamsAdd,propGTeamsRemove,teamcreate,teamcok,teamccancel,teamcedit
Global groupTeams,dynteam,dynchooseteam,dynctarea,dynctok,groupTeams2,propGTeamsAI,objrename,objrenamewin,objrenameedit,objrenameok,objrenamecancel
Global dboathealth,weapWindow,weapClose,weapdamage,weaprate,groupWeapons,weapadd,weapdel,weaparea,weapname,weapshootsound,weapreloadsound
Global weapammo,propGWeapButton,weapmodel,pmchoosePSystem,pmcparea,pmcpok,matphysparticles,groupPS,PrtBGColor,PrtBGR,PrtBGG,PrtBGB,filewindow
Global filecombobox,fileinsidelist,filereflist,fileleft,fileright,propGFile,ppssaofar,filemerge,toolscenterpivot,lightdirectional,lightpoint
Global lightspot,lightskylight,FinFastRender,toolsslice,toolsextrude,matanimbutton,matanimwindow,matanimclose,matanimwidth,matanimheight
Global matanimframes,matanimenable,matsphereframe,prtScaleX,prtScaleY,scriptclose,objwindowareae,entgroup,aiclose,matanimdelay,matspheretimeto
Global prtshiftxRND,prtshiftyRND,prtshiftzRND,GraphRNDEdit,prtBright,prtEmit,prtReset,prtTrail,prtUp,prtDown,prtPointalong,prtRed,prtGreen,prtBlue
Global prtNFR,FinImp,FinFRArea,FinFRBlur1,FinFRBlur2,FinPickAmb,LightPickColor,FinFRContrast,matphysdecals,matdecalbutton,matdecalclose
Global matdecalsize,matdecalwindow,matdecalenable,matblendbutton,matblendwindow,matblendclose,matblendalpha,matblendm2x,matblendm4x
Global phyheli,dheliname,dheliclose,groupHelis,dhelimaxdrag,dhelihealth,dheliarea,dheliadd,dhelidel,dheliwindow,matCPick,matAPick,PrtSDupl
Global PrtSRename
Global ShapeOffsetX#, ShapeOffsetY#, ShapeOffsetZ#, ShapeCenterX#, ShapeCenterY#, ShapeCenterZ#
Global CamNX#,CamNY#,CamNZ#
Global matsphere
поэтому я и забил на блиц
без оопа жизни нет
что больше всего бесит с глобалами, приходится их в памяти держать, чтобы случайно не заюзать где-то ещё думая что они локалы.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.01.2010, 17:18
|
#27
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Function не дает имена
О боже.
Кстати может кто нибудь напишет статью, как делать менеджер ресурсов? И как лучше "строить код"..
|
(Offline)
|
|
07.01.2010, 18:21
|
#28
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Function не дает имена
Вот вам мой менеджер, пользуюсь регулярно.
;====================================================================
; Project: Resource Manager
; Version: 2.0
; Author: H@non
; Email: [email protected]
; Description: менеджер ресурсов, следит за хранением их в системе,
; дает доступ по управлению, удобен при использовании
; локаций в игре.
;====================================================================
;-- тип для ресурсов
Type TResource
Field path$
Field ent
Field tip
End Type
Const RES_MESH=1, RES_AMESH=2, RES_SND=3, RES_TEX=4, RES_SPR=5, RES_SND3D=6
;-- временный тип для удаления лишних ресурсов
;-- (удобен при переходе между локациями с одинаковыми ресурсами)
Type TResDel
Field r.TResource
End Type
;-- Функция загружает указанный ресурс, либо если ресурс
;-- уже был загружен возвращает ссылку на него.
;Параметры: путь, тип, родитель, текстурные флаги
Function ResLoad(path$, tip, parent=0, texFlag=1)
Local rf.TResource = Object.TResource(ResFind(path$))
If rf <> Null Then Return rf\ent
Local r.TResource = New TResource
r\tip = tip
r\path$ = Lower(path)
Select r\tip
Case RES_MESH
r\ent = LoadMesh(path,parent)
HideEntity r\ent
Case RES_AMESH
r\ent = LoadAnimMesh(path,parent)
HideEntity r\ent
Case RES_SPR
r\ent = LoadSprite(path,texFlag,parent)
HideEntity r\ent
Case RES_SND
r\ent = LoadSound(path)
Case RES_TEX
r\ent = LoadTexture(path,texFlag)
End Select
Return r\ent
End Function
;-- Дополнительная функция, работает также как ResLoad
;-- если ресурс повторяется, то заносим его в тип хранения
;Параметры: путь, тип, родитель, текстурные флаги
Function ResLoadPlus(path$, tip, parent=0, texFlag=1)
Local rf.TResource = Object.TResource(ResFind(path$))
If rf <> Null Then
Local rd.TResDel = New TResDel
rd\r.TResource = rf.TResource
Return rf\ent
EndIf
Local r.TResource = New TResource
r\tip = tip
r\path$ = Lower(path)
Select r\tip
Case RES_MESH
r\ent = LoadMesh(path,parent)
HideEntity r\ent
Case RES_AMESH
r\ent = LoadAnimMesh(path,parent)
HideEntity r\ent
Case RES_SPR
r\ent = LoadSprite(path,texFlag,parent)
HideEntity r\ent
Case RES_SND
r\ent = LoadSound(path)
Case RES_TEX
r\ent = LoadTexture(path,texFlag)
End Select
Return r\ent
End Function
;-- Функция удаляет лишние ресурсы, которые
;-- не были помещены в тип хранения.
Function ResDeletePlus()
Local r.TResource, rd.TResDel
Local result%
For r.TResource = Each TResource
For rd.TResDel = Each TResDel
If r = rd Then
result = True
Exit
EndIf
Next
If result = False Then
Select r\tip
Case RES_MESH, RES_AMESH, RES_SPR
FreeEntity r\ent
Case RES_SND, RES_SND3D
FreeSound r\ent
Case RES_TEX
FreeTexture r\ent
End Select
Delete r
EndIf
Next
Delete Each TResDel
End Function
;-- Функция ищет ресурс в списке и возвращает хендл на тип
;Параметры: путь_до_ресурса
Function ResFind(path$)
Local r.TResource
For r.TResource = Each TResource
If r\path = path Then
Return Handle(r)
EndIf
Next
Return 0
End Function
;-- Функция удаляет указанный ресурс из системы
;Параметры: путь_до_ресурса
Function ResDelete(path$)
Local r.TResource
For r.TResource = Each TResource
If path = r\path Then
Select r\tip
Case RES_MESH, RES_AMESH, RES_SPR
FreeEntity r\ent
Case RES_SND, RES_SND3D
FreeSound r\ent
Case RES_TEX
FreeTexture r\ent
End Select
Delete r
Return True
EndIf
Next
Return False
End Function
;-- Функция удаляет все ресурсы из системы
Function ResDeleteAll()
Local r.TResource
For r.TResource = Each TResource
Select r\tip
Case RES_MESH, RES_AMESH, RES_SPR
FreeEntity r\ent
Case RES_SND, RES_SND3D
FreeSound r\ent
Case RES_TEX
FreeTexture r\ent
End Select
Delete r
Next
Delete Each TResDel
End Function
Использовать так :
Type Object
Field ent
End Type
Function AddObject()
local o.object = New Object
o\ent = CopyEntity(ResLoad("mesh.b3d", RES_MESH))
End Function
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо H@NON за это полезное сообщение:
|
|
07.01.2010, 18:30
|
#29
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Function не дает имена
ЕМНИП блитз и так негрузит один файл дважды, а просто возвращает хэндл.
Но могу ошибатьсо давно дело было
__________________
|
(Offline)
|
|
07.01.2010, 18:39
|
#30
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Function не дает имена
Все он грузит) ты ошибаешься)
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:13.
|