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

📄 g_spawn.pas

📁 雷神之锤2(Quake2)Delphi源码
💻 PAS
📖 第 1 页 / 共 3 页
字号:

   (* 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 + -