Advertisement
TheNanikos

AW stuff

Jul 12th, 2025
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.30 KB | None | 0 0
  1. // S1 GSC SOURCE
  2. // Generated by https://github.com/xensik/gsc-tool
  3.  
  4. zombiecriticalfactors_global( var_0 )
  5. {
  6.     if ( !maps\mp\gametypes\_spawnfactor::critical_factor( maps\mp\gametypes\_spawnfactor::avoidgrenades, var_0 ) )
  7.         return "secondary";
  8.  
  9.     if ( !maps\mp\gametypes\_spawnfactor::critical_factor( maps\mp\gametypes\_spawnfactor::avoidgasclouds, var_0 ) )
  10.         return "secondary";
  11.  
  12.     if ( !maps\mp\gametypes\_spawnfactor::critical_factor( maps\mp\gametypes\_spawnfactor::avoidmines, var_0 ) )
  13.         return "secondary";
  14.  
  15.     if ( !maps\mp\gametypes\_spawnfactor::critical_factor( maps\mp\gametypes\_spawnfactor::avoidairstrikelocations, var_0 ) )
  16.         return "secondary";
  17.  
  18.     if ( !maps\mp\gametypes\_spawnfactor::critical_factor( maps\mp\gametypes\_spawnfactor::avoidcarepackages, var_0 ) )
  19.         return "secondary";
  20.  
  21.     if ( !maps\mp\gametypes\_spawnfactor::critical_factor( maps\mp\gametypes\_spawnfactor::avoidtelefrag, var_0 ) )
  22.         return "secondary";
  23.  
  24.     if ( !maps\mp\gametypes\_spawnfactor::critical_factor( maps\mp\gametypes\_spawnfactor::avoidenemyspawn, var_0 ) )
  25.         return "secondary";
  26.  
  27.     return "primary";
  28. }
  29.  
  30. getzombiesspawnpoint_neartombstone( var_0 )
  31. {
  32.     var_0 = maps\mp\gametypes\_spawnscoring::checkdynamicspawns( var_0 );
  33.     var_1["primary"] = [];
  34.     var_1["secondary"] = [];
  35.     var_1["bad"] = [];
  36.     var_2 = [];
  37.  
  38.     foreach ( var_4 in var_0 )
  39.     {
  40.         maps\mp\gametypes\_spawnscoring::initscoredata( var_4 );
  41.  
  42.         if ( !isinvalidzone( var_4 ) )
  43.             continue;
  44.  
  45.         var_4.criticalresult = zombiecriticalfactors_global( var_4 );
  46.         var_1[var_4.criticalresult][var_1[var_4.criticalresult].size] = var_4;
  47.         var_2[var_2.size] = var_4;
  48.     }
  49.  
  50.     if ( var_1["primary"].size )
  51.         var_6 = scorespawns_neartombstone( var_1["primary"] );
  52.     else if ( var_1["secondary"].size )
  53.         var_6 = scorespawns_neartombstone( var_1["secondary"] );
  54.     else if ( var_2.size )
  55.         var_6 = maps\mp\gametypes\_spawnscoring::selectbestspawnpoint( var_2[0], var_2 );
  56.     else
  57.         var_6 = maps\mp\gametypes\_spawnscoring::selectbestspawnpoint( var_0[0], var_0 );
  58.  
  59.     foreach ( var_4 in var_0 )
  60.     {
  61.         maps\mp\gametypes\_spawnscoring::recon_log_spawnpoint_info_wrapper( var_4 );
  62.         var_4.criticalresult = undefined;
  63.     }
  64.  
  65.     return var_6;
  66. }
  67.  
  68. scorespawns_neartombstone( var_0 )
  69. {
  70.     var_1 = undefined;
  71.  
  72.     foreach ( var_3 in var_0 )
  73.     {
  74.         scorefactors_neartombstone( var_3 );
  75.  
  76.         if ( !isdefined( var_1 ) || var_3.totalscore > var_1.totalscore )
  77.             var_1 = var_3;
  78.     }
  79.  
  80.     if ( isdefined( var_1 ) )
  81.         var_1 = maps\mp\gametypes\_spawnscoring::selectbestspawnpoint( var_1, var_0 );
  82.     else
  83.         var_1 = maps\mp\gametypes\_spawnscoring::scorespawns_nearteam( var_0 );
  84.  
  85.     return var_1;
  86. }
  87.  
  88. scorefactors_neartombstone( var_0 )
  89. {
  90.     var_1 = maps\mp\gametypes\_spawnfactor::score_factor( 2.0, ::prefertombstonebydistance, var_0 );
  91.     var_0.totalscore = var_0.totalscore + var_1;
  92.     var_1 = maps\mp\gametypes\_spawnfactor::score_factor( 0.5, maps\mp\gametypes\_spawnfactor::preferalliesbydistance, var_0 );
  93.     var_0.totalscore = var_0.totalscore + var_1;
  94.     var_1 = maps\mp\gametypes\_spawnfactor::score_factor( 1.25, maps\mp\gametypes\_spawnfactor::avoidrecentlyused, var_0 );
  95.     var_0.totalscore = var_0.totalscore + var_1;
  96.     var_1 = maps\mp\gametypes\_spawnfactor::score_factor( 0.25, maps\mp\gametypes\_spawnfactor::avoidsamespawn, var_0 );
  97.     var_0.totalscore = var_0.totalscore + var_1;
  98.  
  99.     if ( isdefined( level.usezoneconnectiontombstonescoring ) && level.usezoneconnectiontombstonescoring )
  100.     {
  101.         var_1 = maps\mp\gametypes\_spawnfactor::score_factor( 2.0, ::prefershortzoneconnection, var_0 );
  102.         var_0.totalscore = var_0.totalscore + var_1;
  103.     }
  104.     else if ( isdefined( level.zone_is_contaminated_func ) )
  105.     {
  106.         var_1 = maps\mp\gametypes\_spawnfactor::score_factor( 2.0, ::prefershortzoneconnectionnoninfected, var_0 );
  107.         var_0.totalscore = var_0.totalscore + var_1;
  108.     }
  109. }
  110.  
  111. isinvalidzone( var_0 )
  112. {
  113.     if ( !isdefined( var_0.script_noteworthy ) )
  114.         return 1;
  115.  
  116.     if ( !maps\mp\zombies\_zombies_zone_manager::iszoneenabled( var_0.script_noteworthy ) )
  117.         return 0;
  118.  
  119.     if ( isdefined( level.zone_is_contaminated_func ) && [[ level.zone_is_contaminated_func ]]( var_0.script_noteworthy ) )
  120.         return 0;
  121.  
  122.     return 1;
  123. }
  124.  
  125. prefershortzoneconnection( var_0 )
  126. {
  127.     if ( !isdefined( self.lastdeathpos ) )
  128.         return 100;
  129.  
  130.     var_1 = maps\mp\zombies\_zombies_zone_manager::getlocationzone( self.lastdeathpos );
  131.  
  132.     if ( !isdefined( var_1 ) )
  133.         var_1 = maps\mp\zombies\_zombies_zone_manager::getlocationzone( self.lastdeathpos + ( randomfloatrange( -1, 1 ), randomfloatrange( -1, 1 ), 0 ) );
  134.  
  135.     if ( !isdefined( var_1 ) )
  136.         return 100;
  137.  
  138.     var_2 = maps\mp\zombies\_zombies_zone_manager::getzoneconnectionlength( var_1, var_0.script_noteworthy );
  139.  
  140.     if ( var_2 < 0 )
  141.         return 0;
  142.  
  143.     if ( var_2 == 0 )
  144.         return 100;
  145.  
  146.     return 100 / var_2;
  147. }
  148.  
  149. prefershortzoneconnectionnoninfected( var_0 )
  150. {
  151.     if ( !isdefined( self.lastdeathpos ) )
  152.         return 100;
  153.  
  154.     var_1 = maps\mp\zombies\_zombies_zone_manager::getlocationzone( self.lastdeathpos );
  155.  
  156.     if ( !isdefined( var_1 ) )
  157.         var_1 = maps\mp\zombies\_zombies_zone_manager::getlocationzone( self.lastdeathpos + ( randomfloatrange( -1, 1 ), randomfloatrange( -1, 1 ), 0 ) );
  158.  
  159.     if ( !isdefined( var_1 ) )
  160.         return 100;
  161.  
  162.     var_2 = maps\mp\zombies\_zombies_zone_manager::getzoneinfectedconnectionlength( var_1, var_0.script_noteworthy );
  163.  
  164.     if ( var_2 < 0 )
  165.         return 0;
  166.  
  167.     if ( var_2 == 0 )
  168.         return 100;
  169.  
  170.     return 100 / var_2;
  171. }
  172.  
  173. prefertombstonebydistance( var_0 )
  174. {
  175.     if ( !isdefined( self.lastdeathpos ) )
  176.         return 100;
  177.  
  178.     var_1 = distance( var_0.origin, self.lastdeathpos );
  179.  
  180.     if ( var_1 >= 2500 || var_1 <= 500 )
  181.         return 0;
  182.  
  183.     var_2 = max( 0.0, 1.0 - abs( 1500 - var_1 ) / 1000 );
  184.     return var_2 * 100;
  185. }
  186.  
  187. getzombiesspawnpoint_nearteam( var_0 )
  188. {
  189.     var_0 = maps\mp\gametypes\_spawnscoring::checkdynamicspawns( var_0 );
  190.     var_1["primary"] = [];
  191.     var_1["secondary"] = [];
  192.     var_1["bad"] = [];
  193.     var_2 = [];
  194.  
  195.     foreach ( var_4 in var_0 )
  196.     {
  197.         maps\mp\gametypes\_spawnscoring::initscoredata( var_4 );
  198.  
  199.         if ( !isinvalidzone( var_4 ) )
  200.             continue;
  201.  
  202.         var_4.criticalresult = zombiecriticalfactors_global( var_4 );
  203.         var_1[var_4.criticalresult][var_1[var_4.criticalresult].size] = var_4;
  204.         var_2[var_2.size] = var_4;
  205.     }
  206.  
  207.     if ( var_1["primary"].size )
  208.         var_6 = scorezombiespawns_nearteam( var_1["primary"] );
  209.     else if ( var_1["secondary"].size )
  210.         var_6 = scorezombiespawns_nearteam( var_1["secondary"] );
  211.     else if ( var_2.size )
  212.         var_6 = maps\mp\gametypes\_spawnscoring::selectbestspawnpoint( var_2[0], var_2 );
  213.     else
  214.         var_6 = maps\mp\gametypes\_spawnscoring::selectbestspawnpoint( var_0[0], var_0 );
  215.  
  216.     foreach ( var_4 in var_0 )
  217.     {
  218.         maps\mp\gametypes\_spawnscoring::recon_log_spawnpoint_info_wrapper( var_4 );
  219.         var_4.criticalresult = undefined;
  220.     }
  221.  
  222.     return var_6;
  223. }
  224.  
  225. scorezombiespawns_nearteam( var_0 )
  226. {
  227.     var_1 = undefined;
  228.  
  229.     foreach ( var_3 in var_0 )
  230.     {
  231.         maps\mp\gametypes\_spawnscoring::scorefactors_nearteam( var_3 );
  232.  
  233.         if ( !isdefined( var_1 ) || var_3.totalscore > var_1.totalscore )
  234.             var_1 = var_3;
  235.     }
  236.  
  237.     if ( isdefined( var_1 ) )
  238.         var_1 = maps\mp\gametypes\_spawnscoring::selectbestspawnpoint( var_1, var_0 );
  239.     else
  240.         var_1 = maps\mp\gametypes\_spawnscoring::scorespawns_nearteam( var_0 );
  241.  
  242.     return var_1;
  243. }
  244.  
  245. getzombiesspawnpoint_aizombies( var_0, var_1, var_2 )
  246. {
  247.     var_3 = [];
  248.  
  249.     foreach ( var_5 in var_0 )
  250.     {
  251.         maps\mp\gametypes\_spawnscoring::initscoredata( var_5 );
  252.  
  253.         if ( var_5 maps\mp\zombies\_zombies_zone_manager::spawnercanbeusedfor( var_1, var_2 ) )
  254.             var_3[var_3.size] = var_5;
  255.     }
  256.  
  257.     if ( var_3.size )
  258.         var_7 = scorespawns_aizombies( var_3, var_1, var_2 );
  259.     else
  260.         var_7 = maps\mp\gametypes\_spawnscoring::selectbestspawnpoint( var_0 );
  261.  
  262.     return var_7;
  263. }
  264.  
  265. scorespawns_aizombies( var_0, var_1, var_2 )
  266. {
  267.     var_3 = var_0[0];
  268.  
  269.     foreach ( var_5 in var_0 )
  270.     {
  271.         scorefactors_aizombies( var_5, var_1, var_2 );
  272.  
  273.         if ( !isdefined( var_3 ) || var_5.totalscore > var_3.totalscore )
  274.             var_3 = var_5;
  275.     }
  276.  
  277.     return var_3;
  278. }
  279.  
  280. scorefactors_aizombies( var_0, var_1, var_2 )
  281. {
  282.     var_3 = score_factor_ai( 2.0, ::preferplayerinzone, var_0 );
  283.     var_0.totalscore = var_0.totalscore + var_3;
  284.     var_3 = score_factor_ai( 1.0, ::avoidrecentlyusedspawns, var_0 );
  285.     var_0.totalscore = var_0.totalscore + var_3;
  286.     var_3 = score_factor_ai( 6.0, ::matchclassname, var_0, var_1, var_2 );
  287.     var_0.totalscore = var_0.totalscore + var_3;
  288. }
  289.  
  290. matchclassname( var_0, var_1, var_2 )
  291. {
  292.     if ( var_0 maps\mp\zombies\_zombies_zone_manager::spawnercanbeusedfor( var_1, var_2 ) )
  293.         return 100;
  294.  
  295.     return 0;
  296. }
  297.  
  298. preferplayerinzone( var_0 )
  299. {
  300.     if ( !isdefined( var_0.zone_name ) )
  301.         return 0;
  302.  
  303.     if ( maps\mp\zombies\_zombies_zone_manager::isplayerinzone( var_0.zone_name ) )
  304.         return 100;
  305.  
  306.     return 0;
  307. }
  308.  
  309. avoidrecentlyusedspawns( var_0 )
  310. {
  311.     if ( isdefined( var_0.lastspawntime ) )
  312.     {
  313.         var_1 = gettime() - var_0.lastspawntime;
  314.  
  315.         if ( var_1 > 30000 )
  316.             return 100;
  317.  
  318.         return var_1 / 30000 * 100;
  319.     }
  320.  
  321.     return 100;
  322. }
  323.  
  324. preferloneplayers( var_0 )
  325. {
  326.     if ( !isdefined( var_0.zone_name ) )
  327.         return 0;
  328.  
  329.     var_1 = maps\mp\zombies\_zombies_zone_manager::getnumberofplayersinzone( var_0.zone_name );
  330.  
  331.     if ( var_1 == 0 )
  332.         return 0;
  333.  
  334.     return 100 * ( 1.0 - var_1 * 0.15 );
  335. }
  336.  
  337. score_factor_ai( var_0, var_1, var_2, var_3, var_4 )
  338. {
  339.     if ( isdefined( var_4 ) )
  340.         var_5 = [[ var_1 ]]( var_2, var_3, var_4 );
  341.     else if ( isdefined( var_3 ) )
  342.         var_5 = [[ var_1 ]]( var_2, var_3 );
  343.     else
  344.         var_5 = [[ var_1 ]]( var_2 );
  345.  
  346.     var_5 = clamp( var_5, 0, 100 );
  347.     var_5 = var_5 * var_0;
  348.     return var_5;
  349. }
  350.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement