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

📄 quake_s.gml

📁 在线游戏最新服务器端源代码
💻 GML
字号:
<sys nameformat=Q>
<style>
.Man_Normal{
	healthone="5,25,50,100";
	health=125;
	weapons="melee,machinegun,shotgun,grenade,rocket,lightning,railgun,plusma,bfg";
	weaponb="0,1,1,0,0,0,0,0,0";
	weaponone="0,50,10,10,10,100,10,40,10";
	ammos="0,100,10,0,0,0,0,0,0";
	ammomax="0,200,100,100,100,100,100,200,100";
	ammoone="0,50,10,10,5,10,10,30,10";
	armor=0;
	armormax=200;
	armorone="50,100";
	curw=2;
	weapon=*weapons[curw];
	ammo=*ammos[curw];
	ifchged(curw)={<: weapon=*weapons[curw];ammo=*ammos[curw]>};
	OnWeapon={<: w_w=*ep;w_b=*weaponb[w_w];if=(w_b==1)?{curw=*w_w;neteventToG=wgroup,weapon,$[ep]}>};

	OnSendfight={<: if=(ammos[curw]>0)?{<: ammos[curw]=(ammos[curw]-1);ammo=(ammo-1);eve=ammoed,(curw,ammo)>
		<$[weapon] user=$[id];fly=line($[xpos]+$[dx],$[ypos]+$[dy],$[objpos],speed,2)></$[weapon]>}>};
	OnFire={<: netcreatecmd=netcmdbase;walk=null;bGo=0;anikind=fight;autoanicmd=1;forwordto=$[ep];
		objpos=*pid.nearcangopoint($[pos],$[ep],18);
		paramCtrl=loopt(1,anisteps,0,4,1,70,Endfight);
		neteventToG=wgroup,fire,(objpos,ammo)>};
	OnHit={<: hit1=*eventfrom.hit1;hit2=*eventfrom.hit2;
		if=(hit2<armor)?{armor=(armor-hit2);hit2=0}:{hit2=(hit2-armor);armor=0};hit1=(hit1+hit2);
		health=(health-hit1);eventfrom.eve=hited;if=(health<1)?{eventfrom.eve=win,$[id];eve=dead}>};
	OnGun={<: w_k=*eventfrom.p;w_o=*weaponone[w_k];w_b=*weaponb[w_k];am_c=*ammos[w_k];am_m=*ammomax[w_k];
		if=(w_b==0)?{weaponb[w_k]=1};
		if=(am_c<am_m)?{if=(am_c<w_o)?{am_c=*w_o}:{am_c=(am_c+1)};ammos[w_k]=*am_c;
		if=(w_k==curw)?{ammo=*am_c};eventfrom.eve=hited;eve=Ammoed,(w_k,am_c)}>};
	OnHealth={<: h_k=*eventfrom.p;h_o=*healthone[h_k];if=(health<200)?{health=(health+h_o);
		if=(health>200)?{health=200};eventfrom.eve=hited}>};
	OnAmmo={<: am_k=*eventfrom.p;am_c=*ammos[am_k];am_m=*ammomax[am_k];am_o=*ammoone[am_k];
		if=(am_c<am_m)?{am_c=(am_c+am_o);if=(am_c>am_m)?{am_c=*am_m};ammos[am_k]=*am_c;
		if=(am_k==curw)?{ammo=*am_c};eventfrom.eve=hited;eve=ammoed,(am_k,am_c)}>};
	OnAmmoed={<: neteventToG=wgroup,ammo,$[ep]>};
	OnArmor={<: ar_k=*eventfrom.p;ar_c=*armor;ar_m=200;ar_o=*armorone[ar_k];
		if=(ar_c<ar_m)?{ar_c=(ar_c+ar_o);if=(ar_c>ar_m)?{ar_c=*ar_m};armor=*ar_c;eventfrom.eve=hited}>};
	OnTele={<: eve=pos;paramCtrl#t=timer(200,teled)>};
	OnTeled={<: neteventToG=wgroup,teled,$[pos];paramCtrl#t=null>}:
}
.Man_Dead{
	OnRun=null;
	OnFire=null;
	OnHit=null;
	OnSendfight=null;
	OnEndfight=null;

	paramCtrl=loopt(1,anisteps,0,4,1,170,waitrestart);
	OnDropgun={<gun pos=$[pos];p=$[curw]>};
	eve=dropgun;
	OnReMake={<: eve=pos;eve=reset>};
}
.Man{
	fen=0;
	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);
	NetParam=health,fen,weapon,armor;
	OnCreate={<: ownername.man=*id>};
	OnPos={<: pos=(rand(&mymap.mapwidth-400)+200),(rand(&mymap.mapheight-400)+200)>};
	OnWin={<: switch(ep){case $[id]:fen=(fen-1);break;default:fen=(fen+1);}>};
}
.weapon:div{
	pid=mymap;
	anishow=1;
	zorder=top;
	size=6,6;
	bkimg=color(red);
	speed=2000;
	far=200;
	delay=1000;
	&mymap.bf=0;
	OnCreate={<:mymap paramCtrl#w=loopcmd(1,$[delay],10,{<: bf=1;paramCtrl#w=null>})>};
	OnFlyend={<: HitTest=mutipoint(hit_kind,255,point(0,0),hitok,hit);paramctrl=timer(100,del)>};
	OnHited={<: del=1>};
	Onwin={<: user.eve=win,$[ep];del=1>};
}
.melee:weapon{
	delay=10;
	hit1=25;
	hit2=25;
}
.machinegun:weapon{
	speed=8000;
	delay=100;
	hit1=2;
	hit2=6;
}
.shotgun:weapon{
	speed=6000;
	delay=800;
	hit1=30;
	hit2=60;
}
.grenade:weapon{
	speed=2000;
	delay=800;
	hit1=30;
	hit2=70;
}
.rocket:weapon{
	speed=2000;
	delay=800;
	hit1=30;
	hit2=70;
}
.lightning:weapon{
	speed=6000;
	delay=100;
	hit1=2;
	hit2=6;
}
.railgun:weapon{
	speed=10000;
	delay=800;
	hit1=30;
	hit2=70;
}
.plusma:weapon{
	speed=5000;
	delay=100;
	hit1=15;
	hit2=5;
}
.bfg:weapon{
	speed=5000;
	delay=200;
	hit1=10;
	hit2=30;
}
.item{
	pid=mymap;
	size=16,16;
	anishow=1;
	autozorder=1;
	p=0;
	OnCreate={<:cpu $[kind]=($[kind]+1)>};
	OnDestroy={<:cpu $[kind]=($[kind]-1)>};
	paramCtrl=timer(120000,del);

	WebObj=wgroup,player;
	NetParam=pos,p;
	ownername="";
	netcreatecmd="#($[net],$[name],$[pos],$[p])";

	HitTest=mutipoint(eat_kind,255,point(0,0),hitit,$[kind]);
	Onhitit={};
	OnHited={<: del=1>};
}
.gun:img{
	kind=gun;
	net=GN;
	src=$.\imgs\misc\guns.ale;
	class=item;
	HitTest=mutipoint(eat_kind,255,point(0,0),hitit,gun);
}
.health:img{
	kind=health;
	net=HL;
	src=$.\imgs\misc\health.ale;
	class=item;
	HitTest=mutipoint(eat_kind,255,point(0,0),hitit,health);
}
.ammo:img{
	kind=ammo;
	net=AM;
	src=$.\imgs\misc\ammo.ale;
	class=item;
	HitTest=mutipoint(eat_kind,255,point(0,0),hitit,ammo);
}
.armor:img{
	kind=armor;
	net=AR;
	src=$.\imgs\misc\armor.ale;
	class=item;
	HitTest=mutipoint(eat_kind,255,point(0,0),hitit,armor);
}
.tech:img{
	kind=tech;
	net=TE;
	src=$.\imgs\misc\tech.ale;
	class=item;
	HitTest=mutipoint(eat_kind,255,point(0,0),hitit,tech);
}
.tele:img{
	pid=mymap;
	anishow=1;
	autozorder=1;
	src=$.\mapimg\house\quake\door.ale;
	rect=-10,-10,10,10;
	HitTest=mutipoint(eat_kind,255,point(0,0),hitit,tele);
	Onhitit={};
	OnHited={};
}
.creatTimer:div{
	pos=100,100;
	delay=1000;
	CTYPE=text;
	pid=desktop;
	OnReCreate={<$[CTYPE] src=test;pos=$[pos];pid=$[pid];OnDestroy#toMe={<:$[id] eve=reStart;>};>};
	OnreStart={<: ParamCtrl#T=timer($[delay],ReCreate);>};
	eve=ReCreate;
}
.cpu{
	health=0;
	ammo=0;
	gun=0;
	armor=0;
	draw=7:{TextOut(0,0,health=$[health],#FFFFFF);
		TextOut(0,20,ammo=$[ammo],#FFFFFF);
		TextOut(0,40,armor=$[armor],#FFFFFF);
		TextOut(0,60,gun=$[gun],#FFFFFF)};
	paramCtrl#bottle=loopcmd(-1,100,6000,{<: if=(health<&gg.health)?{<: eve=health>}});
	Onhealth={<health pos=$[&mymapbk.randpoint(4,"黑土地")];p=(rand(4));c=*color[kind]>};
	paramCtrl#ammo=loopcmd(-1,1000,6000,{<: if=(ammo<&gg.ammo)?{<: eve=ammo>}});
	Onammo={<ammo pos=$[&mymapbk.randpoint(4,"黑土地")];p=(rand(8)+1)>};
	paramCtrl#gun=loopcmd(-1,1000,6000,{<: if=(gun<&gg.gun)?{<: eve=gun>}});
	Ongun={<gun pos=$[&mymapbk.randpoint(4,"黑土地")];p=(rand(8)+1)>};
	paramCtrl#armor=loopcmd(-1,1000,6000,{<: if=(armor<&gg.armor)?{<: eve=armor>}});
	Onarmor={<armor pos=$[&mymapbk.randpoint(4,"黑土地")];p=(rand(2))>};
}
</style>
<sys import=desktop,$.\..\rts\rts_s.gml>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -