View Single Post
  #1  
Old 12-02-2009, 02:23 AM
Codein Codein is offline
jwd
Codein's Avatar
Join Date: Oct 2005
Location: Greater Manchester
Posts: 2,423
Codein has a spectacular aura aboutCodein has a spectacular aura about
Send a message via AIM to Codein Send a message via MSN to Codein
Global Trigger Weapons

Why?

I admit, it's rather simple but if you ever run into needing something like this then atleast you won't have to reinvent the wheel :P

Serverside Global Weapon Trigger

Methods:
void GlobalEvents.triggerAll( string eventName, array parameters[] );
This triggers an event on every weapon serverside. GlobalEvents should be replaced by your NPC name.

PHP Code:
function onCreated() {
  
//IMPORTANT - ASSIGN THE PERCENTSIGN
  
temp.percentSymbol = "percent";

  
this.weapons = NULL;
  
  
temp.charMap = {
                  {
temp.percentSymbol @ "045", "-"},
                  {
temp.percentSymbol @ "042", "*"},
                  {
temp.percentSymbol @ "047", "/"},
                  {
temp.percentSymbol @ "032", " "}
                 }; 
  
  
temp.weaponsFolder.loadfolder("weapons/*.txt", 1);
  
  for (
temp.weapon: temp.weaponsFolder) {
    
temp.weapon = temp.weapon.substring( 6 );
    
    for ( 
temp.char: temp.charMap )
      
temp.weapon = replacetext( temp.weapon, temp.char[0], temp.char[1] );
   
    
this.weapons.add( temp.weapon.substring( 0, temp.weapon.length() - 4 ) );
  }
}

public function 
triggerAll( eventName, parameters ) {
  for ( 
temp.weapon: this.weapons ) {
    ( @ 
temp.weapon ).trigger( eventName, parameters[0], parameters[1], parameters[2], parameters[3], parameters[4], parameters[5], parameters[6], parameters[7], parameters[8], parameters[9] );
  }
}

//Thanks to Dusty
function replacetext(txt,a,b) {
  if (
txt.pos(a)<0) return txt;
  
temp.txtpos = txt.positions(a);
  
temp.newtxt = txt.substring(0,txtpos[0]);
  for (
temp.i=0;i<txtpos.size();i++) {
    
newtxt @= b;
    
newtxt @= txt.substring(txtpos[i]+a.length(),txt.substring(txtpos[i]+a.length()).pos(a));
  }
  return 
newtxt;
} 
Clientside Global Weapon Trigger

Same syntax as serverside. This is actually rather simple but it's one less tediuous task for yourself

PHP Code:
function onPlayerLogin( pl ) {
  
findPlayer( pl ).addWeapon( this.name );
}

//#CLIENTSIDE

function onCreated() {
  
GlobalEvents = this;
}

public function 
triggerAll( eventName, parameters ) {
   for ( 
temp.weapon: player.weapons ) {
    
temp.weapon.trigger( eventName, parameters[0], parameters[1], parameters[2], parameters[3], parameters[4], parameters[5], parameters[6], parameters[7], parameters[8], parameters[9] );
  }
} 
I'll be posting the functionality for NPCs soon - I should have been working on an Events System instead of this, haha.

Thanks for reading!
Reply With Quote