Live Help
Membership
You are a guest!

Register Today!

Log In
Reset Password
Game Network
Community Forum

MMO GAME LIST
World of Warcraft
Age of Conan
Aion Online
Anarchy Online
Archlord
Cabal Online
City of Heroes
City of Villains
Dark Age of Camelot
Darkfall Online
Diablo 2
Dungeons and Dragons
Dofus
Eve Online
Everquest 2
Final Fantasy XI
Guild Wars
Guild Wars II
Hero Online
Knight Online
Lineage 2
Lord of the Rings Online
Maple Story
Ragnarok Online
Runescape 2
Second Life
SilkRoad Online
Star Wars Galaxies
Tibia
Warhammer Online

FPS GAME LIST
Call of Duty
Combat Arms
Counter Strike
Halo

Welcome Guest ( Log In | Register )

> Flame thrower, Flamethrower from P N
post Oct 16 2009, 08:36 PM
Post #1

aliz123



Advanced
Group Icon

Group: Elite Members
Posts: 89
Joined: 20-February 09
Member No.: 843,883








Warning: Untested, Etc. This gun is basically a particle shooter that fires a stream and creates an invisible following box on people it hits that makes it look like they're burning. Best used as a trolling aid. ###### around with the first script in the gun and the flame object's particles if you want different color fire.

Instructions
Jam the first 3 scripts into a gun. After jamming the first 3 scripts into a gun, rez a tiny cube, make it phantom and transparent. Put the Flame script in it and name it "Flame"

Code
Gun Script #1

default
{
link_message(integer sn, integer num, string who, key id)
{
if (num == 66) {
llSensorRepeat("", NULL_KEY, AGENT, 6, .4 / .90, .1);
} else {
llSensorRemove();
}
}

sensor(integer tn)
{
integer basechan = 65536 + (integer)llFrand(65536);
integer i;
for (i = 0; i < tn; i++) {
llRezObject("Flame", llGetPos(), ZERO_VECTOR, ZERO_ROTATION, basechan + i);
}
llSleep(.1);
for (i = 0; i < tn; i++) {
llShout(basechan + i, llDetectedKey(i));
}
}
}Gun Script #2

// RedZergling ###### stole this script lol

integer held;

default
{
state_entry()
{
if (llGetAttached()) {
llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION);
}

}
on_rez(integer pam)
{

llResetScript();
}

attach(key id)
{
if (id != NULL_KEY) { // was attached
llRequestPermissions(id, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION);
} else {
if ( llGetPermissions() & PERMISSION_TRIGGER_ANIMATION )
llStopAnimation("hold_r_rifle");
llStopAnimation("aim_r_rifle");
llStopAnimation("hold_r_handgun");
llStopAnimation("aim_r_handgun");
llSetTimerEvent(0);
}
}

run_time_permissions (integer p) {
if (p & PERMISSION_TRIGGER_ANIMATION) {

}
if (p & PERMISSION_TAKE_CONTROLS) {
llTakeControls(CONTROL_ML_LBUTTON | CONTROL_DOWN, 1, 0);
}
}

control(key id, integer level, integer edge)
{
if (level & edge & CONTROL_ML_LBUTTON) {
llTriggerSound("81ffda57-76cf-3207-bfd7-90c361f8b2b9", 1);
llLoopSound("48db54d0-24ff-34c8-3d5d-1496c6878d34", 1.0);
llMessageLinked(LINK_SET, 66, "fire", "");
llStartAnimation("aim_r_handgun");
held = 1;
} else if (edge & CONTROL_ML_LBUTTON) { // !level implied.
if (!held)
return;
held = 0;
llMessageLinked(LINK_SET, 65, "", "");
llStopSound();
llStopAnimation("hold_r_handgun");
llStopAnimation("aim_r_handgun");
llSetTimerEvent(0.0);
}}
}
Gun Script #3

default
{
link_message(integer sender, integer i, string s, key id)
{

if(i == 66)
{
llParticleSystem([
PSYS_PART_FLAGS,PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK | PSYS_PART_EMISSIVE_MASK | PSYS_PART_FOLLOW_SRC_MASK,
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE_CONE,
PSYS_PART_START_COLOR, <0,0.5,1.0>,
PSYS_PART_END_COLOR, <1,1,1.0>,
PSYS_PART_START_ALPHA, 0.5,
PSYS_PART_END_ALPHA, 0.1,
PSYS_PART_START_SCALE, <0.50,0.50,0.50>,
PSYS_PART_END_SCALE, <1.4,1.4,1.44>,
PSYS_SRC_ANGLE_BEGIN, 0.0,
PSYS_SRC_ANGLE_END, 0.0,
PSYS_SRC_BURST_RATE, 0.01,
PSYS_SRC_BURST_PART_COUNT, 200000,
PSYS_SRC_BURST_RADIUS, 0.5,
PSYS_PART_MAX_AGE, 1.8,
PSYS_SRC_TEXTURE, "dcab6cc4-172f-e30d-b1d0-f558446f20d4",
PSYS_SRC_BURST_SPEED_MIN, 1.6,
PSYS_SRC_BURST_SPEED_MAX, 2.2,
PSYS_SRC_ACCEL, <0,0,0.40>
]);
}
if(i == 65) {
llParticleSystem([]);
}
}}
Flame Script


// Function to change velocity to a target vel.
// Vel is desired velocity, strength is how forcefully to change to that velocity.
// Call this function repeatedly in an evenly timed loop.

irCorrectVelocity(vector vel, float strength)
{
if (strength > 1)
strength = 1;

if (strength > 0) { // Do nothing if no strength!
vector retro = llGetVel();

retro *= -(strength);

vel *= strength;


llApplyImpulse((retro + vel) * llGetMass(), FALSE);
}

}

flame(integer on)
{
if (!on) {
llParticleSystem([]);
return;
}

llParticleSystem([
PSYS_PART_FLAGS,
PSYS_PART_WIND_MASK |
PSYS_PART_INTERP_COLOR_MASK |
PSYS_PART_INTERP_SCALE_MASK |
PSYS_PART_EMISSIVE_MASK,

PSYS_SRC_PATTERN,
PSYS_SRC_PATTERN_ANGLE_CONE,

PSYS_PART_START_COLOR, <0.0,0.5,1.0>,
PSYS_PART_END_COLOR, <1,1,1.0>,

PSYS_PART_START_SCALE, <1,1,0>,
PSYS_PART_END_SCALE, <0,.05,0>,

PSYS_PART_START_ALPHA, 1.0,
// emissive, always fullbright D:.
PSYS_SRC_TEXTURE, "dcab6cc4-172f-e30d-b1d0-f558446f20d4",
PSYS_PART_MAX_AGE, .75,

PSYS_SRC_ANGLE_BEGIN, 0.0,
PSYS_SRC_ANGLE_END, 45 * DEG_TO_RAD,

PSYS_SRC_BURST_RATE, .05,
PSYS_SRC_BURST_PART_COUNT, 10,

PSYS_SRC_BURST_SPEED_MIN, .5,
PSYS_SRC_BURST_SPEED_MAX, 1.5,

PSYS_SRC_ACCEL, <0,0,4>
// PSYS_SRC_TEXTURE, "bf3559f9-02dc-dbf8-9c7a-7bffd31c9ac6"
]);
}

key tgt;

integer nosense = 0;

integer on = 0;

integer colcheck = 1; // Checking for collision ( def true)

float end;

default
{
state_entry()
{
flame(FALSE);
}

on_rez(integer s)
{
if (s) {
llListen(s, "", NULL_KEY, "");
llSetAlpha(0, ALL_SIDES);
llListen(999999, "", NULL_KEY, (string)llGetKey());
}
}

listen(integer c, string who, key id, string msg)
{
if (c == 999999) // For extinguishers to use
llDie();

llSetBuoyancy(1.0);
llSetStatus(STATUS_ROTATE_X | STATUS_ROTATE_Y | STATUS_ROTATE_Z, FALSE);
llSetStatus(STATUS_PHYSICS, TRUE);

tgt = (key)msg;
nosense =0;
on = 0;

colcheck=1;
llSensor("flame-"+(string)tgt, NULL_KEY, ACTIVE, TWO_PI, 96);

}

no_sensor()
{
if (colcheck) {
colcheck = 0;
llSetObjectName("flame-"+(string)tgt);
end = llGetWallclock() + 30;
llResetTime();
llSleep(.05);
llSensorRepeat("", tgt, AGENT, 96, TWO_PI, .05);
return;
}

nosense++;
if (nosense > 5)
llDie();
}

sensor(integer t)
{
if (colcheck) { //Oops, got a burny assigned to them.
colcheck = 0; // does this really even matter? YES OF COURSE
llDie();
}


if (llGetWallclock() > end)
llDie();

nosense = 0;

vector h = llGetAgentSize(tgt);

vector me = llGetPos();
if (me.z <= llWater(ZERO_VECTOR)) llDie();
vector to = llDetectedPos(0) + (llDetectedVel(0) * llGetAndResetTime()) + <0,0,h.z/4>;

vector toward = (to - me);

if (llVecMag(toward) > 10) {
llMoveToTarget(me + (llVecNorm(toward)*10), .1);
} else {
llMoveToTarget(to, .1);
}

if (!on) {
if(llVecDist(llGetPos(), to) < 2) {
flame(TRUE);
llLoopSound("48db54d0-24ff-34c8-3d5d-1496c6878d34", .4);
}
}
}
}
Go to the top of the page
 
+Quote Post

Posts in this topic
aliz123   Flame thrower   Oct 16 2009, 08:36 PM


Reply to this topicStart new topic

 


> Board Footer
Time is now: 6th September 2010 - 07:48 AM