http://wiki.graal.us/
|
|
Join Date: Nov 2001
Posts: 2,247
|
|
I added code so when somebody shoots a rocket, all players with the weapon can see them. The colors and burst shape might be different, but the trajectory should be the same for everybody.
PHP Code:
//NPC Created by Rogue Shadow(TCN)
//AIM: RogueTCN
function onCreated(){
join("public_inverness_util_triggercontrol2");
}
function FireAll( nx, ny, vx, vy, img) {
for (temp.pl: level.players ){
with (temp.pl){
makevar("Public/adam/Fireworks").FireRocket( temp.nx, temp.ny, temp.vx, temp.vy, temp.img);
}
}
}
public function FireRocket( nx, ny, vx, vy, img ){
callclient(-1, "AddRocket2", temp.nx, temp.ny, temp.vx, temp.vy, temp.img);
}
//#CLIENTSIDE
function onCreated(){
this.rockets = new[0];
this.bursts = new[0];
this.trails = new[0];
this.grav = 0.1;
}
function onWeaponFired(){
callserver(-1, "FireAll", player.x+1.5 + vecx(player.dir)*2, player.y + 2 + vecy(player.dir)*2, random(-.5,.5),-random(1.5,2.5));
}
function onTimeout(){
for (temp.i=0;temp.i<this.rockets.size();temp.i++){
AddTrail(this.rockets[temp.i].x-.5,this.rockets[temp.i].y,this.rockets[temp.i].vx,this.rockets[temp.i].vy);
if (this.rockets[temp.i].t > this.rockets[temp.i].ttl){
AddBurst(this.rockets[temp.i].x,this.rockets[temp.i].y,160);
}
}
this.rockets = UpdateEverything(this.rockets);
this.bursts = UpdateEverything(this.bursts);
this.trails = UpdateEverything(this.trails);
temp.img = DrawParticle(200,this.rockets);
temp.img = DrawParticle(temp.img,this.bursts);
temp.img = DrawParticle(temp.img,this.trails);
if (temp.img < this.lastimg)hideimgs(temp.img,this.lastimg);
this.lastimg = temp.img;
//if (temp.img > 200)player.chat = "Drawing "@(temp.img-200)@" showimg Particles";
settimer(0.05);
}
function UpdateEverything(temp.objs){
for (temp.i = 0;temp.i < temp.objs.size() ; temp.i++ ){
if (temp.objs[temp.i].t > temp.objs[temp.i].ttl){
temp.objs.delete(temp.i);
}
}
for (temp.r: temp.objs){
temp.r.vy += this.grav;
temp.r.x += temp.r.vx;
temp.r.y += temp.r.vy;
temp.r.t ++;
}
return temp.objs;
}
function DrawParticle(temp.img,temp.p){
for (temp.r: temp.p){
if (temp.r.alpha){
temp.a = 1-(temp.r.t/temp.r.ttl);
}else temp.a = 1;
temp.j = showimg(temp.img,r.image,temp.r.x,temp.r.y);
changeimgcolors(temp.img,r.rgb[0],r.rgb[1],r.rgb[2],temp.a);
changeimgzoom(temp.img,r.zoom);
if (r.rotation){
temp.rot = getangle(r.vx,r.vy)+pi/2;
with (temp.j)rotation = temp.rot;
}
if (r.spin){
with (temp.j)rotation += temp.r.spin_spd;
}
temp.img++;
}
return temp.img;
}
function AddBurst(nx,ny,num){
temp.kind = int(random(0,1)+.5);
temp.rgb = {random(0,1),random(0,1),random(0,1)};
temp.color = random(0,1);
for (temp.j=0;temp.j < num;temp.j++){
temp.i = new TStaticVar();
temp.i.image = "g4_particle_x.png";
if (temp.kind == 1)temp.spd = random(.1,.8);
else temp.spd = (temp.j%2=1) ? .2:.3;
temp.i.zoom = .6;
temp.i.vx = sin(temp.ang)*temp.spd;
if (temp.kind == 0)temp.i.vy = cos(temp.ang)*temp.spd*.4 -.7; else temp.i.vy = cos(temp.ang)*temp.spd -.7;
temp.ang+=0.1;
temp.i.x = nx;
temp.i.y = ny;
temp.i.ttl = 30;
temp.i.t = 0;
temp.i.rgb = (temp.color<.1) ? {random(0,1),random(0,1),random(0,1)}:temp.rgb;
temp.i.alpha = true;
temp.i.i=this.bursts.size();
temp.i.spin = true;
temp.i.spin_spd = random(-.5,.5);
this.bursts.add(temp.i);
}
play("fireworks_explode.wav");
}
function AddRocket2(nx, ny, vx, vy, img){
temp.r = new TStaticVar();
if (temp.img == null)temp.r.image = "np_barrel.png";
else temp.r.image = temp.img;
temp.r.x = nx;
temp.r.zoom = .7;
temp.r.y = ny;
temp.r.vx = temp.vx;
temp.r.vy = temp.vy;
temp.r.ttl = 30;
temp.r.t = 0;
temp.r.rgb = {1,1,1};
temp.r.rotation = true;
temp.r.alpha = false;
temp.r.i = this.rockets.size();
this.rockets.add(temp.r);
play("fireworks_launch.wav");
settimer(0.05);
}
function AddRocket(nx,ny){
temp.r = new TStaticVar();
temp.r.image = "np_barrel.png";
temp.r.x = nx;
temp.r.zoom = .7;
temp.r.y = ny;
temp.r.vx = random(-.5,.5);
temp.r.vy = -random(2,3);
temp.r.ttl = 30;
temp.r.t = 0;
temp.r.rgb = {1,1,1};
temp.r.rotation = true;
temp.r.alpha = false;
temp.r.i = this.rockets.size();
this.rockets.add(temp.r);
play("fireworks_launch.wav");
settimer(0.05);
}
function AddTrail(nx,ny,vx,vy){
temp.r = new TStaticVar();
temp.r.x = nx;
temp.r.y = ny;
temp.r.vy = -random(.1,.5);
temp.r.vx = -random(.1,.5);
temp.r.ttl = 10;
temp.r.t = 0;
temp.r.rgb = {1,1,1};
temp.r.alpha = true;
temp.r.spin = true;
temp.r.spin_spd = (random(0,1)>.5) ? -.6:.6;
temp.r.zoom = .7;
temp.r.image = "g4_particle_smoke.png";
temp.r.i = this.trails.size();
this.trails.add(temp.r);
}
|
__________________
Rogue Shadow (TCN)(NAT)(Global Development Team)
For development help, contact the patrons of the #graaldt irc channel below, I am usually there.
Click Here to Join IRC Chat Now! -- irc.freenode.net Channel: #graaldt
Quote:
<Dustyshouri> no, RogueShadow is always talking about scripts lol
<Dustyshouri> in fact, he pretty much brought Graal back as a topic single-handedly
|
|
|