Graal Forums  

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

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 08-23-2010, 03:19 PM
adam adam is offline
http://wiki.graal.us/
adam's Avatar
Join Date: Nov 2001
Posts: 2,247
adam has a spectacular aura aboutadam has a spectacular aura about
Send a message via AIM to adam
Preview: Text Animations

Some code to animate text on the screen prettily, This is just a prototype version though. It's not fully done yet.



PHP Code:
//NPC Created by Rogue Shadow (TCN)
//AIM: RogueTCN
//FORUM PM: adam
// Special messaging prototype 2

//#CLIENTSIDE

// Actions 
//   { "doFade" , time , value 0-1 }
//   { "doMove" , time , new x , new y }
//   { "doZoom" , time , value } - 0 doesn't seem to be a good value for zoom on the text, didn't test in opengl mode yet.
//   { "doDelay", time , value } delays by the specified amount of time.
//   { "NewText" , time , value } instantly changes text, the border sizes follow
// Planned Actions
//   { "doTextColor" , time , {red, green, blue} } - transition from current color to new one smoothly over time.
//   { "doBgColor" , time , {red, green, blue} } - transition from current color to new one smoothly over time. 
//   { "doOutlineColor" , time , {red, green, blue} } - transition from current color to new one smoothly over time.
//   { "doDestruct" } - yeah... almost forgot this feature. The text will go away soon (but not right away) after you delete it's variable
//                      But this will do it right, when added.

// While I'd love to add rotation, it is beyond difficult o.O and insanely complex, 
// unless the methods i've thought of are wrong.


function onCreated(){
  
this.join("personal_adam_anitext");
  
this.msg2 = newText(this, 300, screenwidth/3, screenheight+10, "This is some great Testing text.", 1, null, true);
  
this.msg2.addActions( { {"doMove", 2, screenwidth/3,screenheight/3},{"doFade",2,1},{"doZoom", 2,5}});
  
this.msg2.addActions( { {"doZoom", 2, 1} });
  
this.msg2.addActions( { {"doDelay", 1}});
  
this.msg2.addActions( { {"NewText", "I'm off now, cya."},{"doDelay", 2} });
  
this.msg2.addActions( { {"doMove", 1, screenwidth, screenheight/3},{"doFade",2,0},{"doZoom", 2,.1}});
  
this.msg2.addActions( {{ "doFade", 1, 1} ,{"doZoom", 1, .1}} );
  
this.msg2.addActions( {{"doMove", 1, screenwidth/3,screenheight/3}});
  
this.msg2.addActions( {{"doFade", 5, 0} ,  {"doZoom", 5, 1.5}, {"doDelay", 10}});
  for (
temp.i = 0; temp.i < 10; temp.i ++ ){
    
this.msg2.addActions ( { {"doMove", 2, random(0,screenwidth-10),random(0,screenheight-10) },{"doFade", 2, random(.2,1)},{"doZoom", 2, random(.1,4)} } );
    
this.msg2.addActions ( {{"doFade", .5, 0}});this.msg2.addActions({{"NewText", "Action: " @ temp.i+1 @" of 10"},{"doFade",.5,1}});
  }
  
this.msg2.start();
} 
And the class.
PHP Code:
//#CLIENTSIDE

function newText(temp.scope, temp.start_i, temp.x, temp.y, temp.text, temp.zoomFactor, temp.textColor, temp.useBackground, temp.bgColor, temp.bgPadding, temp.borderColor, temp.borderThickness){
  
// Various Declarations to start with.
  
temp.t = new TStaticVar(); // All contained in a single TStaticVar (which is basically a whole script within a script, there are other ways, but this one is fun too.)
  
temp.t.global = temp.scope; // Saving the scope seems to make it easier to do things like, draw images, and access other things from within the script here.
  
temp.t.start_i = temp.start_i; // The index we start drawing from, incrementing until we're done drawing things.
  
temp.t.x = temp.x; temp.t.y = temp.y; // x,y position of the top-left corner of the text. The actual image drawn will extend beyond this by the amount of temp.bgPadding and the borderThickness
  
temp.t.textColor = (temp.textColor != null) ? temp.textColor:{1,1,1}; temp.t.alpha = 0; // Default color white, alpha starts at 0 (suggesting Fading in whenever possible)
  
temp.t.layer = 10*temp.start_i; // layer 10 times the drawing index, to allow overlapping text rather than smooshing together text.
  
temp.t.font = "Comic Sans MS"; temp.t.style = ""; // Default font and style here.
  
temp.t.zoom = (temp.zoomFactor != null) ? temp.zoomFactor:1; // default zoom of 1, or what you select.
  
temp.t.text = temp.text; // save that text
  
temp.t.width = gettextwidth(temp.t.zoom, temp.t.font, "", temp.t.text); // initial width/height,   recalculated on zoom always
  
temp.t.height = gettextheight(temp.t.zoom, temp.t.font, "");
  
temp.t.queue = {};
  if (
temp.useBackground != null){    
    
temp.t.background = useBackground;   // if were using the background
    
temp.t.bgPadding = (temp.bgPadding != null) ? temp.bgPadding:2; // how far the background extends beyond the text itself
    
temp.t.borderThickness = (temp.borderThickness != null) ? temp.borderThickness:2; // the thickness of the backgrounds outline
    
temp.t.bgColor = (temp.bgColor != null) ? temp.bgColor:{0,0,0}; // it's color, default black
    
temp.t.borderColor = (temp.borderColor != null) ? temp.borderColor:{1,1,1};
  }
  
  
temp.t.start = function () {
    
this.started = true;
    
this.onUpdate();
  };
  
  
temp.t.stop = function () {
    
this.started = false;
  };
  
  
temp.t.addActions = function ( temp.actions ) {
    
this.queue.add( temp.actions );
    
this.count++;
  };

  
temp.t.onUpdate = function () {
    if (!
this.started)return;
      for (
temp.action: this.queue[0]){
        if (
temp.action[0] in {"doZoom", "doMove", "doFade", "doDelay"}){
          if (
this.(@temp.action[0])(temp.action))this.garbage.add(temp.action);
        }elseif(
temp.action[0] == "NewText"){
      
this.NewText(temp.action[1]); this.garbage.add(temp.action);
      }else 
this.garbage.add(temp.action);
    }


    for (
temp.g: this.garbage){
      for (
temp.i = 0; temp.i < this.queue[0].size(); temp.i++){
       if (
temp.g[0] == this.queue[0][temp.i][0]){
          
this.queue[0].delete(temp.i);
          break;
        }
      }
    }
    
this.garbage = "";
    if (
this.queue[0].size() == 0 && this.queue.size() > 0){
      
this.queue.delete(0);
      
//echo("Completed actions, moving to next set.");
    
}
    
this.draw();
    
//this.cancelevents("Update");
    
this.scheduleevent(0.05, "Update", null);
  };

  
temp.t.doFade = function (action) {
    
temp.time = temp.action[1];
    
temp.newAlpha = temp.action[2];
    if (
this.fadeDist == null) {
      
this.fadeDist = temp.newAlpha - this.alpha;
      
this.fadeStep = this.fadeDist/(temp.time*20);
    }
    if (
abs(temp.newAlpha - this.alpha) <= this.fadeStep){
      
this.alpha = temp.newAlpha;
    }else 
this.alpha += this.fadeStep;

    if (
this.alpha == temp.newAlpha){
      
this.fadeDist = null;
      
this.fadeStep = null;
      return 
true;
    }else return 
false;
  };

  
temp.t.doDelay = function (action) {
    
temp.time = int(temp.action[1]*100)/100;
    if (
this.delayTime == null){
      
this.delayTime = temp.time;
    }
    
this.delayTime -= .05;
    if (
this.delayTime <= 0){
      
this.delayTime = null;
      return 
true;
    }else return 
false;
  };
  
  
temp.t.doZoom = function (action) {
    
temp.time = int(temp.action[1]*100)/100;
    
temp.newZoom = int(temp.action[2]*100)/100;
    if (
this.zoomDist == null) {
      
this.zoomDist = temp.newZoom - this.zoom;
      
this.zoomStep = (this.zoomDist*.05)/(temp.time);
    }
    if (
abs(temp.newZoom - this.zoom) <= this.zoomStep){
      
this.zoom = temp.newZoom;
    }else 
this.zoom += this.zoomStep;
    
    
this.NewText(this.text);
    if (
this.zoom == temp.newZoom){
      
this.zoomDist = null;
      
this.zoomStep = null;
      return 
true;
    }else return 
false;
  }; 
  
  
temp.t.doMove = function (action) {
    
temp.time = int(temp.action[1]*100)/100;
    
temp.newx = int(temp.action[2]);
    
temp.newy = int(temp.action[3]);
    if (
this.moveStep == null){
      
temp.dx = temp.newx - this.x;
      
temp.dy = temp.newy - this.y;
      
temp.dist = (temp.dx^2 + temp.dy ^2)^.5;
      
temp.addx = (temp.dx/temp.dist)*(temp.dist*.05/temp.time);
      
temp.addy = (temp.dy/temp.dist)*(temp.dist*.05/temp.time);
      
this.moveStep = {temp.addx, temp.addy};
    }

    if (
abs(temp.newx - this.x) <= this.moveStep[0]){
      
this.x = temp.newx;
    }else 
this.x += this.moveStep[0];
    
    if (
abs(temp.newy - this.y) <= this.moveStep[1]){
      
this.y = temp.newy;
    }else 
this.y += this.moveStep[1];
    
    if (
this.x == temp.newx && this.y == temp.newy){
      
this.moveStep = null;
      return 
true;
    }else return 
false;
  };

  
temp.t.NewText = function (newText) {
    
this.text = temp.newText;
    
this.width = gettextwidth(this.zoom, this.font, "", this.text); 
    
this.height = gettextheight(this.zoom, this.font, "");
  };

  
temp.t.draw = function (){
    
temp.i = this.start_i;
    
with (this.global.findimg(temp.i)){
      
x = thiso.x;  y = thiso.y;
      
text = thiso.text;
      
red = thiso.textColor[0];  green = thiso.textColor[1];  blue = thiso.textColor[2];
      
zoom = thiso.zoom;
      
font = thiso.font; style = thiso.style;
      
layer = thiso.layer;
      
alpha = thiso.alpha;
      
mode = 1;
    }
    
temp.i++;
    if (!
this.background) return temp.i;
    
with (this.global.findimg(temp.i)){
      
temp.xx=thiso.x;temp.yy=thiso.y;temp.w=thiso.width;temp.h=thiso.height;temp.p=thiso.bgPadding;
      
polygon = {xx-p,yy-p,
                 
xx+w+p,yy-p,
                 
xx+w+p,yy+h+p,
                 
xx-p,yy+h+p};
      
temp.p2 = temp.p+thiso.borderThickness;
      
temp.poly2 = {xx-p2,yy-p2,
                 
xx+w+p2,yy-p2,
                 
xx+w+p2,yy+h+p2,
                 
xx-p2,yy+h+p2};

                 
      
layer = thiso.layer - 1;
      
red = thiso.bgColor[0]; green = thiso.bgColor[1]; blue = thiso.bgColor[2];
      
alpha = thiso.alpha; mode = 1;
    }
    
temp.i++;
    
with (this.global.findimg(temp.i)){
      
polygon = temp.poly2;
      
layer = thiso.layer -2;
      
red = thiso.borderColor[0]; green = thiso.borderColor[1]; blue = thiso.borderColor[2];
      
alpha = thiso.alpha; mode = 1;
    }
    
temp.i++;
    
this.lasti = temp.i;
    return 
temp.i;
  };
 
  return 
temp.t;
} 
__________________
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
Reply With Quote
  #2  
