Graal Forums

Graal Forums (https://forums.graalonline.com/forums/index.php)
-   NPC Scripting (https://forums.graalonline.com/forums/forumdisplay.php?f=8)
-   -   movefile() (https://forums.graalonline.com/forums/showthread.php?t=87072)

LoneAngelIbesu 07-26-2009 12:24 AM

movefile()
 
This is a pretty simple question. I just need to know if I'm using movefile() correctly, because the file is not being moved. The npcserver has rights to all the needed folders.

This is a serverside file-checking script, using Graal's personaluploads feature. The movefile() functions are located in the conditional checks.

PHP Code:

function onActionServerside() {
  
// Get personaluploads directory and filename
  
temp.dir player.getPersonalUploadFolder();
  
temp.folder.loadfolder(temp.dir "*"0);
  
temp.file temp.folder[0];

  
// Establish extension and header whitelists
  
temp.extensions = {"gif""png"};
  
temp.headers = {"GIF8""PNG"};

  
// Establish folders
  
temp.bodyfolder "levels/graphics/player/bodies/";
  
temp.headfolder "levels/graphics/player/heads/";

  
// Extract file extension and header
  
temp.fileext temp.file.tokenize(".")[1];
  
temp.rawfilehead.loadlines(temp.dir temp.file);
  
temp.filehead this.analyzeheader(temp.rawfilehead[0], temp.headers);

  
// Check if file extention is in whitelist
  
if(temp.fileext in temp.extensions) {
    
// If true, check if file header is in whitelist
    
if(temp.filehead != false) {
      
// If true, move file to correct directory, based on file name
      
if(temp.file.starts("valp") && temp.file.pos("head") => 0) {
        
movefile(temp.dir temp.filetemp.headfolder);
      }
      else if(
temp.file.starts("valp") && temp.file.pos("body") => 0) {
        
movefile(temp.dir temp.filetemp.bodyfolder);
      }
      else {
        
// If file is not named correctly, delete it.
        
deletefile(temp.dir temp.file);
      }
    }
    else {
      
// If false, stop script: this file is not allowed
      
deletefile(temp.dir temp.file);
      return;
    }
  }
  else {
    
// If false, stop script: this file is not allowed
    
deletefile(temp.dir temp.file);
    return;
  }
}

function 
analyzeheader(headerwhitelist) {
  for(
temp.itemp.whitelist) {
    if(
temp.header.pos(temp.i) => 0) {
      return 
temp.i;
    }
  }
  return 
false;



fowlplay4 07-26-2009 12:31 AM

This works for me.

PHP Code:

// Variables
temp.currentfile "whatever.txt";
temp.olddir "levels/";
temp.newdir "levels/other/folder/";
// Movefile
movefile(temp.olddir temp.currentfiletemp.newdir temp.currentfile); 


LoneAngelIbesu 07-26-2009 12:33 AM

Quote:

Originally Posted by fowlplay4 (Post 1510336)
This works for me.

PHP Code:

// Variables
temp.currentfile "whatever.txt";
temp.olddir "levels/";
temp.newdir "levels/other/folder/";
// Movefile
movefile(temp.olddir temp.currentfiletemp.newdir temp.currentfile); 


That's exactly what I'm doing, with temp.dir, temp.file, and temp.[body/head]folder. Could it be that the personaluploads isn't located within the levels directory?

fowlplay4 07-26-2009 12:39 AM

Quote:

Originally Posted by LoneAngelIbesu (Post 1510337)
That's exactly what I'm doing, with temp.dir, temp.file, and temp.[body/head]folder. Could it be that the personaluploads isn't located within the levels directory?

Read my example again. :)

movefile("folder/filename", "newfolder/filename");

In your case..

movefile(temp.dir @ temp.file, temp.headfolder @ temp.file);

Should work.

Also it works with any directory, it's not levels specific.

LoneAngelIbesu 07-26-2009 12:45 AM

Quote:

Originally Posted by fowlplay4 (Post 1510340)
Read my example again. :)

movefile(temp.dir @ temp.file, temp.headfolder @ temp.file);

Oh, I see. The /scripthelp description could be a bit more descriptive. Thanks. :)


All times are GMT +2. The time now is 04:02 AM.

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