Graal Forums  

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

 
 
Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #11  
Old 01-19-2011, 05:41 PM
MrOmega MrOmega is offline
One More Time
MrOmega's Avatar
Join Date: Aug 2010
Location: TN, USA
Posts: 631
MrOmega is an unknown quantity at this point
Send a message via AIM to MrOmega Send a message via MSN to MrOmega Send a message via Yahoo to MrOmega
Ok so I got it working on the basics, now I want to make it look better. Smoother rather. Any thoughts of how to achieve this?

Here's what I got.

In my Weapon I have this

PHP Code:
public function Equip()
{

  return;

}

public function 
unEquip()
{

  return;

}

//#CLIENTSIDE

function onCreated()
{

  
this.description "<b><u>Small Bombs</u></b>\nDecent pack of power for a small bomb. Good for blasting enemies or holes in walls.";

}

function 
GraalControl.onKeyDown()
{

  if ( 
clientr.currentCharacter.weapon0] == name && params0] == 68 && client.carry == NULL)
  {
    
    
client.freeze true;
    
player.attr2] = "legends_sbombs-i.png";
    
setani"legends_lay"NULL);
    
sleep0.3);
    
player.attr2] = "";
    
temp.frontX player.dir == 1? ( player.1.5): player.dir == 3? ( player.2.5): ( player.0.5);
    
temp.frontY player.dir == 0? ( player.1.25): player.dir == 2? ( player.2.5): ( player.1.25);
    
triggerServer"gui""-system.core""dropObj"temp.frontXtemp.frontY"small_bombs"1true"Small Bombs");   
    
sleep0.1);
    
client.freeze false;

  }

in -system.core it puts an npc at the specified locations joined to what I have.

In class I have this.

PHP Code:
function onCreated()
{

  
setshape13232);
  
setCharAni"legends_smallBomb"NULL);
  
scheduleEvent5"onDestroy");

}

function 
onDestroy()
{

  if ( 
this.attr2] != "")
    
findPlayerthis.attr2]).client.carry NULL;

  
with putNPC2this.1.5this.1.5""))
    { 
this.join"explosion");}
    
  
this.destroy();

}

function 
onActionPulled()
{

  
temp.pl findPlayerparams0]);
  
temp.pl.client.carry "sObj";
  
temp.pl.client.freeze true;
  
temp.pl.setani"legends_lift"NULL);
  
sleep0.35);
  
temp.pl.client.freeze false;
  
this.attr1] = "carried";
  
this.attr2] = temp.pl.account;
  
setTimer0.3);
  
}

function 
onTimeout()
{

  if ( 
this.attr1] == "carried")
  {
  
    
temp.pl findPlayerthis.attr2]);
    
    
this.temp.pl.0.5;
    
this.temp.pl.1;
  
  }
  
  if ( 
this.landed)
  {
  
    
this.this.nx;
    
this.this.ny;
    
show();
    
this.landed false;
  
  }
  
  
setTimer0.1);

}

function 
onActionPlaced()
{

  
setTimer0);
  
temp.pl findPlayerparams0]);
  
temp.nx temp.pl.dir == 1? ( temp.pl.1.5): temp.pl.dir == 3? ( temp.pl.2.5): ( temp.pl.0.5);
  
temp.ny temp.pl.dir == 0? ( temp.pl.1.25): temp.pl.dir == 2? ( temp.pl.2.5): ( temp.pl.1.25);  
  
temp.pl.client.freeze true;
  
temp.pl.setani"legends_lay"NULL);
  
sleep0.3);
  
temp.pl.client.carry =
  
temp.pl.client.freeze false;
  
this.attr1] = this.attr2] = "";
  
this.temp.nx;
  
this.temp.ny;

}

function 
onActionThrown()
{

  
setTimer0);
  
temp.pl findPlayerparams0]);
  
this.nx temp.pl.dir == 1? ( temp.pl.5.5): temp.pl.dir == 3? ( temp.pl.6.5): ( temp.pl.0.5);
  
this.ny temp.pl.dir == 0? ( temp.pl.5.25): temp.pl.dir == 2? ( temp.pl.6.5): ( temp.pl.1.25);  
  
temp.pl.client.freeze true;
  
temp.pl.setani"legends_grab"NULL);
  
temp.angle getanglevecxtemp.pl.dir), vecytemp.pl.dir));
  
hide();
  
this.attr1] = this.attr2] = "";        
  
temp.pl.client.carry false;
  
setshootparams"Small Bomb"this.nametemp.pl.accounttimevar2);
  
shoottemp.pl.xtemp.pl.ytemp.pl.1temp.angle01"legends_smallBomb"NULL);
  
onTimeout();     
 
}

//#CLIENTSIDE

function onCreated()
{

  
setshape13232);
  
dontBlock();
  
onTimeout();

}

function 
GraalControl.onKeyDown()
{

  if ( 
this.attr1] == "carried")
  {
  
    if ( 
params0] == 68)
      
triggerActionthis.xthis.y"Placed"player.account);

    else if (
params0] == 65)
      
triggerActionthis.xthis.y"Thrown"player.account);

  }
}

function 
onTimeout()
{

  if ( 
this.attr1] == "carried")
  {

    
drawOverPlayer();
    
    if ( 
this.attr2] == player.account)
    {
    
      
this.player.0.5;
      
this.player.1;
  
    }
  }
  
  else
    
this.layer 1;
  
  
setTimer0.05);


Finally in the NPC-Control I have the onActionSProjectile to catch all projectiles.

PHP Code:
function onActionSProjectile()
{

  switch ( 
params2])
  {
  
    case 
"Small Bomb":
    
      
temp.pl findPlayerparams4]);
      
temp.n  findNPCparams3]);
      
temp.pl.client.freeze false;
      
temp.n.landed true;

    break;
  
  }

How could I improve this?
__________________
Time is the fire in which we burn...
Up, Up, Down, Down, Left, Right, Left, Right, B, A, Select, Start! Now I got 99 LIVES!!!
Reply With Quote
 


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 04:22 PM.


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