Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 15.92 KB | None | 0 0
  1. //The MapEdit Project
  2. //JariZ.nl
  3. //Made By Scripts & JariZ
  4. #include maps\mp\_utility;
  5. #include maps\mp\gametypes\_hud_util;
  6. //#include jariz\maploading;
  7. #include maps\mp\gametypes\me_assets;
  8.  
  9.  
  10.  
  11.  
  12. main()
  13. {
  14.     if(GetDvar( #"mapname") == "mp_background")
  15.         return;
  16.        
  17.         if( !mapSupport() )
  18.     {
  19.         error( "Could not find any available models to use." );
  20.         maps\mp\gametypes\_callbacksetup::AbortLevel();
  21.         return;
  22.     }
  23.  
  24.     collMapListGenerate();
  25.    
  26.     level.DISPLAY_MODELNAME = 0;
  27.     onPrecacheGameModels();
  28.    
  29.     maps\mp\gametypes\_globallogic::init();
  30.     maps\mp\gametypes\_callbacksetup::SetupCallbacks();
  31.     maps\mp\gametypes\_globallogic::SetupCallbacks();
  32.     maps\mp\gametypes\_globallogic_utils::registerTimeLimitDvar( "tdm", 10, 0, 1440 );
  33.     maps\mp\gametypes\_globallogic_utils::registerScoreLimitDvar( "tdm", 7500, 0, 50000 );
  34.     maps\mp\gametypes\_globallogic_utils::registerRoundLimitDvar( "tdm", 1, 0, 10 );
  35.     maps\mp\gametypes\_globallogic_utils::registerRoundWinLimitDvar( "tdm", 0, 0, 10 );
  36.     maps\mp\gametypes\_globallogic_utils::registerNumLivesDvar( "tdm", 0, 0, 10 );
  37.     maps\mp\gametypes\_weapons::registerGrenadeLauncherDudDvar( level.gameType, 10, 0, 1440 );
  38.     maps\mp\gametypes\_weapons::registerThrownGrenadeDudDvar( level.gameType, 0, 0, 1440 );
  39.     maps\mp\gametypes\_weapons::registerKillstreakDelay( level.gameType, 0, 0, 1440 );
  40.     maps\mp\gametypes\_globallogic::registerFriendlyFireDelay( level.gameType, 15, 0, 1440 );
  41.    
  42.     level.scoreRoundBased = true;
  43.     level.teamBased = true;
  44.     level.onStartGameType = ::onStartGameType;
  45.    
  46.    
  47.     level.onSpawnPlayer = ::onSpawnPlayer;
  48.     level.onSpawnPlayerUnified = ::onSpawnPlayerUnified;
  49.     level.onRoundEndGame = ::onRoundEndGame;
  50.     game["dialog"]["gametype"] = "tdm_start";
  51.     game["dialog"]["gametype_hardcore"] = "hctdm_start";
  52.     game["dialog"]["offense_obj"] = "generic_boost";
  53.     game["dialog"]["defense_obj"] = "generic_boost";
  54.    
  55.    
  56.    
  57.     setscoreboardcolumns( "kills", "deaths", "kdratio", "assists" );
  58. }
  59.  
  60. setupPlayer()
  61. {
  62.     self TakeAllWeapons();
  63.     self DisableWeapons();
  64.     self AllowAds( false );
  65.     self notify( "stop_ammo" );
  66.     self SetClientDvars(
  67.     "cg_thirdPerson", "1",
  68.     "cg_thirdPersonAngle", "360",
  69.     "cg_thirdPersonRange", "200" );
  70.     self ClearPerks();
  71.    
  72.     if( IsDefined( self.pers[ "myprop" ]  ) )
  73.     {
  74.         self.pers[ "myprop" ] Delete();
  75.     }
  76.     usableModelsKeys = GetArrayKeys( level.usableModels );
  77.     self.pers[ "myprop" ] = spawn( "script_model", self.origin );
  78.     self.pers[ "myprop" ].health = 10000;
  79.     self.pers[ "myprop" ].owner = self;
  80.     self.pers[ "myprop" ].angles = self.angles;
  81.     self.pers[ "myprop" ].indexKey = RandomInt( level.MAX_USUABLE_MODELS );
  82.     self.pers[ "myprop" ] SetModel( level.usableModels[ usableModelsKeys[ self.pers[ "myprop" ].indexKey ] ] );
  83.     self.pers[ "myprop" ] SetCanDamage( true );
  84.     self.pers[ "myprop" ] thread detachOnDisconnect( self );
  85.     self.pers[ "myprop" ] thread attachModel( self );
  86.     SetClientNameMode( "manual_change" );
  87.     SetDvar( "scr_teambalance", 0 );
  88.     SetDvar( "scr_disable_cac", 1 );
  89.     MakeDvarServerInfo( "scr_disable_cac", 1 );
  90.     SetDvar( "scr_disable_weapondrop", 1 );
  91.     SetDvar( "scr_game_perks", 0 );
  92.     level.killstreaksenabled = 0;
  93.     level.hardpointsenabled = 0;
  94.     SetDvar( "xblive_privatematch", 0 );
  95.     MakeDvarServerInfo( "xblive_privatematch", 0 );
  96.     maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", "^7Map^1Edit v1" );
  97.     maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", "^7Map^1Edit v1" );
  98.     self thread monitorKeyPress();
  99. }
  100.  
  101. onStartGameType()
  102. {
  103.     setClientNameMode("auto_change");
  104.     maps\mp\gametypes\_globallogic_ui::setObjectiveText( "allies", &"OBJECTIVES_TDM" );
  105.     maps\mp\gametypes\_globallogic_ui::setObjectiveText( "axis", &"OBJECTIVES_TDM" );
  106.    
  107.     if ( level.splitscreen )
  108.     {
  109.         maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_TDM" );
  110.         maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_TDM" );
  111.     }
  112.     else
  113.     {
  114.         maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "allies", &"OBJECTIVES_TDM_SCORE" );
  115.         maps\mp\gametypes\_globallogic_ui::setObjectiveScoreText( "axis", &"OBJECTIVES_TDM_SCORE" );
  116.     }
  117.     maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "allies", &"OBJECTIVES_TDM_HINT" );
  118.     maps\mp\gametypes\_globallogic_ui::setObjectiveHintText( "axis", &"OBJECTIVES_TDM_HINT" );
  119.    
  120.     level.spawnMins = ( 0, 0, 0 );
  121.     level.spawnMaxs = ( 0, 0, 0 );
  122.     maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_allies_start" );
  123.     maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_axis_start" );
  124.     maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_tdm_spawn" );
  125.     maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_tdm_spawn" );
  126.     maps\mp\gametypes\_spawning::updateAllSpawnPoints();
  127.     level.spawn_axis_start= maps\mp\gametypes\_spawnlogic::getSpawnpointArray("mp_tdm_spawn_axis_start");
  128.     level.spawn_allies_start= maps\mp\gametypes\_spawnlogic::getSpawnpointArray("mp_tdm_spawn_allies_start");
  129.    
  130.     level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
  131.     setMapCenter( level.mapCenter );
  132.     spawnpoint = maps\mp\gametypes\_spawnlogic::getRandomIntermissionPoint();
  133.     setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
  134.    
  135.     allowed[0] = "tdm";
  136.    
  137.     level.displayRoundEndText = false;
  138.     maps\mp\gametypes\_gameobjects::main(allowed);
  139.    
  140.    
  141.     maps\mp\gametypes\_spawning::create_map_placed_influencers();
  142.    
  143.    
  144.    
  145.     if ( !isOneRound() )
  146.     {
  147.         level.displayRoundEndText = true;
  148.         if( isScoreRoundBased() )
  149.         {
  150.             maps\mp\gametypes\_globallogic_score::resetTeamScores();
  151.         }
  152.     }
  153. }
  154.  
  155. monitorKeyPress()
  156. {
  157.     self endon( "disconnect" );
  158.     self endon( "killed_player" );
  159.     self endon( "death" );
  160.     level endon( "game_ended" );
  161.     usableModelsKeys = GetArrayKeys( level.usableModels );
  162.  
  163.  
  164.     minZoom = 125;
  165.     maxZoom = 525;
  166.     zoomChangeRate = 5;
  167.     self Hide();
  168.  
  169.     self.pers[ "myprop" ].rotateYaw_attack = SpawnStruct();
  170.     self.pers[ "myprop" ].rotateYaw_attack.value = 0;
  171.     self.pers[ "myprop" ].rotateYaw_attack.check = ::attackCheck;
  172.     self.pers[ "myprop" ].rotateYaw_attack.max = -50;
  173.     self.pers[ "myprop" ].rotateYaw_attack.change_rate = 1;
  174.     self.pers[ "myprop" ].rotateYaw_attack.reset_rate = 50;
  175.     self.pers[ "myprop" ].rotateYaw_ads = SpawnStruct();
  176.     self.pers[ "myprop" ].rotateYaw_ads.value = 0;
  177.     self.pers[ "myprop" ].rotateYaw_ads.check = ::adsCheck;
  178.     self.pers[ "myprop" ].rotateYaw_ads.max = 50;
  179.     self.pers[ "myprop" ].rotateYaw_ads.change_rate = 1;
  180.     self.pers[ "myprop" ].rotateYaw_ads.reset_rate = 50;
  181.     for(;;)
  182.     {
  183.         wait ( 0.05 );
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.             if( self ActionSlotTwoButtonPressed() && IsDefined( self.pers[ "myprop" ] ) ) //
  191.             {
  192.                 //spawn code by JariZ.nl
  193.                 //Get location (stolen from se7en)
  194.                 vec = anglestoforward(self getPlayerAngles());
  195.                 end = (vec[0] * 200000, vec[1] * 200000, vec[2] * 200000);
  196.                 location = BulletTrace( self gettagorigin("tag_eye"), self gettagorigin("tag_eye")+end, 0, self )[ "position" ];
  197.                
  198.                 //get current model
  199.                 model = level.usableModels[ usableModelsKeys[ self.pers[ "myprop" ].indexKey ] ];
  200.                
  201.                 //spawn the model
  202.                 block = spawn("script_model", location, 1);
  203.                 block setModel(model);
  204.                 block.angles = self.angles;
  205.                
  206.                 iprintln("^1[MAPEDIT] ^7Model spawned");
  207.                
  208.                 //WARNING : ROTATION OF MODEL NOT YET IMPLENTED
  209.                
  210.             }
  211.         if( self FragButtonPressed() && IsDefined( self.pers[ "myprop" ] ) )
  212.         {
  213.             self.pers[ "myprop" ].indexKey = self.pers[ "myprop" ].indexKey + 1;
  214.             PrintLn( "HNS INDEX: " + self.pers[ "myprop" ].indexKey + "   MAX POS: " + level.MAX_USUABLE_MODELS );
  215.             if( self.pers[ "myprop" ].indexKey >= level.MAX_USUABLE_MODELS || self.pers[ "myprop" ].indexKey < 0 )
  216.             {
  217.                 self.pers[ "myprop" ].indexKey = 0;
  218.             }
  219.             model = level.usableModels[ usableModelsKeys[ self.pers[ "myprop" ].indexKey ] ];
  220.             //self.modelNameHUD SetText( model );
  221.             self.pers[ "myprop" ] SetModel( model );
  222.             self.pers[ "myprop" ] NotSolid();
  223.         }
  224.         if( self SecondaryOffhandButtonPressed() && IsDefined( self.pers[ "myprop" ] ) )
  225.         {
  226.             self.pers[ "myprop" ].indexKey = self.pers[ "myprop" ].indexKey - 1;
  227.             PrintLn( "HNS INDEX: " + self.pers[ "myprop" ].indexKey + "   MAX POS: " + level.MAX_USUABLE_MODELS );
  228.             if( self.pers[ "myprop" ].indexKey >= level.MAX_USUABLE_MODELS || self.pers[ "myprop" ].indexKey < 0 )
  229.             {
  230.                 self.pers[ "myprop" ].indexKey = 0;
  231.             }
  232.             model = level.usableModels[ usableModelsKeys[ self.pers[ "myprop" ].indexKey ] ];
  233.             //self.modelNameHUD SetText( model );
  234.             self.pers[ "myprop" ] SetModel( model );
  235.             self.pers[ "myprop" ] NotSolid();
  236.         }
  237.  
  238.         if( self ActionSlotTwoButtonPressed() )
  239.         {
  240.             if( GetDvarInt( "cg_thirdPersonRange" ) > minZoom )
  241.             {
  242.                 self SetClientDvar( "cg_thirdPersonRange", GetDvarInt( "cg_thirdPersonRange" ) - zoomChangeRate );
  243.             }
  244.         }
  245.         if( self ActionSlotFourButtonPressed() )
  246.         {
  247.             if( GetDvarInt( "cg_thirdPersonRange" ) < maxZoom )
  248.             {
  249.                 self SetClientDvar( "cg_thirdPersonRange", GetDvarInt( "cg_thirdPersonRange" ) + zoomChangeRate );
  250.             }
  251.         }
  252.  
  253.         //self buttonHeldCheck( self.pers[ "myprop" ].rotateYaw_attack );
  254.         //self buttonHeldCheck( self.pers[ "myprop" ].rotateYaw_ads );
  255.         //self.pers[ "myprop" ] RotateYaw( self.pers[ "myprop" ].rotateYaw_ads.value + self.pers[ "myprop" ].rotateYaw_attack.value, 0.5 );
  256.     }
  257. }
  258.  
  259.  
  260.  
  261. onSpawnPlayerUnified()
  262. {
  263.     self.usingObj = undefined;
  264.    
  265.     if ( level.useStartSpawns && !level.inGracePeriod )
  266.     {
  267.         level.useStartSpawns = false;
  268.     }
  269.    
  270.     maps\mp\gametypes\_spawning::onSpawnPlayer_Unified();
  271. }
  272. onSpawnPlayer()
  273. {
  274.     pixbeginevent("TDM:onSpawnPlayer");
  275.     self.usingObj = undefined;
  276.     if ( level.inGracePeriod )
  277.     {
  278.         spawnPoints = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_tdm_spawn_" + self.pers["team"] + "_start" );
  279.        
  280.         if ( !spawnPoints.size )
  281.             spawnPoints = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_sab_spawn_" + self.pers["team"] + "_start" );
  282.            
  283.         if ( !spawnPoints.size )
  284.         {
  285.             spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
  286.             spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints );
  287.         }
  288.         else
  289.         {
  290.             spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( spawnPoints );
  291.         }      
  292.     }
  293.     else
  294.     {
  295.         spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] );
  296.         spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints );
  297.     }
  298.    
  299.     self spawn( spawnPoint.origin, spawnPoint.angles, "tdm" );
  300.     setupPlayer();
  301.     //pixendevent();
  302. }
  303. onEndGame( winningTeam )
  304. {
  305.     if ( isdefined( winningTeam ) && (winningTeam == "allies" || winningTeam == "axis") )
  306.         [[level._setTeamScore]]( winningTeam, [[level._getTeamScore]]( winningTeam ) + 1 );
  307. }
  308. onRoundEndGame( roundWinner )
  309. {
  310.     if ( game["roundswon"]["allies"] == game["roundswon"]["axis"] )
  311.         winner = "tie";
  312.     else if ( game["roundswon"]["axis"] > game["roundswon"]["allies"] )
  313.         winner = "axis";
  314.     else
  315.         winner = "allies";
  316.    
  317.     return winner;
  318. }
  319. onScoreCloseMusic()
  320. {
  321.     while( !level.gameEnded )
  322.     {
  323.         axisScore = [[level._getTeamScore]]( "axis" );
  324.         alliedScore = [[level._getTeamScore]]( "allies" );
  325.         scoreLimit = level.scoreLimit;
  326.         scoreThreshold = scoreLimit * .1;
  327.         scoreDif = abs(axisScore - alliedScore);
  328.         scoreThresholdStart = abs(scoreLimit - scoreThreshold);
  329.         scoreLimitCheck = scoreLimit - 10;
  330.        
  331.         if (alliedScore > axisScore)
  332.         {
  333.             currentScore = alliedScore;
  334.         }      
  335.         else
  336.         {
  337.             currentScore = axisScore;
  338.         }
  339.        
  340.         if ( scoreDif <= scoreThreshold && scoreThresholdStart <= currentScore )
  341.         {
  342.            
  343.             thread maps\mp\gametypes\_globallogic_audio::set_music_on_team( "TIME_OUT", "both" );
  344.             thread maps\mp\gametypes\_globallogic_audio::actionMusicSet();
  345.             return;
  346.         }
  347.        
  348.         wait(.5);
  349.     }
  350. }
  351.  
  352. detachOnDisconnect( player )
  353. {
  354.     player endon( "death" );
  355.     player endon( "killed_player" );
  356.     player waittill( "disconnect" );
  357.     modelOrigin = self.origin;
  358.     self Delete();
  359.     PlayFX( getfx( "hider_killed" ), modelOrigin );
  360. }
  361.  
  362. attachModel( player )
  363. {
  364.     player endon( "disconnect" );
  365.     player endon( "killed_player" );
  366.     player endon( "death" );
  367.     self endon( "death" );
  368.     for( ;; )
  369.     {
  370.         wait (0.01);
  371.         if( self.origin != player.origin )
  372.         {
  373.             self MoveTo( player.origin, 0.1 );
  374.         }
  375.     }
  376. }
  377.  
  378. hiderHudCreate()
  379. {
  380.    
  381. }
  382.  
  383. //The MapEditor Project
  384. //JariZ.nl
  385. //Following code is stolen from HnS by Alex Romo
  386. //Made By Scripts & JariZ
  387. onPrecacheGameModels()
  388. {
  389.     precacheLevelModels();
  390.     if( IsDefined( level.availableModels ) && level.availableModels.size > 0 )
  391.     {
  392.         level.availableModels = array_randomize( level.availableModels );
  393.         if( level.availableModels.size < level.MAX_USUABLE_MODELS )
  394.         {
  395.             level.MAX_USUABLE_MODELS = level.availableModels.size;
  396.         }
  397.         availableModelsKeys = GetArrayKeys( level.availableModels );
  398.         if( !IsDefined( level.usableModels ) )
  399.         {
  400.             level.usableModels = [];
  401.         }
  402.         for( x = 0 ; x < level.availableModels.size ; x++ )
  403.         {
  404.             PreCacheModel( level.availableModels[ availableModelsKeys[ x ] ] );
  405.             level.usableModels[ level.availableModels[ availableModelsKeys[ x ] ] ] = level.availableModels[ availableModelsKeys[ x ] ];
  406.             if( level.usableModels.size >= level.MAX_USUABLE_MODELS )
  407.             {
  408.                 return;
  409.             }
  410.         }
  411.     }
  412. }
  413.  
  414. addModel( model )
  415. {
  416.     if( !IsDefined( level.availableModels ) )
  417.     {
  418.         level.availableModels = [];
  419.     }
  420.  
  421.     if( IsDefined( level.collMapModels ) && IsDefined( level.collMapModels[ model ] ) )
  422.     {
  423.  
  424.         return;
  425.     }
  426.     if( !IsDefined( level.availableModels[ model ] ) )
  427.     {
  428.         level.availableModels[ model ] = model;
  429.     }
  430. }
  431.  
  432. precacheLevelModels()
  433. {
  434.     if( IsDefined( level.force_hns_models ) )
  435.     {
  436.         [[ level.force_hns_models ]]();
  437.         return;
  438.     }
  439.     switch( GetDvar( "mapname" ) )
  440.     {
  441.         case "mp_array":
  442.         {
  443.             mpArrayPrecache();
  444.         } break;
  445.         case "mp_berlinwall2":
  446.         {
  447.             mpBerlinwall2Precache();
  448.         } break;
  449.         case "mp_cairo":
  450.         {
  451.             mpCairoPrecache();
  452.         } break;
  453.         case "mp_cosmodrome":
  454.         {
  455.             mpCosmodromePrecache();
  456.         } break;
  457.         case "mp_cracked":
  458.         {
  459.             mpCrackedPrecache();
  460.         } break;
  461.         case "mp_crisis":
  462.         {
  463.             mpCrisisPrecache();
  464.         } break;
  465.         case "mp_discovery":
  466.         {
  467.             mpDiscoveryPrecache();
  468.         } break;
  469.         case "mp_duga":
  470.         {
  471.             mpDugaPrecache();
  472.         } break;
  473.         case "mp_firingrange":
  474.         {
  475.             mpFiringrangePrecache();
  476.         } break;
  477.         case "mp_gridlock":
  478.         {
  479.             mpGridlockPrecache();
  480.         } break;
  481.         case "mp_hanoi":
  482.         {
  483.             mpHanoiPrecache();
  484.         } break;
  485.         case "mp_havoc":
  486.         {
  487.             mpHavocPrecache();
  488.         } break;
  489.         case "mp_hotel":
  490.         {
  491.             mpHotelPrecache();
  492.         } break;
  493.         case "mp_kowloon":
  494.         {
  495.             mpKowloonPrecache();
  496.         } break;
  497.         case "mp_mountain":
  498.         {
  499.             mpMountainPrecache();
  500.         } break;
  501.         case "mp_nuked":
  502.         {
  503.             mpNukedPrecache();
  504.         } break;
  505.         case "mp_outskirts":
  506.         {
  507.             mpOutskirtsPrecache();
  508.         } break;
  509.         case "mp_radiation":
  510.         {
  511.             mpRadiationPrecache();
  512.         } break;
  513.         case "mp_russianbase":
  514.         {
  515.             mpRussianbasePrecache();
  516.         } break;
  517.         case "mp_stadium":
  518.         {
  519.             mpStadiumPrecache();
  520.         } break;
  521.         case "mp_villa":
  522.         {
  523.             mpVillaPrecache();
  524.         } break;
  525.         case "mp_zoo":
  526.         {
  527.             mpZooPrecache();
  528.         } break;
  529.     }
  530. }
  531.  
  532. addCollMapModel( model )
  533. {
  534.     if( !IsDefined( level.collMapModels ) )
  535.     {
  536.         level.collMapModels = [];
  537.     }
  538.     level.collMapModels[ model ] = model;
  539. }
  540.  
  541. mapSupport()
  542. {
  543.     if( IsDefined( level.force_hns_support ) && level.force_hns_support )
  544.     {
  545.         return true;
  546.     }
  547.     switch( ToLower( GetDvar( "mapname" ) ) )
  548.     {
  549.         case "mp_array":
  550.         case "mp_berlinwall2":
  551.         case "mp_cairo":
  552.         case "mp_cosmodrome":
  553.         case "mp_cracked":
  554.         case "mp_crisis":
  555.         case "mp_discovery":
  556.         case "mp_duga":
  557.         case "mp_firingrange":
  558.         case "mp_gridlock":
  559.         case "mp_hanoi":
  560.         case "mp_havoc":
  561.         case "mp_hotel":
  562.         case "mp_kowloon":
  563.         case "mp_mountain":
  564.         case "mp_nuked":
  565.         case "mp_outskirts":
  566.         case "mp_radiation":
  567.         case "mp_russianbase":
  568.         case "mp_stadium":
  569.         case "mp_villa":
  570.         case "mp_zoo":
  571.         {
  572.             return true;
  573.         }
  574.     }
  575.     return false;
  576. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement