Ir para conteúdo
  • Cadastre-se

L2JDream Interlude [Com Mods]


Bian

Posts recomendados

digo, não está usável:

Poxa é uma pena, TVT bugado, Olly Bugada (chama) porém alguns problemas: os dois competidores aparecem no mesmo lugar e se enxergam, não mostra a real quantidade de inscritos, algumas vezes chama e por algum motivo o outro char não é chamado e a vitoria vai para quem foi para "arena". - Quanto aos mages coisa estranha ao remover qualquer item equipado o bss é desarmado com exceto a arma se remover fica ligado (este ultimo caso) não é nas olly é em combate. Menos crítico: algumas skill estão errada e podem ser corrigidas ex: sleep, cancellation (tempo de aplicação) sleep Lento (cancellation super rápido), eu achei a ideia do projeto boa, mas tem falhas e ao meu ver vai ficar parado, porque a ideia dos desenvolvedores segundo eu li, é começar outro projeto novamente(no caso este não terá seguimento) tendo que refazer tudo no servidor. é difícil mas nunca vemos um projeto começar - ir - e concluir, é sempre começar - ir e parar. espero que eu esteja errado. pois já vi isso no ljfree, l2teon e outros.

Editado por bartosilva

Deus seja louvado!

Link para o comentário
Compartilhar em outros sites


Quer a minha resposta?

 

Pq vc não pega 1 projeto e começa e conclui ele antes de vir falar?

Rapaz o mundo está uma total desordem não por criticas, mas por falta de verdade! a verdade é o amor ao próximo e uma semente profunda no coração que é Cristo, considere ler mais de uma vez antes de "citar"

Editado por bartosilva

Deus seja louvado!

Link para o comentário
Compartilhar em outros sites

Acho que esse é um dos motivos para não existirem servidores bons,tudo girando em torno do dinheiro e não do prazer de jogar.Eu estava lendo os tópicos aqui e me deparei muito como:não flood ,leia antes de perguntar,pergunte na área certa,vou distribuir warms,aqui naõ é área disso ou daquilo,várias pessoas sem educação ,deveríamos repensar ......se não te interessa então fique na sua!!!!

O respeito demonstra um sentimento positivo de estima por uma pessoa ou para uma entidade!!!

Link para o comentário
Compartilhar em outros sites

Como faz para remover do chat quando loga , a mensagem:

Thank you for using l2dream project.

Obrigado.

Não tem como...
Comprando uma revisão personalizada só pra você :wink:

No "free" não tem jeito a mensagem fica ali mesmo pra sempre.

 

Deveria ser ironico se não fosse trágico! O cara quer remover os créditos dos desenvolvedores e ainda receber algo bom gratuitamente.

Minha resposta foi clara "não quer os créditos compre um server para você e opte por seus créditos ou nenhum credito"

Ai logo em seguida vem o colega e diz....

 

Acho que esse é um dos motivos para não existirem servidores bons, tudo girando em torno do dinheiro e não do prazer de jogar.

Eu estava lendo os tópicos aqui e me deparei muito como: não flood ,leia antes de perguntar, pergunte na área certa, vou distribuir warms, aqui naõ é área disso ou daquilo, várias pessoas sem educação , deveríamos repensar ....

..se não te interessa então fique na sua!!!!

Eu não deveria me dar ao trabalho de ensinar, mas antes de você levar alguns WARMs por:

Caluniar a staff DREAM inteira, promover intriga e falar aquilo que não sabe... LEIA ISTO!

 

Não existem servidores bons porque as staff recebem milhões de pedidos de MOD e não tem tempo de arrumar BUG ai abrem o SVN e tudo vai para o vinagre!

O dinheiro em questão ao qual você se refere é brincadeira sua né!? Só pode!?

R: Então vai lá fica dias e dias, madrugadas inteiras acordado trabalhando em algo que alguém simplesmente vai lá tirar seus créditos e dizer que é dele!

Não quer créditos? tem de pagar pelo trabalho alheio e sim PAGAR POR UM TRABALHO QUE NÃO É SEU! já que os créditos lhe incomodam tanto.

Você disse que estava lendo os tópicos... ai eu duvido muito! porque essa de remover créditos é RIP meu amigo e já foi muito falado aqui que RIP não PODE!

 

Agora se não gosta de ler créditos de quem fez o trabalho, compre!

Se não pode comprar AGRADEÇA quem lhe dá de graça!

E se não quiser agradecer fique calado!

 

Barbaridade viu! como alguém se dá o prazer de criar tanta confusão em cima de algo que é proibido e ilegal!

(decepção total com os usuários L2JBR) :rumrum:

prja.png
Current Chronic: The Shadowy Nightmare (SDE-V7 Currently Under Construction)☜═㋡

Link para o comentário
Compartilhar em outros sites

Bluur só acho que você tem que adicionar dois mods, que são extremamente úteis:

 

Offline Trade, com Moeda custom, na Frozen tem isso, por exemplo você já vender por Ancient Adena... E Offshop...

E o NPC Crest , super legal...

 

Finalmente alguém esta querendo fazer algo realmente bom!, Parabéns Bluur!! Aguardo novidades.

MINHA CAIXA DE MP NÃO É FÓRUM


DE DUVIDAS E PEDIDOS !


DUVIDAS: (CLIQUE AQUI) PEDIDOS: (CLIQUE AQUI)


sam-300x150.jpg

Link para o comentário
Compartilhar em outros sites

Deveria ser ironico se não fosse trágico! O cara quer remover os créditos dos desenvolvedores e ainda receber algo bom gratuitamente.

Minha resposta foi clara "não quer os créditos compre um server para você e opte por seus créditos ou nenhum credito"

Ai logo em seguida vem o colega e diz....

 

 

Eu não deveria me dar ao trabalho de ensinar, mas antes de você levar alguns WARMs por:

Caluniar a staff DREAM inteira, promover intriga e falar aquilo que não sabe... LEIA ISTO!

 

Não existem servidores bons porque as staff recebem milhões de pedidos de MOD e não tem tempo de arrumar BUG ai abrem o SVN e tudo vai para o vinagre!

O dinheiro em questão ao qual você se refere é brincadeira sua né!? Só pode!?

R: Então vai lá fica dias e dias, madrugadas inteiras acordado trabalhando em algo que alguém simplesmente vai lá tirar seus créditos e dizer que é dele!

Não quer créditos? tem de pagar pelo trabalho alheio e sim PAGAR POR UM TRABALHO QUE NÃO É SEU! já que os créditos lhe incomodam tanto.

Você disse que estava lendo os tópicos... ai eu duvido muito! porque essa de remover créditos é RIP meu amigo e já foi muito falado aqui que RIP não PODE!

 

Agora se não gosta de ler créditos de quem fez o trabalho, compre!

Se não pode comprar AGRADEÇA quem lhe dá de graça!

E se não quiser agradecer fique calado!

 

Barbaridade viu! como alguém se dá o prazer de criar tanta confusão em cima de algo que é proibido e ilegal!

(decepção total com os usuários L2JBR) :rumrum:

Sem mais Comentários!!!!Continue assim!!!!

O respeito demonstra um sentimento positivo de estima por uma pessoa ou para uma entidade!!!

Link para o comentário
Compartilhar em outros sites

mano tou com o seguinte problema no game servidor quando eu vou ligar ele diz isso:

 

'java' não é reconhecido como um comando interno

ou externo, um programa operável ou um arquivo em lotes.

 

server terminated <telnet>

 

 

server terminated abnormaly

 

 

server terminated

 

restart<r> or quit<q>

 

Abre seu arquivoi game.bat com o bloco de notas e edita certinho o caminho do java, necessariamente a pasta BIN

Em seguida crie dentro da pasta BIN, uma pasta chamada SERVER, copie da pasta CLIENT o arquivo jvm.dll e coloque o mesmo dentro da pasta SERVER e tente novamente.

Link para o comentário
Compartilhar em outros sites

Boa tarde, me desculpe a minha ignorância mas tenho que perguntar, essa rev tem npc´s, weapons, armor e afins ou tenho que add eles?

 

se alguém puder me responder agradeço.

 

Sim amigo, as unicas coisas que você não vai encontrar na jDream, são custom itens. Como armors Dynast, Titanium, Dark Knight(DK) ou qualquer outra coisa que não seja da versão INTERLUDE.

 

Já nas questões de Modificações no java (Java Mods), você vai entender oque foi modificado e foi adicionado olhando a primeira página do tópico.

Link para o comentário
Compartilhar em outros sites

Sim amigo, as unicas coisas que você não vai encontrar na jDream, são custom itens. Como armors Dynast, Titanium, Dark Knight(DK) ou qualquer outra coisa que não seja da versão INTERLUDE.

 

Já nas questões de Modificações no java (Java Mods), você vai entender oque foi modificado e foi adicionado olhando a primeira página do tópico.

 

Obrigado amigo.

 

Mais uma pergunta para quem ja testou a rev, para um server 500x "EU VOU ADD tudo o que precisa pra essa rate" ela fica boa? Ou qual seria o max rate para ela? obrigado a todos novamente. e meus sinceros parabéns ao @Bluur.

Link para o comentário
Compartilhar em outros sites

Obrigado amigo.

 

Mais uma pergunta para quem ja testou a rev, para um server 500x "EU VOU ADD tudo o que precisa pra essa rate" ela fica boa? Ou qual seria o max rate para ela? obrigado a todos novamente. e meus sinceros parabéns ao @Bluur.

 

Não minha humilde opinião da pra fazer sim, tranquilo um servidor high rate com a jDream e a maioria das revs disponibilizadas na internet...

A jDream não peca muito na disposição de geodata, evitando bugs de parede no pvp e afins... E no geral, servidor pvp as vezes nem usa as quests, e quando usa usa quest Nobles no max rsrs e acho que ta normal essa quest.

Link para o comentário
Compartilhar em outros sites

Não minha humilde opinião da pra fazer sim, tranquilo um servidor high rate com a jDream e a maioria das revs disponibilizadas na internet...

A jDream não peca muito na disposição de geodata, evitando bugs de parede no pvp e afins... E no geral, servidor pvp as vezes nem usa as quests, e quando usa usa quest Nobles no max rsrs e acho que ta normal essa quest.

 

falou tudo kra... eu iniciei um novo projeto aqui com a dream está duto tranquilo não tenho nenhum problema com ela...

os testes em pvp com o geodata é uns 98%

pois há alguns erros ainda... as rotas dos mobs estão 100% ao menos não encontrei erros.

:)

devilh1v.png l140420.gif

Link para o comentário
Compartilhar em outros sites

falou tudo kra... eu iniciei um novo projeto aqui com a dream está duto tranquilo não tenho nenhum problema com ela...

os testes em pvp com o geodata é uns 98%

pois há alguns erros ainda... as rotas dos mobs estão 100% ao menos não encontrei erros.

:)

 

Pois é, apesar de meu servidor ser considerado PvP (as vezes considerado até full blaster mega ultra high rate pra alguns --") 100x no custom, eu gosto de manter o original, não modifico npc de lugar, faço com que os players utilizem todas as quest boss, procuro manter a área de drop em locail original sem add mob estranho em local estranho rsrsrs. Mas as vezes, servidor 500x como o amigo ali quer criar, vai ser colocado mais coisas como armors, weapons e etc etc etc mas ai já é outros "500".

Abras

Link para o comentário
Compartilhar em outros sites

Vou fazer um "report" baseado no nosso test server (staff dream) com a rev.621 sem mods:

Ele estava 1.000x e tudo belezinha; Colocamos npcs para tudo que é canto, mobs custons, areas custons, peace farm e tudo que o povo diz usar...

Até AIO e VIP nós colocamos pra não restar duvidas.....

Testado e aprovado!

 

Depois fizemos um com 250x aproveitando as mesmas porcarias (ops! custons) kkkkk

Mas habilitamos as quests de boss, nobless e mais umas ali relacionadas...

Tudo beleza, não teve problemas e jogamos tranquilo.

Testado e aprovado!

 

Ou seja basta colocar a rate que você deseja... regular bem as skills (quanto mais buffs menos poder nos buffs e skills) e pronto!

Já pode por on-line para depois ir balanceando conforme necessário para não ficar um l2necro ou l2archer da vida!

Tudo vai do conhecimento do(s) ADM(s) envolvidos no projeto.

 

Com ou sem MODs os servidores Dream se mostram mais estáveis para qualquer tipo de servidor.

Agora a nova revisão que esta por vir será ainda melhor para rates realmente baixas pois mais quests estarão funcionando entre outras coisas!

Bom encerro por aqui porque acho que tudo que podia falar já foi dito.

Aquele Abraço!

prja.png
Current Chronic: The Shadowy Nightmare (SDE-V7 Currently Under Construction)☜═㋡

Link para o comentário
Compartilhar em outros sites

<p>Boa noite.

 

- Gostaria de saber se não existe alguma maneira de arrumar a questão dos player está matando os NPC.

 

Esclarecendo, já configurei corretamente.

 

Como está.

 

# Npc Attackable

NpcAttackable = False

 

# Npc Invul Default = False

AltInvulNPC = True

 

____________________

 

Corrigido, Re-instalei o DB, :lala:

____________________

 

 

 

Como Arruma isso?

No buylists were found in data folder, using SQL buylist instead :wacko: :unsure:

 

FONTE: http://l2jreborn.goo...Controller.java

/*

* 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 net.sf.l2j.gameserver;

 

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.LineNumberReader;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.List;

import java.util.Map;

import java.util.StringTokenizer;

import java.util.logging.Level;

import java.util.logging.Logger;

 

import javolution.util.FastList;

import javolution.util.FastMap;

import net.sf.l2j.Config;

import net.sf.l2j.L2DatabaseFactory;

import net.sf.l2j.gameserver.datatables.ItemTable;

import net.sf.l2j.gameserver.model.L2ItemInstance;

import net.sf.l2j.gameserver.model.L2TradeList;

 

/**

* This class ...

*

* @version $Revision: 1.5.4.13 $ $Date: 2005/04/06 16:13:38 $

*/

public class TradeController

{

private static Logger _log = Logger.getLogger(TradeController.class.getName());

private static TradeController _instance;

 

private int _nextListId;

private Map _lists;

/** Task launching the function for restore count of Item (Clan Hall) */

public class RestoreCount implements Runnable

{

private int timer;

public RestoreCount(int time){

timer = time;

}

public void run()

{

try {

restoreCount(timer);

dataTimerSave(timer);

ThreadPoolManager.getInstance().scheduleGeneral(new RestoreCount(timer), (long)timer*60*60*1000);

}

catch (Throwable t) {}

}

}

public static TradeController getInstance()

{

if (_instance == null)

{

_instance = new TradeController();

}

return _instance;

}

 

private TradeController()

{

_lists = new FastMap();

File buylistData = new File(Config.DATAPACK_ROOT, "data/buylists.csv");

if (buylistData.exists())

{

_log.warning("Do, please, remove buylists from data folder and use SQL buylist instead");

String line = null;

LineNumberReader lnr = null;

int dummyItemCount = 0;

 

try

{

lnr = new LineNumberReader(new BufferedReader(new FileReader(buylistData)));

 

while ((line = lnr.readLine()) != null)

{

if (line.trim().length() == 0 || line.startsWith("#"))

{

continue;

}

 

dummyItemCount += parseList(line);

}

 

if (Config.DEBUG)

_log.fine("created " + dummyItemCount + " Dummy-Items for buylists");

_log.config("TradeController: Loaded " + _lists.size() + " Buylists.");

} catch (Exception e)

{

_log.log(Level.WARNING, "error while creating trade controller in linenr: " + lnr.getLineNumber(), e);

}

} else

{

_log.finer("No buylists were found in data folder, using SQL buylist instead");

java.sql.Connection con = null;

/*

* Initialize Shop buylist

*/

int dummyItemCount = 0;

try

{

con = L2DatabaseFactory.getInstance().getConnection();

PreparedStatement statement1 = con.prepareStatement("SELECT " + L2DatabaseFactory.getInstance().safetyString(new String[]

{ "shop_id", "npc_id" }) + " FROM merchant_shopids");

ResultSet rset1 = statement1.executeQuery();

while (rset1.next())

{

PreparedStatement statement = con.prepareStatement("SELECT " + L2DatabaseFactory.getInstance().safetyString(new String[]

{ "item_id", "price", "shop_id", "order", "count", "time", "currentCount" }) + " FROM merchant_buylists WHERE shop_id=? ORDER BY "

+ L2DatabaseFactory.getInstance().safetyString(new String[]

{ "order" }) + " ASC");

statement.setString(1, String.valueOf(rset1.getInt("shop_id")));

ResultSet rset = statement.executeQuery();

if (rset.next())

{

dummyItemCount++;

L2TradeList buy1 = new L2TradeList(rset1.getInt("shop_id"));

int itemId = rset.getInt("item_id");

int price = rset.getInt("price");

int count = rset.getInt("count");

int currentCount = rset.getInt("currentCount");

int time = rset.getInt("time");

L2ItemInstance item = ItemTable.getInstance().createDummyItem(itemId);

if (item == null) continue;

if(count > -1)

item.setCountDecrease(true);

item.setPriceToSell(price);

item.setTime(time);

item.setInitCount(count);

if(currentCount>-1)

item.setCount(currentCount);

else

item.setCount(count);

buy1.addItem(item);

buy1.setNpcId(rset1.getString("npc_id"));

try

{

while (rset.next())

{

dummyItemCount++;

itemId = rset.getInt("item_id");

price = rset.getInt("price");

count = rset.getInt("count");

time = rset.getInt("time");

currentCount = rset.getInt("currentCount");

L2ItemInstance item2 = ItemTable.getInstance().createDummyItem(itemId);

if (item2 == null) continue;

if(count > -1)

item2.setCountDecrease(true);

item2.setPriceToSell(price);

item2.setTime(time);

item2.setInitCount(count);

if(currentCount>-1)

item2.setCount(currentCount);

else

item2.setCount(count);

buy1.addItem(item2);

}

} catch (Exception e)

{

_log.warning("TradeController: Problem with buylist " + buy1.getListId() + " item " + itemId);

}

 

_lists.put(new Integer(buy1.getListId()), buy1);

_nextListId = Math.max(_nextListId, buy1.getListId() + 1);

}

 

rset.close();

statement.close();

}

rset1.close();

statement1.close();

 

if (Config.DEBUG)

_log.fine("created " + dummyItemCount + " Dummy-Items for buylists");

_log.config("TradeController: Loaded " + _lists.size() + " Buylists.");

/*

* Restore Task for reinitialyze count of buy item

*/

try

{

int time=0;

long savetimer=0;

long currentMillis = System.currentTimeMillis();

PreparedStatement statement2 = con.prepareStatement("SELECT DISTINCT time, savetimer FROM merchant_buylists WHERE time <> 0 ORDER BY time");

ResultSet rset2 = statement2.executeQuery();

while (rset2.next()){

time = rset2.getInt("time");

savetimer = rset2.getLong("savetimer");

if(savetimer-currentMillis>0)

ThreadPoolManager.getInstance().scheduleGeneral(new RestoreCount(time), savetimer-System.currentTimeMillis());

else

ThreadPoolManager.getInstance().scheduleGeneral(new RestoreCount(time), 0);

}

rset2.close();

statement2.close();

}catch (Exception e)

{

_log.warning("TradeController: Could not restore Timer for Item count.");

e.printStackTrace();

}

} catch (Exception e)

{

// problem with initializing spawn, go to next one

_log.warning("TradeController: Buylists could not be initialized.");

e.printStackTrace();

}

finally

{

try

{

con.close();

} catch (Exception e)

{}

}

}

}

 

private int parseList(String line)

{

int itemCreated = 0;

StringTokenizer st = new StringTokenizer(line, ";");

 

int listId = Integer.parseInt(st.nextToken());

L2TradeList buy1 = new L2TradeList(listId);

while (st.hasMoreTokens())

{

int itemId = Integer.parseInt(st.nextToken());

int price = Integer.parseInt(st.nextToken());

L2ItemInstance item = ItemTable.getInstance().createDummyItem(itemId);

item.setPriceToSell(price);

buy1.addItem(item);

itemCreated++;

}

 

_lists.put(new Integer(buy1.getListId()), buy1);

return itemCreated;

}

 

public L2TradeList getBuyList(int listId)

{

return _lists.get(new Integer(listId));

}

 

public List getBuyListByNpcId(int npcId)

{

List lists = new FastList();

 

for (L2TradeList list : _lists.values())

{

if (list.getNpcId().startsWith("gm"))

continue;

if (npcId == Integer.parseInt(list.getNpcId()))

lists.add(list);

}

 

return lists;

}

protected void restoreCount(int time)

{

if(_lists==null)return;

for (L2TradeList list : _lists.values())

{

list.restoreCount(time);

}

}

protected void dataTimerSave(int time){

java.sql.Connection con = null;

long timerSave = System.currentTimeMillis()+(long)time*60*60*1000;

try

{

con = L2DatabaseFactory.getInstance().getConnection();

PreparedStatement statement = con.prepareStatement("UPDATE merchant_buylists SET savetimer =? WHERE time =?");

statement.setLong(1, timerSave);

statement.setInt(2, time);

statement.executeUpdate();

statement.close();

} catch (Exception e) {

_log.log(Level.SEVERE, "TradeController: Could not update Timer save in Buylist" );

} finally {

try { con.close(); } catch (Exception e) {}

}

}

public void dataCountStore(){

java.sql.Connection con = null;

int listId;

try

{

if(_lists==null)return;

for (L2TradeList list : _lists.values()){

listId = list.getListId();

if(list==null)continue;

for(L2ItemInstance Item :list.getItems()){

if(Item.getCount()

 

Editado por Wallace Carvalho

Carregando Assinatura

Aguarde...

Link para o comentário
Compartilhar em outros sites

acredito eu que e so mudar

# Npc Invul Default = False para True

AltInvulNPC = True

 

<p>Boa noite.

 

- Gostaria de saber se não existe alguma maneira de arrumar a questão dos player está matando os NPC.

 

Esclarecendo, já configurei corretamente.

 

Como está.

 

# Npc Attackable

NpcAttackable = False

 

# Npc Invul Default = False

AltInvulNPC = True

 

____________________

 

Corrigido, Re-instalei o DB, :lala:

____________________

 

 

 

Como Arruma isso?

No buylists were found in data folder, using SQL buylist instead :wacko: :unsure:

 

FONTE: http://l2jreborn.goo...Controller.java

/*

* 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 net.sf.l2j.gameserver;

 

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.LineNumberReader;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.List;

import java.util.Map;

import java.util.StringTokenizer;

import java.util.logging.Level;

import java.util.logging.Logger;

 

import javolution.util.FastList;

import javolution.util.FastMap;

import net.sf.l2j.Config;

import net.sf.l2j.L2DatabaseFactory;

import net.sf.l2j.gameserver.datatables.ItemTable;

import net.sf.l2j.gameserver.model.L2ItemInstance;

import net.sf.l2j.gameserver.model.L2TradeList;

 

/**

* This class ...

*

* @version $Revision: 1.5.4.13 $ $Date: 2005/04/06 16:13:38 $

*/

public class TradeController

{

private static Logger _log = Logger.getLogger(TradeController.class.getName());

private static TradeController _instance;

 

private int _nextListId;

private Map _lists;

/** Task launching the function for restore count of Item (Clan Hall) */

public class RestoreCount implements Runnable

{

private int timer;

public RestoreCount(int time){

timer = time;

}

public void run()

{

try {

restoreCount(timer);

dataTimerSave(timer);

ThreadPoolManager.getInstance().scheduleGeneral(new RestoreCount(timer), (long)timer*60*60*1000);

}

catch (Throwable t) {}

}

}

public static TradeController getInstance()

{

if (_instance == null)

{

_instance = new TradeController();

}

return _instance;

}

 

private TradeController()

{

_lists = new FastMap();

File buylistData = new File(Config.DATAPACK_ROOT, "data/buylists.csv");

if (buylistData.exists())

{

_log.warning("Do, please, remove buylists from data folder and use SQL buylist instead");

String line = null;

LineNumberReader lnr = null;

int dummyItemCount = 0;

 

try

{

lnr = new LineNumberReader(new BufferedReader(new FileReader(buylistData)));

 

while ((line = lnr.readLine()) != null)

{

if (line.trim().length() == 0 || line.startsWith("#"))

{

continue;

}

 

dummyItemCount += parseList(line);

}

 

if (Config.DEBUG)

_log.fine("created " + dummyItemCount + " Dummy-Items for buylists");

_log.config("TradeController: Loaded " + _lists.size() + " Buylists.");

} catch (Exception e)

{

_log.log(Level.WARNING, "error while creating trade controller in linenr: " + lnr.getLineNumber(), e);

}

} else

{

_log.finer("No buylists were found in data folder, using SQL buylist instead");

java.sql.Connection con = null;

/*

* Initialize Shop buylist

*/

int dummyItemCount = 0;

try

{

con = L2DatabaseFactory.getInstance().getConnection();

PreparedStatement statement1 = con.prepareStatement("SELECT " + L2DatabaseFactory.getInstance().safetyString(new String[]

{ "shop_id", "npc_id" }) + " FROM merchant_shopids");

ResultSet rset1 = statement1.executeQuery();

while (rset1.next())

{

PreparedStatement statement = con.prepareStatement("SELECT " + L2DatabaseFactory.getInstance().safetyString(new String[]

{ "item_id", "price", "shop_id", "order", "count", "time", "currentCount" }) + " FROM merchant_buylists WHERE shop_id=? ORDER BY "

+ L2DatabaseFactory.getInstance().safetyString(new String[]

{ "order" }) + " ASC");

statement.setString(1, String.valueOf(rset1.getInt("shop_id")));

ResultSet rset = statement.executeQuery();

if (rset.next())

{

dummyItemCount++;

L2TradeList buy1 = new L2TradeList(rset1.getInt("shop_id"));

int itemId = rset.getInt("item_id");

int price = rset.getInt("price");

int count = rset.getInt("count");

int currentCount = rset.getInt("currentCount");

int time = rset.getInt("time");

L2ItemInstance item = ItemTable.getInstance().createDummyItem(itemId);

if (item == null) continue;

if(count > -1)

item.setCountDecrease(true);

item.setPriceToSell(price);

item.setTime(time);

item.setInitCount(count);

if(currentCount>-1)

item.setCount(currentCount);

else

item.setCount(count);

buy1.addItem(item);

buy1.setNpcId(rset1.getString("npc_id"));

try

{

while (rset.next())

{

dummyItemCount++;

itemId = rset.getInt("item_id");

price = rset.getInt("price");

count = rset.getInt("count");

time = rset.getInt("time");

currentCount = rset.getInt("currentCount");

L2ItemInstance item2 = ItemTable.getInstance().createDummyItem(itemId);

if (item2 == null) continue;

if(count > -1)

item2.setCountDecrease(true);

item2.setPriceToSell(price);

item2.setTime(time);

item2.setInitCount(count);

if(currentCount>-1)

item2.setCount(currentCount);

else

item2.setCount(count);

buy1.addItem(item2);

}

} catch (Exception e)

{

_log.warning("TradeController: Problem with buylist " + buy1.getListId() + " item " + itemId);

}

 

_lists.put(new Integer(buy1.getListId()), buy1);

_nextListId = Math.max(_nextListId, buy1.getListId() + 1);

}

 

rset.close();

statement.close();

}

rset1.close();

statement1.close();

 

if (Config.DEBUG)

_log.fine("created " + dummyItemCount + " Dummy-Items for buylists");

_log.config("TradeController: Loaded " + _lists.size() + " Buylists.");

/*

* Restore Task for reinitialyze count of buy item

*/

try

{

int time=0;

long savetimer=0;

long currentMillis = System.currentTimeMillis();

PreparedStatement statement2 = con.prepareStatement("SELECT DISTINCT time, savetimer FROM merchant_buylists WHERE time <> 0 ORDER BY time");

ResultSet rset2 = statement2.executeQuery();

while (rset2.next()){

time = rset2.getInt("time");

savetimer = rset2.getLong("savetimer");

if(savetimer-currentMillis>0)

ThreadPoolManager.getInstance().scheduleGeneral(new RestoreCount(time), savetimer-System.currentTimeMillis());

else

ThreadPoolManager.getInstance().scheduleGeneral(new RestoreCount(time), 0);

}

rset2.close();

statement2.close();

}catch (Exception e)

{

_log.warning("TradeController: Could not restore Timer for Item count.");

e.printStackTrace();

}

} catch (Exception e)

{

// problem with initializing spawn, go to next one

_log.warning("TradeController: Buylists could not be initialized.");

e.printStackTrace();

}

finally

{

try

{

con.close();

} catch (Exception e)

{}

}

}

}

 

private int parseList(String line)

{

int itemCreated = 0;

StringTokenizer st = new StringTokenizer(line, ";");

 

int listId = Integer.parseInt(st.nextToken());

L2TradeList buy1 = new L2TradeList(listId);

while (st.hasMoreTokens())

{

int itemId = Integer.parseInt(st.nextToken());

int price = Integer.parseInt(st.nextToken());

L2ItemInstance item = ItemTable.getInstance().createDummyItem(itemId);

item.setPriceToSell(price);

buy1.addItem(item);

itemCreated++;

}

 

_lists.put(new Integer(buy1.getListId()), buy1);

return itemCreated;

}

 

public L2TradeList getBuyList(int listId)

{

return _lists.get(new Integer(listId));

}

 

public List getBuyListByNpcId(int npcId)

{

List lists = new FastList();

 

for (L2TradeList list : _lists.values())

{

if (list.getNpcId().startsWith("gm"))

continue;

if (npcId == Integer.parseInt(list.getNpcId()))

lists.add(list);

}

 

return lists;

}

protected void restoreCount(int time)

{

if(_lists==null)return;

for (L2TradeList list : _lists.values())

{

list.restoreCount(time);

}

}

protected void dataTimerSave(int time){

java.sql.Connection con = null;

long timerSave = System.currentTimeMillis()+(long)time*60*60*1000;

try

{

con = L2DatabaseFactory.getInstance().getConnection();

PreparedStatement statement = con.prepareStatement("UPDATE merchant_buylists SET savetimer =? WHERE time =?");

statement.setLong(1, timerSave);

statement.setInt(2, time);

statement.executeUpdate();

statement.close();

} catch (Exception e) {

_log.log(Level.SEVERE, "TradeController: Could not update Timer save in Buylist" );

} finally {

try { con.close(); } catch (Exception e) {}

}

}

public void dataCountStore(){

java.sql.Connection con = null;

int listId;

try

{

if(_lists==null)return;

for (L2TradeList list : _lists.values()){

listId = list.getListId();

if(list==null)continue;

for(L2ItemInstance Item :list.getItems()){

if(Item.getCount()

 

 

acredito eu que e so mudar

# Npc Invul Default = False para True

AltInvulNPC = True

936722_377739219011127_231368342_n.jpg
Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...
Visitante
Este tópico está impedido de receber novos posts.





×
×
  • 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.