Old 08-23-2010, 03:24 PM
Soala Soala is offline
Ideas on Fire
Soala's Avatar
Join Date: Jun 2007
Location: In my head
Posts: 3,208
Soala is a jewel in the roughSoala is a jewel in the rough
fun
Reply With Quote
  #3  
Old 08-23-2010, 03:25 PM
adam adam is offline
http://wiki.graal.us/
adam's Avatar
Join Date: Nov 2001
Posts: 2,247
adam has a spectacular aura aboutadam has a spectacular aura about
Send a message via AIM to adam
Hehe, reached the max text allowed in a post.

If you try it out, if you can, use opengl mode. It'll let the alpha work properly on the text at all zoom levels, and zooming will be much smoother.
__________________
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
Reply With Quote
  #4  
Old 08-23-2010, 04:33 PM
Dnegel Dnegel is offline
Rjax Shizibz
Join Date: Jul 2009
Posts: 1,334
Dnegel will become famous soon enough
Wow, it looks pretty nice.
Reply With Quote
  #5  
Old 08-23-2010, 07:00 PM
adam adam is offline
http://wiki.graal.us/
adam's Avatar
Join Date: Nov 2001
Posts: 2,247
adam has a spectacular aura aboutadam has a spectacular aura about
Send a message via AIM to adam
Large improvements already.
__________________
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
Reply With Quote
  #6  
Old 08-23-2010, 07:40 PM
Fulg0reSama Fulg0reSama is offline
Extrinsical Anomaly
Fulg0reSama's Avatar
Join Date: Sep 2009
Location: Ohio
Posts: 3,049
Fulg0reSama has a brilliant futureFulg0reSama has a brilliant futureFulg0reSama has a brilliant futureFulg0reSama has a brilliant futureFulg0reSama has a brilliant futureFulg0reSama has a brilliant futureFulg0reSama has a brilliant futureFulg0reSama has a brilliant future
this would work very nicely for some advanced NPC dialogue system.
__________________

Careful, thoughts and opinions here scare people.
Reply With Quote
  #7  
Old 08-23-2010, 07:54 PM
adam adam is offline
http://wiki.graal.us/
adam's Avatar
Join Date: Nov 2001
Posts: 2,247
adam has a spectacular aura aboutadam has a spectacular aura about
Send a message via AIM to adam
Live Demo: Testbed Server Weapon: Shared/AniTextDemo
Alternate Demo: Repeats player's chat, showing it on the bottom of the screen. Weapon: Public/adam/AniText
If somebody could try it in opengl mode, and with v6 and tell me how it performs that'd be great. Remember it's my birthday, do it.

Sorry no video this time, wasn't ready to do another one of those o.O
Still a few things to add, but just about every animation possible is added now.
The demo script wasn't meant to be pretty, just randomly animates everything possible. Although it is fun to watch. I suggest trying it out in opengl mode if you can, if you run V6 please let me know how it works too.

PHP Code:
//NPC Created by Rogue Shadow (TCN)
//AIM: RogueTCN
//FORUM PM: adam
// Special messaging prototype 4

//#CLIENTSIDE

// Actions format {"var", time, newvalue}
// string these blocks together for simultanous actions
// add them in succession for sequences.
// or any combination thereof
function onCreated(){
  
this.join("personal_adam_anitext");
  
sleep(.01);// class seems to need just a moment.
  
this.m = newText(this, 200, screenwidth/3, screenheight/3, "Testing Text", true);
  
this.m.A( {{"alpha", 1, 1}} );
  
this.m.A( {{"delay", 1}});
  for (
temp.i=0;temp.i<20;temp.i++){
    
this.m.A( {{"alpha",1,random(0,1)},{"x",1,random(0,screenwidth)},{"y",1,random(0,screenheight)},{"zoom",1,random(.1,5)},{"bgPadding",1,random(2,50)},{"outline",.5,random(1,50)},{"oBlue", 1, random(0,1)},{"oRed", 1, random(0,1)},{"oGreen",1,random(0,1)},{"tBlue", 1, random(0,1)},{"tRed", 1, random(0,1)},{"tGreen",1,random(0,1)},{"bBlue", 1, random(0,1)},{"bRed", 1, random(0,1)},{"bGreen",1,random(0,1)}});
  }
  
this.m.A( {{"alpha",1,1},{"x",1,screenwidth/2},{"y",1,screenheight/2},{"zoom",1,1},{"bgPadding",1,2},{"outline", 1, 1},{"tRed", 1, 1},{"tGreen",1,1},{"tBlue",1,1},{"bRed",1,0},{"bGreen",1,0},{"bBlue",1,0},{"oRed",1,1},{"oBlue",1,1},{"oGreen",1,1}});
  
this.m.start();
} 
PHP Code:
//#CLIENTSIDE

function newText(temp.scope, temp.start_i, temp.x, temp.y, temp.text, temp.useBackground){
  
// Various Declarations to start with.
  
temp.t = new TStaticVar();
  
temp.t.global = temp.scope; 
  
temp.t.start_i = temp.start_i;
  
temp.t.x = temp.x; temp.t.y = temp.y; 
  
temp.t.tRed = 1; temp.t.tGreen = 1; temp.t.tBlue = 1;
  
temp.t.alpha = 0;
  
temp.t.layer = 10*temp.start_i; 
  
temp.t.font = "Comic Sans MS"; temp.t.style = ""; 
  
temp.t.zoom = 1; 
  
temp.t.text = temp.text;
  
temp.t.width = gettextwidth(temp.t.zoom, temp.t.font, "", temp.t.text); 
  
temp.t.height = gettextheight(temp.t.zoom, temp.t.font, "");
  
temp.t.delay = true;
  
temp.t.animatable = {"delay","x","y","zoom","alpha","bgPadding","outline","tRed","tBlue","tGreen","bRed","bBlue","bGreen","oRed","oGreen","oBlue"};
  
temp.t.queue = {};
  if (
temp.useBackground != null){    
    
temp.t.background = useBackground;  
    
temp.t.bgPadding = 2; 
    
temp.t.outline = 2; 
    
temp.t.bRed = 0; temp.t.bGreen = 0; temp.t.bBlue = 0;
    
temp.t.oRed = 1; temp.t.oGreen = 1; temp.t.oBlue = 1;
  }
  
  
temp.t.start = function () {
    
this.started = true;
    
this.onUpdate();
  };
  
  
temp.t.stop = function () {
    
this.started = false;
  };
  
  
temp.t.A = function ( temp.actions ) {
    
this.queue.add( temp.actions );
    
this.count++;
  };

  
temp.t.onUpdate = function () {
    if (!
this.started)return;
    
    for (
temp.action: this.queue[0]){
      if (
temp.action[0] in {"NewText"}){
        if (
this.(@temp.action[0])(temp.action)){
          
this.queue[0].remove(temp.action);
        }
      }elseif(
temp.action[0] in this.animatable){
        if (
this.doValue(temp.action)){
          
this.queue[0].remove(temp.action);
        }
      }else 
this.queue[0].remove(temp.action);
    }
    
    if (
this.queue[0].size() == 0 && this.queue.size() > 0) this.queue.delete(0);
    
this.draw();
    
this.scheduleevent(0.05, "Update", null);
  };

  
temp.t.doValue = function (action) {
    
temp.value = temp.action[0];
    
temp.time = temp.action[1];
    
temp.newvalue = temp.action[2];
    if (
temp.time == 0){
      
this.(@value) = temp.newvalue;
      return 
true;
    }
    if (
this.(@value).dist == null){
      
this.(@value).dist = temp.newvalue - this.(@value);
      
this.(@value).step = this.(@value).dist / (temp.time*20);
    }
    if (
abs ( temp.newvalue - this.(@value)) <= this.(@value).step){
      
this.(@value) = temp.newvalue;
    }else 
this.(@value) += this.(@value).step;
    
    if (
temp.value == "zoom")this.NewText({"NewText",this.text});
    
    if (
this.(@value) == temp.newvalue){
      
this.(@value).dist = null;
      
this.(@value).step = null;
      
this.delay = true;
      return 
true;
    }else return 
false;
  };

  
temp.t.NewText = function (action) {
    
this.text = temp.action[1];
    
this.width = gettextwidth(this.zoom, this.font, "", this.text); 
    
this.height = gettextheight(this.zoom, this.font, "");
    return 
true;
  };

  
temp.t.draw = function (){
    
temp.i = this.start_i;
    
with (this.global.findimg(temp.i)){
      
x = thiso.x;  y = thiso.y;
      
text = thiso.text;
      
red = thiso.tRed;  green = thiso.tGreen;  blue = thiso.tBlue;
      
zoom = thiso.zoom;
      
font = thiso.font; style = thiso.style;
      
layer = thiso.layer;
      
alpha = thiso.alpha;
      
mode = 1;
    }
    
temp.i++;
    if (!
this.background) return temp.i;
    
with (this.global.findimg(temp.i)){
      
temp.xx=thiso.x;temp.yy=thiso.y;temp.w=thiso.width;temp.h=thiso.height;temp.p=thiso.bgPadding;
      
polygon = {xx-p,yy-p,
                 
xx+w+p,yy-p,
                 
xx+w+p,yy+h+p,
                 
xx-p,yy+h+p};
      
temp.p2 = temp.p+thiso.outline;
      
temp.poly2 = {xx-p2,yy-p2,
                 
xx+w+p2,yy-p2,
                 
xx+w+p2,yy+h+p2,
                 
xx-p2,yy+h+p2};

                 
      
layer = thiso.layer - 1;
      
red = thiso.bRed;  green = thiso.bGreen;  blue = thiso.bBlue;
      
alpha = thiso.alpha; mode = 1;
    }
    
temp.i++;
    
with (this.global.findimg(temp.i)){
      
polygon = temp.poly2;
      
layer = thiso.layer -2;
      
red = thiso.oRed;  green = thiso.oGreen;  blue = thiso.oBlue;
      
alpha = thiso.alpha; mode = 1;
    }
    
temp.i++;
    
this.lasti = temp.i;
    return 
temp.i;
  };
  
  return 
temp.t;
} 
__________________
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

Last edited by adam; 08-24-2010 at 05:33 AM..
Reply With Quote
  #8  
Old 08-24-2010, 02:36 AM
adam adam is offline
http://wiki.graal.us/
adam's Avatar
Join Date: Nov 2001
Posts: 2,247
adam has a spectacular aura aboutadam has a spectacular aura about
Send a message via AIM to adam
Added the ability to use a fixed size background, and anchor the text anywhere within it, Top Middle Bottom, Left Middle Right. Although if you zoom the text and it goes bigger ... your fault.

Adding/polishing the ability to send an event trigger to the main script, since you don't really know exactly when things get done. You can queue a trigger to be sent, returning the object that sent it, and go from there.
__________________
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
Reply With Quote
  #9  
Old 08-25-2010, 03:08 AM
adam adam is offline
http://wiki.graal.us/
adam's Avatar
Join Date: Nov 2001
Posts: 2,247
adam has a spectacular aura aboutadam has a spectacular aura about
Send a message via AIM to adam
Anybody remember this? http://forums.graalonline.com/forums...54&postcount=1

I just added support for the tweening functions Robin used, made by some guy. Much improved. I'll work on another demo/video. Then I think I'll be done.
__________________
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
Reply With Quote
  #10  
Old 08-25-2010, 11:27 PM
adam adam is offline
http://wiki.graal.us/
adam's Avatar
Join Date: Nov 2001
Posts: 2,247
adam has a spectacular aura aboutadam has a spectacular aura about
Send a message via AIM to adam
I really need to make a new video Compared to the current version the video looks very bad.

You can now use the messages to get input from the player. An event is triggered when you click on a message, if you told the message to watch for clicks.

function onAnimationTrigger(trigger, object, param1) // so far param1 is only for the button the player clicked with. trigger is "Clicked" for being clicked. or whatever you told it to send with {"Trigger", <name>};
__________________
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
Reply With Quote
  #11  
Old 08-26-2010, 12:33 AM
DrakilorP2P DrakilorP2P is offline
Registered User
DrakilorP2P's Avatar
Join Date: Apr 2006
Posts: 755
DrakilorP2P is just really niceDrakilorP2P is just really nice
Quote:
Originally Posted by adam View Post
I really need to make a new video Compared to the current version the video looks very bad.
I'm looking forward to a new video if you decide to make one.
Reply With Quote
  #12  
Old 08-26-2010, 04:49 AM
adam adam is offline
http://wiki.graal.us/
adam's Avatar
Join Date: Nov 2001
Posts: 2,247
adam has a spectacular aura aboutadam has a spectacular aura about
Send a message via AIM to adam
Quote:
Originally Posted by DrakilorP2P View Post
I'm looking forward to a new video if you decide to make one.
Dude... your on testbed RC constantly. Can't you come check it out when you see 40 updates of a script of mine?

lol

Either way, thanks, that helps motivate me.
__________________
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
Reply With Quote
  #13  
Old 08-26-2010, 08:12 PM
DrakilorP2P DrakilorP2P is offline
Registered User
DrakilorP2P's Avatar
Join Date: Apr 2006
Posts: 755
DrakilorP2P is just really niceDrakilorP2P is just really nice
Quote:
Originally Posted by adam View Post
Dude... your on testbed RC constantly. Can't you come check it out when you see 40 updates of a script of mine?
I'm a little lazy.
Reply With Quote
  #14  
Old 08-26-2010, 08:19 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 DrakilorP2P View Post
I'm a little lazy.
Shh! Nobody would have noticed
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 02:53 AM.


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