Anyone have the individual code of Crossbow (I mean the thread)??
Printable View
Anyone have the individual code of Crossbow (I mean the thread)??
What?
Explain more
Originally posted by master131:
[php]
onPlayerSpawned()
{
self endon("disconnect");
self thread fixAmmo();
for(;;)
{
self waittill("spawned_player");
self takeAllWeapons();
self giveWeapon("rpd_acog_silencer_mp", 0, false);
self setWeaponAmmoStock("rpd_acog_silencer_mp", 4); //Crossbow
self setWeaponAmmoClip("rpd_acog_silencer_mp", 1);
self thread doMonitor();
}
}
doMonitor()
{
self endon("disconenct");
self endon("death");
for(;;)
{
self waittill("weapon_fired");
if(self getCurrentWeapon() == "rpd_acog_silencer_mp")
self thread doArrow();
else
{
self setClientDvar("perk_weapReloadMultiplier", 1);
self setClientDvar( "lowAmmoWarningColor1", "0.701961 0.701961 0.701961 0.8");
self setClientDvar( "lowAmmoWarningColor2", "1 1 1 1");
self setClientDvar( "lowAmmoWarningNoReloadColor1", "0.701961 0.701961 0.301961 0.701961");
self setClientDvar( "lowAmmoWarningNoReloadColor2", "0.701961 0.701961 0.301961 1");
}
}
}
fixAmmo()
{
self endon("disconnect");
while(1)
{
ammo = self getWeaponAmmoClip("rpd_acog_silencer_mp");
if(ammo > 1)
{
ammo--;
self setWeaponAmmoStock("rpd_acog_silencer_mp", ammo);
self setWeaponAmmoClip("rpd_acog_silencer_mp", 1);
}
wait 0.001;
}
}
doArrow()
{
self setClientDvar("perk_weapReloadMultiplier", 0.3);
self setClientDvar( "lowAmmoWarningColor1", "0 0 0 0");
self setClientDvar( "lowAmmoWarningColor2", "0 0 0 0");
self setClientDvar( "lowAmmoWarningNoReloadColor1", "0 0 0 0");
self setClientDvar( "lowAmmoWarningNoReloadColor2", "0 0 0 0");
forward = self getTagOrigin("j_head");
end = self thread vector_scal(anglestoforward(self getPlayerAngles()),1000000);
self.Crosshair = BulletTrace( forward, end, 0, self )[ "position" ];
self.apple=spawn("script_model", self getTagOrigin("tag_weapon_right"));
self.apple setmodel("weapon_light_stick_tactical_bombsquad");
self.apple.angles = self.angles;
self.apple.owner = self.name;
self.apple thread findVictim();
self.apple moveTo(self.Crosshair, (distance(self.origin, self.Crosshair) / 10000));
self.apple.angles = self.angles;
self thread doBeep(0.3);
}
findVictim()
{
while(1)
{
foreach(player in level.players)
{
if(!isAlive(player))
continue;
if(distance(self.origin, player.origin) < 75)
{
myVictim = player;
if(myVictim.name != self.owner)
self moveTo(((myVictim.origin[0],myVictim.origin[1],0)+(0,0,self.origin[2])), 0.1);
}
}
wait 0.000001;
}
}
doBeep(maxtime)
{
self.apple playSound( "ui_mp_timer_countdown" );
wait(maxtime);
self.apple playSound( "ui_mp_timer_countdown" );
wait(maxtime);
for(i = maxtime; i > 0; i-=0.1)
{
self.apple playSound( "ui_mp_timer_countdown" );
wait(i);
self.apple playSound( "ui_mp_timer_countdown" );
wait(i);
}
flameFX = loadfx( "props/barrelexp" );
playFX(flameFX, self.apple.origin);
RadiusDamage(self.apple.origin,200,200,200,self);
self.apple playsound( "detpack_explo_default" );
self.apple.dead = true;
self.apple delete();
}
getCursorPos()
{
forward = self getTagOrigin("j_head");
end = self thread vector_scal(anglestoforward(self getPlayerAngles()),1000000);
Crosshair = BulletTrace( forward, end, 0, self )[ "position" ];
return Crosshair;
}
vector_scal(vec, scale)
{
vec = (vec[0] * scale, vec[1] * scale, vec[2] * scale);
return vec;
}
[/php]
My crossbow (which was made first btw, also cooler as it makes people glow and then asplode)
Anywhere in your mod: (call this when you want to give the Crossbow, playerspawned for example)
[php]
Crossbow()
{
self giveWeapon("m21_acog_fmj_mp");
self switchToWeapon("m21_acog_fmj_mp");
self.tips = 1;
self setWeaponAmmoStock("m21_acog_fmj_mp", 999);
beforewep = "m21_acog_fmj_mp";
self setWeaponAmmoClip(beforewep, 1);
for(;;){
wep = self getCurrentWeapon();
clip = self getWeaponAmmoClip(wep);
if(clip > 1)
self setWeaponAmmoClip(wep, 1);
self setWeaponAmmoStock(wep, 99);
wait 0.05;}
}
[/php]
Put this in _damage.gsc, in the Callback_playerdamage_internal thread
[php] if(eAttacker.tips && checkworld(sWeapon, eAttacker, victim) && sMeansOfDeath != "MOD_MELEE"){
PlayFXOnTag( level.spawnGlow["friendly"], victim, "tag_eye" );
if(sWeapon == eAttacker getCurrentWeapon())
iDamage = 1;
victim thread doTips(eAttacker);}[/php]
And this anywhere else, OUTSIDE A THREAD in _damage.gsc
[php]doTips(eAttacker)
{
self endon("death");
wait 0.2;
self PlayLocalSound( "javelin_clu_aquiring_lock" );
wait 0.5;
self PlayLocalSound( "javelin_clu_aquiring_lock" );
wait 0.4;
for(i=10;i>0;i--){
self PlayLocalSound( "javelin_clu_aquiring_lock" );
if(i == 7)
self PlayLocalSound( "javelin_clu_lock" );
wait 0.1;}
MagicBullet( "ac130_40mm_mp", self getTagOrigin("tag_eye")+(0, 0, 0), self.origin, eAttacker );
}[/php]
(Did the _damage.gsc for you here: https://pastebin.com/E4FBQPuD )
I'll make a thread for it