Kasthiel

Membro
  • Total de itens

    256
  • Registro em

  • Última visita

Reputação

20 Contribuidor

Sobre Kasthiel

  • Rank
    Membro Intermediário
  • Data de Nascimento 12-09-1988

Profile Information

  • Sexo
    Masculino
  • Cidade / UF
    Serra Talhada - PE

Últimos Visitantes

1.873 visualizações
  1. Alguém consegue fazer ele usar os itens de proteção que eu configurei até +15? Refinação +7 ele usar o ticket +7 ate o ticket +15, pois ele só tá pegando até o +5 e usando em tudo, não entendi o porque disso... //============================================================ //= Refiner //===== By: ================================================== //= KirieZ //===== Current Version: ===================================== //= 2.1.1 //===== Description: ========================================= //= A configurable refiner with lots of options, like: //= - Use items to increase chance //= - Use items to avoid losing the item //= - Refine more than one time in a single click //= - Ask if player wants to use items to increase chance/protect //= - Different fail results //= Go to the end of the script to change the settings. //============================================================ armia,84,119,5 script Super Refinador 826,{ function ShowChanceInfo; function ShowSecureInfo; function GetChanceBonus; function GetSecure; function ConsumeSecure; function Refine; function ConsumeChance; // Group requirement if (getgroupid() < .UseMinLv) { mes .npcname$; mes "Desculpa, mas nao posso te ajudar."; mes "Até logo."; close; } mes .npcname$; mes "Eu sou o Armsmith."; mes "Posso refinar todos os tipos de armas, armaduras e equipamentos, então deixe-me saber o que você quer refinar."; next; setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3"; set .@menu$, ""; for(.@i = 1; .@i <= 10; .@i++) { if(getequipisequiped(.@i)) { set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]"; .@equipped = 1; } set .@menu$, .@menu$ + ":"; } if (.@equipped == 0) { mes .npcname$; mes "Eu não acho que posso refinar quaisquer itens que você tem ..."; close; } // Get part to upgrade @part = select(.@menu$); if(!getequipisequiped(@part)) { mes .npcname$; mes "Você não está vestindo nada lá que eu possa refinar."; emotion e_an; close; } // Verificar se o item é refinável ... else if(!getequipisenableref(@part)) { mes .npcname$; mes "Eu não acho que posso refinar este item em tudo ..."; close; } // Verifique se os itens já estão + MAX_REFINE else if(getequiprefinerycnt(@part) >= .MaxRefine) { mes .npcname$; mes "Eu não posso refinar isso mais. Isto é tão refinado como ele fica!"; close; } // Save some upgrade data @refId = getequipid(@part); // item id @refCount = getequiprefinerycnt(@part); // refine count @refLv = getequipweaponlv(@part); // weapon level @price = .RefinePrices[@refLv]; // Refine Price @item = .RefineItems[@refLv]; // Refine Item @chance = getequippercentrefinery(@part); // Refine Chance @safe = .SafeLevels[@refLv]; // Safe limit .@refTimes = 1; if (.DisplayRefineInfo) { mes .npcname$; mes "Aqui estão algumas informações:"; mes "Limite de segurança: " + @safe; ShowChanceInfo(); ShowSecureInfo(); next; } // Opção de refinamento múltiplo if (getgroupid() >= .MultipleRefineMinLv) { mes .npcname$; mes "Posso refinar esta vez, ou várias vezes, o que você diz?"; next; switch(select("Refinar uma vez.:Refinar várias vezes.:Eu mudei de idéia.")) { case 1: .@refTimes = 1; break; case 2: if (.BreakWarning == 1) .@warningShown = 1; mes .npcname$; mes "Muito bem, quantas vezes você deseja refinar este item?"; next; do { input .@refTimes; if (.@refTimes <= 0 || (.@refTimes + @refCount) > .MaxRefine) { mes .npcname$; mes "Ei, eu não posso refinar este item muito!"; next; mes .npcname$; mes "Tente novamente."; next; } else { break; } } while(true); break; case 3: mes .npcname$; mes "Ok, volte quando precisar dos meus serviços."; close; } } .@totalPrice = @price * .@refTimes; mes .npcname$; mes "Para refinar isso eu preciso de"; mes .@refTimes + " ^A020F0"+getitemname(@item)+"^000000 e uma taxa de"; mes "serviço de ^228B22" + .@totalPrice + "^000000 Zeny."; mes "Você realmente deseja continuar?"; next; if (select("Sim:Não") == 2) { mes .npcname$; mes "Yeah..."; mes "Não há necessidade de correr. Não tenha pressa."; close; } else if((countitem(@item) < .@refTimes) || (Zeny < .@totalPrice)) { // Não pode pagar mes .npcname$; mes "Você não parece ter suficiente Zeny ou ^A020F0"+getitemname(@item)+"^000000..."; mes "Vá buscar mais. Estarei aqui o dia inteiro se precisar de mim."; close; } .@refResult = false; // Refine result useSecure = -1; // secure item usage useChance = -1; // chance item usage for (.@i = 0; .@i < .@refTimes; .@i++) { @secId = GetSecure(); @refCount = getequiprefinerycnt(@part); // refine count @chance = getequippercentrefinery(@part); // Refine Chance if (@secId && ConsumeSecure()) { if (!countitem(@secId)) { @secId = 0; useSecure = false; } else if (countitem(@secId) && ((.SecureAsk == 1) || (.SecureAsk == 2 && useSecure == -1))) { mes .npcname$; mes "Parece que você tem " + getitemname(@secId) + "."; mes "Deseja usá-lo para proteger seu item?"; next; if (select("Sim:Não") == 1) useSecure = true; else useSecure = false; mes .npcname$; mes "Tudo certo!"; next; } } GetChanceBonus(); if (@bonusId && ConsumeChance()) { if (!countitem(@bonusId)) { @bonusId = 0; @bonus = 0; useChance = false; } else if ((.ChanceAsk == 1) || (.ChanceAsk == 2 && useChance == -1)) { mes .npcname$; mes "Parece que você tem " + getitemname(@bonusId) + "."; mes "Você quer usá-lo para aumentar sua taxa de sucesso?"; next; if (select("Sim:Não") == 1) useChance = true; else useChance = false; mes .npcname$; mes "All right"; next; } } if (((@chance + @bonus) < 100) && useSecure != true && (.BreakWarning == 0 || (.BreakWarning > 0 && .@warningShown == 0))) { mes .npcname$; mes "Ah não! Se eu refinar isso novamente, há o risco de ser destruído!"; mes "Isso significa que este item, e qualquer coisa que estiver nele será perdido."; next; mes .npcname$; mes "Você ainda quer continuar?"; next; if (select("Sim:Não") == 2) { mes .npcname$; mes "Eu concordo completamente..."; mes "Eu poderia ser um ótimo refinador, mas às vezes até cometo erros."; close; } .@warningShown = 1; } .@refineRes = Refine(); if (.@refineRes) { .@refineCount++; } } if (! .@refineRes) { mes .npcname$; mes "Bem, não foi um trabalho perfeito, mas pelo menos seus itens estão em boa forma!"; close; } mes .npcname$; .@win = rand(1,3); if (.@win == 1) { mes "Perfeito!"; mes "Heh heh!"; mes "Mais uma vez, o trabalho impecável do mestre."; } else if(.@win == 2) { mes "Sucesso...!"; mes "Mais uma vez, meu incrível talento realmente deslumbra e brilha hoje."; } else { mes "Heh heh!"; mes "Estou pronto."; mes "Sem dúvida, meu trabalho é para sua satisfação."; mes "Perfeição pura, absoluta."; } close; // Refine () // Tenta refinar item em @part function Refine { // verificações personalizadas if(getequipisequiped(@part) == 0) { // Hacker removeu o item (não alterado, por quê?) mes .npcname$; mes "Olhe aqui... Você não tem nenhum item em..."; close; } else if(getequiprefinerycnt(@part) != @refCount || getequipid(@part) != @refId) { // hacker mudou o item mes .npcname$; emotion e_an; mes "Espere um segundo..."; mes "Você acha que eu sou estúpido ?!"; mes "Você mudou o item enquanto eu não estava olhando! Saia daqui!"; close; } delitem @item, 1; Zeny -= @price; .@refineChance = @chance; if (useChance == true) { delitem @bonusId, 1; .@refineChance += @bonus; } if (.@refineChance <= rand(100)) { // Falhou if (useSecure == true) { delitem @secId, 1; downrefitem @part, 0; mes .npcname$; mes "Infelizmente falhou, mas pelo menos seu artigo está em uma boa forma, certo?"; next; } else { .@failType = .FailResults[rand(getarraysize(.FailResults))]; switch(.@failType) { // Item destruído case 0: failedrefitem @part; break; // -1 refine case 1: downrefitem @part, 1; break; // +0 case 2: downrefitem @part, @refCount; break; // Stay as is case 3: downrefitem @part, 0; break; } mes .npcname$; emotion (!rand(5))?e_cash:e_omg; if(.@failType == 1) { // -1 mes "Porcaria!"; mes "Não poderia ter muito mais temperamento!"; mes "Desculpe por isto..."; next; } else if (.@failType == 2) { // Down to +0 mes "OH! MEU DEUS!"; mes "Droga! De novo não!"; mes "Eu sinto muito, mas você sabe que a prática faz perfeito."; mes "Huum, certo? Heh heh..."; next; } else if (.@failType == 3) { // Nada mes "Infelizmente falhou, mas pelo menos seu item está em uma boa forma, certo?"; return true; } else { // Pausa mes "Nooooooo!"; mes "Quebrou!"; mes "Eu-eu sinto muito!"; close; } return false; } } else { // Secure - Consume always if (useSecure == true && ((.SecureConsumeType == 1 && .@refineChance < 100) || .SecureConsumeType == 2)) delitem @secId, 1; successrefitem @part; } return true; } // ShowChanceInfo() // Exibe informações sobre refinar chances de sucesso e itens function ShowChanceInfo { GetChanceBonus(); // sets @bonus and @bonusId if (@bonusId && ((@chance >= 100 && .ChanceConsumeType > 0) || (@chance < 100))) { .@tChance = @chance + @bonus; mes "+" + (@refCount+1) +" Chance de Sucesso: ^228B22" + (.@tChance > 100 ? 100 : .@tChance) +"%^000000"; mes "Item para Aumentar Chance:"; mes "^A020F0" + getitemname(@bonusId) + "^000000 ^228B22(+"+@bonus+"%)^000000"; } else { mes "+" + (@refCount+1) +" Chance de Sucesso: ^228B22" + @chance + "%^000000"; } } // ShowSecureInfo() // Exibe informações sobre refinar itens seguros function ShowSecureInfo { .@secId = GetSecure(); if (.@secId && ((@chance >= 100 && .SecureConsumeType > 0) || (@chance < 100))) { if (.SecureType == 0) { mes "Item de Proteger Refinamento:"; mes "^A020F0" + getitemname(.@secId); } else if (.SecureType == 1) { mes "+"+@refCount+" Item de Proteger Refinamento: ^A020F0" + getitemname(.@secId); } } } // GetChanceBonus() // Recupera a chance eo item usado // e armazena em @bonus e @bonusId function GetChanceBonus { @bonus = 0; @bonusId = 0; if (.UseChanceItems) { @bonusId = .ChanceItems[@refLv * 2]; if (@bonusId) @bonus = .ChanceItems[@refLv * 2 + 1]; } } // <secId> GetSecure() // Recuperar as informações de segurança para este item // Retorna: o Item ID function GetSecure { if (.UseSecureItems) { if (.SecureType == 0) { // Cada tipo de arma tem um item para protegê-lo return .SecureItems[@refLv]; } else { // Cada nível de refinamento + tipo de item tem um item para protegê-lo if (@part == EQI_HAND_R || (@part == EQI_HAND_L && @wLvl > 0)) // Arma return .SecureItems[(.@curRef * 3)]; else if (@part == EQI_HEAD_TOP || @part == EQI_HEAD_MID || @part == EQI_HEAD_LOW) // Chapelaria return .SecureItems[(.@curRef * 3) + 1]; else // Armadura return .SecureItems[(.@curRef * 3) + 2]; } } } // ConsumeChance() // Verifica se ele pode consumir item casual function ConsumeChance { if (.UseChanceItems) { if ((.ChanceConsumeType > 0) || (@refCount >= @safe)) return true; } return false; } // ConsumeSecure() // Verifica se ele pode consumir item seguro function ConsumeSecure { if (.UseSecureItems) { if ((.SecureConsumeType <= 1 && @refCount >= @safe) || .SecureConsumeType == 2) return true; } return false; } OnInit: // ====================== // Configurações básicas // ====================== .npcname$ = "^A020F0[Refinador]^000000"; // Nome do NPC para diálogos .UseMinLv = 0; // Grupo de usuários mínimo para usar este NPC .MultipleRefineMinLv = 1; // Grupo de usuários necessário para refinar mais de uma vez // de uma vez só .DisplayRefineInfo = true; // O NPC deve exibir informações sobre // Refinar (como chance de sucesso) .UseSecureItems = true; // Permite o uso de itens para proteger // De falha (consulte a matriz .SecureItems) .UseChanceItems = true; // Permite o uso de itens que aumentam //A chance de sucesso (veja a matriz .ChanceItems) .MaxRefine = 15; // O máximo refinar // Exibir a mensagem "O refinamento pode falhar e seu item será destruído" // 0 - Exibir sempre (quando chance é menor que 100% e refinar não é protegido por item) // 1 - Exibir somente por uma vez refina // 2 - Exibir para uma vez refina e uma vez para refinamentos múltiplos .BreakWarning = 1; // Efeitos de uma tentativa de refinamento com falha // Quando o refinamento falha, o que acontece com o item? // 0 - Item é destruído // 1 - Item desce 1 nível de refinação // 2 - Item desce para +0 // 3 - Nada acontece // // Adicione os efeitos desejados a .FailResults, repita seu número // para aumentar a chance de que isso aconteça. // // Exemplos: // .FailResults [0], 0; // item é destruído ao falhar // .FailResults [0], 0, 3; // 50% de chance de ser destruído, 50% de chance de ficar como está // .FailResults [0], 0, 0, 1, 2; //50% de chance de destruir, 25% para -1, 25% para ir para +0 setarray .FailResults[0], 1; // Itens utilizados para refinar por Nível da Arma: setarray .RefineItems[0], 985, // Elunium - Armor (Level 0) 1010, // Phracon - Level 1 1011, // Emveretarcon - Level 2 984, // Oridecon - Level 3 984; // Oridecon - Level 4 // Preço em Z de nível de arma: setarray .RefinePrices[0], 500000, // Armor (Level 0) 100000, // Level 1 200000, // Level 2 300000, // Level 3 500000; // Level 4 // Nível de segurança por Nível da arma: setarray .SafeLevels[0], 4, // Armor (Level 0) 7, // Level 1 6, // Level 2 5, // Level 3 4; // Level 4 // ====================== // Refinar o Protetor // ====================== if (.UseSecureItems) { // Essas configurações são usadas somente se .UseSecureItems for true. // Como os itens .SecureItems funcionarão? // 0 - Cada tipo de arma tem um item para protegê-lo // 1 - Cada nível de refinamento + tipo de item tem um item para protegê-lo .SecureType = 1; // Perguntar se quer usar um item seguro? // 0 - não perguntar (se o item é inventário, use-o) // 1 - Perguntar antes de cada tentativa de refinamento // 2 - Perguntar uma vez para todas as tentativas de refinamento // (ao refinar várias vezes, caso contrário funciona como 1) .SecureAsk = 1; // Como os itens seguros são consumidos? // 0 - Se ele vai quebrar, consumir. // 1 - Consumir sempre (exceto em refinamento seguro) // 2 - Consumir sempre (mesmo em refinamentos seguros) .SecureConsumeType = 0; // Itens utilizados para proteger o refinamento. // Estes são os itens consumidos ao // refinar, eles são consumidos de acordo com .SecureConsumeType; // Use 0 para não usar um item para este nível. // Se .SecureType for 0, cada item de array significa um nível de arma. // Se .SecureType for 1, cada três itens de matriz significa um refinar // nível, e segue a ordem // <weapon>, <headgear>, <armor> // // Configurar o array abaixo, de acordo com o seu .SecureType acima. // // Nota: Oficialmente não há Nível de Arma superior a 4, // estes valores existem lá principalmente para refinar a proteção, // mas pode ser usado para itens personalizados. if (.SecureType == 0) { // If .SecureType is 0 setarray .SecureItems[0], 6395, // Armor (Level 0) 6395, // Level 1 6395, // Level 2 6395, // Level 3 6395; // Level 4 } else { // If .SecureType is 1 // Tipos de Item: // Arma // Chapelaria // Armadura (Todas as armaduras exceto o capacete) setarray .SecureItems[0], 501, 502, 503, // +0 501, 502, 503, // +1 501, 502, 503, // +2 501, 502, 503, // +3 501, 502, 503, // +4 6456, 6457, 6457, // +5 6231, 6235, 6235, // +6 6230, 6234, 6234, // +7 6229, 6233, 6233, // +8 6228, 6232, 6232, // +9 6993, 6994, 6994, // +10 6238, 6239, 6239, // +11 6584, 6585, 6585, // +12 6870, 6876, 6876, // +13 6871, 6877, 6877, // +14 6872, 6878, 6878; // +15 } } // =============================== // Refine Chance Increase // =============================== if (.UseChanceItems) { // Essas configurações são usadas somente se .UseChanceItems for true. // Como os Itens de Chance são consumidos? // 0 - Consumir se acima do nível seguro // 1 - Consumir sempre (mesmo em refinamentos seguros) .ChanceConsumeType = 0; // Pergunte se quer usar um item casual? // 0 - não perguntar (se o item é inventário, use-o) // 1 - Perguntar antes de cada tentativa de refinamento // 2 - Perguntar uma vez para todas as tentativas de refinamento // (ao refinar várias vezes, caso contrário funciona como 1) .ChanceAsk = 2; // Itens usados para aumentar o sucesso de refinamento eo aumento, por Nível de Arma. // Estes são os itens consumidos durante o refinamento para aumentar // a taxa de sucesso do refinamento, eles são consumidos de acordo com // .ChanceConsumeType; // Formato: <Item ID>, <Increase> // Um aumento de 1 é igual a 1% do total, // então se a taxa de sucesso for 80%, será 81%. // Use 0 como ID para não usar um item para este nível. setarray .ChanceItems[0], 40728, 5, // Armor (Level 0) 40728, 4, // Level 1 40727, 3, // Level 2 40730, 2, // Level 3 40729, 1; // Level 4 } end; }
  2. Estou querendo criptografar, botar senha ou qualquer coisa que proteja a minha grf de ser aberta e de ser pego os arquivos de dentro por outras pessoas, o problema é que eu baixei o Secure GRF mas ele não funciona no meu pc, ele para de funcionar assim que mando executar... Existe alguma outra ferramenta que possa fazer um trabalho assim de proteção das grf? Obs: Uso WIN10 e tá atualizado também...
  3. Nossa gostei dmais do seu npc 

    Meus Parabens..

     

    So queria saber se tem como fazer uma modificação, colocar pra ele dropar 1 item tdo dia da semana com o msm % de drop q no caso seria 10%

    vlw msm ^^

    1. Mostrar comentários anteriores  3 mais
    2. DVirtus

      DVirtus

      em questao de iniciar meia noite, tem como deixar ele rodando o dia todo, exemplo eu da reload script nao ter erro dele parar de funcionar

       

    3. Kasthiel

      Kasthiel

      ele fica o dia todo, mas qulqer coisa pede suporte na area la, q nao sei muita coisa nao

    4. DVirtus

      DVirtus

      mais ajudou dmais vlw msm pela força

       

  4. Informações de Rates Visulizar Arquivo Script mostra as rates do servidor assim que um personagem acaba de logar Ex: Rates: Exp Base:500x / Exp Job: 500x / Card Drop: 1% Ele busca a configuração que você fez no emulador e envia para o jogador. Ele está dividindo por 100 um valor de 10000 = 100x 10000/100 = 100x Basta ajustar o valor de /100 para um número maior ou menor de acordo com as suas rates configuradas no próprio emulador. set .@base,.@base / 100; set .@classe,.@classe / 100; set .@drop,.@drop / 100; Créditos RodRich Autor Kasthiel Enviado 15-05-2015 Categoria Scripts  
  5. Informações de Rates

    Version 1.0

    108 downloads

    Script mostra as rates do servidor assim que um personagem acaba de logar Ex: Rates: Exp Base:500x / Exp Job: 500x / Card Drop: 1% Ele busca a configuração que você fez no emulador e envia para o jogador. Ele está dividindo por 100 um valor de 10000 = 100x 10000/100 = 100x Basta ajustar o valor de /100 para um número maior ou menor de acordo com as suas rates configuradas no próprio emulador. set .@base,.@base / 100; set .@classe,.@classe / 100; set .@drop,.@drop / 100; Créditos RodRich
  6. Funciona sim, seu brAthena que ta bugado.... Zell, eu estava matando mob, ai apareceu uma mensagem q dropei 0 itens, sendo q nao botei valor menor que 1... E apareceu esse aviso
  7. Não usa nenhum deles. Você so vai editar o iteminfo da pasta system, o accname e acessoryid da pasta lua files e o item_db da versão que vai usar. nada desses arquivos ai.
  8. O dificifil é achar alguem que de tudo pronto
  9. Entra extraia da grf do bro pega e usa
  10. Para resposta 1 - Para ficar assim use um hexed 2012 para baixo 2 - Procure uma system compatível e que esteja traduzida. Pros outros. Eu testei a data do maminha e não gostei, te que fazer umas coisas pra editar e quando usei fudeu tudo. Mas gosto é gosto ne!?...
  11. Entao veja se existem todas as sprites , se nao me engano sao 2 arquivos em 3 pastas... Com os nomes corretos, pode ser que esteja faltando uma sprite
  12. Provavelmente as pasta system nao e compativel com data o seu hexed, use o 2014-03-05
  13. Usa uma versao antiga, os hexed atuais sao diferentes mesmo, usa uma 2012 ou menor
  14. Adicione o npc neste arquivo scripts_personalizados.conf cria uma pasta e bote +- assim que nem o meu no arquivo de cima npc: npc/personalizados/custom/NPC_CUSTOM.txt
  15. Para criar item olhe o id na pasta db no arquivo itendb comando para criar é @item ID Ex: @item 501 Para custom existe milheres de tuto para isso no forum de uma olhada na area de tutoriais.