Page 1 of 3 123 LastLast
Results 1 to 10 of 24

Thread: Ranking-when you shot somebody you got some xp

  1. #1
    Private First Class
    Join Date
    Jul 2013
    Posts
    170
    Thanks
    44
    Thanked 16 Times in 11 Posts

    Ranking-when you shot somebody you got some xp

    Code:
     init()
    {
    	level._rank = [];
    	level.xpsize = 640;
    	thread strings();
    	thread bombs();
    	if(getcvar("g_multiplier") == "") setcvar("g_multiplier", "1.0");
    	level.xpmultiplier = getcvarfloat("g_multiplier");
    }
    
    playerinit()
    {
    	self endon("disconnect");
    	self.pers["streak"] = 0;
    	if(!isDefined(self.pers["lvl"]))
    	{
    		self.pers["lvl"] = 1;
    		self.pers["xp"] = 0;
    		self.pers["totalxp"] = 0;
    		self.pers["xpforlvl"] = level._rank[1].xp;
    		self.pers["xpsize"] = 0;
    	}
    	self hud();
    	self thread monitorxp();
    	checkrank();
    }
    xpForLevel(lvl)
    {
    	if(!isDefined(level._rank[lvl])) return 0;
    	return level._rank[lvl].xp - level._rank[lvl-1].xp;
    }
    checkrank()
    {
    	lvl = self.pers["lvl"];
    	if(lvl == level._rank.size) return;
    	total = self.pers["totalxp"];
    	next = level._rank[lvl].xp;
    	diff = next - total;
    
    	promoted = false;
    	while(diff <= 0) // promoted
    	{
    		promoted = true;
    		self.pers["lvl"]++;
    		lvl = self.pers["lvl"];
    		self.pers["xp"] = total - level._rank[lvl-1].xp;
    		next = level._rank[lvl].xp;
    		diff = next - total;
    	}
    
    	xp = xpForLevel(lvl);
    	if(xp != 0)
    	{
    		self.pers["xpsize"] = int(self.pers["xp"] / xp * level.xpsize);
    		self.hud_xpbar setShader("color_red", self.pers["xpsize"], 4);
    	}
    	else
    		self.hud_xpbar setShader("color_red", self.pers["xpsize"], 4);
    
    	self.hud_lvlimg setShader(level._rank[lvl-1].shader, 32, 32);
    	// self.hud_lvl setText(level._rank[self.pers["lvl"]-1].string);
    	// self.hud_xp setValue(self.pers["xp"]);
    	// self.hud_xpleft setValue(next);
    
    	if(promoted) self thread promote();
    }
    promote()
    {
    	self iprintlnbold("You have been promoted to ", level._rank[self.pers["lvl"]-1].string, "!!");
    }
    
    hud()
    {
    	self endon("disconnect");
    	self thread hudUpdate();
    	// self.hud_lvl = newClientHudElem(self);
    	// self.hud_lvl.vertalign = "bottom";
    	// self.hud_lvl.horzalign = "left";
    	// self.hud_lvl.alignx = "left";
    	// self.hud_lvl.aligny = "bottom";
    	// self.hud_lvl.x = 140;
    	// self.hud_lvl.y = -25;
    	// self.hud_lvl setText(level._rank[self.pers["lvl"]-1].string);
    	// self.hud_lvl setValue(self.pers["lvl"]);
    
    	self.hud_lvlimg = newClientHudElem(self);
    	self.hud_lvlimg.vertalign = "bottom";
    	self.hud_lvlimg.horzalign = "left";
    	self.hud_lvlimg.alignx = "left";
    	self.hud_lvlimg.aligny = "bottom";
    	self.hud_lvlimg.x = 140;
    	self.hud_lvlimg.y = -40;
    	self.hud_lvlimg.alpha = 0;
    	self.hud_lvlimg setShader(level._rank[self.pers["lvl"]-1].shader, 32, 32);
    
    	self.hud_xpbar = newClientHudElem(self);
    	self.hud_xpbar.vertalign = "bottom";
    	self.hud_xpbar.horzalign = "fullscreen";
    	self.hud_xpbar.alignx = "left";
    	self.hud_xpbar.aligny = "bottom";
    	// self.hud_xpbar.y = 1;
    	self.hud_xpbar.alpha = 0;
    	if(self.pers["xpsize"]>0)
    		self.hud_xpbar setShader("color_red", self.pers["xpsize"], 4);
    
    	// self.hud_xp = newClientHudElem(self);
    	// self.hud_xp.vertalign = "middle";
    	// self.hud_xp.horzalign = "right";
    	// self.hud_xp.alignx = "right";
    	// self.hud_xp.aligny = "middle";
    	// self.hud_xp.x = -30;
    	// self.hud_xp.y = 39;
    	// self.hud_xp.alpha = 0;
    	// self.hud_xp.label = &"^9";
    	// self.hud_xp setValue(self.pers["xp"]);
    
    	// self.hud_xpleft = newClientHudElem(self);
    	// self.hud_xpleft.vertalign = "middle";
    	// self.hud_xpleft.horzalign = "right";
    	// self.hud_xpleft.alignx = "right";
    	// self.hud_xpleft.aligny = "middle";
    	// self.hud_xpleft.x = -30;
    	// self.hud_xpleft.y = 14;
    	// self.hud_xpleft.alpha = 0;
    	// self.hud_xpleft.label = &"^9";
    	// self.hud_xpleft setValue(xpForLevel(self.pers["lvl"]));
    
    	self.hud_xpup = newClientHudElem(self);
    	self.hud_xpup.horzalign = "center";
    	self.hud_xpup.alignx = "center";
    	self.hud_xpup.y = 60;
    	self.hud_xpup.fontScale = 1.2;
    	self.hud_xpup.label = &"^2+^7&&1";
    	self.hud_xpup.alpha = 0;
    
    }
    hudUpdate()
    {
    	self endon("disconnect");
    	self thread updateKilled();
    	// oldalive = isAlive(self);
    	while(1)
    	{
    		self waittill("spawned_player");
    		// self.hud_lvl.alpha = 1;
    		self.hud_lvlimg.alpha = 1;
    		self.hud_xpbar.alpha = 0.5;
    		// self.hud_xp.alpha = 1;
    		// self.hud_xpleft.alpha = 1;
    		/*if(isAlive(self) && !oldalive)
    		{
    			self.hud_lvl.alpha = 1;
    			self.hud_lvlimg.alpha = 1;
    			self.hud_xpbar.alpha = 1;
    			self.hud_xp.alpha = 1;
    			self.hud_xpleft.alpha = 1;
    		}
    		else if(oldalive)
    		{
    			self.hud_lvl.alpha = 0;
    			self.hud_lvlimg.alpha = 0;
    			self.hud_xpbar.alpha = 0;
    			self.hud_xp.alpha = 0;
    			self.hud_xpleft.alpha = 0;
    		}
    		oldalive = isAlive(self);
    		wait 0.1;*/
    	}
    }
    updateKilled()
    {
    	self endon("disconnect");
    	while(1)
    	{
    		self waittill("killed_player");
    		// self.hud_lvl.alpha = 0;
    		self.hud_lvlimg.alpha = 0;
    		self.hud_xpbar.alpha = 0;
    		// self.hud_xp.alpha = 0;
    		// self.hud_xpleft.alpha = 0;
    	}
    }
    
    playerKilled(attacker, MOD, sHitLoc)
    {
    	if(attacker == self || attacker == level || self.sessionteam == "spectator") return;
    
    	if(sHitLoc == "head" && MOD != "MOD_MELEE") MOD = "MOD_HEAD_SHOT";
    
    	attacker.pers["streak"]++;
    	self.pers["streak"] = 0;
    
    	if(MOD == "MOD_HEAD_SHOT")
    	{
    		if(isDefined(attacker.score)) attacker.score++;
    		if(isDefined(attacker.pers["score"])) attacker.pers["score"]++;
    	}
    
    	attacker xpup(MOD);
    }
    
    strings()
    {
    	addlevel("gnnr_rank_private",		&"Private");
    	addlevel("gnnr_rank_lcpl1",			&"LanceCorporal");
    	addlevel("gnnr_rank_cpl1",			&"Corporal");
    	addlevel("gnnr_rank_sgt1",			&"Sergeant");
    	addlevel("gnnr_rank_ssgt1",			&"StaffSergeant");
    	addlevel("gnnr_rank_gysgt1",		&"GunnerySergeant");
    	addlevel("gnnr_rank_msgt1",			&"MasterSergeant");
    	addlevel("gnnr_rank_mgysgt1",		&"MasterGunnerySergeant");
    	addlevel("gnnr_rank_lieutenant",	&"Lieutenant");
    	addlevel("gnnr_rank_capt1",			&"Captain");
    	addlevel("gnnr_rank_major",			&"Major");
    	addlevel("gnnr_rank_ltcol1",		&"LieutenantColonel");
    	addlevel("gnnr_rank_col1",			&"Colonel");
    	addlevel("gnnr_rank_bgen1",			&"BrigadierGeneral");
    	addlevel("gnnr_rank_majgen1",		&"MajorGeneral");
    	addlevel("gnnr_rank_ltgen1",		&"LieutenantGeneral");
    	addlevel("gnnr_rank_gen1",			&"General");
    	addlevel("gnnr_rank_comm",			&"Commander");
    
    	precacheString(&"^9");
    	precacheString(&"^2+^7&&1");
    	precacheShader("color_red");
    }
    addlevel(shader, string)
    {
    	lvl = spawnstruct();
    	lvl.shader = shader;
    	lvl.string = string;
    	lvl.cvar = "lvl" + (level._rank.size+1);
    	lvl.xp = getcvarint(lvl.cvar);
    	precacheShader(lvl.shader);
    	precacheString(lvl.string);
    	level._rank[level._rank.size] = lvl;
    }
    
    bombs()
    {
    	thread defuse();
    	while(1)
    	{
    		level waittill("bomb_planted", player);
    		player givexp(xpFromMOD("BOMB_PLANTED"));
    	}
    }
    defuse()
    {
    	while(1)
    	{
    		level waittill("bomb_defused", player);
    		player givexp(xpFromMOD("BOMB_DEFUSED"));
    	}
    }
    
    givexp(num)
    {
    	num *= level.xpmultiplier;
    	self.pers["xp"] += num;
    	self.pers["totalxp"] += num;
    	self.xpup += num;
    	self checkRank();
    }
    xpup(MOD)
    {
    	xp = xpFromMOD(MOD) + self.pers["streak"]*2;
    	givexp(xp);
    }
    xpFromMOD(MOD)
    {
    	switch(MOD)
    	{
    	case "MOD_MELEE":
    		return 60;
    	case "MOD_HEAD_SHOT":
    		return 50;
    	default:
    	case "MOD_RIFLE_BULLET":
    	case "MOD_PISTOL_BULLET":
    		return 40;
    	case "BOMB_PLANTED":
    	case "BOMB_DEFUSED":
    		return 50;
    	}
    }
    monitorxp()
    {
    	self endon("disconnect");
    	self thread monitorxpFrame();
    	oldtime = gettime();
    	xpup = 0;
    	while(1)
    	{
    		self waittill("gotxp", xp);
    		time = gettime();
    
    		diff = time-oldtime;
    		if(diff > 3000)
    			xpup = xp;
    		else
    			xpup += xp;
    
    		self.hud_xpup thread fade();
    		self.hud_xpup setValue(xpup);
    		oldtime = time;
    	}
    }
    monitorxpFrame()
    {
    	self endon("disconnect");
    	self.xpup = 0;
    	while(1)
    	{
    		while(self.xpup == 0) wait 0.05;
    		self notify("gotxp", self.xpup);
    		self.xpup = 0;
    	}
    }
    fade()
    {
    	self.alpha = 1;
    	self fadeovertime(3);
    	self.alpha = 0;
    }
    How to create when you shot somebody you got xp?And he dont die.
    Last edited by Rocky; 5th October 2013 at 13:03.

  2. #2
    Private First Class
    Join Date
    Jul 2013
    Posts
    170
    Thanks
    44
    Thanked 16 Times in 11 Posts
    When somebody other kill him.You got xp's.But you shot him.

  3. #3
    Lieutenant Loveboy's Avatar
    Join Date
    Nov 2012
    Posts
    546
    Thanks
    229
    Thanked 72 Times in 46 Posts
    I don't think nobody will read it.

    How will somebody read it and help you?:
    1. Do scripts with code [.code] SCRIPT HERE [./code] if you write it dont forget delete the point!
    2. What is your problem? Please tell us it!
    3. Do not write the script complete. Only that which didn't work.

  4. #4
    Lieutenant Loveboy's Avatar
    Join Date
    Nov 2012
    Posts
    546
    Thanks
    229
    Thanked 72 Times in 46 Posts
    If you look at the tdm.gsc (Call of Duty 2/main/iw_07.iwd), you will see in Callback_PlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration)
    somewhere down (look for it)

    Code:
    else
    			{
    				attacker.score++;
    				teamscore = getTeamScore(attacker.pers["team"]);
    				teamscore++;
    				setTeamScore(attacker.pers["team"], teamscore);
    				checkScoreLimit();
    			}
    under the attcker.score++ you should add your variable with xp
    example:
    Code:
    attacker.score++;
    attcker.stats["xp"] =+ 1; //it will give 1 xp more

  5. #5
    Brigadier General
    Join Date
    Dec 2012
    Posts
    1,012
    Thanks
    440
    Thanked 171 Times in 132 Posts
    he wants to have assists xp i guess :/

  6. #6
    Lieutenant Loveboy's Avatar
    Join Date
    Nov 2012
    Posts
    546
    Thanks
    229
    Thanked 72 Times in 46 Posts
    hmmm maybe you are right Ni3ls, I never tried it, but I have to look for it.

  7. #7
    Assadministrator IzNoGoD's Avatar
    Join Date
    Aug 2012
    Posts
    1,718
    Thanks
    17
    Thanked 1,068 Times in 674 Posts

  8. #8
    Brigadier General
    Join Date
    Dec 2012
    Posts
    1,012
    Thanks
    440
    Thanked 171 Times in 132 Posts
    Script isnt correct as I said :P

  9. #9
    Private First Class
    Join Date
    Jul 2013
    Posts
    170
    Thanks
    44
    Thanked 16 Times in 11 Posts
    Ty all..but assist xp's..not in score..or it will add xp's?

  10. #10
    Private First Class
    Join Date
    Jul 2013
    Posts
    170
    Thanks
    44
    Thanked 16 Times in 11 Posts
    ah,ah i read post.. ty IzNoGoD

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •