Ir para conteúdo
  • Cadastre-se
  • 0

Adaptaçao de Script


=ADM.SPITE=

Pergunta

Ai Galera eu precisava de uma adaptação de Script, se alguém puder me ajudar nisso Agradeceria.

 

 

/*

* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
*
O conteúdo está oculto, favor efetuar login ou se cadastrar!
*/
package com.l2jfrozen.gameserver.script.faenor;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Logger;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import javax.script.ScriptContext;
import javax.script.ScriptException;
import org.w3c.dom.Node;
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.script.Parser;
import com.l2jfrozen.gameserver.script.ParserNotCreatedException;
import com.l2jfrozen.gameserver.script.ScriptDocument;
import com.l2jfrozen.gameserver.script.ScriptEngine;
import com.l2jfrozen.gameserver.script.ScriptPackage;
import com.l2jfrozen.gameserver.scripting.L2ScriptEngineManager;
/**
* @author Luis Arias
*/
public class FaenorScriptEngine extends ScriptEngine
{
static Logger _log = Logger.getLogger(FaenorScriptEngine.class.getName());
public final static String PACKAGE_DIRECTORY = "data/faenor/";
public final static boolean DEBUG = true;
private LinkedList<ScriptDocument> _scripts;
public static FaenorScriptEngine getInstance()
{
return SingletonHolder._instance;
}
private FaenorScriptEngine()
{
_scripts = new LinkedList<ScriptDocument>();
loadPackages();
parsePackages();
}
public void reloadPackages()
{
_scripts = new LinkedList<ScriptDocument>();
parsePackages();
}
private void loadPackages()
{
File packDirectory = new File(Config.DATAPACK_ROOT, PACKAGE_DIRECTORY);//_log.sss(packDirectory.getAbsolutePath());
FileFilter fileFilter = new FileFilter() {
public boolean accept(File file)
{
return file.getName().endsWith(".zip");
}
};
File[] files = packDirectory.listFiles(fileFilter);
if(files == null)
return;
ZipFile zipPack;
for(File file : files)
{
try
{
zipPack = new ZipFile(file);
}
catch(ZipException e)
{
e.printStackTrace();
continue;
}
catch(IOException e)
{
e.printStackTrace();
continue;
}
ScriptPackage module = new ScriptPackage(zipPack);
List<ScriptDocument> scrpts = module.getScriptFiles();
for(ScriptDocument script : scrpts)
{
_scripts.add(script);
}
try
{
zipPack.close();
}
catch(IOException e)
{}
}
/*for (ScriptDocument script : scripts)
{
_log.sss("Script: "+script);
}
_log.sss("Sorting");
orderScripts();
for (ScriptDocument script : scripts)
{
_log.sss("Script: "+script);
}*/
}
public void orderScripts()
{
if(_scripts.size() > 1)
{
//ScriptDocument npcInfo = null;
for(int i = 0; i < _scripts.size();)
{
if(_scripts.get(i).getName().contains("NpcStatData"))
{
_scripts.addFirst(_scripts.remove(i));
//scripts.set(i, scripts.get(0));
//scripts.set(0, npcInfo);
}
else
{
i++;
}
}
}
}
public void parsePackages()
{
L2ScriptEngineManager sem = L2ScriptEngineManager.getInstance();
ScriptContext context = sem.getScriptContext("beanshell");
try
{
sem.eval("beanshell", "double log1p(double d) { return Math.log1p(d); }");
sem.eval("beanshell", "double pow(double d, double p) { return Math.pow(d,p); }");
for(ScriptDocument script : _scripts)
{
parseScript(script, context);
}
}
catch(ScriptException e)
{
e.printStackTrace();
}
}
public void parseScript(ScriptDocument script, ScriptContext context)
{
if(DEBUG)
{
_log.fine("Parsing Script: " + script.getName());
}
Node node = script.getDocument().getFirstChild();
String parserClass = "faenor.Faenor" + node.getNodeName() + "Parser";
Parser parser = null;
try
{
parser = createParser(parserClass);
}
catch(ParserNotCreatedException e)
{
_log.warning("ERROR: No parser registered for Script: " + parserClass);
e.printStackTrace();
}
if(parser == null)
{
_log.warning("Unknown Script Type: " + script.getName());
return;
}
try
{
parser.parseScript(node, context);
_log.fine(script.getName() + "Script Sucessfullty Parsed.");
}
catch(Exception e)
{
e.printStackTrace();
_log.warning("Script Parsing Failed.");
}
}
@Override
public String toString()
{
if(_scripts.isEmpty())
return "No Packages Loaded.";
String out = "Script Packages currently loaded:\n";
for(ScriptDocument script : _scripts)
{
out += script;
}
return out;
}
@SuppressWarnings("synthetic-access")
private static class SingletonHolder
{
protected static final FaenorScriptEngine _instance = new FaenorScriptEngine();
}
}

 

Ta ai o Código

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts recomendados

  • 0
package com.l2jfrozen.gameserver.script.faenor;


import java.io.File;

import java.io.FileFilter;

import java.io.IOException;

import java.util.LinkedList;

import java.util.List;

import java.util.logging.Logger;

import java.util.zip.ZipException;

import java.util.zip.ZipFile;


import javax.script.ScriptContext;

import javax.script.ScriptException;


import org.w3c.dom.Node;


import com.l2jfrozen.Config;

import com.l2jfrozen.gameserver.script.Parser;

import com.l2jfrozen.gameserver.script.ParserNotCreatedException;

import com.l2jfrozen.gameserver.script.ScriptDocument;

import com.l2jfrozen.gameserver.script.ScriptEngine;

import com.l2jfrozen.gameserver.script.ScriptPackage;

import com.l2jfrozen.gameserver.scripting.L2ScriptEngineManager;


So pega essa parte e mudar de acordo com seus imports dentro do java, posto os seus imports sera possivel, é e provável que aparecer outros erros ao compilar mais e so adaptar tambem.

newassinaturai.jpg

Link para o comentário
Compartilhar em outros sites


  • 0

 

package com.l2jfrozen.gameserver.script.faenor;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Logger;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import javax.script.ScriptContext;
import javax.script.ScriptException;
import org.w3c.dom.Node;
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.script.Parser;
import com.l2jfrozen.gameserver.script.ParserNotCreatedException;
import com.l2jfrozen.gameserver.script.ScriptDocument;
import com.l2jfrozen.gameserver.script.ScriptEngine;
import com.l2jfrozen.gameserver.script.ScriptPackage;
import com.l2jfrozen.gameserver.scripting.L2ScriptEngineManager;
So pega essa parte e mudar de acordo com seus imports dentro do java, posto os seus imports sera possivel, é e provável que aparecer outros erros ao compilar mais e so adaptar tambem.

 

 

Mano é pq sou meio noob na parte de Java. não entendo muito dessa parte por isso tava precisando tipo de uma moral pra adaptar

Link para o comentário
Compartilhar em outros sites

  • 0

Sim provavelmente vai ser ate mais facil, deve somente mudar imports pra sua revisão e depois ver ser vai da certo, se nao pegar tem que adaptar algumas coisas, mais como provavelmente a base dessa revisão dever ser frozen ent e facil. caso ainda tenha duvida me mande um mp irei ajuda-lo

newassinaturai.jpg

Link para o comentário
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Processando...
  • Registre-se

    Faça parte da maior e  mais antigas comunidades sobre Lineage2 da América Latina.





×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.