📄 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="snowball";
OnSendfight={<: ParamCtrl#ws=null><$[weapon] fly=line($[xpos]+$[dx],$[ypos]+$[dy],$[objpos],speed,2)>};
OnEndfight={<: autoanicmd=0;anikind=stand>};
OnFired={<: walk=null;anikind=fight;autoanicmd=1;forwordto=*ep;objpos=$[ep0],$[ep1];
paramCtrl=loopt(1,anisteps,0,4,1,70,endfight)>};
paramCtrl#begin=loopt(1,alpha,0,255,10,10);
paramCtrl#in=loopcmd(1,50,1,{<: playsnd=$.\sound\many.gsm>};);
OnTurn={<: anikind=snow>};
OnTurnend={<: anikind=stand>};
OnDeath={<: anikind=death>};
OnBump={<: walk=!$[ep],400,25,20,bump>};
OnBumped={<: pos=$[ep]>};
}
.ManDie{
OnGo=null;
walk=null;
anikind=death;
health=0;
OnFired=null;
OnSendfight=null;
OnEndfight=null;
paramCtrl=loopt(1,anisteps,0,6,1,170,CanRestart);
}
.UserMan:human{
mutisrc=stand($.\..\imgs\ani\m_sn_r.ale,8)walk($.\..\imgs\ani\m_sn_r.ale,8)fight($.\..\imgs\ani\m_sn_f.ale,8)death($.\..\imgs\ani\m_sn_d.ale,4)snow($.\..\imgs\ani\m_sn_s.ale,8)bump($.\..\imgs\ani\m_sn_b.ale,8);
OnDestroy={<: playsnd=$.\..\quake\sound\world\teleout.gsm>};
// OnDie#m={<:infobar eve=kill,$[ownername],$[kill]>};
puser=*pid;
pid.pman=*id;
pid=*pid.pid.pid.pid.map;
anishow=1;
autozorder=1;
class=RtsLook;
class=ManNormal;
// mutisrc=stand($.\..\imgs\ani\m_sn_r.ale,8)walk($.\..\imgs\ani\m_sn_r.ale,8)fight($.\..\imgs\ani\m_sn_f.ale,8)death($.\..\imgs\ani\m_sn_d.ale,4)snow($.\..\imgs\ani\m_sn_s.ale,8)bump($.\..\imgs\ani\m_sn_b.ale,8);
OnCreate={<showtext src=$[man]>};
OnSide={<: switch(ep){
case 0:palette=null;class=RtsLook;break;
case 1:palette=redpal;class=RtsPlay;break;
case 2:palette=bluepal;class=RtsPlay;break;
case 3:palette=null;class=RtsPlay;break;
};
>};
OnStand={<: ParamCtrl#ws=null;walk=null;pos=$[ep]>};
OnWalkend={<: ParamCtrl#ws=null;pid.viewfollow=mouse>};
}
.UserManM:UserMan{
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={<: 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;ParamCtrl#ws=loopcmd(-1,300,500,{<: playsnd=$.\sound\walkstep.gsm>})>};
OnFired#m={<: pid.viewfollow=*id;ParamCtrl#ws=null>};
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{
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]>};
}
.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;
automask=1;
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{
automask=1;
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=$.\..\quake\sound\items\n_health.gsm>};
}
.weapon:img{
pid=mymap;
anishow=1;
autozorder=1;
size=1,1;
alpha=170;
speed=2000;
far=200;
delay=1000;
// &mymap.bf=0;
// OnCreate={<:mymap paramCtrl#w=loopcmd(1,$[delay],10,{<: bf=1;paramCtrl#w=null>})>};
}
.snowball:weapon{
zorder=top;
OnCreate#s={<: playsnd=$.\sound\tou.gsm>};
automask=1;
src=$.\imgs\misc\snow.gif;
size=12,12;
speed=3000;
delay=50;
onflyend={<: paramCtrl=loopt(1,alpha,250,10,30,1,del)>};
}
.info:div{
size=800,20;
zorder=top;
clip=0;
OnCreate={<text pos=30,4;src="姓名:">
<text pos=60,4;src="man";pid.name_t=*id>
<text pos=290,4;src="得分:">
<text pos=320,4;src="0";pid.fen=*id>
<text pos=360,4;src="网速:">
<text pos=390,4;src="88";pid.ping=*id;>
<text pos=470,4;src="在线人数:">
<text pos=530,4;src="1";pid.mans_t=*id;>
};
OnSize={<: pos=0,pid.height-height;width=pid.width>};
lifesx=220;
draw#h=8{bar(120,2,lifesx,18,R$[lifer]G$[lifeg]B0);};
draw#b={bar(0,0,width,height,#003F6F);line(0,17,width,17,R129G120B178);}
OnHealth={<: lifesx=(120+ep*100/200);
if=(ep>100)?{lifer=((200-ep)*255/200)}:{lifer=255};
if=(ep>100)?{lifeg=255}:{lifeg=(ep*255/200)}>};
OnFen={<: fen.src=*ep>};
OnName={<: name_t.src=*ep>};
OnPing={<: if=(ep<100)?{ping.src=优秀($[ep])}:{if=(ep<400)?{ping.src=良好($[ep])}:{if=(ping<800)?{ping.src=中等($[ep])}:{<: ping.src=差($[ep])><:mysocket eve=info,网速太慢!,5000>}}}>};
ifchged(mans)={<: mans_t.src=*mans>};
eve=size;
}
</style>
//<info name=info></info>
#define HL <health name=%1;pos=%2,%3;p=%4>
#define SB <snowball name=%1;pos=%2,%3;p=%4>
//#define RS <RtsOther ownername=%1;name=%2;eve=MyCreate;fen=%3;kill=%4;score=%5;bekill=%6;anikind=snow>
//<sys import=,$.\..\rts_c.gml>
//<:help eve=info,"鼠标右键行走,左键开火\r\n各色血球可以补血\r\n需要走过去碰一下\r\n回车键可开关聊天功能">
//<sys import=,$.\selectside.gml>
//<:mymap ParamCtrl#autorestart=loopcmd(-1,15000,5000,{<: eve=rbuttondown;>});>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -