2009-7-21 23:48
tranpol
同步刷新图片插件(黑底叠加效果)1.09版[NEW]
因为要用到在游戏进行中画面不断叠加(就是画面效果一直刷但游戏对话继续)
坑到的多图片刷新插件。。。存档啥的不行~而且还会倒着播放一下。。。= =
就自已写了一个同步刷新图片插件
第一次写插件。。。。写的乱了点而且全是if拼成的。。。= =
格式也不是很规范请见谅~~
==
现版本为1.09
如果游戏封包的话
请将用到的效果图单独封一个包
===
20101023
在开始时就起动time1
这样取档的图片粘留也没了= =(果然要多次试验啊)
这次因为AVG系统的关系加了
sf.同步图1层=14;
sf.同步图2层=15;
指定同步图的图层
在华丽丽AVG系统3.XX里这两系统变量就放到AVG设置里去了
================
图片是黑底叠加效果
黑底图
[attach]255[/attach]
同步刷新效果图
[attach]254[/attach]
===插件1.09版===
;同步刷新图1.09.20110217 BY:TRANPOL
@iscript
sf.同步图1层=14;
sf.同步图2层=15;
var timer1 = new Timer(onTimer1,"");
function pic()
{
timer1.enabled = true;
timer1.interval = f.PIC速度;
if (f.PIC1层图数==void) f.PIC1层图数 = 1;
if (f.PIC双层==true) f.PIC2层图数 = 1;
f.PIC1层过渡透明度=255;
if (f.PIC双层==true) f.PIC2层过渡透明度=255;
if (f.PIC过渡==true) f.PIC1层过渡透明度 = 0;
if (f.PIC过渡2==true) f.PIC2层过渡透明度 = 0;
if (f.PIC双层==true) f.PIC双层2层开始图数=f.PIC总图数\2;
f.PIC过渡结束图数=f.PIC总图数-25;
f.picone=void;
f.PIC无=void;
}
function onTimer1()
{
if (f.pic == true)
{
if (f.PIC过渡==true&&f.PIC无!=true)
{
if (f.PIC1层图数<f.PIC过渡结束图数&&f.PIC1层过渡透明度!=255)
{
if (f.PIC1层过渡透明度==0) f.PIC1层过渡透明度=15;
if (f.PIC1层过渡透明度>0&&f.PIC1层过渡透明度<255) f.PIC1层过渡透明度+=10;
}
if (f.PIC1层图数>=f.PIC过渡结束图数&&f.PIC1层过渡透明度!=0)
{
if (f.PIC1层过渡透明度>15) f.PIC1层过渡透明度-=10;
if (f.PIC1层过渡透明度<=15) f.PIC1层过渡透明度=0;
}
}
try
{
kag.fore.layers[f.PIC编号].loadImages(%['storage'=>f.PIC文件名+f.PIC1层图数,left:0,top:0,visible:true,mode:&f.PIC模式,opacity:f.PIC1层过渡透明度]);
kag.back.layers[f.PIC编号].loadImages(%['storage'=>f.PIC文件名+f.PIC1层图数,left:0,top:0,visible:true,mode:&f.PIC模式,opacity:f.PIC1层过渡透明度]);
}
catch
{
return true;
}
f.PIC1层图数 = f.PIC1层图数 + 1;
if (f.PIC1层图数 > f.PIC总图数&&f.PIC无!=true)
{
f.PIC1层图数 = 1;
if (f.PIC一次==true)
{
f.picone==void;
f.pic=void;
f.PIC结束=void;
f.PIC直接结束=void;
f.PIC文件名=void;
f.PIC1层图数=void;
f.PIC总图数=void;
f.PIC过渡=void;
f.PIC结束过渡=void;
f.PIC过渡2=void;
f.PIC结束过渡2=void;
f.PIC1层过渡透明度=void;
f.PIC2层过渡透明度=void;
f.PIC双层=void;
f.PIC双层2层开始图数=void;
f.PIC一次=void;
kag.fore.layers[f.PIC编号].visible=false;
kag.back.layers[f.PIC编号].visible=false;
}
}
if (f.PIC双层2层开始图数!=0) f.PIC双层2层开始图数-=1;
if (f.PIC双层2层开始图数>0&&f.PIC无!=true)
{
kag.fore.layers[f.PIC编号2].visible=false;
kag.back.layers[f.PIC编号2].visible=false;
}
if (f.PIC双层==true&&f.PIC双层2层开始图数==0&&f.PIC无!=true)
{
if (f.PIC过渡2==true&&f.PIC无!=true)
{
if (f.PIC2层图数<f.PIC过渡结束图数&&f.PIC2层过渡透明度!=255)
{
if (f.PIC2层过渡透明度==0) f.PIC2层过渡透明度=15;
if (f.PIC2层过渡透明度>0&&f.PIC2层过渡透明度<255) f.PIC2层过渡透明度+=10;
}
if (f.PIC2层图数>=f.PIC过渡结束图数&&f.PIC2层过渡透明度!=0)
{
if (f.PIC2层过渡透明度>15) f.PIC2层过渡透明度-=10;
if (f.PIC2层过渡透明度<=15) f.PIC2层过渡透明度=0;
}
}
try
{
kag.fore.layers[f.PIC编号2].loadImages(%['storage'=>f.PIC文件名+f.PIC2层图数,left:0,top:0,visible:true,mode:&f.PIC模式,opacity:f.PIC2层过渡透明度]);
kag.back.layers[f.PIC编号2].loadImages(%['storage'=>f.PIC文件名+f.PIC2层图数,left:0,top:0,visible:true,mode:&f.PIC模式,opacity:f.PIC2层过渡透明度]);
}
catch
{
f.PIC无=true;
return true;
}
f.PIC2层图数 = f.PIC2层图数 + 1;
if (f.PIC2层图数 > f.PIC总图数)
{
f.PIC2层图数 = 1;
}
}
}
//PIC结束过程
if (f.PIC结束 == true&&f.PIC无!=true)
{
f.pic=void;
if (f.PIC结束过渡==void&&f.PIC无!=true)
{
if (f.picone==void)
{
try
{
kag.fore.layers[f.PIC编号].loadImages(%['storage'=>f.PIC文件名+f.PIC1层图数,left:0,top:0,visible:true,mode:&f.PIC模式,opacity:255]);
kag.back.layers[f.PIC编号].loadImages(%['storage'=>f.PIC文件名+f.PIC1层图数,left:0,top:0,visible:true,mode:&f.PIC模式,opacity:255]);
}
catch
{
f.PIC无=true;
return true;
}
f.PIC1层图数 = f.PIC1层图数 + 1;
if (f.PIC1层图数 > f.PIC总图数)
{
kag.fore.layers[f.PIC编号].visible=false;
kag.back.layers[f.PIC编号].visible=false;
f.PIC1层图数=void;
f.picone=true;
}
}
if (f.PIC双层==true&&f.PIC无!=true)
{
try
{
kag.fore.layers[f.PIC编号2].loadImages(%['storage'=>f.PIC文件名+f.PIC2层图数,left:0,top:0,visible:true,mode:&f.PIC模式,opacity:255]);
kag.back.layers[f.PIC编号2].loadImages(%['storage'=>f.PIC文件名+f.PIC2层图数,left:0,top:0,visible:true,mode:&f.PIC模式,opacity:255]);
}
catch
{
f.PIC无=true;
return true;
}
f.PIC2层图数 = f.PIC2层图数 + 1;
if (f.PIC2层图数 > f.PIC总图数)
{
f.PIC2层图数 = void;
f.PIC双层=void;
f.PIC双层2层开始图数=void;
kag.fore.layers[f.PIC编号2].visible=false;
kag.back.layers[f.PIC编号2].visible=false;
}
}
}
if (f.PIC结束过渡==true&&f.PIC无!=true)
{
if (f.picone==void)
{
if (f.PIC1层过渡透明度==void) f.PIC1层过渡透明度=255;
if (f.PIC1层过渡透明度>15) f.PIC1层过渡透明度-=15;
if (f.PIC1层过渡透明度<=15) f.PIC1层过渡透明度=0;
try
{
kag.fore.layers[f.PIC编号].loadImages(%['storage'=>f.PIC文件名+f.PIC1层图数,left:0,top:0,visible:true,mode:&f.PIC模式,opacity:f.PIC1层过渡透明度]);
kag.back.layers[f.PIC编号].loadImages(%['storage'=>f.PIC文件名+f.PIC1层图数,left:0,top:0,visible:true,mode:&f.PIC模式,opacity:f.PIC1层过渡透明度]);
}
catch
{
f.PIC无=true;
return true;
}
f.PIC1层图数 = f.PIC1层图数 + 1;
if (f.PIC1层图数 > f.PIC总图数)
{
f.PIC1层图数 = 1;
}
if (f.PIC1层过渡透明度==0&&f.PIC无!=true)
{
kag.fore.layers[f.PIC编号].visible=false;
kag.back.layers[f.PIC编号].visible=false;
f.PIC1层图数=void;
f.picone=true;
f.PIC1层过渡透明度=void;
}
}
if (f.PIC双层==true&&f.PIC无!=true)
{
if (f.PIC2层过渡透明度==void) f.PIC2层过渡透明度=255;
if (f.PIC2层过渡透明度>15) f.PIC2层过渡透明度-=15;
if (f.PIC2层过渡透明度<=15) f.PIC2层过渡透明度=0;
try
{
kag.fore.layers[f.PIC编号2].loadImages(%['storage'=>f.PIC文件名+f.PIC2层图数,left:0,top:0,visible:true,mode:&f.PIC模式,opacity:f.PIC2层过渡透明度]);
kag.back.layers[f.PIC编号2].loadImages(%['storage'=>f.PIC文件名+f.PIC2层图数,left:0,top:0,visible:true,mode:&f.PIC模式,opacity:f.PIC2层过渡透明度]);
}
catch
{
f.PIC无=true;
return true;
}
f.PIC2层图数 = f.PIC2层图数 + 1;
if (f.PIC2层图数 > f.PIC总图数)
{
f.PIC2层图数 = 1;
}
if (f.PIC2层过渡透明度==0&&f.PIC无!=true)
{
kag.fore.layers[f.PIC编号2].visible=false;
kag.back.layers[f.PIC编号2].visible=false;
f.PIC2层图数=void;
f.PIC双层=void;
f.PIC2层过渡透明度=void;
f.PIC双层2层开始图数=void;
}
}
}
}
if (f.picone==true&&f.PIC双层==void||f.PIC直接结束==true)
{
f.picone==void;
f.pic=void;
f.PIC结束=void;
f.PIC直接结束=void;
;f.PIC文件名=void;
;f.PIC1层图数=void;
;f.PIC1层过渡透明度=void;
;f.PIC2层过渡透明度=void;
;f.PIC总图数=void;
f.PIC过渡=void;
f.PIC结束过渡=void;
f.PIC过渡2=void;
f.PIC结束过渡2=void;
f.PIC双层=void;
f.PIC双层2层开始图数=void;
f.PIC过渡结束图数==void;
f.PIC一次=void;
f.PIC无=true;
if (kag.fore.layers[f.PIC编号].visible==1) kag.fore.layers[f.PIC编号].visible=false;
if (kag.back.layers[f.PIC编号].visible==1) kag.back.layers[f.PIC编号].visible=false;
if (kag.fore.layers[f.PIC编号2].visible==1) kag.fore.layers[f.PIC编号2].visible=false;
if (kag.back.layers[f.PIC编号2].visible==1) kag.back.layers[f.PIC编号2].visible=false;
}
}
timer1.enabled = true;
timer1.interval = 150;
@endscript
@macro name=同步图
@if exp="f.PIC速度!=void"
@eval exp="f.picone==void,f.pic=void,f.PIC结束=void,f.PIC直接结束=void,f.PIC文件名=void,f.PIC1层图数=void,f.PIC2层图数=void,f.PIC总图数=void,f.PIC过渡=void,f.PIC结束过渡=void,f.PIC过渡2=void,f.PIC结束过渡2=void,f.PIC1层过渡透明度=void,f.PIC2层过渡透明度=void,f.PIC双层=void,f.PIC双层2层开始图数=void,f.PIC过渡结束图数==void,f.PIC一次=void"
@eval exp="kag.fore.layers[f.PIC编号].visible=false,kag.back.layers[f.PIC编号].visible=false,kag.fore.layers[f.PIC编号2].visible=false,kag.back.layers[f.PIC编号2].visible=false"
@endif
;黑底图片add,dodge,lighten很淡的颜色,screen自然的,psoverlay背景会变艳= =,psdiff反色
;白底图片sub,mul,darken,psburn,psdiff反色
@eval exp="f.PIC模式='add'"
@eval exp="f.PIC模式='alpha'" cond="mp.普通"
;反白?
@eval exp="f.PIC模式='add'" cond="mp.黑底叠加"
;加深叠加
@eval exp="f.PIC模式='sub'" cond="mp.叠加深"
;叠加
@eval exp="f.PIC模式='mul'" cond="mp.叠加"
;艳反白= =
@eval exp="f.PIC模式='dodge'" cond="mp.黑底叠加艳"
;叠加以底色白为显有色为无- =
@eval exp="f.PIC模式='darken'" cond="mp.白底叠加"
;取底色叠加= =底色深的越显示
@eval exp="f.PIC模式='lighten'" cond="mp.黑底叠加淡"
;取色叠加自然底色深的越显示
@eval exp="f.PIC模式='screen'" cond="mp.黑底叠加自然"
;艳叠加这颜色不错
@eval exp="f.PIC模式='psoverlay'" cond="mp.黑底叠加底色艳"
;取色叠加全画面
@eval exp="f.PIC模式='pshlight'" cond="mp.取色叠加深"
;叠加自然全画面
@eval exp="f.PIC模式='psslight'" cond="mp.取色叠加"
;加深叠加
@eval exp="f.PIC模式='psburn'" cond="mp.白底叠加深"
;底色反色
@eval exp="f.PIC模式='psdiff'" cond="mp.反色"
@eval exp="f.PIC模式='psexcl'" cond="mp.差值"
@eval exp="f.PIC编号=sf.同步图1层,f.PIC编号2=sf.同步图2层"
@eval exp="f.PIC编号=int(mp.编号),f.PIC编号2=int(mp.编号)+1" cond="mp.编号!=void"
@eval exp="f.PIC文件名=mp.文件,f.PIC总图数=mp.图数,f.pic=true,f.PIC结束=void"
@eval exp="f.PIC过渡=true" cond="mp.过渡"
@eval exp="f.PIC过渡2=true" cond="mp.过渡&&mp.双层"
@eval exp="f.PIC双层=true" cond="mp.双层"
@eval exp="f.PIC速度='150'"
@eval exp="f.PIC速度=&mp.速度" cond="mp.速度!==void"
@eval exp="f.PIC一次=true" cond="mp.一次"
[eval exp="pic(f.PIC文件名, f.PIC总图数)"]
@endmacro
@macro name=同步图停
@eval exp="f.PIC速度=&mp.速度" cond="mp.速度!==void"
@eval exp="mp.time1=f.PIC总图数-f.PIC1层图数"
@eval exp="mp.time2=f.PIC总图数-f.PIC2层图数" cond="f.PIC2层图数!=void"
@eval exp="mp.time=mp.time1*150" cond="mp.time2=void||mp.time1>mp.time2"
@eval exp="mp.time=mp.time2*150" cond="mp.time2>mp.time1&&mp.time2!=void"
@eval exp="f.PIC结束过渡=true,mp.time=2700" cond="mp.过渡"
@eval exp="f.PIC结束=true"
@eval exp="mp.time=mp.时间" cond="mp.时间!=void"
@if exp=mp.等|mp.等待|mp.时间!=void
@wait time=%time|2700
@else
@eval exp="f.PIC直接结束=true" cond="mp.直接"
@endif
@endmacro
[return]
===
指令说明
【同步图】
在游戏进行中同步刷新黑底叠加图片
一般用做游戏全屏循环画面效果
属性:
【文件】【必须】
图片的名字
不包括后面的数字
格式按图片x~图片xx来循环显示
例羽毛1.jpg~羽毛82.jpg
文件=羽毛
【图数】【必须】
图片总数量
例羽毛1.jpg~羽毛82.jpg共有82张
图数=82
【过渡】
以透明到不透明再到透明过渡效果
素材以50张以上
【双层】
如果是从没有到有再到没有的效果
例如羽毛从上向下飘
用双层效果更完美
【普通/黑底叠加/黑底叠加艳/黑底叠加淡/黑底叠加自然/黑底叠加底色艳
/白底叠加/白底叠加深/叠加/叠加深/取色叠加/取色叠加深/反色/差值】
新加图片其他叠加功能= =
用与黑底白底与透明叠加
实际效果请去游戏里亲身感受一下
默认为黑底叠加
普通为不透明特效
用做PNG透明底的特效图动画
【一次】
只一次就消失的效果
不能过渡
【编号】
可以特别指定图层号以用做其它用途
默认为系统专用图层号
双层为编号+1
【速度】
每帧的速度
毫秒为单位
默认为150毫秒
用法为
例:
@同步图 文件=羽毛 图数=82
@同步图 文件=羽毛 图数=82 过渡 双层 速度=100
[同步图 文件=阳光 图数=44 一次]
[同步图 文件=烟雾 图数=60 普通]
===
【同步图停】
同步刷新图停止
属性:
【过渡】
以不透明到透明的消失过渡效果
默认为图片播放到最后一张结束
【直接】
同步图立即消失
【等】
等待效果结束
【时间】
等待的时间
【速度】
每帧的速度
毫秒为单位
默认为原速度
用法为
例:
@同步图停
@同步图停 过渡
@同步图停 等
===
旧版会有BUG= =。。。
请把新版的代码替换入pic.ks文件
同步图刷新KRKR范例下载(1.03版)
BRSBOX地址
[url]http://www.brsbox.com/filebox/down/fc/54837b06e88c3df20c55e0bca7315c6e[/url]
[[i] 本帖最后由 tranpol 于 2011-2-18 02:28 编辑 [/i]]