📄 g_spawn.pas
字号:
(* drawing*)
statpic <name>
pic <stat>
num< fieldwidth> <stat>
string_ <stat>
(* control*)
if <stat> then
begin
ifeq <stat> <value>
ifbit <stat> <value>
end;
{$endif}
var
single_statusbar: PChar ='yb -24 '
(* health*)
'xv 0 ''hnum '
'xv 50 '
'pic 0 '
(* ammo*)
'if 2 '
' xv 100 '
' anum '
' xv 150 '
' pic 2 '
'endif '
(* armor*)
'if 4 '
' xv 200 '
' rnum '
' xv 250 '
' pic 4 '
'endif '
(* selected item*)
'if 6 '
' xv 296 '
' pic 6 '
'endif '
'yb -50 '
(* picked up item*)
'if 7 '
' xv 0 '
' pic 7 '
' xv 26 '
' yb -42 '
' stat_string 8 '
' yb -50 '
'endif '
(* timer*)
'if 9 '
' xv 262 '
' num 2 10 '
' xv 296 '
' pic 9 '
'endif '
(* help / weapon icon *)
'if 11 '
' xv 148 '
' pic 11 '
'endif ';
dm_statusbar: pchar =
'yb -24 '
(* health*)
'xv 0 '
'hnum '
'xv 50 '
'pic 0 '
(* ammo*)
'if 2 '
' xv 100 '
' anum '
' xv 150 '
' pic 2 '
'endif '
(* armor*)
'if 4 '
' xv 200 '
' rnum '
' xv 250 '
' pic 4 '
'endif '
(* selected item*)
'if 6 '
' xv 296 '
' pic 6 '
'endif '
'yb -50 '
(* picked up item*)
'if 7 '
' xv 0 '
' pic 7 '
' xv 26 '
' yb -42 '
' stat_string 8 '
' yb -50 '
'endif '
(* timer*)
'if 9 '
' xv 246 '
' num 2 10 '
' xv 296 '
' pic 9 '
'endif '
(* help / weapon icon *)
'if 11 '
' xv 148 '
' pic 11 '
'endif '
(* frags*)
'xr -50 '
'yt 2 '
'num 3 14 '
(* spectator*)
'if 17 '
'xv 0 '
'yb -58 '
'string2 "SPECTATOR MODE" '
'endif '
(* chase camera*)
'if 16 '
'xv 0 '
'yb -68 '
'string "Chasing" '
'xv 64 '
'stat_string 16 '
'endif ';
(*QUAKED worldspawn (0 0 0) ?
Only used for the world.
"sky" environment map name
"skyaxis" vector axis for rotating sky
"skyrotate" speed of rotation in degrees/second
"sounds" music cd track number
"gravity" 800 is default gravity
"message" text to print at user logon
*)
procedure SP_worldspawn(ent: pedict_t);
begin
ent.movetype:= MOVETYPE_PUSH;
ent.solid:= SOLID_BSP;
ent.inuse:= true;
ent.s.modelindex:= 1;
InitBodyQue();
(* since the world doesn't use G_Spawn()*)
(* world model is always index 1*)
(*---------------*)
(* reserve some spots for dead player bodies for coop / deathmatch*)
SetItemNames;
(* set configstrings for items*)
if st.nextmap then strcpy(level.nextmap,st.nextmap); // if (st.nextmap)
(* make some data visible to the server*)
if ent.message_ and ent.message_[0)then
begin
gi.configstring(CS_NAME,ent.message_);
strncpy(level.level_name,ent.message_,sizeof(level.level_name));
end
else strncpy(level.level_name,level.mapname,sizeof(level.level_name));
if st.sky and st.sky[0] then gi.configstring(CS_SKY,st.sky);
else gi.configstring(CS_SKY,'unit1_');
gi.configstring(CS_SKYROTATE,va('%f',st.skyrotate));
gi.configstring(CS_SKYAXIS,va('%f %f %f',st.skyaxis[0],st.skyaxis[1],st.skyaxis[2]));
gi.configstring(CS_CDTRACK,va('%i',ent.sounds));
gi.configstring(CS_MAXCLIENTS,va('%i',{!!!a type cast? =>} {integer(}(maxclients.value)));
(* status bar program*)
if deathmatch.value then gi.configstring(CS_STATUSBAR,dm_statusbar) //if (deathmatch->value)
else gi.configstring(CS_STATUSBAR,single_statusbar);
gi.imageindex('i_help');
(*---------------*)
(* help icon for statusbar*)
level.pic_health:= gi.imageindex('i_health');
gi.imageindex('help');
gi.imageindex('field_3');
if not st.gravity then gi.cvar_set('sv_gravity','800') //if (!st.gravity)
else gi.cvar_set('sv_gravity',st.gravity);
snd_fry:= gi.soundindex('player/fry.wav');
PrecacheItem(FindItem('Blaster'));
(* standing in lava / slime*)
gi.soundindex('player/lava1.wav');
gi.soundindex('player/lava2.wav');
gi.soundindex('misc/pc_up.wav');
gi.soundindex('misc/talk1.wav');
gi.soundindex('misc/udeath.wav');
gi.soundindex('items/respawn1.wav');
(* gibs*)
gi.soundindex('*death1.wav');
(* sexed sounds*)
gi.soundindex('*death2.wav');
gi.soundindex('*death3.wav');
gi.soundindex('*death4.wav');
gi.soundindex('*fall1.wav');
gi.soundindex('*fall2.wav');
gi.soundindex('*gurp1.wav');
gi.soundindex('*gurp2.wav');
(* drowning damage*)
gi.soundindex('*jump1.wav');
gi.soundindex('*pain25_1.wav');
(* player jump*)
gi.soundindex('*pain25_2.wav');
gi.soundindex('*pain50_1.wav');
gi.soundindex('*pain50_2.wav');
gi.soundindex('*pain75_1.wav');
gi.soundindex('*pain75_2.wav');
gi.soundindex('*pain100_1.wav');
gi.soundindex('*pain100_2.wav');
gi.modelindex('#w_blaster.md2');
(* sexed models*)
(* THIS ORDER MUST MATCH THE DEFINES IN g_local.h*)
(* you can add more, max 15*)
gi.modelindex('#w_shotgun.md2');
gi.modelindex('#w_sshotgun.md2');
gi.modelindex('#w_machinegun.md2');
gi.modelindex('#w_chaingun.md2');
gi.modelindex('#a_grenades.md2');
gi.modelindex('#w_glauncher.md2');
gi.modelindex('#w_rlauncher.md2');
gi.modelindex('#w_hyperblaster.md2');
gi.modelindex('#w_railgun.md2');
gi.modelindex('#w_bfg.md2');
gi.soundindex('player/gasp1.wav');
(*-------------------*)
gi.soundindex('player/gasp2.wav');
(* gasping for air*)
gi.soundindex('player/watr_in.wav');
(* head breaking surface, not gasping*)
gi.soundindex('player/watr_out.wav');
(* feet hitting water*)
gi.soundindex('player/watr_un.wav');
(* feet leaving water*)
gi.soundindex('player/u_breath1.wav');
(* head going underwater*)
gi.soundindex('player/u_breath2.wav');
gi.soundindex('items/pkup.wav');
gi.soundindex('world/land.wav');
(* bonus item pickup*)
gi.soundindex('misc/h2ohit1.wav');
(* landing thud*)
gi.soundindex('items/damage.wav');
(* landing splash*)
gi.soundindex('items/protect.wav');
gi.soundindex('items/protect4.wav');
gi.soundindex('weapons/noammo.wav');
gi.soundindex('infantry/inflies1.wav');
sm_meat_index:= gi.modelindex('models/objects/gibs/sm_meat/tris.md2');
gi.modelindex('models/objects/gibs/arm/tris.md2');
gi.modelindex('models/objects/gibs/bone/tris.md2');
gi.modelindex('models/objects/gibs/bone2/tris.md2');
gi.modelindex('models/objects/gibs/chest/tris.md2');
gi.modelindex('models/objects/gibs/skull/tris.md2');
gi.modelindex('models/objects/gibs/head2/tris.md2');
gi.configstring(CS_LIGHTS+0,'m');
(**)
(* Setup light animation tables. 'a' is total darkness, 'z' is doublebright.*)
(**)
(* 0 normal*)
gi.configstring(CS_LIGHTS+1,'mmnmmommommnonmmonqnmmo');
(* 1 FLICKER (first variety)*)
gi.configstring(CS_LIGHTS+2,'abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba');
(* 2 SLOW STRONG PULSE*)
gi.configstring(CS_LIGHTS+3,'mmmmmaaaaammmmmaaaaaabcdefgabcdefg');
(* 3 CANDLE (first variety)*)
gi.configstring(CS_LIGHTS+4,'mamamamamama');
(* 4 FAST STROBE*)
gi.configstring(CS_LIGHTS+5,'jklmnopqrstuvwxyzyxwvutsrqponmlkj');
(* 5 GENTLE PULSE 1*)
gi.configstring(CS_LIGHTS+6,'nmonqnmomnmomomno');
(* 6 FLICKER (second variety)*)
gi.configstring(CS_LIGHTS+7,'mmmaaaabcdefgmmmmaaaammmaamm');
(* 7 CANDLE (second variety)*)
gi.configstring(CS_LIGHTS+8,'mmmaaammmaaammmabcdefaaaammmmabcdefmmmaaaa');
(* 8 CANDLE (third variety)*)
gi.configstring(CS_LIGHTS+9,'aaaaaaaazzzzzzzz');
(* 9 SLOW STROBE (fourth variety)*)
gi.configstring(CS_LIGHTS+10,'mmamammmmammamamaaamammma');
(* 10 FLUORESCENT FLICKER*)
gi.configstring(CS_LIGHTS+11,'abcdefghijklmnopqrrqponmlkjihgfedcba');
(* 11 SLOW PULSE NOT FADE TO BLACK*)
gi.configstring(CS_LIGHTS+63,'a');
(* styles 32-62 are assigned by the light program for switchable lights*)
(* 63 testing*)
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -