Graal Forums  

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

 
 
Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 08-22-2013, 05:20 AM
Angel_Light Angel_Light is offline
Varia Developer
Angel_Light's Avatar
Join Date: Nov 2005
Location: Knoxville, TN
Posts: 1,684
Angel_Light is on a distinguished road
Send a message via AIM to Angel_Light Send a message via MSN to Angel_Light
onWall3()

Just a make shift version of the onWall2() function that checks the tilelayers on serverside, which currently isn't implemented in-game yet.

Use :
onWall3( x, y, w, h, level, layerscount);
  • x - The level's X coordinate to check (integer)
  • y - The level's Y coordinate to check (integer)
  • w - The width of tiles to check (integer)
  • h - The height of tiles to check (integer)
  • level - The name of the level to check (string)
  • layerscount - The number of layers to check from layer 0 (integer)

Installation :
Simply add the following code to a class, then join that class to whatever you need it for serverside. Also upload the 'tiledata.nw' file to your levels/ folder and I guess make sure the NPC server has read rights to the levels/ folder

PHP Code:
public function onWall3temp.lvl_xtemp.lvl_ytemp.wtemp.htemp.lvltemp.lvl_c)
{

  
temp.file_data.loadLines"levels/" temp.lvl);
  
  
this.delete_rest false;
  
  
temp.file_lines temp.level_data.size();

  for ( 
temp.temp.file_data)
  {
  
    
temp.tokens temp.a.tokenize();

    if ( 
temp.tokens0] == "BOARD")
      
temp.level_data.addtemp.tokens);

  }
  
  for ( 
temp.0temp.temp.wtemp.++;)
  {
  
    for ( 
temp.0temp.temp.htemp.++;)
    {
    
      for ( 
temp.0temp.temp.lvl_ctemp.++;)
      {

        
temp.tile_loc getTileLocationbase64ToTiletemp.level_data[( temp.temp.lvl_y) + ( temp.64)][ 5].substring(( temp.temp.lvl_x) * 22)));
    
        if ( 
findLevel"tiledata.nw").onwalltemp.tile_loc0] % 64temp.tile_loc1] + ( 32 temp.tile_loc0] > 640)))
        {
    
          
temp.isBlocking true;
          break;
  
        }
      }
      
      if ( 
temp.isBlocking)
        break;
        
    }
    
    if ( 
temp.isBlocking)
      break;
        
  }
  
  return 
floattemp.isBlocking);
  
}



function 
Base64ToTiletemp.t// Big thank you to Dusty for this function 
{
  
temp.base64 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  
  if ( 
temp.t.type() == 1
  {
  
    return 
temp.base64.postemp.t.substring01)) * 64 temp.base64.postemp.t.substring11));
  } 
  
  else if ( 
temp.t.type() == 3
  {
  
    
temp.decodearray = new[ 0];
    
    for ( 
temp.temp.t
      
temp.decodearray.addtemp.base64.postemp.i.substring01)) * 64 temp.base64.postemp.i.substring11))); 
    
    return 
temp.decodearray;
  } 
  
  else 
    return -
1;

}

function 
getTileLocationtemp.tileNum//Returns tileset coordinate from hexa/decimal
{

  
temp.tileX inttemp.tileNum 512) * 16 + ( temp.tileNum 16);
  
temp.tileY inttemp.tileNum 16) % 32
  return { 
temp.tileXtemp.tileY}; 


Example :
Make a weapon, add this code to it, and then add it to yourself. It will then check a 2x2 square if the tiles are blocking.

PHP Code:
function onCreated()
{

  
this.join"core");

}

function 
onActionServerside()
{

  if ( 
params0] == "onWall3")
    echo( 
onWall3params1], params2], params3], params4], params5], params6]));

}

//#CLIENTSIDE

function GraalControl.onMouseDown()
{

  
triggerServer"weapon"this.name"onWall3"intmousex), intmousey), 22player.level.nametilelayercount);
  
showimg1"block.png"intmousex), intmousey));
   

Also, I'm pretty sure there are several way to make this more efficient, if so please correct my method.

Also figured I should attach this for getting the actual level name and not gmap name serverside, credit goes to cbk1994 for the code. -Thank you. =]
PHP Code:
public function getPreciseLevelName() {
  if (
this.level.name.ends(".gmap")) {
    return 
this.level.getmappartfile(this.xthis.y);
  }
  
  return 
this.level.name;

Attached Files
File Type: nw tiledata.nw (9.1 KB, 202 views)
__________________
Deep into the Darkness peering...

Last edited by Angel_Light; 08-22-2013 at 04:54 PM..
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:27 AM.


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