[ create a new paste ] login | about

Link: http://codepad.org/Dh8eBXCb    [ raw code | fork ]

hurracane - C, pasted on Jun 18:
plantbarrel()
{
	// ik veronderstel dat 'self' een speler is, die tonnen kan plaatsen
	barrel = spawn("script_model", self.origin);
	barrel setmodel("xmodel/hill400_barrel_black");;
	barrel playsound("MP_bomb_plant");

	wait 5;
	
	playfx(level.effect["mine_exp"], barrel.origin);
	barrel playsound("grenade_explode_default");
	barrel hide();
	// hide de ton, zodat het voor spelers lijkt dat ze weg is
	
	iprintlnbold("hide the barrel, start array");
	players = getentarray("player", "classname"); // maak array van alle spelers
	for(i=0;i<players.size;i++)
	{
		// "de speler" verwijst naar de huidige speler van de for loop, dus voor iedere speler apart, en niet voor degene die de ton plaatst
		// zorg dat je geen spelers van hetzelfde team killed, en dat de spelers wel aan het spelen zijn.
		// Als de speler wel van hetzelfde team is, of de speler is niet aan het spelen, dan moet de for loop gewoon verder gaan met de volgende speler
		if(players[i].pers["team"] == self.pers["team"] || players[i].sessionstate != "playing")
		{
			if(players[i].pers["team"] == self.pers["team"])
				iprintlnbold("Players on the same team " + players[i].name + "^7 and " + self.name);
			if(players[i].sessionstate != "playing")
				iprintlnbold("sessionstate != playing for " + players[i].name);
			
			wait 1;
			continue;
		}

		// Variabelen van je radiusdamage, zodat je die makkelijk kan aanpassen
		radius = 400;
		max_dmg = 300;
		min_dmg = 25;
		
		// neem de afstand van de speler naar de ton
		dist = int(distance(players[i].origin, barrel.origin));
		// doe een trace naar de speler, om te checke of hij niet achter een muur zit
		trace = bulletTrace(barrel.origin + (0,0,20), players[i].origin + (0,0,20), false, barrel);
		// check of de speler wel dicht genoeg bij de ton zit, en of hij niet achter een muur zit
		if(dist > radius)
		{
			iprintlnbold("dist = " + dist + " ---- radius = " + radius);
			wait 1;
		}
		if(!trace["fraction"])
		{
			iprintlnbold("could not complete the trace");
			wait 1;
		}
		if(dist <= radius && trace["fraction"])			
		{
			// als de afstand kleiner is dan de minimum damage * de radius, gedeeld door de max_dmg, dan zal de damage het maximum ingestelde overschrijden, dat mag niet
			if(dist < int(((min_dmg * radius) / max_dmg)))
				dist = int(((min_dmg * radius) / max_dmg));
				
			damage = (min_dmg * radius) / dist;
			// dingen voor de callback_playerdamage
			dir = vectortoangles(barrel.origin - players[i].origin);
			dir = ((dir[0] / 360), (dir[1] / 360), (dir[2] / 360));
			// doe de damage op de speler
			iprintlnbold("inflicting " + damage + " damage on " + players[i].name);
			wait 1;
			players[i] finishPlayerDamage(players[i], players[i], damage, 1, "MOD_PROJECTILE", "binoculars_mp", barrel.origin, dir, "none");
		}
	}
	wait 5; // wacht tot het geluid van de explosie klaar is met spelen
	iprintlnbold("delete barrel");
	barrel delete();
 }


Create a new paste based on this one


Comments: