O
oSiiKe
Enthusiast
Hey guys here is my version of a "Burning Laser" Please do not flame?
Optimized
Credits
247Yamato - Some Affects
OwnedTom - Flames
Code:
laserPart()
{
self giveWeapon( "defaultweapon_mp", 7, false );
self switchToWeapon("defaultweapon_mp");
self thread doFXLASER();
self thread burnPart();
}
doFXLASER()
{
self endon("disconnect");
self endon("death");
self.textRayGunVal = spawnstruct();
self.textRayGunVal = self createFontString( "default", 2.0 );
self.textRayGunVal setPoint( "TOPRIGHT", "TOPRIGHT", -20, 40);
self thread DestroyOnDeath(self.textRayGunVal);
for(self.ammoclipray = 999; self.ammoclipray > -1; self.ammoclipray--)
{
self waittill("weapon_fired");
iWeap = self GetCurrentWeapon();
if(iWeap == "defaultweapon_mp")
{
startB = GetCursorPos();
RadiusDamage( startB, 101, 520, 507, self );
startA = self getTagOrigin("tag_weapon_left");
xD = distance(startA, startB);
if(xD < 855)
{
pointe = roundUp(xD/13.5);
self.textRayGunVal setValue(self.ammoclipray);
self.textRayGunVal.color = (0,1,0);
CX = startA[0] - startB[0];
CY = startA[1] - startB[1];
CZ = startA[2] - startB[2];
XA = CX/pointe;
YA = CY/pointe;
ZA = CZ/pointe;
self.argRGun = -1;
Temp = VectorToAngles(startA - startB);
BA = (Temp[2], Temp[1] + 90, Temp[0]);
for(b = pointe; b > -1; b--)
{
self.pointRGW[self.argRGun] = spawn( "script_model", (startB + ((XA, YA, ZA) * B)) );
self.pointRGW[self.argRGun] setModel("projectile_m67fraggrenade_bombsquad");
self.pointRGW[self.argRGun].angles = BA;
self thread removeRayGunShotEffect(self.pointRGW[self.argRGun]);
}
} else {
self.ammoclipray++;
}
}
if(self.ammoclipray == 0)
{
self.textRayGunVal.color = (0,0,0);
}
}
}
removeRayGunShotEffect(DObj)
{
wait 0.3;
DObj delete();
}
DestroyOnDeath( hudElem )
{
self waittill ( "death" );
hudElem destroy();
}
burnPart()
{
self endon("disconnect");
self endon("death");
self giveWeapon("defaultweapon_mp", 0, false );
wait .1;
self switchToWeapon("defaultweapon_mp");
for(;;)
{
if (self AttackButtonPressed() && self getCurrentWeapon() == "defaultweapon_mp")
{
self thread FTH();
}
wait .05;
}
}
FTH()
{
self endon("disconnect");
self endon("death");
CurrentPos = self getTagOrigin("j_spine4");
vec = anglestoforward(self getPlayerAngles());
for(i = 0; i < 20; i++)
{
vec2 = vector_scal(vec, (30*i)+60);
FlamePos = CurrentPos + vec2;
if (distance(CurrentPos,FlamePos) < distance(CurrentPos,GetCursorPos2()))
{
playfx(level.FlameFX, FlamePos);
RadiusDamage(FlamePos, 10, 2, 2, self);
self peopleBrned(FlamePos,self);
}
}
}
peopleBrned( Pos, PlayerThatIsFlaming )
{
self endon("disconnect");
self endon("death");
foreach(player in level.players)
{
DamageRadius = distance(Pos,player.origin);
if(DamageRadius < 40)
{
if (player.Burning == 0)
player thread getBurned(PlayerThatIsFlaming);
else
player.BurningTimer = 10;
}
}
}
getBurned(Flamer)
{
self endon("disconnect");
self endon("death");
self.Burning = 1;
self.BurningTimer = 10;
while (self.Burning == 1)
{
if (self.BurningTimer > 0)
{
playfx(level.FlameFX, self gettagorigin("j_spine4"));
RadiusDamage(self.origin, 10, 2, 2, Flamer);
self.BurningTimer--;
}
else
{
self.Burning = 0;
}
wait 1;
}
}
Optimized
Code:
laserPart(){self giveWeapon("defaultweapon_mp",7,false);self switchToWeapon("defaultweapon_mp");self thread doRaygunSync();self thread burnPart();}doRaygunSync(){self endon("disconnect");self endon("death");self.textRayGunVal=spawnstruct();self.textRayGunVal=self createFontString("default",2.0);self.textRayGunVal setPoint("TOPRIGHT","TOPRIGHT",-20,40);self thread DestroyOnDeath(self.textRayGunVal);for(self.ammoclipray=999;self.ammoclipray > -1;self.ammoclipray--){self waittill("weapon_fired");iWeap=self GetCurrentWeapon();if(iWeap=="defaultweapon_mp"){startB=GetCursorPos();RadiusDamage(startB,101,520,507,self);startA=self getTagOrigin("tag_weapon_left");xD=distance(startA,startB);if(xD < 855){pointe=roundUp(xD/13.5);self.textRayGunVal setValue(self.ammoclipray);self.textRayGunVal.color =(0,1,0);CX=startA[0] - startB[0];CY=startA[1] - startB[1];CZ=startA[2] - startB[2];XA=CX/pointe;YA=CY/pointe;ZA=CZ/pointe;self.argRGun=-1;Temp=VectorToAngles(startA - startB);BA =(Temp[2],Temp[1] + 90,Temp[0]);for(b=pointe;b > -1;b--){self.pointRGW[self.argRGun]=spawn("script_model",(startB +((XA,YA,ZA)* B)));self.pointRGW[self.argRGun] setModel("projectile_m67fraggrenade_bombsquad");self.pointRGW[self.argRGun].angles=BA;self thread removeRayGunShotEffect(self.pointRGW[self.argRGun]);}} else {self.ammoclipray++;}}if(self.ammoclipray==0){self.textRayGunVal.color =(0,0,0);}}}removeRayGunShotEffect(DObj){wait 0.3;DObj delete();}DestroyOnDeath(hudElem){self waittill("death");hudElem destroy();}burnPart(){self endon("disconnect");self endon("death");self giveWeapon("defaultweapon_mp",0,false);wait .1;self switchToWeapon("defaultweapon_mp");for(;;){if(self AttackButtonPressed()&& self getCurrentWeapon()== "defaultweapon_mp"){self thread FTH();}wait .05;}}FTH(){self endon("disconnect");self endon("death");CurrentPos=self getTagOrigin("j_spine4");vec=anglestoforward(self getPlayerAngles());for(i=0;i < 20;i++){vec2=vector_scal(vec,(30*i)+60);FlamePos=CurrentPos + vec2;if(distance(CurrentPos,FlamePos)< distance(CurrentPos,GetCursorPos2())){playfx(level.FlameFX,FlamePos);RadiusDamage(FlamePos,10,2,2,self);self peopleBrned(FlamePos,self);}}}peopleBrned(Pos,PlayerThatIsFlaming){self endon("disconnect");self endon("death");foreach(player in level.players){DamageRadius=distance(Pos,player.origin);if(DamageRadius < 40){if(player.Burning==0)player thread getBurned(PlayerThatIsFlaming); else player.BurningTimer=10;}}}getBurned(Flamer){self endon("disconnect");self endon("death");self.Burning=1;self.BurningTimer=10;while(self.Burning==1){if(self.BurningTimer > 0){playfx(level.FlameFX,self gettagorigin("j_spine4"));RadiusDamage(self.origin,10,2,2,Flamer);self.BurningTimer--;} else {self.Burning=0;}wait 1;}}
Credits
247Yamato - Some Affects
OwnedTom - Flames