Raised This Month: $32 Target: $400
 8% 

How do you patch your hl1.dll to increase the precache limit?


Post New Thread Reply   
 
Thread Tools Display Modes
solidjake
Junior Member
Join Date: Aug 2010
Old 09-14-2010 , 16:56   Re: How do you patch your hl1.dll to increase the precache limit?
Reply With Quote #21

that's so awesome
solidjake is offline
Prajch
Senior Member
Join Date: Dec 2007
Location: anger++
Old 09-14-2010 , 17:51   Re: How do you patch your hl1.dll to increase the precache limit?
Reply With Quote #22

Don't let that encourage you too much until you see significantly more than 512 being precached. In my logs when I was testing my plugin I often saw slightly more than 512 assets being precached (maybe as high as 540 on occasion, don't recall). If you actually cracked that problem though I'd love to see how.

Also about blocking Half-Life precaches to save resources, I never saw any HL models/sounds in my logs but I clearly see some in yours so you could be right.
Prajch is offline
Arkshine
AMX Mod X Plugin Approver
Join Date: Oct 2005
Old 09-14-2010 , 18:03   Re: How do you patch your hl1.dll to increase the precache limit?
Reply With Quote #23

The method used is simply to redirect precache_model[] and model[] array (because right now, i'm testing only with model) to custom one. Joripito has made a simple module to allocate memory. Then, with orpheu, I've replaced the address of all array references to the new one and replace all the 512 check with the new limit. For example the new array is 1024. I've tried on fy_dangercity where I know the model count is near of the limit, I've added some custom models like you can see to go over 512. This part works fine. But there is a problem in-game :p ; you see no models/sprites ( even the default ones ) at all and the client console is flooding with message like "Tried to link edict 168 without model". That's why I've said half-working. Right now we try to figure out the problem. ( The output you see from the link is directly from precache_model[] array, after server start )

HL :

PHP Code:
models/w_antidote.mdl
models
/w_security.mdl
models
/w_longjump.mdl
items
/suitcharge1.wav
items
/suitchargeno1.wav
items
/suitchargeok1.wav
common
/wpn_hudoff.wav
common
/wpn_hudon.wav
common
/wpn_moveselect.wav
common
/wpn_denyselect.wav
player
/geiger6.wav
player
/geiger5.wav
player
/geiger4.wav
player
/geiger3.wav
player
/geiger2.wav
player
/geiger1.wav  
sprites
/zerogxplode.spr
sprites
/WXplo1.spr
sprites
/steam1.spr
sprites
/bubble.spr
sprites
/bloodspray.spr
sprites
/blood.spr
sprites
/smokepuff.spr
sprites
/eexplo.spr
sprites
/fexplo.spr
sprites
/fexplo1.spr
sprites
/b-tele1.spr
sprites
/c-tele1.spr
sprites
/ledglow.spr
sprites
/laserdot.spr
sprites
/explode1.spr
weapons
/bullet_hit1.wav
weapons
/bullet_hit2.wav
items
/weapondrop1.wav
weapons
/generic_reload.wav 
That's something you can check easily by looking the gamedll with IDA for example.
For example, you can see in ClientPrecache() function. here the IDA decompiled output :

PHP Code:

int __cdecl ClientPrecache
()
{
  
signed int v0// edi@1
  
signed int i// esi@3
  
signed int v2// esi@5
  
int v3// eax@6
  
signed int v4// esi@8
  
signed int v5// esi@10
  
int v6// eax@11
  
char v7// bl@13
  
int result// eax@33
  
int v9// [sp+Ch] [bp-30h]@8
  
int v10// [sp+10h] [bp-2Ch]@8
  
int v11// [sp+14h] [bp-28h]@8
  
int v12// [sp+18h] [bp-24h]@8
  
int v13// [sp+1Ch] [bp-20h]@8
  
int j// [sp+20h] [bp-1Ch]@8
  
int v15// [sp+24h] [bp-18h]@8
  
int v16// [sp+28h] [bp-14h]@8
  
int v17// [sp+2Ch] [bp-10h]@8
  
int v18// [sp+30h] [bp-Ch]@13
  
int v19// [sp+34h] [bp-8h]@13
  
int v20// [sp+38h] [bp-4h]@13

  
PRECACHE_SOUND("weapons/dryfire_pistol.wav");
  
PRECACHE_SOUND("weapons/dryfire_rifle.wav");
  
PRECACHE_SOUND("player/pl_shot1.wav");
  
PRECACHE_SOUND("player/pl_die1.wav");
  
PRECACHE_SOUND("player/headshot1.wav");
  
PRECACHE_SOUND("player/headshot2.wav");
  
PRECACHE_SOUND("player/headshot3.wav");
  
PRECACHE_SOUND("player/bhit_flesh-1.wav");
  
PRECACHE_SOUND("player/bhit_flesh-2.wav");
  
PRECACHE_SOUND("player/bhit_flesh-3.wav");
  
PRECACHE_SOUND("player/bhit_kevlar-1.wav");
  
PRECACHE_SOUND("player/bhit_helmet-1.wav");
  
PRECACHE_SOUND("player/die1.wav");
  
PRECACHE_SOUND("player/die2.wav");
  
PRECACHE_SOUND("player/die3.wav");
  
PRECACHE_SOUND("player/death6.wav");
  
PRECACHE_SOUND("radio/locknload.wav");
  
PRECACHE_SOUND("radio/letsgo.wav");
  
PRECACHE_SOUND("radio/moveout.wav");
  
PRECACHE_SOUND("radio/com_go.wav");
  
PRECACHE_SOUND("radio/rescued.wav");
  
PRECACHE_SOUND("radio/rounddraw.wav");
  
PRECACHE_SOUND("items/kevlar.wav");
  
PRECACHE_SOUND("items/ammopickup2.wav");
  
PRECACHE_SOUND("items/nvg_on.wav");
  
PRECACHE_SOUND("items/nvg_off.wav");
  
PRECACHE_SOUND("items/equip_nvg.wav");
  
PRECACHE_SOUND("weapons/c4_beep1.wav");
  
PRECACHE_SOUND("weapons/c4_beep2.wav");
  
PRECACHE_SOUND("weapons/c4_beep3.wav");
  
PRECACHE_SOUND("weapons/c4_beep4.wav");
  
PRECACHE_SOUND("weapons/c4_beep5.wav");
  
PRECACHE_SOUND("weapons/c4_explode1.wav");
  
PRECACHE_SOUND("weapons/c4_plant.wav");
  
PRECACHE_SOUND("weapons/c4_disarm.wav");
  
PRECACHE_SOUND("weapons/c4_disarmed.wav");
  
PRECACHE_SOUND("weapons/explode3.wav");
  
PRECACHE_SOUND("weapons/explode4.wav");
  
PRECACHE_SOUND("weapons/explode5.wav");
  
PRECACHE_SOUND("player/sprayer.wav");
  
PRECACHE_SOUND("player/pl_fallpain2.wav");
  
PRECACHE_SOUND("player/pl_fallpain3.wav");
  
PRECACHE_SOUND("player/pl_snow1.wav");
  
PRECACHE_SOUND("player/pl_snow2.wav");
  
PRECACHE_SOUND("player/pl_snow3.wav");
  
PRECACHE_SOUND("player/pl_snow4.wav");
  
PRECACHE_SOUND("player/pl_snow5.wav");
  
PRECACHE_SOUND("player/pl_snow6.wav");
  
PRECACHE_SOUND("player/pl_step1.wav");
  
PRECACHE_SOUND("player/pl_step2.wav");
  
PRECACHE_SOUND("player/pl_step3.wav");
  
PRECACHE_SOUND("player/pl_step4.wav");
  
PRECACHE_SOUND("common/npc_step1.wav");
  
PRECACHE_SOUND("common/npc_step2.wav");
  
PRECACHE_SOUND("common/npc_step3.wav");
  
PRECACHE_SOUND("common/npc_step4.wav");
  
PRECACHE_SOUND("player/pl_metal1.wav");
  
PRECACHE_SOUND("player/pl_metal2.wav");
  
PRECACHE_SOUND("player/pl_metal3.wav");
  
PRECACHE_SOUND("player/pl_metal4.wav");
  
PRECACHE_SOUND("player/pl_dirt1.wav");
  
PRECACHE_SOUND("player/pl_dirt2.wav");
  
PRECACHE_SOUND("player/pl_dirt3.wav");
  
PRECACHE_SOUND("player/pl_dirt4.wav");
  
PRECACHE_SOUND("player/pl_duct1.wav");
  
PRECACHE_SOUND("player/pl_duct2.wav");
  
PRECACHE_SOUND("player/pl_duct3.wav");
  
PRECACHE_SOUND("player/pl_duct4.wav");
  
PRECACHE_SOUND("player/pl_grate1.wav");
  
PRECACHE_SOUND("player/pl_grate2.wav");
  
PRECACHE_SOUND("player/pl_grate3.wav");
  
PRECACHE_SOUND("player/pl_grate4.wav");
  
PRECACHE_SOUND("player/pl_slosh1.wav");
  
PRECACHE_SOUND("player/pl_slosh2.wav");
  
PRECACHE_SOUND("player/pl_slosh3.wav");
  
PRECACHE_SOUND("player/pl_slosh4.wav");
  
PRECACHE_SOUND("player/pl_tile1.wav");
  
PRECACHE_SOUND("player/pl_tile2.wav");
  
PRECACHE_SOUND("player/pl_tile3.wav");
  
PRECACHE_SOUND("player/pl_tile4.wav");
  
PRECACHE_SOUND("player/pl_tile5.wav");
  
PRECACHE_SOUND("player/pl_swim1.wav");
  
PRECACHE_SOUND("player/pl_swim2.wav");
  
PRECACHE_SOUND("player/pl_swim3.wav");
  
PRECACHE_SOUND("player/pl_swim4.wav");
  
PRECACHE_SOUND("player/pl_ladder1.wav");
  
PRECACHE_SOUND("player/pl_ladder2.wav");
  
PRECACHE_SOUND("player/pl_ladder3.wav");
  
PRECACHE_SOUND("player/pl_ladder4.wav");
  
PRECACHE_SOUND("player/pl_wade1.wav");
  
PRECACHE_SOUND("player/pl_wade2.wav");
  
PRECACHE_SOUND("player/pl_wade3.wav");
  
PRECACHE_SOUND("player/pl_wade4.wav");
  
PRECACHE_SOUND("debris/wood1.wav");
  
PRECACHE_SOUND("debris/wood2.wav");
  
PRECACHE_SOUND("debris/wood3.wav");
  
PRECACHE_SOUND("plats/train_use1.wav");
  
PRECACHE_SOUND("plats/vehicle_ignition.wav");
  
PRECACHE_SOUND("buttons/spark5.wav");
  
PRECACHE_SOUND("buttons/spark6.wav");
  
PRECACHE_SOUND("debris/glass1.wav");
  
PRECACHE_SOUND("debris/glass2.wav");
  
PRECACHE_SOUND("debris/glass3.wav");
  
PRECACHE_SOUND("items/flashlight1.wav");
  
PRECACHE_SOUND("items/flashlight1.wav");
  
PRECACHE_SOUND("common/bodysplat.wav");
  
PRECACHE_SOUND("player/pl_pain2.wav");
  
PRECACHE_SOUND("player/pl_pain4.wav");
  
PRECACHE_SOUND("player/pl_pain5.wav");
  
PRECACHE_SOUND("player/pl_pain6.wav");
  
PRECACHE_SOUND("player/pl_pain7.wav");
  
v0 12;
  if ( !
sub_100C7EF0("czero") )
    
v0 10;
  for ( 
0v0; ++)
    
PRECACHE_MODEL(*(&off_1010D06C i));
  
v2 100;
  do
  {
    
v3 sub_10036050(v2);
    if ( !
v3 )
      break;
    
PRECACHE_MODEL(v3);
    ++
v2;
  }
  while ( 
v2 <= 199 );
  
PRECACHE_MODEL("models/p_ak47.mdl");
  
PRECACHE_MODEL("models/p_aug.mdl");
  
PRECACHE_MODEL("models/p_awp.mdl");
  
PRECACHE_MODEL("models/p_c4.mdl");
  
PRECACHE_MODEL("models/w_c4.mdl");
  
PRECACHE_MODEL("models/p_deagle.mdl");
  
PRECACHE_MODEL("models/shield/p_shield_deagle.mdl");
  
PRECACHE_MODEL("models/p_flashbang.mdl");
  
PRECACHE_MODEL("models/shield/p_shield_flashbang.mdl");
  
PRECACHE_MODEL("models/p_hegrenade.mdl");
  
PRECACHE_MODEL("models/shield/p_shield_hegrenade.mdl");
  
PRECACHE_MODEL("models/p_glock18.mdl");
  
PRECACHE_MODEL("models/shield/p_shield_glock18.mdl");
  
PRECACHE_MODEL("models/p_p228.mdl");
  
PRECACHE_MODEL("models/shield/p_shield_p228.mdl");
  
PRECACHE_MODEL("models/p_smokegrenade.mdl");
  
PRECACHE_MODEL("models/shield/p_shield_smokegrenade.mdl");
  
PRECACHE_MODEL("models/p_usp.mdl");
  
PRECACHE_MODEL("models/shield/p_shield_usp.mdl");
  
PRECACHE_MODEL("models/p_fiveseven.mdl");
  
PRECACHE_MODEL("models/shield/p_shield_fiveseven.mdl");
  
PRECACHE_MODEL("models/p_knife.mdl");
  
PRECACHE_MODEL("models/shield/p_shield_knife.mdl");
  
PRECACHE_MODEL("models/w_flashbang.mdl");
  
PRECACHE_MODEL("models/w_hegrenade.mdl");
  
PRECACHE_MODEL("models/p_sg550.mdl");
  
PRECACHE_MODEL("models/p_g3sg1.mdl");
  
PRECACHE_MODEL("models/p_m249.mdl");
  
PRECACHE_MODEL("models/p_m3.mdl");
  
PRECACHE_MODEL("models/p_m4a1.mdl");
  
PRECACHE_MODEL("models/p_mac10.mdl");
  
PRECACHE_MODEL("models/p_mp5.mdl");
  
PRECACHE_MODEL("models/p_ump45.mdl");
  
PRECACHE_MODEL("models/p_p90.mdl");
  
PRECACHE_MODEL("models/p_scout.mdl");
  
PRECACHE_MODEL("models/p_sg552.mdl");
  
PRECACHE_MODEL("models/w_smokegrenade.mdl");
  
PRECACHE_MODEL("models/p_tmp.mdl");
  
PRECACHE_MODEL("models/p_elite.mdl");
  
PRECACHE_MODEL("models/p_xm1014.mdl");
  
PRECACHE_MODEL("models/p_galil.mdl");
  
PRECACHE_MODEL("models/p_famas.mdl");
  
PRECACHE_MODEL("models/p_shield.mdl");
  
PRECACHE_MODEL("models/w_shield.mdl");
  
v4 0;
  
v15 dword_10158E0C;
  
v16 dword_10158E10;
  
v17 dword_10158E14;
  
v9 = -1038614528;
  
v10 = -1044381696;
  
v11 = -1037828096;
  
v12 1108869120;
  
v13 1103101952;
  for ( 
1109655552v4 v0; ++v4 )
    
PRECAHE_MODEL(2, &v9, &v12, *(&off_1010D06C v4));
  
v5 100;
  do
  {
    
v6 sub_10036050(v5);
    if ( !
v6 )
      break;
    
PRECAHE_MODEL(3, &v9, &v12v6);
    ++
v5;
  }
  while ( 
v5 <= 199 );
  
PRECAHE_MODEL(0, &v15, &v15"sprites/black_smoke1.spr");
  
PRECAHE_MODEL(0, &v15, &v15"sprites/black_smoke2.spr");
  
PRECAHE_MODEL(0, &v15, &v15"sprites/black_smoke3.spr");
  
PRECAHE_MODEL(0, &v15, &v15"sprites/black_smoke4.spr");
  
PRECAHE_MODEL(0, &v15, &v15"sprites/fast_wallpuff1.spr");
  
PRECAHE_MODEL(0, &v15, &v15"sprites/smokepuff.spr");
  
PRECAHE_MODEL(0, &v15, &v15"sprites/gas_puff_01.spr");
  
PRECAHE_MODEL(0, &v15, &v15"sprites/scope_arc.tga");
  
PRECAHE_MODEL(0, &v15, &v15"sprites/scope_arc_nw.tga");
  
PRECAHE_MODEL(0, &v15, &v15"sprites/scope_arc_ne.tga");
  
PRECAHE_MODEL(0, &v15, &v15"sprites/scope_arc_sw.tga");
  
v7 sub_100C7EF0("czero");
  
v9 = -1052770304;
  
v10 = -1061158912;
  
v11 = -1045430272;
  
v18 1094713344;
  
v19 1086324736;
  
v20 1102053376;
  
v12 1094713344;
  
v13 1086324736;
  
1102053376;
  if ( 
v7 )
  {
    
v9 = -1051721728;
    
v10 = -1061158912;
    
v11 = -1045430272;
    
v18 1095761920;
    
v19 1086324736;
    
v20 1102053376;
    
v12 1095761920;
    
v13 1086324736;
    
1102053376;
  }
  
PRECAHE_MODEL(2, &v9, &v12"models/p_deagle.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_p228.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_elite.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_usp.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_fiveseven.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_glock18.mdl");
  
v9 = -1043857408;
  
v10 = -1047003136;
  
v11 = -1045954560;
  
v18 1103626240;
  
v19 1102577664;
  
v20 1101529088;
  
v12 1103626240;
  
v13 1102577664;
  
1101529088;
  if ( 
v7 )
  {
    
v9 = -1043333120;
    
v10 = -1047003136;
    
v11 = -1045954560;
    
v18 1104150528;
    
v19 1102577664;
    
v20 1101529088;
    
v12 1104150528;
    
v13 1102577664;
    
1101529088;
  }
  
PRECAHE_MODEL(2, &v9, &v12"models/p_xm1014.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_m3.mdl");
  
v9 = -1044905984;
  
v10 = -1056964608;
  
v11 = -1046478848;
  
v18 1102577664;
  
v19 1090519040;
  
v20 1101004800;
  
v12 1102577664;
  
v13 1090519040;
  
1101004800;
  if ( 
v7 )
  {
    
v9 = -1044905984;
    
v10 = -1055916032;
    
v11 = -1046478848;
    
v18 1102577664;
    
v19 1099431936;
    
v20 1101004800;
    
v12 1102577664;
    
v13 1099431936;
    
1101004800;
  }
  
PRECAHE_MODEL(2, &v9, &v12"models/p_mac10.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_mp5.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_ump45.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_tmp.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_p90.mdl");
  
v9 = -1040711680;
  
v10 = -1056964608;
  
v11 = -1045954560;
  
v18 1106771968;
  
v19 1094713344;
  
v20 1106771968;
  
v12 1106771968;
  
v13 1094713344;
  
1106771968;
  if ( 
v7 )
  {
    
v9 = -1038614528;
    
v10 = -1039925248;
    
v11 = -1045430272;
    
v18 1108869120;
    
v19 1097859072;
    
v20 1108082688;
    
v12 1108869120;
    
v13 1097859072;
    
1108082688;
  }
  
PRECAHE_MODEL(2, &v9, &v12"models/p_ak47.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_aug.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_awp.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_g3sg1.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_sg550.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_m4a1.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_scout.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_sg552.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_famas.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_galil.mdl");
  
v9 = -1044381696;
  
v10 = -1054867456;
  
v11 = -1046478848;
  
v18 1103626240;
  
v19 1092616192;
  
v20 1101004800;
  
v12 1103626240;
  
v13 1092616192;
  
1101004800;
  if ( 
v7 )
  {
    
v9 = -1041235968;
    
v10 = -1054867456;
    
v11 = -1046478848;
    
v18 1106247680;
    
v19 1093664768;
    
v20 1101004800;
    
v12 1106247680;
    
v13 1093664768;
    
1101004800;
  }
  
PRECAHE_MODEL(2, &v9, &v12"models/p_m249.mdl");
  
v9 = -1059061760;
  
v18 1088421888;
  
v10 = -1059061760;
  
v19 1088421888;
  
v12 1088421888;
  
v13 1088421888;
  
v11 = -1049624576;
  
v20 1097859072;
  
1097859072;
  
PRECAHE_MODEL(2, &v9, &v12"models/p_c4.mdl");
  
v9 = -1065353216;
  
v10 = -1056964608;
  
v11 = -1069547520;
  
v18 1077936128;
  
v19 1088421888;
  
v20 1077936128;
  
v12 1077936128;
  
v13 1088421888;
  
1077936128;
  if ( 
v7 )
  {
    
v9 = -1048051712;
    
v10 = -1056964608;
    
v11 = -1069547520;
    
v18 1099431936;
    
v19 1088421888;
    
v20 1077936128;
    
v12 1099431936;
    
v13 1088421888;
    
1077936128;
  }
  
PRECAHE_MODEL(2, &v9, &v12"models/w_c4.mdl");
  
v18 = -1059061760;
  
v19 = -1073741824;
  
v20 = -1047527424;
  
v9 = -1059061760;
  
v10 = -1073741824;
  
v11 = -1047527424;
  if ( 
v7 )
  {
    
v18 = -1059061760;
    
v19 = -1069547520;
    
v20 = -1047527424;
    
v9 = -1059061760;
    
v10 = -1069547520;
    
v11 = -1047527424;
  }
  
v18 1088421888;
  
v19 1073741824;
  
v12 1088421888;
  
v13 1073741824;
  
v20 1099956224;
  
1099956224;
  
PRECAHE_MODEL(2, &v9, &v12"models/p_flashbang.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_hegrenade.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/p_smokegrenade.mdl");
  
v18 = -1063256064;
  
v19 = -1063256064;
  
v20 = -1063256064;
  
v9 = -1063256064;
  
v10 = -1063256064;
  
v11 = -1063256064;
  if ( 
v7 )
  {
    
v18 = -1063256064;
    
v19 = -1063256064;
    
v20 = -1059061760;
    
v9 = -1063256064;
    
v10 = -1063256064;
    
v11 = -1059061760;
  }
  
v18 1084227584;
  
v19 1084227584;
  
v12 1084227584;
  
v13 1084227584;
  
v20 1096810496;
  
1096810496;
  
PRECAHE_MODEL(2, &v9, &v12"models/w_flashbang.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/w_hegrenade.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/w_smokegrenade.mdl");
  
v9 = -1059061760;
  
v18 1088421888;
  
v10 = -1053818880;
  
v19 1086324736;
  
v12 1088421888;
  
v13 1086324736;
  
v11 = -1047527424;
  
v20 1099956224;
  
1099956224;
  
PRECAHE_MODEL(2, &v9, &v12"models/p_knife.mdl");
  
v9 = -1048576000;
  
v10 = -1056964608;
  
v11 = -1034420224;
  
v18 1098907648;
  
v19 1086324736;
  
v20 1103101952;
  
v12 1098907648;
  
v13 1086324736;
  
1103101952;
  if ( 
v7 )
  {
    
v9 = -1045954560;
    
v10 = -1043857408;
    
v11 = -1034420224;
    
v18 1101529088;
    
v19 1102577664;
    
v20 1103101952;
    
v12 1101529088;
    
v13 1102577664;
    
1103101952;
  }
  
PRECAHE_MODEL(2, &v9, &v12"models/shield/p_shield_deagle.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/shield/p_shield_fiveseven.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/shield/p_shield_flashbang.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/shield/p_shield_glock18.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/shield/p_shield_hegrenade.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/shield/p_shield_knife.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/shield/p_shield_p228.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/shield/p_shield_smokegrenade.mdl");
  
PRECAHE_MODEL(2, &v9, &v12"models/shield/p_shield_usp.mdl");
  
PRECACHE_SOUND("common/wpn_hudoff.wav");
  
PRECACHE_SOUND("common/wpn_hudon.wav");
  
PRECACHE_SOUND("common/wpn_moveselect.wav");
  
PRECACHE_SOUND("common/wpn_select.wav");
  
PRECACHE_SOUND("common/wpn_denyselect.wav");
  
PRECACHE_SOUND("player/geiger6.wav");
  
PRECACHE_SOUND("player/geiger5.wav");
  
PRECACHE_SOUND("player/geiger4.wav");
  
PRECACHE_SOUND("player/geiger3.wav");
  
PRECACHE_SOUND("player/geiger2.wav");
  
PRECACHE_SOUND("player/geiger1.wav");
  if ( 
dword_1015A804 )
    
sub_100C51B0("enemy_terrorist");
  
LOWORD(word_101289C8) = PRECACHE_MODEL("sprites/shadow_circle.spr");
  
PRECACHE_MODEL("sprites/wall_puff1.spr");
  
PRECACHE_MODEL("sprites/wall_puff2.spr");
  
PRECACHE_MODEL("sprites/wall_puff3.spr");
  
PRECACHE_MODEL("sprites/wall_puff4.spr");
  
PRECACHE_MODEL("sprites/black_smoke1.spr");
  
PRECACHE_MODEL("sprites/black_smoke2.spr");
  
PRECACHE_MODEL("sprites/black_smoke3.spr");
  
PRECACHE_MODEL("sprites/black_smoke4.spr");
  
PRECACHE_MODEL("sprites/fast_wallpuff1.spr");
  
PRECACHE_MODEL("sprites/pistol_smoke1.spr");
  
PRECACHE_MODEL("sprites/pistol_smoke2.spr");
  
PRECACHE_MODEL("sprites/rifle_smoke1.spr");
  
PRECACHE_MODEL("sprites/rifle_smoke2.spr");
  
PRECACHE_MODEL("sprites/rifle_smoke3.spr");
  
dword_10158FF8("sprites/scope_arc.tga");
  
dword_10158FF8("sprites/scope_arc_nw.tga");
  
dword_10158FF8("sprites/scope_arc_ne.tga");
  
dword_10158FF8("sprites/scope_arc_sw.tga");
  
result PRECACHE_EVENT(1"events/decal_reset.sc");
  
word_101289D0 result;
  return 
result;

__________________

Last edited by Arkshine; 09-15-2010 at 04:14.
Arkshine is offline
Prajch
Senior Member
Join Date: Dec 2007
Location: anger++
Old 09-14-2010 , 18:17   Re: How do you patch your hl1.dll to increase the precache limit?
Reply With Quote #24

So did you patch the .dll or is this all in a plugin?
Prajch is offline
solidjake
Junior Member
Join Date: Aug 2010
Old 09-14-2010 , 18:21   Re: How do you patch your hl1.dll to increase the precache limit?
Reply With Quote #25

I think HE'S making the plugin while Joripito made a module.
solidjake is offline
Arkshine
AMX Mod X Plugin Approver
Join Date: Oct 2005
Old 09-14-2010 , 18:21   Re: How do you patch your hl1.dll to increase the precache limit?
Reply With Quote #26

Right now we are testing only on linux, so engine.so. Like I said, a module to allocate memory and in a plugin, using orpheu to patch the memory to change the address with the new got from the module and changing the check value.
__________________

Last edited by Arkshine; 09-14-2010 at 18:24.
Arkshine is offline
solidjake
Junior Member
Join Date: Aug 2010
Old 09-14-2010 , 18:29   Re: How do you patch your hl1.dll to increase the precache limit?
Reply With Quote #27

Amazing work the both of you
solidjake is offline
Mati_
Member
Join Date: Sep 2010
Old 09-14-2010 , 21:12   Re: How do you patch your hl1.dll to increase the precache limit?
Reply With Quote #28

Wow, really nice research you are doing, keep it up! I would be very curious about a solution aswell.
Mati_ is offline
joropito
AlliedModders Donor
Join Date: Mar 2009
Location: pfnAddToFullPack
Old 09-15-2010 , 21:59   Re: How do you patch your hl1.dll to increase the precache limit?
Reply With Quote #29

This is the update:

We can resize arrays in memory to support more than 512 models
We've tested with 750+ models and client can connect.

The problem now is, when we touch those arrays in memory, the client don't see anymore non-brush models (included game specific models). Even if we allocate for 512 models with the new memory locations.

I think the problem is not the model count. There should be a reference we are missing.

Tomorrow we (Arkshine + me) will test resizing model_t static structure but really I don't think will fix that issue.

If someone knows or has any idea about that would be nice.

Arrays what we're touching:
(char *)sv->precache_model[512]
(model_t *)sv->models[512]

Tomorrow:
(model_t)mod_known[512]
and others...
__________________

Divide et vinces
approved plugins | steam account

I don't accept PM for support. Just ask on forums.
If you're looking for private work, PM me.
joropito is offline
Send a message via MSN to joropito
Tirant
Veteran Member
Join Date: Jul 2008
Location: Los Angeles, California
Old 09-15-2010 , 23:05   Re: How do you patch your hl1.dll to increase the precache limit?
Reply With Quote #30

I did a test with base builder to find the max visible brush entities, and after about entity 255 no more were visible. Hope that helps
__________________

PM me if you're interested in buying the Credits addition for Base Builder
Battlefield Rebirth [66% done]
Call of Duty: MW2 [100% done]
Base Builder [100% done]
Tirant is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 02:14.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode