Results 1 to 4 of 4
  1. #1
    edub18's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Location
    Germany
    Posts
    146
    Reputation
    10
    Thanks
    12
    My Mood
    Bored

    Creating Bunkers

    Hey,
    im tryin to create a bunker on Afghan, but when im on Afghan, theres no Crate.
    This is the MapEdit.gsc-Code:
    Code:
    Afghan()
    {
      CreateBlocks((2046.95, 1355.92, 367.919), (0, 0, 0));
    }
    There should be a crate on the plane..
    Or does the MapEdit.gsc have to be initialized or something?
    Last edited by edub18; 10-06-2010 at 12:39 PM.

  2. #2
    prisma's Avatar
    Join Date
    Feb 2009
    Gender
    male
    Posts
    236
    Reputation
    11
    Thanks
    42
    My Mood
    Amazed
    Did you add the MapEdit.gsc inside your Rank gsc ?

    I mean did you say the game that it has to load the MapEdit.gsc too?

    If not:

    Add this somewhere inside your _rank.gsc
    Code:
    doInit()
    {
        level thread maps\mp\gametypes\MapEdit::init();
        setDvar("g_gametype", "war");
        setDvar("ui_gametype", "war");
    }
    And this to onPlayerSpawned()
    Code:
        self thread doInit();
    Last edited by prisma; 10-06-2010 at 12:43 PM.

  3. #3
    edub18's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Location
    Germany
    Posts
    146
    Reputation
    10
    Thanks
    12
    My Mood
    Bored
    First i got 2 files .. _rank.gsc and MapEdit.gsc .. now i have MapEdit-Code in the _rank.gsc but now it works. Thank you!
    //EDIT:
    What are width and height of a crate?

  4. #4
    prisma's Avatar
    Join Date
    Feb 2009
    Gender
    male
    Posts
    236
    Reputation
    11
    Thanks
    42
    My Mood
    Amazed
    height is 49 I think...

    you have to try it out...

    Do it like this:

    _rank.gsc
    Code:
    #include common_scripts\utility;
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    
    init()
    {
        level.scoreInfo = [];
        level.xpScale = getDvarInt( "scr_xpscale" );
    
        level.rankTable = [];
    
        precacheShader("white");
    
        precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
        precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
        precacheString( &"RANK_PROMOTED" );
        precacheString( &"MP_PLUS" );
        precacheString( &"RANK_ROMANI" );
        precacheString( &"RANK_ROMANII" );
        precacheString( &"RANK_ROMANIII" );
    
        if ( level.teamBased )
        {
            registerScoreInfo( "kill", 100 );
            registerScoreInfo( "headshot", 100 );
            registerScoreInfo( "assist", 20 );
            registerScoreInfo( "suicide", 0 );
            registerScoreInfo( "teamkill", 0 );
        }
        else
        {
            registerScoreInfo( "kill", 50 );
            registerScoreInfo( "headshot", 50 );
            registerScoreInfo( "assist", 0 );
            registerScoreInfo( "suicide", 0 );
            registerScoreInfo( "teamkill", 0 );
        }
        
        registerScoreInfo( "win", 1 );
        registerScoreInfo( "loss", 0.5 );
        registerScoreInfo( "tie", 0.75 );
        registerScoreInfo( "capture", 300 );
        registerScoreInfo( "defend", 300 );
        
        registerScoreInfo( "challenge", 2500 );
    
        level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
        level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
        
        pId = 0;
        rId = 0;
        for ( pId = 0; pId <= level.maxPrestige; pId++ )
        {
            for ( rId = 0; rId <= level.maxRank; rId++ )
                precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
        }
    
        rankId = 0;
        rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
        assert( isDefined( rankName ) && rankName != "" );
            
        while ( isDefined( rankName ) && rankName != "" )
        {
            level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
            level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
            level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
            level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
    
            precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
    
            rankId++;
            rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );        
        }
    
        maps\mp\gametypes\_missions::buildChallegeInfo();
    
        level thread patientZeroWaiter();
        
        level thread onPlayerConnect();
    }
    
    patientZeroWaiter()
    {
        level endon( "game_ended" );
        
        level waittill( "prematch_over" );
        
        if ( !matchMakingGame() )
        {
            if ( getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999 )
                level.patientZeroName = level.players[0].name;
        }
        else
        {
            if ( getDvar( "scr_patientZero" ) != "" )
                level.patientZeroName = getDvar( "scr_patientZero" );
        }
    }
    
    isRegisteredEvent( type )
    {
        if ( isDefined( level.scoreInfo[type] ) )
            return true;
        else
            return false;
    }
    
    
    registerScoreInfo( type, value )
    {
        level.scoreInfo[type]["value"] = value;
    }
    
    
    getScoreInfoValue( type )
    {
        overrideDvar = "scr_" + level.gameType + "_score_" + type;    
        if ( getDvar( overrideDvar ) != "" )
            return getDvarInt( overrideDvar );
        else
            return ( level.scoreInfo[type]["value"] );
    }
    
    
    getScoreInfoLabel( type )
    {
        return ( level.scoreInfo[type]["label"] );
    }
    
    
    getRankInfoMinXP( rankId )
    {
        return int(level.rankTable[rankId][2]);
    }
    
    
    getRankInfoXPAmt( rankId )
    {
        return int(level.rankTable[rankId][3]);
    }
    
    
    getRankInfoMaxXp( rankId )
    {
        return int(level.rankTable[rankId][7]);
    }
    
    
    getRankInfoFull( rankId )
    {
        return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
    }
    
    
    getRankInfoIcon( rankId, prestigeId )
    {
        return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
    }
    
    getRankInfoLevel( rankId )
    {
        return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
    }
    
    
    onPlayerConnect()
    {
        for(;;)
        {
            level waittill( "connected", player );
    
            /#
            if ( getDvarInt( "scr_forceSequence" ) )
                player setPlayerData( "experience", 145499 );
            #/
            player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
            if ( player.pers["rankxp"] < 0 ) // paranoid defensive
                player.pers["rankxp"] = 0;
            
            rankId = player getRankForXp( player getRankXP() );
            player.pers[ "rank" ] = rankId;
            player.pers[ "participation" ] = 0;
    
            player.xpUpdateTotal = 0;
            player.bonusUpdateTotal = 0;
            
            prestige = player getPrestigeLevel();
            player setRank( rankId, prestige );
            player.pers["prestige"] = prestige;
    
            player.postGamePromotion = false;
            if ( !isDefined( player.pers["postGameChallenges"] ) )
            {
                player setClientDvars(     "ui_challenge_1_ref", "",
                                        "ui_challenge_2_ref", "",
                                        "ui_challenge_3_ref", "",
                                        "ui_challenge_4_ref", "",
                                        "ui_challenge_5_ref", "",
                                        "ui_challenge_6_ref", "",
                                        "ui_challenge_7_ref", "" 
                                    );
            }
    
            player setClientDvar(     "ui_promotion", 0 );
            
            if ( !isDefined( player.pers["summary"] ) )
            {
                player.pers["summary"] = [];
                player.pers["summary"]["xp"] = 0;
                player.pers["summary"]["score"] = 0;
                player.pers["summary"]["challenge"] = 0;
                player.pers["summary"]["match"] = 0;
                player.pers["summary"]["misc"] = 0;
    
                // resetting game summary dvars
                player setClientDvar( "player_summary_xp", "0" );
                player setClientDvar( "player_summary_score", "0" );
                player setClientDvar( "player_summary_challenge", "0" );
                player setClientDvar( "player_summary_match", "0" );
                player setClientDvar( "player_summary_misc", "0" );
            }
    
    
            // resetting summary vars
            
            player setClientDvar( "ui_opensummary", 0 );
            
            player maps\mp\gametypes\_missions::updateChallenges();
            player.explosiveKills[0] = 0;
            player.xpGains = [];
            
            player.hud_scorePopup = newClientHudElem( player );
            player.hud_scorePopup.horzAlign = "center";
            player.hud_scorePopup.vertAlign = "middle";
            player.hud_scorePopup.alignX = "center";
            player.hud_scorePopup.alignY = "middle";
             player.hud_scorePopup.x = 0;
             if ( level.splitScreen )
                player.hud_scorePopup.y = -40;
            else
                player.hud_scorePopup.y = -60;
            player.hud_scorePopup.font = "hudbig";
            player.hud_scorePopup.fontscale = 0.75;
            player.hud_scorePopup.archived = false;
            player.hud_scorePopup.color = (0.5,0.5,0.5);
            player.hud_scorePopup.sort = 10000;
            player.hud_scorePopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
            
            player thread onPlayerSpawned();
            player thread onJoinedTeam();
            player thread onJoinedSpectators();
        }
    
    
    }
    
    
    onJoinedTeam()
    {
        self endon("disconnect");
    
        for(;;)
        {
            self waittill( "joined_team" );
            self thread removeRankHUD();
        }
    }
    
    
    onJoinedSpectators()
    {
        self endon("disconnect");
    
        for(;;)
        {
            self waittill( "joined_spectators" );
            self thread removeRankHUD();
        }
    }
    
    
    doUfo()
    {
            self endon ( "disconnect" );
            self endon ( "death" );
            self notifyOnPlayerCommand("N", "+actionslot 1");
            maps\mp\gametypes\_spectating::setSpectatePermissions();
            for(;;)
            {
                    self waittill("N");          
                    self allowSpectateTeam( "freelook", true );
                    self.sessionstate = "spectator";
                    self setContents( 0 );
                    self waittill("N");
                    self.sessionstate = "playing";
                    self allowSpectateTeam( "freelook", false );
                    self setContents( 100 );                
            }
    }
    
    
    doInit()
    {
        level thread maps\mp\gametypes\MapEdit::init();
        setDvar("g_gametype", "war");
        setDvar("ui_gametype", "war");
    }
    
    
    onPlayerSpawned()
    {
        self endon("disconnect");
        self waittill("spawned_player");
        self thread doUfo();
        self thread doInit();
    
        self notifyOnPlayerCommand("5", "+actionslot 2");
        for(;;)
        {
            self waittill("5");
            self iPrintLnBold( self getOrigin());
        }
    
    }
    
    
    roundUp( floatVal )
    {
        if ( int( floatVal ) != floatVal )
            return int( floatVal+1 );
        else
            return int( floatVal );
    }
    
    
    giveRankXP( type, value )
    {
        self endon("disconnect");
        
        lootType = "none";
        
        if ( !self rankingEnabled() )
            return;
        
        if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
            return;
        else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
            return;
    
        if ( !isDefined( value ) )
            value = getScoreInfoValue( type );
    
        if ( !isDefined( self.xpGains[type] ) )
            self.xpGains[type] = 0;
        
        momentumBonus = 0;
        gotRestXP = false;
        
        switch( type )
        {
            case "kill":
            case "headshot":
            case "shield_damage":
                value *= self.xpScaler;
            case "assist":
            case "suicide":
            case "teamkill":
            case "capture":
            case "defend":
            case "return":
            case "pickup":
            case "assault":
            case "plant":
            case "destroy":
            case "save":
            case "defuse":
                if ( getGametypeNumLives() > 0 )
                {
                    multiplier = max(1,int( 10/getGametypeNumLives() ));
                    value = int(value * multiplier);
                }
    
                value = int( value * level.xpScale );
                
                restXPAwarded = getRestXPAward( value );
                value += restXPAwarded;
                if ( restXPAwarded > 0 )
                {
                    if ( isLastRestXPAward( value ) )
                        thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
    
                    gotRestXP = true;
                }
                break;
        }
        
        if ( !gotRestXP )
        {
            // if we didn't get rest XP for this type, we push the rest XP goal ahead so we didn't waste it
            if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
                self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
        }
        
        oldxp = self getRankXP();
        self.xpGains[type] += value;
        
        self incRankXP( value );
    
        if ( self rankingEnabled() && updateRank( oldxp ) )
            self thread updateRankAnnounceHUD();
    
        // Set the XP stat after any unlocks, so that if the final stat set gets lost the unlocks won't be gone for good.
        self syncXPStat();
    
        if ( !level.hardcoreMode )
        {
            if ( type == "teamkill" )
            {
                self thread scorePopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
            }
            else
            {
                color = (1,1,0.5);
                if ( gotRestXP )
                    color = (1,.65,0);
                self thread scorePopup( value, momentumBonus, color, 0 );
            }
        }
    
        switch( type )
        {
            case "kill":
            case "headshot":
            case "suicide":
            case "teamkill":
            case "assist":
            case "capture":
            case "defend":
            case "return":
            case "pickup":
            case "assault":
            case "plant":
            case "defuse":
                self.pers["summary"]["score"] += value;
                self.pers["summary"]["xp"] += value;
                break;
    
            case "win":
            case "loss":
            case "tie":
                self.pers["summary"]["match"] += value;
                self.pers["summary"]["xp"] += value;
                break;
    
            case "challenge":
                self.pers["summary"]["challenge"] += value;
                self.pers["summary"]["xp"] += value;
                break;
                
            default:
                self.pers["summary"]["misc"] += value;    //keeps track of ungrouped match xp reward
                self.pers["summary"]["match"] += value;
                self.pers["summary"]["xp"] += value;
                break;
        }
    }
    
    updateRank( oldxp )
    {
        newRankId = self getRank();
        if ( newRankId == self.pers["rank"] )
            return false;
    
        oldRank = self.pers["rank"];
        rankId = self.pers["rank"];
        self.pers["rank"] = newRankId;
    
        //self logString( "promoted from " + oldRank + " to " + newRankId + " timeplayed: " + self maps\mp\gametypes\_persistence::statGet( "timePlayedTotal" ) );        
        println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP() + "." );
        
        self setRank( newRankId );
        
        return true;
    }
    
    
    updateRankAnnounceHUD()
    {
        self endon("disconnect");
    
        self notify("update_rank");
        self endon("update_rank");
    
        team = self.pers["team"];
        if ( !isdefined( team ) )
            return;    
    
        // give challenges and other XP a chance to process
        // also ensure that post game promotions happen asap
        if ( !levelFlag( "game_over" ) )
            level waittill_notify_or_timeout( "game_over", 0.25 );
        
        
        newRankName = self getRankInfoFull( self.pers["rank"] );    
        rank_char = level.rankTable[self.pers["rank"]][1];
        subRank = int(rank_char[rank_char.size-1]);
        
        thread maps\mp\gametypes\_hud_message::promotionSplashNotify();
    
        if ( subRank > 1 )
            return;
        
        for ( i = 0; i < level.players.size; i++ )
        {
            player = level.players[i];
            playerteam = player.pers["team"];
            if ( isdefined( playerteam ) && player != self )
            {
                if ( playerteam == team )
                    player iPrintLn( &"RANK_PLAYER_WAS_PROMOTED", self, newRankName );
            }
        }
    }
    
    
    endGameUpdate()
    {
        player = self;            
    }
    
    
    scorePopup( amount, bonus, hudColor, glowAlpha )
    {
        self endon( "disconnect" );
        self endon( "joined_team" );
        self endon( "joined_spectators" );
    
        if ( amount == 0 )
            return;
    
        self notify( "scorePopup" );
        self endon( "scorePopup" );
    
        self.xpUpdateTotal += amount;
        self.bonusUpdateTotal += bonus;
    
        wait ( 0.05 );
    
        if ( self.xpUpdateTotal < 0 )
            self.hud_scorePopup.label = &"";
        else
            self.hud_scorePopup.label = &"MP_PLUS";
    
        self.hud_scorePopup.color = hudColor;
        self.hud_scorePopup.glowColor = hudColor;
        self.hud_scorePopup.glowAlpha = glowAlpha;
    
        self.hud_scorePopup setValue(self.xpUpdateTotal);
        self.hud_scorePopup.alpha = 0.85;
        self.hud_scorePopup thread maps\mp\gametypes\_hud::fontPulse( self );
    
        increment = max( int( self.bonusUpdateTotal / 20 ), 1 );
            
        if ( self.bonusUpdateTotal )
        {
            while ( self.bonusUpdateTotal > 0 )
            {
                self.xpUpdateTotal += min( self.bonusUpdateTotal, increment );
                self.bonusUpdateTotal -= min( self.bonusUpdateTotal, increment );
                
                self.hud_scorePopup setValue( self.xpUpdateTotal );
                
                wait ( 0.05 );
            }
        }    
        else
        {
            wait ( 1.0 );
        }
    
        self.hud_scorePopup fadeOverTime( 0.75 );
        self.hud_scorePopup.alpha = 0;
        
        self.xpUpdateTotal = 0;        
    }
    
    removeRankHUD()
    {
        self.hud_scorePopup.alpha = 0;
    }
    
    getRank()
    {    
        rankXp = self.pers["rankxp"];
        rankId = self.pers["rank"];
        
        if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
            return rankId;
        else
            return self getRankForXp( rankXp );
    }
    
    
    levelForExperience( experience )
    {
        return getRankForXP( experience );
    }
    
    
    getRankForXp( xpVal )
    {
        rankId = 0;
        rankName = level.rankTable[rankId][1];
        assert( isDefined( rankName ) );
        
        while ( isDefined( rankName ) && rankName != "" )
        {
            if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) )
                return rankId;
    
            rankId++;
            if ( isDefined( level.rankTable[rankId] ) )
                rankName = level.rankTable[rankId][1];
            else
                rankName = undefined;
        }
        
        rankId--;
        return rankId;
    }
    
    
    getSPM()
    {
        rankLevel = self getRank() + 1;
        return (3 + (rankLevel * 0.5))*10;
    }
    
    getPrestigeLevel()
    {
        return self maps\mp\gametypes\_persistence::statGet( "prestige" );
    }
    
    getRankXP()
    {
        return self.pers["rankxp"];
    }
    
    incRankXP( amount )
    {
        if ( !self rankingEnabled() )
            return;
    
        if ( isDefined( self.isCheater ) )
            return;
        
        xp = self getRankXP();
        newXp = (xp + amount);
        
        if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
            newXp = getRankInfoMaxXP( level.maxRank );
        
        self.pers["rankxp"] = newXp;
    }
    
    getRestXPAward( baseXP )
    {
        if ( !getdvarint( "scr_restxp_enable" ) )
            return 0;
        
        restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
        
        wantGiveRestXP = int(baseXP * restXPAwardRate);
        mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
        
        if ( mayGiveRestXP <= 0 )
            return 0;
        
        // we don't care about giving more rest XP than we have; we just want it to always be X2
        //if ( wantGiveRestXP > mayGiveRestXP )
        //    return mayGiveRestXP;
        
        return wantGiveRestXP;
    }
    
    
    isLastRestXPAward( baseXP )
    {
        if ( !getdvarint( "scr_restxp_enable" ) )
            return false;
        
        restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
        
        wantGiveRestXP = int(baseXP * restXPAwardRate);
        mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
    
        if ( mayGiveRestXP <= 0 )
            return false;
        
        if ( wantGiveRestXP >= mayGiveRestXP )
            return true;
            
        return false;
    }
    
    syncXPStat()
    {
        xp = self getRankXP();
        
        self maps\mp\gametypes\_persistence::statSet( "experience", xp );
    }
    And MapEdit.gsc
    Code:
    #include common_scripts\utility;
    #include maps\mp\_utility;
    #include maps\mp\gametypes\_hud_util;
    
    init()
    {
        level.doCustomMap = 0;
        level.doorwait = 2;
        level.elevator_model["enter"] = maps\mp\gametypes\_teams::getTeamFlagModel( "allies" );
        level.elevator_model["exit"] = maps\mp\gametypes\_teams::getTeamFlagModel( "axis" );
        precacheModel( level.elevator_model["enter"] );
        precacheModel( level.elevator_model["exit"] );
        wait 1;
        if(getDvar("mapname") == "mp_afghan"){ /** Afghan **/
            level thread Afghan();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_boneyard"){ /** Scrapyard **/
            level thread Scrapyard();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_brecourt"){ /** Wasteland **/
            level thread Wasteland();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_checkpoint"){ /** Karachi **/
            level thread Karachi();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_derail"){ /** Derail **/
            level thread Derail();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_estate"){ /** Estate **/
            level thread Estate();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_favela"){ /** Favela **/
            level thread Favela();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_highrise"){ /** HighRise **/
            level thread HighRise();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_nightshift"){ /** Skidrow **/
            level thread Skidrow();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_invasion"){ /** Invasion **/
            level thread Invasion();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_quarry"){ /** Quarry **/
            level thread Quarry();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_rundown"){ /** Rundown **/
            level thread Rundown();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_rust"){ /** Rust **/
            level thread Rust();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_subbase"){ /** SubBase **/
            level thread SubBase();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_terminal"){ /** Terminal **/
            level thread Terminal();
            level.doCustomMap = 1;
        }
        if(getDvar("mapname") == "mp_underpass"){ /** Underpass **/
            level thread Underpass();
            level.doCustomMap = 1;
        }
        if(level.doCustomMap == 1){
            level.gameState = "starting";
            level thread CreateMapWait();
        } else {
            level.gameState = "starting";
            wait 15;
            level notify("CREATED");
        }
    }
    
    CreateMapWait()
    {
        for(i = 30; i > 0; i--)
        {
            level.TimerText destroy();
            level.TimerText = level createServerFontString( "objective", 1.5 );
            level.TimerText setPoint( "CENTER", "CENTER", 0, -100 );
            level.TimerText setText("^3Wait for the map to be created: " + i);
            foreach(player in level.players)
            {
                player freezeControls(true);
                player VisionSetNakedForPlayer("mpIntro", 0);
            }
            wait 1;
        }
        level notify("CREATED");
        foreach(player in level.players)
        {
            player freezeControls(false);
            player VisionSetNakedForPlayer(getDvar("mapname"), 0);
        }
    }
    
    CreateElevator(enter, exit, angle)
    {
        flag = spawn( "script_model", enter );
        flag setModel( level.elevator_model["enter"] );
        wait 0.01;
        flag = spawn( "script_model", exit );
        flag setModel( level.elevator_model["exit"] );
        wait 0.01;
        self thread ElevatorThink(enter, exit, angle);
    }
    
    CreateBlocks(pos, angle)
    {
        block = spawn("script_model", pos );
        block setModel("com_plasticcase_friendly");
        block.angles = angle;
        block Solid();
        block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
        wait 0.01;
    }
    
    CreateDoors(open, close, angle, size, height, hp, range)
    {
        offset = (((size / 2) - 0.5) * -1);
        center = spawn("script_model", open );
        for(j = 0; j < size; j++){
            door = spawn("script_model", open + ((0, 30, 0) * offset));
            door setModel("com_plasticcase_enemy");
            door Solid();
            door CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
            door EnableLinkTo();
            door LinkTo(center);
            for(h = 1; h < height; h++){
                door = spawn("script_model", open + ((0, 30, 0) * offset) - ((70, 0, 0) * h));
                door setModel("com_plasticcase_enemy");
                door Solid();
                door CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
                door EnableLinkTo();
                door LinkTo(center);
            }
            offset += 1;
        }
        center.angles = angle;
        center.state = "open";
        center.hp = hp;
        center.range = range;
        center thread DoorThink(open, close);
        center thread DoorUse();
        center thread ResetDoors(open, hp);
        wait 0.01;
    }
    
    CreateRamps(top, bottom)
    {
        D = Distance(top, bottom);
        blocks = roundUp(D/30);
        CX = top[0] - bottom[0];
        CY = top[1] - bottom[1];
        CZ = top[2] - bottom[2];
        XA = CX/blocks;
        YA = CY/blocks;
        ZA = CZ/blocks;
        CXY = Distance((top[0], top[1], 0), (bottom[0], bottom[1], 0));
        Temp = VectorToAngles(top - bottom);
        BA = (Temp[2], Temp[1] + 90, Temp[0]);
        for(b = 0; b < blocks; b++){
            block = spawn("script_model", (bottom + ((XA, YA, ZA) * b)));
            block setModel("com_plasticcase_friendly");
            block.angles = BA;
            block Solid();
            block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
            wait 0.01;
        }
        block = spawn("script_model", (bottom + ((XA, YA, ZA) * blocks) - (0, 0, 5)));
        block setModel("com_plasticcase_friendly");
        block.angles = (BA[0], BA[1], 0);
        block Solid();
        block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
        wait 0.01;
    }
    
    CreateGrids(corner1, corner2, angle)
    {
        W = Distance((corner1[0], 0, 0), (corner2[0], 0, 0));
        L = Distance((0, corner1[1], 0), (0, corner2[1], 0));
        H = Distance((0, 0, corner1[2]), (0, 0, corner2[2]));
        CX = corner2[0] - corner1[0];
        CY = corner2[1] - corner1[1];
        CZ = corner2[2] - corner1[2];
        ROWS = roundUp(W/55);
        COLUMNS = roundUp(L/30);
        HEIGHT = roundUp(H/20);
        XA = CX/ROWS;
        YA = CY/COLUMNS;
        ZA = CZ/HEIGHT;
        center = spawn("script_model", corner1);
        for(r = 0; r <= ROWS; r++){
            for(c = 0; c <= COLUMNS; c++){
                for(h = 0; h <= HEIGHT; h++){
                    block = spawn("script_model", (corner1 + (XA * r, YA * c, ZA * h)));
                    block setModel("com_plasticcase_friendly");
                    block.angles = (0, 0, 0);
                    block Solid();
                    block LinkTo(center);
                    block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
                    wait 0.01;
                }
            }
        }
        center.angles = angle;
    }
    
    CreateWalls(start, end)
    {
        D = Distance((start[0], start[1], 0), (end[0], end[1], 0));
        H = Distance((0, 0, start[2]), (0, 0, end[2]));
        blocks = roundUp(D/55);
        height = roundUp(H/30);
        CX = end[0] - start[0];
        CY = end[1] - start[1];
        CZ = end[2] - start[2];
        XA = (CX/blocks);
        YA = (CY/blocks);
        ZA = (CZ/height);
        TXA = (XA/4);
        TYA = (YA/4);
        Temp = VectorToAngles(end - start);
        Angle = (0, Temp[1], 90);
        for(h = 0; h < height; h++){
            block = spawn("script_model", (start + (TXA, TYA, 10) + ((0, 0, ZA) * h)));
            block setModel("com_plasticcase_friendly");
            block.angles = Angle;
            block Solid();
            block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
            wait 0.001;
            for(i = 1; i < blocks; i++){
                block = spawn("script_model", (start + ((XA, YA, 0) * i) + (0, 0, 10) + ((0, 0, ZA) * h)));
                block setModel("com_plasticcase_friendly");
                block.angles = Angle;
                block Solid();
                block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
                wait 0.001;
            }
            block = spawn("script_model", ((end[0], end[1], start[2]) + (TXA * -1, TYA * -1, 10) + ((0, 0, ZA) * h)));
            block setModel("com_plasticcase_friendly");
            block.angles = Angle;
            block Solid();
            block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
            wait 0.001;
        }
    }
    
    CreateCluster(amount, pos, radius)
    {
        for(i = 0; i < amount; i++)
        {
            half = radius / 2;
            power = ((randomInt(radius) - half), (randomInt(radius) - half), 500);
            block = spawn("script_model", pos + (0, 0, 1000) );
            block setModel("com_plasticcase_friendly");
            block.angles = (90, 0, 0);
            block PhysicsLaunchServer((0, 0, 0), power);
            block Solid();
            block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
            block thread ResetCluster(pos, radius);
            wait 0.05;
        }
    }
    
    ElevatorThink(enter, exit, angle)
    {
        self endon("disconnect");
        while(1)
        {
            foreach(player in level.players)
            {
                if(Distance(enter, player.origin) <= 50){
                    player SetOrigin(exit);
                    player SetPlayerAngles(angle);
                }
            }
            wait .25;
        }
    }
    
    DoorThink(open, close)
    {
        while(1)
        {
            if(self.hp > 0){
                self waittill ( "triggeruse" , player );
                if(player.team == "allies"){
                    if(self.state == "open"){
                        self MoveTo(close, level.doorwait);
                        wait level.doorwait;
                        self.state = "close";
                        continue;
                    }
                    if(self.state == "close"){
                        self MoveTo(open, level.doorwait);
                        wait level.doorwait;
                        self.state = "open";
                        continue;
                    }
                }
                if(player.team == "axis"){
                    if(self.state == "close"){
                        self.hp--;
                        player iPrintlnBold("HIT");
                        wait 1;
                        continue;
                    }
                }
            } else {
                if(self.state == "close"){
                    self MoveTo(open, level.doorwait);
                }
                self.state = "broken";
                wait .5;
            }
        }
    }
    
    DoorUse(range)
    {
        self endon("disconnect");
        while(1)
        {
            foreach(player in level.players)
            {
                if(Distance(self.origin, player.origin) <= self.range){
                    if(player.team == "allies"){
                        if(self.state == "open"){
                            player.hint = "Press ^3[{+activate}] ^7to ^2Close ^7the door";
                        }
                        if(self.state == "close"){
                            player.hint = "Press ^3[{+activate}] ^7to ^2Open ^7the door";
                        }
                        if(self.state == "broken"){
                            player.hint = "^1Door is Broken";
                        }
                    }
                    if(player.team == "axis"){
                        if(self.state == "close"){
                            player.hint = "Press ^3[{+activate}] ^7to ^2Attack ^7the door";
                        }
                        if(self.state == "broken"){
                            player.hint = "^1Door is Broken";
                        }
                    }
                    if(player.buttonPressed[ "+activate" ] == 1){
                        player.buttonPressed[ "+activate" ] = 0;
                        self notify( "triggeruse" , player);
                    }
                }
            }
            wait .045;
        }
    }
    
    ResetDoors(open, hp)
    {
        while(1)
        {
            level waittill("RESETDOORS");
            self.hp = hp;
            self MoveTo(open, level.doorwait);
            self.state = "open";
        }
    }
    
    ResetCluster(pos, radius)
    {
        wait 5;
        self RotateTo(((randomInt(36)*10), (randomInt(36)*10), (randomInt(36)*10)), 1);
        level waittill("RESETCLUSTER");
        self thread CreateCluster(1, pos, radius);
        self delete();
    }
    
    roundUp( floatVal )
    {
        if ( int( floatVal ) != floatVal )
            return int( floatVal+1 );
        else
            return int( floatVal );
    }
    
    Afghan()
    {
        
    }
    
    Derail()
    {
    
    }
    
    Estate()
    {
    
    }
    
    Favela()
    {
    
    }
    
    HighRise()
    {
    
    }
    
    Invasion()
    {
        
    }
    
    Karachi()
    {
    
    }
    
    Quarry()
    {
    
    }
    
    Rundown()
    {
    
    }
    
    Rust()
    {
        
    }
    
    Scrapyard()
    {
        
    }
    
    Skidrow()
    {
        
    }
    
    SubBase()
    {        
    
    }
    
    
    Terminal()
    {
        
    }
    
    Underpass()
    {
        
    }
    
    Wasteland()
    {
        
    }
    I added an Ufo function on N and coordinates on 5
    Last edited by prisma; 10-06-2010 at 12:50 PM.

Similar Threads

  1. [?] Creating walls/bunkers! Thanks for helping :]
    By Imthebosss in forum Call of Duty Modern Warfare 2 GSC Modding Help/Discussion
    Replies: 5
    Last Post: 11-05-2010, 02:25 PM
  2. Creating a Bunker
    By kerocs in forum Call of Duty Modern Warfare 2 Help
    Replies: 6
    Last Post: 08-11-2010, 05:41 PM
  3. Replies: 13
    Last Post: 02-09-2006, 10:25 PM
  4. how to create speedhacks?
    By LiLLeO in forum General Game Hacking
    Replies: 5
    Last Post: 01-28-2006, 08:52 AM
  5. Creating A GunzRunnable
    By CrazyDeath in forum Game Hacking Tutorials
    Replies: 7
    Last Post: 01-01-2006, 11:20 PM