 |
23.10.2007, 12:59
|
#1
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Screеnsaver
1 раз когда я проводил компиляцию своей игры и создание .exe файла, то обнаружил, что сохранить можно не только как исполняемый файл .exe, но и как программу - заставку .scr (кажется). Теперь захотел сделать простейший скринсейвер. Просто крутящуюся эмблемку. Но как не старался превратить мой код во что-то кроме как .exe не получилось  В чем я туплю? Подскажите.
|
(Offline)
|
|
23.10.2007, 13:02
|
#2
|
Разработчик
Регистрация: 23.08.2006
Сообщений: 586
Написано 6 полезных сообщений (для 7 пользователей)
|
Re: Screеnsaver
Почитай электроный журнал Меркулова.
Там есть статейка по созданию скринсерверов.
__________________
Никто не запомнит тебя за твои мысли...
|
(Offline)
|
|
23.10.2007, 13:04
|
#3
|
Бывалый
Регистрация: 29.03.2007
Сообщений: 662
Написано 199 полезных сообщений (для 448 пользователей)
|
Re: Screеnsaver
просто создай ехе и переименуй в scr например было: скрин.ехе стало скрин.scr
upd:
ссылка на журнал создай свой скринсейвер
|
(Offline)
|
|
23.10.2007, 14:09
|
#4
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Re: Screеnsaver
Вот на заметку скринсэйвер. Может поможет разобратся, что делать.

; Author: jfk
; Date: 2002-03-02 03:51:46
; Title: Animated Flag
; Description: Flag with Screensaver Initialisation
; Realtime-Plasma-based Mesdeformation FLAG-SCREENSAVER Demo
; Compile to .EXE and rename to .SCR. Then copy to windows\system\
; Can be used with _any_ Flag-Picture. It will also run without a Picture.
; 2002 by CSP
;.................................... Screensaver-specific Initialisation:
; prevent to be started more than one instance when used as a Screensaver
cmd$=CommandLine$()
If Len(cmd$)>1
For i=1 To Len(cmd$)-1
mi$=Upper$(Mid$(cmd$,i,2))
If mi$="/P" Or mi$="/C"
; is a Call For Screensaver settings. nothing to set tough...
End
EndIf
Next
EndIf
cspfile$="csp_mutex.txt"
If FileType(cspfile$)=1
csp=ReadFile(cspfile$)
timestamp=ReadLine(csp) ; read last legal Instance Timestamp
CloseFile csp
timenow=MilliSecs()
If Abs(timestamp-timenow)<1000 ; more than n secs ago?
; no, seems To be only a Mutant
End
Else
; yes, seems To be the first Instance, a new legal instance
csp=WriteFile(cspfile$)
WriteLine csp,Str$(MilliSecs()) ; update timestamp
CloseFile csp
EndIf
Else
; seems it runs first from this Computer/Folder
csp=WriteFile(cspfile$)
WriteLine csp,Str$(MilliSecs()) ; update timestamp
CloseFile csp
EndIf
;...................eo Screensaver init
Graphics3D 800,600,16,1
SetBuffer BackBuffer()
; init plasma lookup table
Dim cosinus#(640)
For c = 0 To 640
cosinus#(c) = Cos((115*3.14159265358 * c) / 320) * 32 + 32
Next
;size of map
Const Gridx=32
Const Gridz=32
x#=0:y#=0:z#=0
SetBuffer BackBuffer()
lit=CreateLight()
AmbientLight 25,25,25
cam=CreateCamera()
CameraRange cam,.1,1000
PositionEntity cam,16,32,-10
TurnEntity cam,30,0,0
; used for surface
Const Texture_Grid=4
; create Mesh
Dim map#(gridx,gridz)
mesh=Create_Map(gridx,gridz,b1,3)
; try to load a Flag Texture
flagname$="my_lovely_flag.bmp"
If FileType(flagname$)=1
tex1=LoadTexture(flagname$,9) ; any texture for flag
tex2=LoadTexture(flagname$,9) ; any texture for Background
Else
; else create a placebo-flag on the fly
tex1=CreateTexture(256,256,9)
tex2=CreateTexture(256,256,9)
TextureCoords tex1,1
SetBuffer TextureBuffer(tex1)
For i=0 To 255 Step 32 ; smileys'n'stripes :)
Color 255,255,255
Rect i,0,16,256,1
Color 0,0,255
Rect i+16,0,16,256,1
Next
Color 255,0,0
Rect 0,0,127,127
Color 255,255,255
For j=0 To 127 Step 16
For i=0 To 127 Step 16
Color 255,255,255
Oval i+5,j+4,8,8,1
Color 255,0,0
Oval i+2,j+4,8,8,1
Color 255,255,255
Oval i+4,j+5,2,2,1
Oval i+4,j+9,2,2,1
Next
Next
CopyRect 0,0,256,256,0,0,TextureBuffer(tex1),TextureBuffer(tex2)
SetBuffer BackBuffer()
EndIf
EntityTexture mesh,tex1,0,1
; Background
in=CreateSphere()
ScaleEntity in,100,100,100
FlipMesh in
EntityTexture in,tex2
; try to load a Sprite BMP
sparkfile$="bluespark.bmp"
If FileType(sparkfile$)=1
spark=LoadTexture(sparkfile$,2)
Else
; else create it on the fly
spark=CreateTexture(64,64,2)
SetBuffer TextureBuffer(spark)
For i=0 To 32
r=i*8
g=i*10
b=i*i
If r>255 Then r=255
If g>255 Then g=255
If b>255 Then b=255
Color r,g,b
Oval i, i, 64-(i*2),64-(i*2),0
Oval i+1,i, 64-(i*2),64-(i*2),0
Next
LockBuffer
For j=0 To 63
For i=0 To 63
argb=ReadPixelFast(i,j)
r=(argb Shr 16) And $ff
g=(argb Shr 8) And $ff
b=argb And $ff
a=((r+g+b)/3) Shl 24
WritePixelFast i,j,(argb And $ffffff) Or a
Next
Next
UnlockBuffer
SetBuffer BackBuffer()
EndIf
; init Particles
spritemax=200 ; number of sprites
Dim sp(spritemax),spx#(spritemax),spy#(spritemax),spz#(spritemax),sps#(spritemax)
For i=0 To spritemax
sp(i)=CreateSprite()
EntityTexture sp(i),spark
SpriteViewMode sp(i),1
spx#(i)=16+Rnd(10)-5
spy#(i)=27+Rnd(10)-5
spz#(i)=16+Rnd(100)-50
sps#(i)=1+Rnd(0,0.5)
PositionEntity sp(i),spx#(i),spy#(i),spz#(i)
Next
mx=MouseX()
my=MouseY()
mx2=mx
my2=my
;___________________________________MAINLOOP__________________________________
While KeyDown(1)=0 And mx2=mx And my2=my
mx2=MouseX()
my2=MouseY()
Gosub Update_Plasma
mesh=Update_Map(mesh,gridx,gridz,b1,3)
TurnEntity in,0,0,1
TurnEntity cam,0,0,1.0
;upate particles
For i=0 To spritemax
spz#(i)=spz#(i)-sps#(i)
If spz#(i)<-30 Then
spz#(i)=16+100
EndIf
PositionEntity sp(i),spx#(i),spy#(i),spz#(i)
Next
UpdateWorld()
RenderWorld
Flip
Wend
;__________________________________eo mainloop________________________________
FreeEntity mesh
FreeEntity lit
FreeEntity cam
EndGraphics
End
Function Create_Map(tilex,tilez,brush1,tile)
.create_map
mesh=CreateMesh()
surf=CreateSurface(mesh,brush1)
wid#=Float(1)/Float(Texture_grid)
u0#=wid*Float(tile Mod texture_Grid)
v0#=wid*Float(tile/texture_grid)
u1#=u0+wid
v1#=v0
u2#=u1
v2#=v0+wid
u3#=u0
v3#=v2
u#=0
v#=0
stp#=1.0/Float(tilex)
For z#=0 To tilez-1
u=0
For x#=0 To tilex-1
h1#=map(x,z)
h2#=map(x+1,z)
h3#=map(x+1,z+1)
h4#=map(x,z+1)
AddVertex surf,x,h1,z,u0,v0
VertexTexCoords surf,cnt,u,v,0,1
AddVertex surf,x+1,h2,z,u1,v1
VertexTexCoords surf,cnt+1,u+stp,v,0,1
AddVertex surf,x+1,h3,z+1,u2,v2
VertexTexCoords surf,cnt+2,u+stp,v+stp,0,1
AddVertex surf,x,h4,z+1,u3,v3
VertexTexCoords surf,cnt+3,u,v+stp,0,1
AddTriangle surf,cnt,cnt+2,cnt+1
AddTriangle surf,cnt,cnt+3,cnt+2
cnt=cnt+4
u=u+stp
Next
v=v+stp
Next
UpdateNormals mesh
Return mesh
End Function
Function Update_Map(mesh,tilex,tilez,brush1,tile)
surf=GetSurface(mesh,1)
wid#=Float(1)/Float(Texture_grid)
u0#=wid*Float(tile Mod texture_Grid)
v0#=wid*Float(tile/texture_grid)
u1#=u0+wid
v1#=v0
u2#=u1
v2#=v0+wid
u3#=u0
v3#=v2
u#=0
v#=0
stp#=1.0/Float(tilex)
For z#=0 To tilez-1
u=0
For x#=0 To tilex-1
h1#=map(x,z)
h2#=map(x+1,z)
h3#=map(x+1,z+1)
h4#=map(x,z+1)
VertexCoords surf,cnt,x,h1,z
VertexCoords surf,cnt+1,x+1,h2,z
VertexCoords surf,cnt+2,x+1,h3,z+1
VertexCoords surf,cnt+3,x,h4,z+1
cnt=cnt+4
u=u+stp
Next
v=v+stp
Next
UpdateNormals mesh
Return mesh
End Function
; this will animate kinda heightmap inside array 'map(,)'
.Update_Plasma
wave1% = wave1% + 8
If wave1% >= 320 Then wave1% = 0
wave2% = wave2% + 4
If wave2% >= 320 Then wave2% = 0
For yw = 0 To 329 Step 10
y10=yw/10
dw = cosinus#(yw + wave2) + cosinus#(Yw + wave2)
For xw = 0 To 329 Step 10
x10=xw/10
map(x10,y10) = 1.0 + Abs(((cosinus#(xw + wave1) + cosinus#(xw + yw) + dw) / 16) )
Next
Next
Return
|
(Offline)
|
|
23.10.2007, 17:02
|
#5
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Screеnsaver
Народ, мне не нужны туторы по созданию скринсейверов. Я и так прекрасно понимаю как мне его делать. У меня был конкретный вопрос о превращении .exe в .scr
Простым переименованием не удалось. Спасибо Matt Merkulov' у  Подскозал воспользоватся TC 
|
(Offline)
|
|
23.10.2007, 17:53
|
#6
|
Дэвелопер
Регистрация: 19.03.2006
Сообщений: 1,241
Написано 10 полезных сообщений (для 17 пользователей)
|
Re: Screеnsaver
а не удалось то- потомучто нада менять расширение 
|
(Offline)
|
|
23.10.2007, 18:53
|
#7
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: Screеnsaver
а не удалось то- потомучто нада менять расширение
|
и что, после этого ОС роспознает файл как скринсейвер ??
вот так просто ?? Хм !!
|
(Offline)
|
|
23.10.2007, 19:49
|
#8
|
Бывалый
Регистрация: 29.03.2007
Сообщений: 662
Написано 199 полезных сообщений (для 448 пользователей)
|
Re: Screеnsaver
просто надо в настройках винды (Сервис->Настройки чтото там-> показывать расширения зарег. файлов) поставить отображение расширений и все путем будет! Очень даже помогает
|
(Offline)
|
|
24.10.2007, 03:57
|
#9
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Screеnsaver
Хм. Написал я свой скринсейвер. Превратил .ехе в .scr. Вроде бы всё. Но нет. При попытке запуска скринсейвера сначала экран мерцает, а потом вылетает MAV. Думал, что что-то не правильно сделал. Попробовал код из статьи, попробовал предложенный H@NON ом. Никаких изминений. Вылетает MAV. Что за ерунда? 
|
(Offline)
|
|
24.10.2007, 08:38
|
#10
|
|
Re: Screеnsaver
Raiter
оно просто как .exe работает ?
|
|
|
24.10.2007, 11:33
|
#11
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Screеnsaver
Райтер, ты не юзаешь паки в ехе?
|
(Offline)
|
|
24.10.2007, 12:49
|
#12
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Screеnsaver
оно просто как .exe работает ?
|
ы?
Нед. Я иго переделываю в Програмо-заставко. Выставляю каг заставко. Но когда иго пробую врубить просмотр или когда просто врубаеццо заставко, то вылетает MAV ((((
|
(Offline)
|
|
24.10.2007, 12:52
|
#13
|
Бывалый
Регистрация: 29.03.2007
Сообщений: 662
Написано 199 полезных сообщений (для 448 пользователей)
|
Re: Screеnsaver
Это да или нет? 
|
(Offline)
|
|
24.10.2007, 12:54
|
#14
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Screеnsaver
|
(Offline)
|
|
24.10.2007, 13:54
|
#15
|
Бывалый
Регистрация: 29.03.2007
Сообщений: 662
Написано 199 полезных сообщений (для 448 пользователей)
|
Re: Screеnsaver
Дык это у тя в самой проге ашипка
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:19.
|