⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.gml

📁 在线游戏最新服务器端源代码
💻 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 + -