Ir para conteúdo
  • Cadastre-se

Interface Classic to Interlude


Marlon

Posts recomendados


 

O erro já foi encontrado, e alguns colegas de equipe estão tentando fixar gente, só ter paciência.

 

Há um código malicioso para que feche em 20 minutos online, você precisa deixar o char os 20 min logado, não pode reiniciar nem nada.

 

//edit

 

Verdade, aqui fechou, o código está encryptado dentro do "interface.u". como estou no notebook sem programas, fica difícil tentar abrir.

Editado por DemonikaBR-Marcos

CYeAxaZ.png


L2JDREAM PROJECT TEAM

Link para o comentário
Compartilhar em outros sites

Tem 1 problema quando vc loga 1 conta e for loga a outra a barra que mostra as skill que esta usando n aparece


Ok, lindao, eu consegui a interface do sublimity, e ela nao da kick, eu vou fazer outro post dela (ou posto aqui mesmo), e voce da uma olhada nela, pra ve se te ajuda..

pode ser

 

 

 

amigo vc vai disponibilizar essa inteface do sublimity

Link para o comentário
Compartilhar em outros sites

Tem 1 problema quando vc loga 1 conta e for loga a outra a barra que mostra as skill que esta usando n aparece

amigo vc vai disponibilizar essa inteface do sublimity

https://www.l2jbrasil.com/index.php?/topic/123793-interface-classic-para-interlude-versao-sublimity/

 

vdd, tambem acontece cmg, as vezes com um rr, volta ao normal, mais as vezes tem que sair e entrar denovo

Editado por ona

Lineage 2 Lords

Link para o comentário
Compartilhar em outros sites

https://www.l2jbrasil.com/index.php?/topic/123793-interface-classic-para-interlude-versao-sublimity/

 

vdd, tambem acontece cmg, as vezes com um rr, volta ao normal, mais as vezes tem que sair e entrar denovo

Essa barrinha da skill que aparece na tela na interface que você postou não tem ela ?

Link para o comentário
Compartilhar em outros sites

  • L2JBr ADM

Marlon tem alguma notícia pra nos fazer relaxar ? :P

 

 

Estou a 50% de conseguir reverter a modificação binária (que não é criptografia e sim uma alteração no compilador), talvez consigamos terminar até semana que vem.

EJoOSOj.gif

Sua pergunta foi respondida? Certifique-se de marcar a resposta como a solução aceita.
Se existe mais de uma resposta, utilize o "vote up" para destacá-la.
Se você achar uma resposta útil, diga obrigado clicando no botão "Gostei".

Link para o comentário
Compartilhar em outros sites

 

 

Estou a 50% de conseguir reverter a modificação binária (que não é criptografia e sim uma alteração no compilador), talvez consigamos terminar até semana que vem.

 

mesmo alterando o compilador, a estrutura de pacotes e grupo de eventos e texturas nao deveria ser o mesmo tio? pra o jogo entender ?

Te Ajudei? Curte ai para me ajudar!
Ass.: Daniel Amaral

Filizard Project Is Coming Soon, Acessem a Fanpage: Filizard Project

Link para o comentário
Compartilhar em outros sites

 

 

Estou a 50% de conseguir reverter a modificação binária (que não é criptografia e sim uma alteração no compilador), talvez consigamos terminar até semana que vem.

esse código que diz que da kick nao seria o mesmo que da atual do dono da interface?

se sim, nao seria melhor, mexer na mais atual..

Editado por ona

Lineage 2 Lords

Link para o comentário
Compartilhar em outros sites

  • L2JBr ADM

 

mesmo alterando o compilador, a estrutura de pacotes e grupo de eventos e texturas nao deveria ser o mesmo tio? pra o jogo entender ?

 

Não, pois o que acontece é a substitução de caracteres ASCII para formatos não reconhecidos por compiladores comuns. No fim das contas para o programa compilado o nome da variável é convertido em binário então não tem problema mas para o compilador que transforma "function foo (){}" em alguma coisa binária ele não consegue, essa substituição binária acontece ou durante ou após a conversão. No exemplo do código abaixo vocês verão uns quadrados, eles representam os valores de caracters não decodificados. Há alguns que nem possuem representção, então são invisíveis para editores de texto comuns.

 

Por exemplo em php vc pode fazer algo assim:

 

<?php


$x  = '';
$$x = 'foo';


echo "${''}";

Acredite ou não mas o código ali em cima irá imprimir "foo", troque o espaço em branco por qualquer coisa e ele será o endereço de uma variávle na memória, esse enereço será gravado baseado no valor binário.

 

 

O lineage2 é um jogo desenvolvido com base no Unreal 2, as interfaces do jogo são programadas em uma linaguagem chamada "Unreal C" que é baseada no C (por isso é tão parecida com php) , já o Unreal 4 é baseada no C++.

 

 

esse código que diz que da kick nao seria o mesmo que da atual do dono da interface?

se sim, nao seria melhor, mexer na mais atual..

 

 

 

function OnEnterState (name a_PreStateName)
{
 //...
  „.SetTimer(1,1200000); // 20 min em milesegundos: (1200000/1000)/60 = 20min
}
function OnTimer (int TimerID)
{
 //...
 if ( UnknownFunction154(TimerID,2) )
 {
  RequestExit(); //Isso aqui faz fechar o client, é a mesma função executada no "exit"
 }
}

PS: Os caracteres codificados nem são exibidos pois eles não são armazenados na base de dados do fórum por não serem carateres utf8

EJoOSOj.gif

Sua pergunta foi respondida? Certifique-se de marcar a resposta como a solução aceita.
Se existe mais de uma resposta, utilize o "vote up" para destacá-la.
Se você achar uma resposta útil, diga obrigado clicando no botão "Gostei".

Link para o comentário
Compartilhar em outros sites

d81bf018f0.jpg

dang im good


 

function OnEnterState (name a_PreStateName)
{
 //...
  „.SetTimer(1,1200000); // 20 min em milesegundos: (1200000/1000)/60 = 20min
}
function OnTimer (int TimerID)
{
 //...
 if ( UnknownFunction154(TimerID,2) )
 {
  RequestExit(); //Isso aqui faz fechar o client, é a mesma função executada no "exit"
 }
}

PS: Os caracteres codificados nem são exibidos pois eles não são armazenados na base de dados do fórum por não serem carateres utf8

where are you getting this from? only thing i found with onTimer has to do with exscreenshowmessage (the onscreen message)

-----------------------

ok nvm found it by changing requestExit to requestExix from hex

Failed to find function RequestExix in ShortcutWnd Transient.ShortcutWnd0
function OnTimer (int TimerID)
{
  local string Š†
;
  local string ‡‰
‰“Œ…‘;
  local string   ;
  local string 
„ˆ“  ;
  local string Ž‰‹‚;

  Ž‰‹‚ = ’Š(1);
  Š†
   = ’Š(1);
  ‡‰
  ‰“Œ…‘ = ’Š(1);
     = UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112(UnknownFunction112("",‚(19)),""),’Š(8)),""),’Š(25)),""),’Š(3)),""),’Š(11)),""),’Š(15)),""),’Š(3)),""),‚(26)),""),’Š(9)),""),’Š(25)),""),’Š(12)),""),’Š(5)),""),’Š(3)),""),’Š(4)),""),’Š(37)),""),’Š(8)),""),’Š(25)),""),’Š(8)),"");
  GetINIString(Š†
  ,‡‰
  ‰“Œ…‘,
  „ˆ“  ,  );

i cant read this but im assuming that it checks for a certain ini property every 20 min to see if you have it based on the fact that it uses GetINIString(Š†.....) and if you dont it sends requestExit (shortcutWnd line 509)

Editado por MrRees

Munch inside...

Link para o comentário
Compartilhar em outros sites

ez

solution = change RequestExit to RequestTest with hex edit (no problems for me at the moment)\

 

thank me later


75f10920e4.jpg


bd53619d34.jpg

 

http://www.mediafire.com/file/t1yuaxwa597g4af/Brazil+Classic+Interface.rar

 

please test it out thanks (no you dont get my purple UI)

Editado por MrRees

Munch inside...

Link para o comentário
Compartilhar em outros sites

Thanks for sharing, did you edit yourself to stop taking kicks?

yes, however it doesnt address the problem that a lot of the script is still obfuscated therefore devs cant rebuild it (until the genius grundor finds a way or something LOL)

but my share works on local so far and i havent been kicked for over an hour (good for players or simple admins)

Editado por MrRees

Munch inside...

Link para o comentário
Compartilhar em outros sites

yes, however it doesnt address the problem that a lot of the script is still obfuscated therefore devs cant rebuild it (until the genius grundor finds a way or something LOL)

but my share works on local so far and i havent been kicked for over an hour (good for players or simple admins)

Well, I'm testing here Mr, and it still has not kicked.
it contains some bugs like: Casting skill needs to replay once to appear, and potions as well

Lineage 2 Lords

Link para o comentário
Compartilhar em outros sites

 

Well, I'm testing here Mr, and it still has not kicked.
it contains some bugs like: Casting skill needs to replay once to appear, and potions as well

 

i didnt edit anything outside of what i said above and the watermark so i think it was just broken to begin with

Munch inside...

Link para o comentário
Compartilhar em outros sites

i didnt edit anything outside of what i said above and the watermark so i think it was just broken to begin with

20 min playing any server:

 

Client Clean

Editado por ona

Lineage 2 Lords

Link para o comentário
Compartilhar em outros sites

Ona essa outra interface do MrRees continua dando kick ou critical após 20 min? ou está funcionando normal??

Levei esse critical que postei..

agora vamos testar a que ele postou..

Lineage 2 Lords

Link para o comentário
Compartilhar em outros sites

  • L2JBr ADM

yes, however it doesnt address the problem that a lot of the script is still obfuscated therefore devs cant rebuild it (until the genius grundor finds a way or something LOL)

but my share works on local so far and i havent been kicked for over an hour (good for players or simple admins)

 

OMG! I loved Geinus Grundor :)

 

Yeah, I'm trying to build a hex replacer to fix all files, I'm removing all non unicode characters replaceing it for a sequential string such as "L2JBRvar1" or "L2JBrfunction2", I have successed for some cases but it do not covers all strings, yet.

 

 

To fix that is very simple, you must cancel that timer:

 

 

And you can simple remove, that line on EnterState :

 „.SetTimer(1,1200000) 

And

if ( UnknownFunction154(TimerID,2) )
{
ChatWnd.KillTimer(2); //Remove timer instead
RequestExit();
}

If you just remove once, it will not work and may cause this 10000000...00 interactions because the timer will never be processed, and any broke thing at interface.u scripts will cause a critical error.

EJoOSOj.gif

Sua pergunta foi respondida? Certifique-se de marcar a resposta como a solução aceita.
Se existe mais de uma resposta, utilize o "vote up" para destacá-la.
Se você achar uma resposta útil, diga obrigado clicando no botão "Gostei".

Link para o comentário
Compartilhar em outros sites

  • Registre-se

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






  • Patrocinadores

  • Quem Está Navegando

    • Nenhum usuário registrado visualizando esta página.
  • Posts

    • Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?    
    • muchas gracias muy lindos NPC 🙂
    • relaxa jovem gafanhoto, testa as quests. e posTa os erros indesejaveis.  
    • Se alguém pudesse me ensinar como codificar as missões, eu ficaria feliz em fazer isso sozinho ou pelo menos ajudar. Eu realmente quero jogar em um servidor onde todas as quests funcionem bem e melhor ainda se você puder fazer quests customizadas!
    • mas no interlude, nem todas as quests de class,  vai mostrar onde tem que ir, ate o reborn nao mostrava quando era interlude, só mostrou depois que eles colocaram client classic pra rodar, e ficou melhor ainda quando virou hellbound em diante, mas ha sim alguma chance de modificar isso direto no script para fazer igualmente, só basta te um pouco de paciencia e persistencia exato
    • 408_PathToElvenwizard dá Orion eu tive que mexer tbm, até modifiquei e consegui deixar ela igual do Classic, com a seta e a marcação no mapa. (não retail IL) Dá pra importar py de várias revs, o foda é que não da regular as quest py através do debug em tempo real, pelo menos eu não consegui rsrs
    • Hasta el momento todas las QUESTS son completables si te guias con un tutorial de youtube. El problema es que tienen bugs de locacion y de subquests que no avanzan o no te marcan correctamente a donde ir en el mapa, cosa que en Retail si se ve como corresponde.
    • estranho, mas pelo menos a galera nunca reclamo das quests quando tinha aberto 5x, geral fez class primeira e segunda job, poucos que compraram a class
    • en RUSaCis-3.5 data pack, las Quests estan en formato .java y son diferentes a como estan redactadas en jOrion y jFrozen 1.5 (ProyectX) package net.sf.l2j.gameserver.scripting.quest; import net.sf.l2j.commons.random.Rnd; import net.sf.l2j.gameserver.enums.Paperdoll; import net.sf.l2j.gameserver.enums.QuestStatus; import net.sf.l2j.gameserver.enums.actors.ClassId; import net.sf.l2j.gameserver.model.actor.Creature; import net.sf.l2j.gameserver.model.actor.Npc; import net.sf.l2j.gameserver.model.actor.Player; import net.sf.l2j.gameserver.network.serverpackets.SocialAction; import net.sf.l2j.gameserver.scripting.QuestState; public class Q224_TestOfSagittarius extends SecondClassQuest { private static final String QUEST_NAME = "Q224_TestOfSagittarius"; // Items private static final int BERNARD_INTRODUCTION = 3294; private static final int HAMIL_LETTER_1 = 3295; private static final int HAMIL_LETTER_2 = 3296; private static final int HAMIL_LETTER_3 = 3297; private static final int HUNTER_RUNE_1 = 3298; private static final int HUNTER_RUNE_2 = 3299; private static final int TALISMAN_OF_KADESH = 3300; private static final int TALISMAN_OF_SNAKE = 3301; private static final int MITHRIL_CLIP = 3302; private static final int STAKATO_CHITIN = 3303; private static final int REINFORCED_BOWSTRING = 3304; private static final int MANASHEN_HORN = 3305; private static final int BLOOD_OF_LIZARDMAN = 3306; private static final int CRESCENT_MOON_BOW = 3028; private static final int WOODEN_ARROW = 17; // Rewards private static final int MARK_OF_SAGITTARIUS = 3293; // NPCs private static final int BERNARD = 30702; private static final int HAMIL = 30626; private static final int SIR_ARON_TANFORD = 30653; private static final int VOKIAN = 30514; private static final int GAUEN = 30717; // Monsters private static final int ANT = 20079; private static final int ANT_CAPTAIN = 20080; private static final int ANT_OVERSEER = 20081; private static final int ANT_RECRUIT = 20082; private static final int ANT_PATROL = 20084; private static final int ANT_GUARD = 20086; private static final int NOBLE_ANT = 20089; private static final int NOBLE_ANT_LEADER = 20090; private static final int BREKA_ORC_SHAMAN = 20269; private static final int BREKA_ORC_OVERLORD = 20270; private static final int MARSH_STAKATO_WORKER = 20230; private static final int MARSH_STAKATO_SOLDIER = 20232; private static final int MARSH_STAKATO_DRONE = 20234; private static final int MARSH_SPIDER = 20233; private static final int ROAD_SCAVENGER = 20551; private static final int MANASHEN_GARGOYLE = 20563; private static final int LETO_LIZARDMAN = 20577; private static final int LETO_LIZARDMAN_ARCHER = 20578; private static final int LETO_LIZARDMAN_SOLDIER = 20579; private static final int LETO_LIZARDMAN_WARRIOR = 20580; private static final int LETO_LIZARDMAN_SHAMAN = 20581; private static final int LETO_LIZARDMAN_OVERLORD = 20582; private static final int SERPENT_DEMON_KADESH = 27090; public Q224_TestOfSagittarius() { super(224, "Test Of Sagittarius"); setItemsIds(BERNARD_INTRODUCTION, HAMIL_LETTER_1, HAMIL_LETTER_2, HAMIL_LETTER_3, HUNTER_RUNE_1, HUNTER_RUNE_2, TALISMAN_OF_KADESH, TALISMAN_OF_SNAKE, MITHRIL_CLIP, STAKATO_CHITIN, REINFORCED_BOWSTRING, MANASHEN_HORN, BLOOD_OF_LIZARDMAN, CRESCENT_MOON_BOW); addQuestStart(BERNARD); addTalkId(BERNARD, HAMIL, SIR_ARON_TANFORD, VOKIAN, GAUEN); addMyDying(ANT, ANT_CAPTAIN, ANT_OVERSEER, ANT_RECRUIT, ANT_PATROL, ANT_GUARD, NOBLE_ANT, NOBLE_ANT_LEADER, BREKA_ORC_SHAMAN, BREKA_ORC_OVERLORD, MARSH_STAKATO_WORKER, MARSH_STAKATO_SOLDIER, MARSH_STAKATO_DRONE, MARSH_SPIDER, ROAD_SCAVENGER, MANASHEN_GARGOYLE, LETO_LIZARDMAN, LETO_LIZARDMAN_ARCHER, LETO_LIZARDMAN_SOLDIER, LETO_LIZARDMAN_WARRIOR, LETO_LIZARDMAN_SHAMAN, LETO_LIZARDMAN_OVERLORD, SERPENT_DEMON_KADESH); } @Override public String onAdvEvent(String event, Npc npc, Player player) { String htmltext = event; QuestState st = player.getQuestList().getQuestState(QUEST_NAME); if (st == null) return htmltext; // BERNARD if (event.equalsIgnoreCase("30702-04.htm")) { st.setState(QuestStatus.STARTED); st.setCond(1); playSound(player, SOUND_ACCEPT); giveItems(player, BERNARD_INTRODUCTION, 1); if (giveDimensionalDiamonds39(player)) htmltext = "30702-04a.htm"; } // HAMIL else if (event.equalsIgnoreCase("30626-03.htm")) { st.setCond(2); playSound(player, SOUND_MIDDLE); takeItems(player, BERNARD_INTRODUCTION, 1); giveItems(player, HAMIL_LETTER_1, 1); } else if (event.equalsIgnoreCase("30626-07.htm")) { st.setCond(5); playSound(player, SOUND_MIDDLE); takeItems(player, HUNTER_RUNE_1, 10); giveItems(player, HAMIL_LETTER_2, 1); } // SIR_ARON_TANFORD else if (event.equalsIgnoreCase("30653-02.htm")) { st.setCond(3); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_1, 1); } // VOKIAN else if (event.equalsIgnoreCase("30514-02.htm")) { st.setCond(6); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_2, 1); } return htmltext; } @Override public String onTalk(Npc npc, Player player) { String htmltext = getNoQuestMsg(); QuestState st = player.getQuestList().getQuestState(QUEST_NAME); if (st == null) return htmltext; switch (st.getState()) { case CREATED: if (player.getClassId() != ClassId.ROGUE && player.getClassId() != ClassId.ELVEN_SCOUT && player.getClassId() != ClassId.ASSASSIN) htmltext = "30702-02.htm"; else if (player.getStatus().getLevel() < 39) htmltext = "30702-01.htm"; else htmltext = "30702-03.htm"; break; case STARTED: int cond = st.getCond(); switch (npc.getNpcId()) { case BERNARD: htmltext = "30702-05.htm"; break; case HAMIL: if (cond == 1) htmltext = "30626-01.htm"; else if (cond == 2 || cond == 3) htmltext = "30626-04.htm"; else if (cond == 4) htmltext = "30626-05.htm"; else if (cond > 4 && cond < 8) htmltext = "30626-08.htm"; else if (cond == 8) { htmltext = "30626-09.htm"; st.setCond(9); playSound(player, SOUND_MIDDLE); takeItems(player, HUNTER_RUNE_2, 10); giveItems(player, HAMIL_LETTER_3, 1); } else if (cond > 8 && cond < 12) htmltext = "30626-10.htm"; else if (cond == 12) { htmltext = "30626-11.htm"; st.setCond(13); playSound(player, SOUND_MIDDLE); } else if (cond == 13) htmltext = "30626-12.htm"; else if (cond == 14) { htmltext = "30626-13.htm"; takeItems(player, BLOOD_OF_LIZARDMAN, -1); takeItems(player, CRESCENT_MOON_BOW, 1); takeItems(player, TALISMAN_OF_KADESH, 1); giveItems(player, MARK_OF_SAGITTARIUS, 1); rewardExpAndSp(player, 54726, 20250); player.broadcastPacket(new SocialAction(player, 3)); playSound(player, SOUND_FINISH); st.exitQuest(false); } break; case SIR_ARON_TANFORD: if (cond == 2) htmltext = "30653-01.htm"; else if (cond > 2) htmltext = "30653-03.htm"; break; case VOKIAN: if (cond == 5) htmltext = "30514-01.htm"; else if (cond == 6) htmltext = "30514-03.htm"; else if (cond == 7) { htmltext = "30514-04.htm"; st.setCond(8); playSound(player, SOUND_MIDDLE); takeItems(player, TALISMAN_OF_SNAKE, 1); } else if (cond > 7) htmltext = "30514-05.htm"; break; case GAUEN: if (cond == 9) { htmltext = "30717-01.htm"; st.setCond(10); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_3, 1); } else if (cond == 10) htmltext = "30717-03.htm"; else if (cond == 11) { htmltext = "30717-02.htm"; st.setCond(12); playSound(player, SOUND_MIDDLE); takeItems(player, MANASHEN_HORN, 1); takeItems(player, MITHRIL_CLIP, 1); takeItems(player, REINFORCED_BOWSTRING, 1); takeItems(player, STAKATO_CHITIN, 1); giveItems(player, CRESCENT_MOON_BOW, 1); giveItems(player, WOODEN_ARROW, 10); } else if (cond > 11) htmltext = "30717-04.htm"; break; } break; case COMPLETED: htmltext = getAlreadyCompletedMsg(); break; } return htmltext; } @Override public void onMyDying(Npc npc, Creature killer) { final Player player = killer.getActingPlayer(); final QuestState st = checkPlayerState(player, npc, QuestStatus.STARTED); if (st == null) return; switch (npc.getNpcId()) { case ANT: case ANT_CAPTAIN: case ANT_OVERSEER: case ANT_RECRUIT: case ANT_PATROL: case ANT_GUARD: case NOBLE_ANT: case NOBLE_ANT_LEADER: if (st.getCond() == 3 && dropItems(player, HUNTER_RUNE_1, 1, 10, 500000)) st.setCond(4); break; case BREKA_ORC_SHAMAN: case BREKA_ORC_OVERLORD: if (st.getCond() == 6 && dropItems(player, HUNTER_RUNE_2, 1, 10, 500000)) { st.setCond(7); giveItems(player, TALISMAN_OF_SNAKE, 1); } break; case MARSH_STAKATO_WORKER: case MARSH_STAKATO_SOLDIER: case MARSH_STAKATO_DRONE: if (st.getCond() == 10 && dropItems(player, STAKATO_CHITIN, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, MITHRIL_CLIP, REINFORCED_BOWSTRING)) st.setCond(11); break; case MARSH_SPIDER: if (st.getCond() == 10 && dropItems(player, REINFORCED_BOWSTRING, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, MITHRIL_CLIP, STAKATO_CHITIN)) st.setCond(11); break; case ROAD_SCAVENGER: if (st.getCond() == 10 && dropItems(player, MITHRIL_CLIP, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, REINFORCED_BOWSTRING, STAKATO_CHITIN)) st.setCond(11); break; case MANASHEN_GARGOYLE: if (st.getCond() == 10 && dropItems(player, MANASHEN_HORN, 1, 1, 100000) && player.getInventory().hasItems(REINFORCED_BOWSTRING, MITHRIL_CLIP, STAKATO_CHITIN)) st.setCond(11); break; case LETO_LIZARDMAN: case LETO_LIZARDMAN_ARCHER: case LETO_LIZARDMAN_SOLDIER: case LETO_LIZARDMAN_WARRIOR: case LETO_LIZARDMAN_SHAMAN: case LETO_LIZARDMAN_OVERLORD: if (st.getCond() == 13) { if (((player.getInventory().getItemCount(BLOOD_OF_LIZARDMAN) - 120) * 5) > Rnd.get(100)) { playSound(player, SOUND_BEFORE_BATTLE); takeItems(player, BLOOD_OF_LIZARDMAN, -1); addSpawn(SERPENT_DEMON_KADESH, player, false, 300000, true); } else dropItemsAlways(player, BLOOD_OF_LIZARDMAN, 1, 0); } break; case SERPENT_DEMON_KADESH: if (st.getCond() == 13) { if (player.getInventory().getItemIdFrom(Paperdoll.RHAND) == CRESCENT_MOON_BOW) { st.setCond(14); playSound(player, SOUND_MIDDLE); giveItems(player, TALISMAN_OF_KADESH, 1); } else addSpawn(SERPENT_DEMON_KADESH, player, false, 300000, true); } break; } } }  
×
×
  • 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.