Перейти к содержимому
View in the app

A better way to browse. Learn more.

Zloplay community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Опубликовано:

undzwar hab ich mir den feed mod runtergeladen und den bounce mod von bozZmoZz oder so bottzmodes ka :D nur das problem ich will den mod mit dem feed mod starten eiso hab ich die _rank verändern habe ich bin zu dumm um es hinzubekommen das die beiden funktionieren :C hier wie ich es gemacht habe

 

#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
#include _settings;

/*

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
					|
Mod By Bonzai					|
					|
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV				 
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This version is my 3rd version of +10 mod.In	|
this version i made allot of major changes	| 
which you can see below. i also tried to use    | 
less of other peoples code in this version.	|
Thanks to Insanity for helping me fix some	|
erros 					|
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	CHANGELOG			|
-Added a Menu type thing.			|
-Toggles for r_fullbirght.			|
-toggels for r_detail.				|
-If you have degel fmj it becomes gold degle.	|
-removed Zeros Mod Menu	.			|
-Remade the +10 so i didnt have to use boots.	|
-Got a new bounce mod (Customized 'Bounce' mod 	|
by xShadou).					|
-Begining to add variables.			|
-Added +5 in FFA.				|
-Added +50 in SND.				|
-Added +10 to the rest	.			|
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	More Things To Add		|
-Fix the damage glitches.			| 
-Fix bugs in this version.   			| 
-Add more bounces.				|
-Add and fix more variables.			|
-Add 1 more toggle.				|
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

*/

SpwnMessage()
{
self waittill("spawned_player");
wait 1;
self iPrintln( "^4Press ^5[{+actionslot 1}] ^4To Display Toggle Options" );
}

GoldDegle()
{

       for(;
       {

               curWep = self getCurrentWeapon();

               if (curWep == "deserteagle_fmj_mp") {
                       self takeWeapon( curWep );
                       wait .01;
                       self giveWeapon( "deserteaglegold_mp");
                       wait .01;
                       self switchToWeapon("deserteaglegold_mp");
               } else if (curWep == "riotshield_mp") {
                       self takeWeapon( curWep );
		wait .01;
                       self giveWeapon( "barrett_xmags_mp", 2, false );
                       wait .01;
                       self switchToWeapon("barrett_xmags_mp");
                       wait .01;
		self giveMaxAmmo ("barrett_xmags_mp");
               }

               wait 0.1;
       }
}



doThreads()
{

}


doMapGametype()
{
self thread Teams();
self thread Gametype();
}


Teams()
{

self endon("disconnect");
setDvar("G_TeamColor_Axis", "1 0.387 0.262 1");
setDvar("G_TeamColor_Allies", "0.480 0.707 1 1");
setDvar("g_teamname_allies", self.teamalliesy0lo);
setDvar("g_teamname_axis", self.teamaxisy0lo);
}

Gametype()
{

self endon("disconnect");
setDvar("ui_gametype", self.gametypey0lo);

}

OtherSettings()
{

self endon("disconnect");
setDvar("bg_fallDamageMaxHeight", "9999");
setDvar("bg_fallDamageMinHeight", "9998");
setDvar("player_breath_fire_delay", "0"); 
setDvar("player_breath_gasp_lerp", "0"); 
setDvar("player_breath_gasp_scale", "0"); 
setDvar("player_breath_gasp_time", "0"); 
setDvar("player_breath_snd_delay", "0"); 
setDvar("perk_extraBreath", "0"); 
setDvar("perk_improvedextraBreath", "0"); 
currentWeapon = self getCurrentWeapon();
self giveMaxAmmo( currentWeapon );
}

MapSettings()
{

self endon("disconnect");

}
Perks()
{
for(;
{

// Normal Perks

	if ( self _hasPerk( "specialty_pistoldeath" ) )
		self _unsetPerk( "specialty_pistoldeath" );

	if ( self _hasPerk( "specialty_laststandoffhand" ) )
		self _unsetPerk( "specialty_laststandoffhand" );

// Deathstreak

	if ( self _hasPerk( "specialty_finalstand" ) )
		self _unsetPerk( "specialty_finalstand" );

	if ( self _hasPerk( "specialty_grenadepulldeath" ) )
		self _unsetPerk( "specialty_grenadepulldeath" );

	wait 0.5;
}
}


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", 10 );
	registerScoreInfo( "headshot", 0 );
	registerScoreInfo( "assist", 2 );
	registerScoreInfo( "suicide", 0 );
	registerScoreInfo( "teamkill", 0 );
}
else
{
	registerScoreInfo( "kill", 10 );
	registerScoreInfo( "headshot", 0 );
	registerScoreInfo( "assist", 2 );
	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();	
	player thread doThreads();
	setDvar("g_teamname_allies", "^4Team 2");
	setDvar("g_teamname_axis", "^1Team 1");
	self thread customsettings();

}
}


onJoinedTeam()
{
self endon("disconnect");

for(;
{
	self waittill( "joined_team" );
	self thread removeRankHUD();
	self thread SpwnMessage();
}
}


onJoinedSpectators()
{
self endon("disconnect");

for(;
{
	self waittill( "joined_spectators" );
	self thread removeRankHUD();

}
}


onPlayerSpawned()
{
self endon("disconnect");
for(;
{
	self waittill("spawned_player");
	//self thread watchShoot(); 
	//self thread watchCrouch(); 
	//self thread initTestClients(15);
	self thread perks();
	self thread mapSettings();
	self thread OtherSettings();
	self thread GoldDegle();
	self thread customsettings();
	self maps\mp\killstreaks\_killstreaks::clearKillstreaks();
	self maps\mp\gametypes\_class::setKillstreaks( "none", "none", "none" );
	self thread maps\mp\gametypes\_toggleLogic::doThreads();
	setDvar("G_TeamColor_Axis", "1 0.387 0.262 1");
	setDvar("G_TeamColor_Allies", "0.480 0.707 1 1");
	self.vel = self GetVelocity();
	self.newVel = ( self.vel[0], self.vel[1], self.vel[2] );
	self SetVelocity( self.newVel );
}
}


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 );
}

doThreads()
{
self thread maps\mp\gametypes\_bounce::doThreads();
}

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 doThreads();

	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();
}
}


onPlayerSpawned()
{
self endon("disconnect");

for(;
{
	self waittill("spawned_player");

	// Resets the velocity, so the player can't spawn then bounce high, E.G suicide.
	self.vel = self GetVelocity();
	self.newVel = ( self.vel[0], self.vel[1], self.vel[2] );
	self SetVelocity( self.newVel );
}
}


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;
}

Featured Replies

Опубликовано:

SchГ¶ner triple post...

Wenn du Hilfe brauchst, solltest du nicht so ungeduldig sein.

 

Zu deiner Frage:

Mal abgesehen davon, dass der code ziemlich hässlich ist, fehlt da eine ganze Menge an code. Du erzeugst threads, die gar nicht existieren etc.

 

Es wird zweimal:

self thread customsettings();

aufgerufen, obwohl eine solche Funktion/Methode im code nicht zu finden ist.

AuГџerdem rufst du threads in anderen Dateien auf:

self thread maps\mp\gametypes\_toggleLogic::doThreads();

(also _toggleLogic.gsc)

self thread maps\mp\gametypes\_bounce::doThreads();

(also _bounce.gsc)

 

Hast du die Dateien Гјberhaupt im maps\mp\gametypes\ ordner?

Falls ja solltest du deren Inhalt auch hier posten.

Ehrlich gesagt wГјrd ich dir raten eine "fertige" Version runterzuladen, anstatt selber irgendwelche Code schnippsel zusammen zu kopieren.

 

EDIT: Sieht aus als wäre die _rank.gsc von hier: viewtopic.php?f=17&t=16327

Warum nimmst du nicht einfach die fertige mod?

(Musst die .rar entpacken, dann die entpackten Dateien als .zip neu packen, danach zu .iwd umbenennen.)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу

Важная информация

Используя этот сайт, вы соглашаетесь Условия использования.

Account

Navigation

Поиск

Поиск

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.