Graal Forums  

Go Back   Graal Forums > Development Forums > NPC Scripting > Code Gallery
FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 04-11-2011, 04:56 PM
Crow Crow is offline
ǝɔɐɹq ʎןɹnɔ
Crow's Avatar
Join Date: Dec 2006
Location: Germany
Posts: 5,153
Crow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond repute
Very awesome staff "panel"

So, Emera's thread reminded me I wanted to release my little staff tool to you guys. Here you go!


The idea and design is a blatant rip off of the tool Era (used to?) use, sorry guys It looks a little cooler, though, and is full of awesome. You can add new items to the tool easily without even really touching the main portion of the code. First off, here's the code:

PHP Code:
//#CLIENTSIDE
function onCreated() {  
  
// staff tool stuff
  
this.toolOn false;
  
this.toolIdx 0;
  
  
// add new items here
  
this.toolEntries = {
    { 
"Exit""block.png" },
    { 
"Update Level""block.png" }
  };
}

// draw the staff tool
function DrawTool(create) {
  
// create image objects
  
if (create) {
    
// background
    
temp.GraalControl.width this.toolEntries.size() * 20;
    
temp.GetPolyRect(temp.xGraalControl.height 104this.toolEntries.size() * 4064);
    
with (findImg(200)) {
      
polygon temp.p;
      
red green blue 0;
      
alpha 0.75mode 1;
      
layer 5;
    }
    
    
// text
    
with (findImg(201)) {
      
temp.8;
      
GraalControl.height 58;
      
text thiso.toolEntries[thiso.toolIdx][0];
      
font "Arial"zoom 0.5;
      
red green blue 1;
      
layer 6;
    }
    
    
// icons
    
for (temp.0this.toolEntries.size(); i++) {
      
with (findImg(202 i)) {
        
temp.40;
        
GraalControl.height 96;
        
image thiso.toolEntries[i][1];
        
partx party 0;
        
partw parth 32;
        
alpha 0.5mode 1;
        
layer 6;
      }
    }
  }
  
  
// update text & alpha
  
findImg(201).text this.toolEntries[this.toolIdx][0];
  
  
temp.ci this.toolIdx// current tool
  
temp.li = (ci ci this.toolEntries.size() - 1); // last tool
  
findImg(202 ci).alpha 1;
  
findImg(202 li).alpha 0.5;
}

// reposition the staff tool when resizing Graal
function GraalControl.onResize(nwnh) {
  if (!
this.toolOn)
    return;
  
  
DrawTool(true);
}

// keyboard stuff
function GraalControl.onKeyDown(code) {
  if (
code == 69) { // E
    
if (!this.toolOn) {
      
this.toolOn  true;
      
this.toolIdx 0;
      
      
DrawTool(true);
    } else {
      
this.toolIdx++;
      
this.toolIdx %= this.toolEntries.size() - 1;

      
DrawTool(false);
    }
  } elseif (
code == 87) { // W
    
if (!this.toolOn)
      return;
    
    
temp.ReplaceText(this.toolEntries[this.toolIdx][0].upper(), " ""_");
    (
"StaffTool" temp.f)();
  }
}


// close staff tool
function StaffToolEXIT() {
  
this.toolOn false;
  
hideImgs(200201 this.toolEntries.size());
}

// update level
function StaffToolUPDATE_LEVEL() {
  
shared.chat("");
  
sleep(0.05);
  
shared.chat("update level");
}


// Dusty's, restyled
function ReplaceText(txtab) {
  if (
txt.pos(a) < 0)
    return 
txt;
  
  
temp.len a.length();
  
temp.txtpos txt.positions(a);
  
temp.newtxt txt.substring(0txtpos[0]);
  
  for (
temp.itemp.txtpos) {
    
temp.txt.substring(temp.len).pos(a);
    
temp.newtxt @= b
    
temp.newtxt @= txt.substring(temp.lentemp.p); 
  }
  
  return 
temp.newtxt
}

// Crow's :3
function GetPolyRect(xywh)
  return { 
xywywhx}; 

To use it, press E to open the menu and scroll through the items, then W to "use" the highlighted item.

To add more items, just edit the this.toolEntries array in the onCreated() event and also add a function for your new item. Functions are prefixed with "StaffTool" and then the name of the item is added, with all upper case and spaces replaced with underscores. So if your item's name is "Do some crazy StUfF", the function that's being called is StaffToolDO_SOME_CRAZY_STUFF.

Second entry in the item arrays is the icon; change if you want to.


This should run just fine, but it was "dry-stripped" (didn't test it) from an existing system that is way bigger than just this stuff. Report any problems, pretty please.

End product can look like this:
Click image for larger version

Name:	stafftool.jpg
Views:	450
Size:	18.0 KB
ID:	52689


Enjoy! <3
__________________

Last edited by Crow; 04-11-2011 at 05:24 PM..
Reply With Quote
  #2  
Old 04-11-2011, 05:35 PM
Emera Emera is offline
Delterian Hybrid
Emera's Avatar
Join Date: Mar 2011
Location: Newcastle Upon-Tyne
Posts: 1,704
Emera is a jewel in the roughEmera is a jewel in the rough
Ah good ol crow
__________________
Reply With Quote
  #3  
Old 04-11-2011, 09:43 PM
xAndrewx xAndrewx is offline
Registered User
xAndrewx's Avatar
Join Date: Sep 2004
Posts: 5,260
xAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud of
yes big rip o_o gj skyld / [crow?]
__________________
Reply With Quote
  #4  
Old 04-11-2011, 09:47 PM
Crow Crow is offline
ǝɔɐɹq ʎןɹnɔ
Crow's Avatar
Join Date: Dec 2006
Location: Germany
Posts: 5,153
Crow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond repute
Quote:
Originally Posted by xAndrewx View Post
yes big rip o_o gj skyld / [crow?]
Just the idea was taken Was the one on Era actually as easily expandable? I can't remember.
__________________
Reply With Quote
  #5  
Old 04-11-2011, 09:57 PM
xAndrewx xAndrewx is offline
Registered User
xAndrewx's Avatar
Join Date: Sep 2004
Posts: 5,260
xAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud of
Yeah
HTML Code:
  this.tools = {
    {"Exit", "exit", "era_tool-exit.png", "Close tool"},
    {"Staff Stick", "staffstick", "era_icon-staffstick.png", "Destroys NPCs and unsticks players"},
    {"Staff Boomerang", "staffboomerang", "era_icon-staffrang.png", "Destroys NPCs and unsticks players"},
//    {"Staff Block", "staffblock", "era_staffblock.png", "Places staff blocks"},
    {"Staff Boots", "staffboots", "wboots.png", "Say 'Setspeed #'. Walk speed: 'setwalkspeed #'."},
    {"Unstick Me", "unstick", "era_icon-globe-hallow.png", "Go to Unstick me"},
    {"Stealth", "stealth", "block.png", "Turns you invisible"},
    {"Drag", "drag", "block.png", "Drags players"},
    {"Staff Tag", "stafftag", "era_icon-cashmoneys.png", "Adds your staff tag"},
    //{"Staff Chat", "staffchat", "block.png", "Shows staff chat"}
  };
lol it looks nicer though [yours]
__________________
Reply With Quote
  #6  
Old 04-11-2011, 10:00 PM
cbk1994 cbk1994 is offline
the fake one
cbk1994's Avatar
Join Date: Mar 2003
Location: San Francisco
Posts: 10,718
cbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond repute
Send a message via AIM to cbk1994
I can't stand your function name capitalization...why??? Nice release though.

Also, you should probably just use VK_E instead of checking the key code directly.
__________________
Reply With Quote
  #7  
Old 04-11-2011, 10:29 PM
Crow Crow is offline
ǝɔɐɹq ʎןɹnɔ
Crow's Avatar
Join Date: Dec 2006
Location: Germany
Posts: 5,153
Crow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond repute
Quote:
Originally Posted by cbk1994 View Post
I can't stand your function name capitalization...why??? Nice release though.
What exactly don't you like? Thanks!


Quote:
Originally Posted by cbk1994 View Post
Also, you should probably just use VK_E instead of checking the key code directly.
That exists?! Is there a list of all constants like those somewhere? I thought Graal didn't have these.
__________________
Reply With Quote
  #8  
Old 04-11-2011, 10:36 PM
cbk1994 cbk1994 is offline
the fake one
cbk1994's Avatar
Join Date: Mar 2003
Location: San Francisco
Posts: 10,718
cbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond reputecbk1994 has a reputation beyond repute
Send a message via AIM to cbk1994
Quote:
Originally Posted by Crow View Post
What exactly don't you like?
I'm used to using upper case first letter for object/class names and a lowercase first letter for methods like in Java.

Quote:
That exists?! Is there a list of all constants like those somewhere? I thought Graal didn't have these.
It exists, but I don't know of any documentation. We just found out about it recently. Gotta love GScript.

Quote:
Originally Posted by Stefan View Post
It has been added more than 3 years ago x-x
Additionally to the normal VK_ defines it also provides VK_A, .. VK_Z (value is the same as 'a' ... 'z')
__________________
Reply With Quote
  #9  
Old 04-11-2011, 10:55 PM
Crow Crow is offline
ǝɔɐɹq ʎןɹnɔ
Crow's Avatar
Join Date: Dec 2006
Location: Germany
Posts: 5,153
Crow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond repute
Quote:
Originally Posted by cbk1994 View Post
I'm used to using upper case first letter for object/class names and a lowercase first letter for methods like in Java.
Well, it's all about preference I guess. I got used to upper case for my own functions and lower case for Graal's. Not sure why, but it works nicely.

Also, GScript really needs some solid documentation.
__________________
Reply With Quote
  #10  
Old 04-11-2011, 11:10 PM
PowerProNL PowerProNL is offline
Retired Zone Manager
PowerProNL's Avatar
Join Date: Feb 2008
Location: Holland
Posts: 266
PowerProNL can only hope to improve
Send a message via AIM to PowerProNL
You must spread some Reputation around before giving it to Crow again.
__________________
Graal Mail: [email protected]
McPowerProNL, I'm loving it
Reply With Quote
  #11  
Old 04-12-2011, 07:14 AM
Demisis_P2P Demisis_P2P is offline
Kanto League Champion
Demisis_P2P's Avatar
Join Date: Jan 2005
Posts: 2,357
Demisis_P2P has much to be proud ofDemisis_P2P has much to be proud ofDemisis_P2P has much to be proud ofDemisis_P2P has much to be proud ofDemisis_P2P has much to be proud ofDemisis_P2P has much to be proud ofDemisis_P2P has much to be proud of
Quote:
Originally Posted by Crow View Post
Also, GScript really needs some solid documentation.
Maybe when GS3 comes out. Stefan's added way too much stuff to GS2 that nobody knows about to start documenting it now.
__________________
Reply With Quote
  #12  
Old 04-12-2011, 09:57 AM
Crow Crow is offline
ǝɔɐɹq ʎןɹnɔ
Crow's Avatar
Join Date: Dec 2006
Location: Germany
Posts: 5,153
Crow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond reputeCrow has a reputation beyond repute
Quote:
Originally Posted by Demisis_P2P View Post
Maybe when GS3 comes out. Stefan's added way too much stuff to GS2 that nobody knows about to start documenting it now.
The sole purpose of GS3 would probably be the documentation.
__________________
Reply With Quote
  #13  
Old 04-12-2011, 05:29 PM
Emera Emera is offline
Delterian Hybrid
Emera's Avatar
Join Date: Mar 2011
Location: Newcastle Upon-Tyne
Posts: 1,704
Emera is a jewel in the roughEmera is a jewel in the rough
Gs3???!!!??
__________________
Reply With Quote
  #14  
Old 04-12-2011, 10:13 PM
Devil_Lord2 Devil_Lord2 is offline
David K?
Devil_Lord2's Avatar
Join Date: Apr 2011
Location: PA, MD.
Posts: 643
Devil_Lord2 can only hope to improve
Quote:
Originally Posted by Crow View Post
The sole purpose of GS3 would probably be the documentation.
I hopes so >.>,
And I hope it explains better than commands.txt and bible..
That would be awesome :]
__________________

Digital Media Artist - David K? </3 (UnLoved)
www.davidkrout.com
www.twitch.com/DavidKkz



Reply With Quote
  #15  
Old 07-19-2011, 06:36 PM
fatcat123 fatcat123 is offline
Levels Artist
fatcat123's Avatar
Join Date: Aug 2010
Location: Wisconsin
Posts: 70
fatcat123 is an unknown quantity at this point
I love this.

Although, when I die, I cannot figure out why the black GUI disappears and all I see is the wording of the staff tool name in white font.
Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 01:52 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2022, vBulletin Solutions Inc.
Copyright (C) 1998-2019 Toonslab All Rights Reserved.