📄 main.gml
字号:
<style>
.showtext:text{
showstyle=3;
color=white;
pos=0,5;
align=center;
zorder=1;
clip=0;
}
.RtsPlay{
show=1;
walkquik=0;
anikind=stand;
OnGo={<: paramCtrl=null;walk=path(#(SPEED),25,$[ep])>};
}
.RtsLook{
show=0;
// pid.viewfollow=mouse;
pos=-100,-100;
}
.ManNormal{
class=RtsPlay;
health=125;
weapon="shotgun";
OnSendfight={<: puser.eve=fireout><$[weapon] me=$[me];fly=line($[xpos]+$[dx],$[ypos]+$[dy],$[objpos],speed,1)>};
OnEndfight={<: autoanicmd=0;anikind=stand>};
OnFired={<: walk=null;anikind=fight;autoanicmd=1;forwordto=$[ep0],$[ep1];objpos=$[ep0],$[ep1];
paramCtrl=loopt(1,anisteps,0,4,1,70,endfight)>};
OnNoammo={<: walk=null;anikind=fight;autoanicmd=0;forwordto=$[ep0],$[ep1];
paramCtrl=loopt(1,anisteps,0,4,1,70)>};
OnWeapon={<: weapon=*ep><sys playsnd=$.\sound\weapons\change.gsm>};
OnTeled={<: pos=*ep;playsnd=$.\sound\world\teleout.gsm;eve=Teleing>};
OnTeleing={<teleing pos=$[pos]></teleing>};
paramCtrl#begin=loopt(1,alpha,0,255,10,10);
paramCtrl#in=loopcmd(1,50,1,{<: playsnd=$.\sound\world\telein.gsm>};);
OnWalkend={<: ParamCtrl#ws=null;pid.viewfollow=mouse>};
OnDeath={<: anikind=death>};
}
.ManDie{
OnGo=null;
walk=null;
anikind=death;
health=0;
OnFired=null;
OnSendfight=null;
OnEndfight=null;
paramCtrl=loopt(1,anisteps,0,5,1,170,CanRestart);
}
.UserMan:human{
mutisrc=stand($.\..\imgs\ani\m_qk_f.ale,8)walk($.\..\imgs\ani\m_qk_r.ale,8)fight($.\..\imgs\ani\m_qk_f.ale,8)death($.\..\imgs\ani\m_qk_d.ale,4);
OnDestroy={<: playsnd=$.\sound\world\teleout.gsm>};
puser=*pid;
pid.pman=*id;
pid=*pid.pid.pid.pid.map;
anishow=1;
autozorder=1;
class=RtsLook;
class=ManNormal;
OnCreate={<showtext src=$[man]>};
OnSide={<: switch(ep){
case 0:class=RtsLook;break;
case 1:class=RtsPlay;break;
case 2:class=RtsPlay;break;
case 3:palette=null;class=RtsPlay;break;
};
>};
}
.UserManM:UserMan{
me=1;
draw#health=9:{wv();rect(-16,-52,16,-48,0);bar(-15,-51,-15+health*3/20,-49,red);TextOut(-20,-50,'$[fen]',0);
ellipse(0,0,22,12,R230G220B100,0);};
OnDie={<: playsnd=$.\..\sound\die.adm;class=ManDie>};
ifchg(health)={<: if=($[health]>$[_new_health])?{paramCtrl#flash=loopt(1,alpha,20,255,40,0);playsnd=$.\sound\hit.gsm}>};
OnLButtonDown={};
OnGo#s={<: pid.viewfollow=*id>};
OnFired#m={<: pid.viewfollow=*id>};
OnWait={<: pid.viewfollow=*id;paramCtrl#w=loopcmd(1,$[ep],1000,{<: pid.viewfollow=*id>});>};
OnCanRestart={<: puser.eve=CanRestart>};
OnRestart={<: class=ManNormal;pos=$[ep];pid.viewfollow=*id>};
}
.UserManO:UserMan{
me=0;
draw#health=9:{wv();rect(-16,-52,16,-48,0);bar(-15,-51,-15+health*3/20,-49,red);TextOut(-20,-50,'$[fen]',0)};
OnDie={<: kill=$[ep];playsnd=$.\sound\die.adm;class=ManDie>};
ifchg(health)={<: if=($[health]>$[_new_health])?{paramCtrl#flash=loopt(1,alpha,0,255,10,0);playsnd=$.\sound\hit2.gsm}>};
OnRestart={<: class=ManNormal;pos=$[ep]>};
}
.firelight:img{
pid=mymap;
autozorder=1;
anishow=1;
size=20,30;
src=$.\imgs\misc\fire.gif#8,1;
showmode=light;
s=(rand(1000));
paramCtrl=timer(s,fire);
Onfire={<: paramCtrl=loops(frame,0,7,1,100);draw=-1:{wv();CircleLight(10,20,rd,#FF3300)};>};
ParamCtrl#s=loop(rd,10,20,2,50);
}
.fire:img{
pid=mymap;
autozorder=1;
src=$.\..\maps\mapimg\house\quake\fire.ale;
OnCreate={<firelight pos=($[xpos]-10),($[ypos]-68)>};
}
.firew:img{
pid=mymap;
autozorder=1;
src=$.\..\maps\mapimg\house\quake\firewood.ale;
OnCreate={<firelight pos=($[xpos]-10),($[ypos]-42)>};
}
.teleing:div{
rect=-50,-50,50,50;
anishow=1;
autozorder=1;
pid=mymap;
draw={wv();ellipse(0,0,rd,6,#efefef,0);
ellipse(0,0,6,rd,#efefef,0);
torus(0,0,rd/2+2,3,R50G15B30);}
ParamCtrl=loopt(1,rd,1,50,2,10,del);
}
.tele:img{
pid=mymap;
anishow=1;
autozorder=1;
size=20,20;
src=$.\mapimg\house\quake\door.ale;
ParamCtrl=loops(frame,0,4,1,60);
}
.lifemake:div{
rect=-50,-50,50,50;
anishow=1;
autozorder=1;
pid=mymap;
draw={wv();ellipse(0,0,rd,3,#efefef,0);
ellipse(0,0,3,rd,#efefef,0);
torus(0,0,rd/2+2,3,R50G15B30);}
ParamCtrl#s=loopt(1,rd,50,1,2,10,del);
}
.lifedel:img{
pid=mymap;
src=$.\..\imgs\misc\lifebut.gif#mask;
rect=-30,-30,30,30;
anishow=1;
zorder=top;
draw={wv();ellipse(7,12,rd*2,rd,#5f1f1f,0);}
ParamCtrl#s=loopt(2,rd,8,30,2,1,del);
ParamCtrl#a=loopt(1,alpha,125,1,6,1);
path=goto(0,-30,2);
}
.item{
pid=mymap;
size=16,16;
anishow=1;
autozorder=1;
ParamCtrl#s=loop(rd,15,20,1,100);
OnCreate#s={<: ParamCtrl#p=loop(ypos,ypos,ypos-3,1,100)><lifemake pos=$[pos]>};
OnDestroy#s={<lifedel pos=$[pos]>};
}
.health:img{
src=$.\imgs\misc\health.ale;
class=item;
ParamCtrl#f=loops(frame,0,4,1,100);
cc="#66FF00,#FFFF00,#FF0000,#3333FF";
p=0;
OnCreate={<: c=*cc[p];eve=cc><palette src=$.\imgs\misc\h$[p].act;pid.palette=*id>};
Oncc={<: draw=-1:{wv();CircleLight(0,0,rd,$[c])}>};
OnDestroy={<: playsnd=$.\sound\items\n_health.gsm>};
}
.ammo:img{
class=item;
src=$.\imgs\misc\ammo.ale;
OnCreate={<: frame=(p-1);draw=-1:{wv();CircleLight(0,0,rd,#FF0000)};>};
OnDestroy={<: playsnd=$.\sound\misc\am_pkup.gsm>};
}
.armor:img{
class=item;
src=$.\imgs\misc\armor.ale;
OnCreate={<: frame=*p;draw=-1:{wv();CircleLight(0,0,rd,#66FF00)}>};
OnDestroy={<: playsnd=$.\sound\misc\ar2_pkup.gsm>};
}
.gun:img{
class=item;
src=$.\imgs\misc\guns.ale;
OnCreate={<: frame=*p;draw=-1:{wv();CircleLight(0,0,rd,#CC00FF)}>};
OnDestroy={<: playsnd=$.\sound\misc\w_pkup.gsm>};
}
.weapon:img{
pid=*pid.pid;
anishow=1;
autozorder=1;
src=$.\imgs\misc\bullet.gif;
size=4,4;
alpha=170;
speed=2000;
far=200;
delay=1000;
// pid.bf=0;
automask=1;
OnCreate={<: if=(me==1)?{<:$[pid] bf=0;paramCtrl#w=loopcmd(1,$[delay],10,{<: bf=1;paramCtrl#w=null>})>}>};
OnFlyend#s={<: paramctrl#d=loopt(1,alpha,170,50,20,50,del)>};
}
.melee:weapon{
far=10;
}
.machinegun:weapon{
OnCreate#s={<: playsnd=$.\sound\weapons\machinegun\machgf1b.gsm>};
speed=8000;
delay=100;
}
.shotgun:weapon{
OnCreate#s={<: playsnd=$.\sound\weapons\shotgun\sshotf1b.gsm>};
speed=6000;
delay=1000;
draw={wv();linemax(0,0,flysx-xpos,flysy-ypos,#CC6600,3);
lightline(0,0,flysx-xpos,flysy-ypos,#DFDFDF,alpha);
CircleLight(0,0,flash,R120G70B0);
ellipse(0,0,2,flash,#ef2fef,0);
lightline(3,3,flysx-xpos+3,flysy-ypos+3,#DFDFDF,alpha);
CircleLight(3,3,flash,R120G70B0);
ellipse(3,3,2,flash,#ef2fef,0);
};
paramctrl#f=loop(flash,1,12,3,10);
OnFlyend={<: paramctrl#s=null;paramctrl=loopt(1,alpha,170,50,20,50,del)>};
}
.grenade:weapon{
OnCreate#s={<: playsnd=$.\sound\weapons\grenade\grenlf1a.gsm>};
speed=2000;
delay=1000;
draw={wv();lightline(0,0,flysx-xpos,flysy-ypos,#FF0000,alpha);
CircleLight(0,0,flash,#FF0000);
};
paramctrl#f=loop(flash,2,10,2,10);
OnFlyend={<: paramctrl#s=null;paramctrl=loopt(1,alpha,250,20,20,50,del);draw={wv();CircleLight(0,0,alpha/20,#FF0000);}>};
}
.explode1:img{
pid=*pid.pid;
anishow=1;
zorder=top;
src=$.\..\imgs\misc\bomb00.ale;
OnCreate={<: paramctrl=loopt(1,frame,-1,2,1,60,del);>};
}
.explode2:img{
pid=*pid.pid;
anishow=1;
autozorder=1;
src=$.\..\imgs\misc\bomb01.ale;
OnCreate={<: paramctrl=loopt(1,frame,-1,6,1,50,del);>};
paramctrl=loop(r,60,200,40,10);
draw={wv();CircleLight(0,0,r,#CC0000);};
}
.rocket:weapon{
OnCreate#s={<: playsnd=$.\sound\weapons\rocket\rocklf1a.gsm>};
delay=1000;
draw={wv();linemax(0,0,flysx-xpos,flysy-ypos,R220G180B120,3);
lightline(0,0,flysx-xpos,flysy-ypos,#DFDFDF,alpha);
CircleLight(0,0,flash,#FF9966);
};
paramctrl#f=loop(flash,10,30,10,10);
paramctrl#s=loopcmd(-1,0,200,{<: playsnd=$.\sound\weapons\rocket\rockfly.gsm>});
OnFlyend={<: paramctrl#s=null;paramctrl=timer(100,del)><explode2 pos=$[pos]><: playsnd=$.\sound\weapons\rocket\rocklx1a.gsm>};
}
.lightning:weapon{
OnCreate#s={<: playsnd=$.\sound\weapons\lightning\lg_fire.gsm>};
speed=6000;
delay=1000;
draw={wv();lightline(0,0,flysx-xpos,flysy-ypos,#0000FF,alpha);CircleLight(0,0,flash,#0000FF)};
paramctrl#f=loop(flash,2,10,2,10);
OnFlyend={<: paramctrl#s=null;paramctrl=loopt(1,alpha,250,20,20,50,del);draw={wv();CircleLight(0,0,alpha/20,#00FFFF);}>};
}
.railgun:weapon{
OnCreate#s={<: playsnd=$.\sound\weapons\railgun\railgf1a.gsm>};
speed=10000;
delay=1200;
draw={wv();lightline(0,0,flysx-xpos,flysy-ypos,#00FFFF,alpha);CircleLight(0,0,flash,#00FFFF)};
paramctrl#f=loop(flash,2,10,4,10);
OnFlyend={<: paramctrl#s=null;paramCtrl#r=null;paramctrl=loopt(1,alpha,250,20,20,50,del);draw={wv();CircleLight(0,0,alpha/20,#33FFFF);}>};
}
.plusma:weapon{
OnCreate#s={<: playsnd=$.\sound\weapons\plusma\hyprbf1a.gsm>};
speed=5000;
delay=100;
draw={wv();lightline(0,0,flysx-xpos,flysy-ypos,#00FFFF,alpha);
CircleLight(0,0,flash,#00FFFF);
};
paramctrl#f=loop(flash,10,30,10,10);
OnFlyend={<: paramctrl#s=null;paramctrl=loopt(1,alpha,250,20,20,50,del);draw={wv();CircleLight(0,0,alpha/5,#00FFFF);}>};
}
.bfg:weapon{
OnCreate#s={<: playsnd=$.\sound\weapons\rocket\rocklf1a.gsm>};
speed=5000;
delay=800;
draw={wv();lightline(0,0,flysx-xpos,flysy-ypos,#00FF00,alpha);
CircleLight(0,0,flash,#00FF00);
};
paramctrl#f=loop(flash,10,30,10,10);
}
//----显示信息
.info_txt:text{
anti=1;
font=Impact,36;
color=#FFCC00;
}
.am_i:img{
size=40,40;
src=$.\imgs\misc\ammo.gif#mask,8,1;
}
.gun_i:img{
size=80,80;
src=$.\imgs\misc\guns.gif#mask,9,1;
}
.ar_i:img{
size=49,39;
src=$.\imgs\misc\armor.gif#mask;
}
.man_i:img{
size=70,70;
src=$.\imgs\misc\header.gif#mask,3,1;
}
.info:div{
pid.phud=*id;
size=710,80;
pos=0,0;width=pid.width;
zorder=top;
clip=0;
mid=0;
mname="";
amnum=30;
health=100;
ar=20;
OnCreate={<am_i pos=30,5;pid.am_i=*id><info_txt pos=100,5;pid.am_t=*id;src="10"><gun_i pos=170,0;pid.gun_i=*id>
<man_i pos=(pid.width-width)/2,0;pid.hi_i=*id><info_txt pos=pid.width/2+40,5;pid.life_t=*id;src="125">
<ar_i pos=pid.width-150,5;pid.ar_i=*id><info_txt pos=pid.width-80,5;pid.ar_t=*id;src="0">};
OnSize={<: pos=0,0;width=pid.width;
hi_i.xpos=(width-hi_i.width)/2;life_t.xpos=pid.width/2+40;
ar_i.xpos=pid.width-150;ar_t.xpos=pid.width-80;>};
Onammo={<: am=*ep;am_t.src=*am>};
OnWeapon={<: if=(ep==0)?{am_i.show=0;}:{am_i.show=1;am_i.frame=(ep-1);};gun_i.frame=*ep>};
OnHealth={<: health=*ep;if=(health<25)?{life_t.color=#FF0000}:{life_t.color=#FFCC00};life_t.src=*health>};
Onarmor={<: ar=*ep;ar_t.src=*ar>};
// ifchged(ping)={<:info_ping if=($[ping]<100)?{src=优秀($[ping])}:{if=($[ping]<400)?{src=良好($[ping])}:{if=($[ping]<800)?{src=中等($[ping])}:{<: src=差($[ping])><:mysocket event=info,网速太慢!,5000>}}}>};
}
.info_ammo:img{
src=$.\imgs\misc\guns.ale;
// rect=-7,-8,8,5;
no=1;num=0;
numc=#666666;
OnCreate={<: frame=*no;pos=35*(no-1),12;pid.a$[no]=*id;>};
ParamCtrl#s=loop(rd,10,30,2,50);
draw=-1:{wv();
CircleLight(0,0,10+rd/4,#3366FF);
textout(-6,6,$[num],$[numc]);
}
OnClick={<: num=(num+5);eve=num,*num>};
OnSel={<: draw#s=-1:{wv();torus(0,0,rd/3+2,3,#009900);}>};
OnGet={<: draw#s=-1:{wv();ellipse(0,0,6,rd,#FF0000,0);ellipse(0,0,30-rd,6,#FF0000,0);}>};
OnNum={<: num=$[ep];if=(num>0)?{if=(num<10)?{numc=#FF6666}:{numc=#66FF66}}:{numc=#666666};>};
}
.hud:div{
size=640,30;
pos=0,0;
bkimg=dark(4);
width=pid.width;
OnSize={<: width=pid.width;enumsub={<: eve=size>}>};
OnCreate={<divammo pid.ammo=*id;pos=pid.width-300,2></divammo>};
}
.divammo:div{
size=300,pid.height;
OnSize={<: pos=pid.width-width,2>};
OnCreate={<info_ammo no=1>
<info_ammo no=2>
<info_ammo no=3>
<info_ammo no=4>
<info_ammo no=5>
<info_ammo no=6>
<info_ammo no=7>
<info_ammo no=8>};
}
</style>
<info></info>
#define HL <health name=%1;pos=%2,%3;p=%4>
#define AM <ammo name=%1;pos=%2,%3;p=%4>
#define AR <armor name=%1;pos=%2,%3;p=%4>
#define GN <gun name=%1;pos=%2,%3;p=%4>
#define MG <machinegun name=%1;pos=%2,%3;p=%4>
#define SG <shotgun name=%1;pos=%2,%3;p=%4>
#define GL <grenade name=%1;pos=%2,%3;p=%4>
#define RL <rocket name=%1;pos=%2,%3;p=%4>
#define LG <lightting name=%1;pos=%2,%3;p=%4>
#define RG <railgun name=%1;pos=%2,%3;p=%4>
#define PG <plusma name=%1;pos=%2,%3;p=%4>
#define BG <bfg name=%1;pos=%2,%3;p=%4>
//<:help eve=info,"鼠标右键行走,左键开火\r\n数字键换枪,有1-9号枪可以换\r\n各色血球可以补血\r\n各种弹药可以补充\r\n各种武器可以拣\r\n需要走过去碰一下\r\n回车键可开关聊天功能">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -