Hi Graalians,

I am Joe (leader of Les Frenchies on iEra), and today I wanna share my scripting skills.
I script in many langages like HTML/CSS, PHP/SQL, C++, JAVA and actually I am working on Android Apps.
I also learnt few years ago how to script in GS2 which haven't been hard due to my knowledge in others scripting langages.

Today, I just wanna share my Staff/Player Commands script.

So you need to add to Staff the Staff Commands weapon and by default to player, the Player Commands weapon.

Here is the Staff Commands weapon: -Staff/StaffCmd
This weapon include few commands: /warp playerId, /summon playerId, /freeze playerId, /unfreeze playerId, /gag playerId, /ungag playerId, /ani ganiName, setap apNumber, /reconnect, /tag gangName, sethat hatName, and also if you press "C" you get your coords.

PHP Code:
// Scripted by Joe
function onActionServerSide(cmdSendtokens)
{
  if(
cmdSend.starts("/summon") || cmdSend.starts("/warp") || cmdSend.starts("/freeze") || cmdSend.starts("/unfreeze") || cmdSend.starts("/gag") || cmdSend.starts("/ungag"))
  {
    for(
temp.pl allplayers){
      if(
tokens == temp.pl.substring(0,tokens.length())|| tokens == temp.pl.nick.substring(0,tokens.length()))
      {
        if (
temp.pl.level!=NULL)
        {
          
this.fnd=temp.pl;
          
temp.foundplayer.add(temp.pl);
        }
      }
    }
    if (
temp.foundplayer.size()==1){
      if (
cmdSend.starts("/summon")){
        
this.fnd.setlevel2(player.level,player.x,player.y);
        
this.fnd.unfreezeplayer();
        
updateboard(0,0,64,64);
        
this.fnd.chat="Summoned!";
      }
      if (
cmdSend.starts("/warp")){
        
setlevel2(this.fnd.level,this.fnd.x,this.fnd.y);
        
player.chat="Warped!";
      }
      if (
cmdSend.starts("/freeze")){
        
this.fnd.setlevel2(player.level,player.x,player.y);
        
this.fnd.freezeplayer2();
        
updateboard(0,0,64,64);
        
this.fnd.chat="I'm Frozen!";
      }
      if (
cmdSend.starts("/unfreeze")){
        
this.fnd.setlevel2(player.level,player.x,player.y);
        
this.fnd.unfreezeplayer();
        
updateboard(0,0,64,64);
        
this.fnd.chat="I'm unfrozen!";
      }
      if (
cmdSend.starts("/gag")){
        if(
this.fnd.clientr.player_gagged != null){
        
player.chat="This player already gagged!";
        return;
        }
        
this.fnd.chat "*Gagged*";
        
this.fnd.clientr.player_gagged=timevar2+(params[2]*60);
        
this.fnd.addweapon("-Players/PlayersCmd");
      }
      if (
cmdSend.starts("/ungag")){
        if(
this.fnd.clientr.player_gagged == null){
          
player.chat="This player isn't gagged!";
          return;
        }
        
player.chat "done.";
        
this.fnd.chat "*Ungagged by *" player.nick;
        
this.fnd.clientr.player_gagged=0;
        
this.fnd.addweapon("-Players/PlayersCmd");
      }
    }
    else if(
temp.playerfound.size==0){
      
player.chat="No Players Found!";
    }
    else{ 
player.chat="More than one player found! Check your PM for options.";
      
player.sendPM(temp.foundplayer.size() SPC "players were found:" NL temp.foundplayer NL "" NL "" NL "Tip: Be sure to type in the player's name/account as specific as possible in order to find them easier!");
    }
  }
  if(
cmdSend.starts("setap"))
  {
    
player.ap tokens[1];
  }
  if (
params[0] == "guildself")
  {
    if(
isStaffGuild(params[1]))
    {
      if(
params[1] == player.clientr.staffGuild)
      {
        
player.guild params[1];
      }
      else
      {
        
player.chat "You aren't allowed to set that tag!";
      }
    }
    else
    {
      
player.guild params[1];
    }
  }
}

function 
isStaffGuild(Plguild)
{
  
temp.guildstaff serveroptions.staffguilds.tokenize(",");
  
temp.guildstaff temp.guildstaff.upper();
  
temp.Plguild Plguild.upper();

  if(
temp.Plguild in temp.guildstaff){
    if(
temp.Plguild != "Admin")
    {
      return 
true;
    }
  }
}

//#CLIENTSIDE
function onPlayerChats(){
  if(
player.chat.starts("/warp"))
  {
    
cmdSend player.chat;
    
tokens=player.chat.substring(6);
    
triggerserver("weapon",this.name,cmdSend,tokens);
  }
  if(
player.chat.starts("/summon"))
  {
    
cmdSend player.chat;
    
tokens=player.chat.substring(8);
    
triggerserver("weapon",this.name,cmdSend,tokens);
  }
  if(
player.chat.starts("/freeze"))
  {
    
cmdSend player.chat;
    
tokens=player.chat.substring(8);
    
triggerserver("weapon",this.name,cmdSend,tokens);
  }
  if(
player.chat.starts("/unfreeze"))
  {
    
cmdSend player.chat;
    
tokens=player.chat.substring(10);
    
triggerserver("weapon",this.name,cmdSend,tokens);
  }
  if(
player.chat.starts("/gag"))
  {
    
cmdSend player.chat;
    
tokens=player.chat.tokenize();
    if(
tokens[2]<1||tokens[2]>30)return;
    
triggerserver("weapon",this.name,cmdSend,tokens[1],tokens[2]);
  }
 if(
player.chat.starts("/ungag"))
  {
    
cmdSend player.chat;
    
tokens=player.chat.tokenize();
    
triggerserver("weapon",this.name,cmdSend,tokens[1]);

  }
  if (
player.chat.starts("/ani")) {
     
tokens player.chat.tokenize();
     
setani(tokens[1],tokens[2]);
  }
  if (
player.chat.starts("setap")) {
    
cmdSend player.chat;
    
tokens player.chat.tokenize();
    
triggerserver("weapon",this.name,cmdSend,tokens);
  }
  if(
player.chat == "/reconnect") {
    
ServerWarp(ServerName);
  }
  if (
player.chat.starts("/tag ")) {
    
triggerserver("weapon"this.name"guildself"player.chat.substring(5, -1));
  }
   if (
player.chat.starts("sethat")) {
    
player.attr[1] = player.chat.substring(7);
  }
}
function 
onKeyPressed(code,key)
{
  if(
key == "c" || key == "C"){
    
player.chat player.level SPC "," SPC player.x SPC player.y;
  }

And here is the Player Commands weapon: -Players/PlayersCmd
It includes: /reconnect, showlag and if you press "A" you grab.

PHP Code:
function onActionServerSide(cmd
{
  if(
cmd == "showlag"){
    
getPing();
  } 
  if(
cmd == "checkGag"){
    if (
player.clientr.player_gagged timevar2) {
     
temp.msg formattimestring("Timers Remain Gagged: %M Min's %S Sec's",player.clientr.player_gagged timevar2);
     
player.chat=temp.msg;
     return;
    }
     
player.clientr.player_gagged 0;
  }
}

function 
getPing() {
  
temp.obj player.sendping();
  
this.catchevent(obj"onReceivePing""onGPingReply");
}

function 
onGPingReply(objplyrtime) {
  
plyr.chat int(time 1000) @ "ms";
}


//#CLIENTSIDE

function onKeyPressed(code,key)
{
  if(
key == "a" || key == "A"){
    
setAni("grab"NULL);
  }
}
function 
onPlayerChats() {
  if(
player.chat == "/reconnect") {
    
ServerWarp(ServerName);
    
player.chat "";
  }
  if(
player.chat == "showlag"){
    
triggerserver("weapon"this.name"showlag");
  }
  if (
clientr.player_gagged != null) {
        
player.chat "*Gagged*";
        
triggerserver("weapon"this.name"checkGag""");
        return 
true;
      }

Well, I hope you understood everything but if you have any questions about that script or just about scripting, don't hesitate to ask, I'll do my best to help you.

See you Graalians!