Jump to content

Kasthiel

Members
  • Posts

    38
  • Joined

  • Last visited

1 Follower

About Kasthiel

  • Birthday September 12

Profile Information

  • Gender
    Male
  • Interests
    Men, Friends, Knowledge, Languages, Private server, Customization, Ragnarok, L2...

Recent Profile Visitors

3061 profile views

Kasthiel's Achievements

Poring

Poring (1/15)

3

Reputation

  1. Hi guys. I need an automatic class master. I wish I could be an equal to the current rathena class master npc. That it has expanded classes and babies only for vip and the other classes and the third for anyone.
  2. I would like them to help me add some item to come with status at the time it drops from a monster, str, agi, dex, int. That they came randomly, between one or more options, I tried but it did not work, or I added it wrong. What exactly do I have to know and where should I add. ID? Name? I have seen some topics that I have been able to add but I can not understand myself. It can be with the bonuses that are already configured by default in rathena. No custom status at the moment.
  3. I just can not seem to make the game screen open, I have to run and it does not open.
  4. I was just referring to the txt files, the sprites files are already as they were to be hehehe
  5. what is the secret to converting and maintaining the encoding of a file with the names of the sprites in Korean unidentifiedDisplayName = "Red Potion", unidentifiedResourceName = "빨간포션", for this mode? unidentifiedDisplayName = "Red Potion", unidentifiedResourceName = "»¡°£Æ÷¼Ç", I use iteminfo in PT-BR, and it has characters that the English language does not use, I would like it to remain formatted so that I can use it without problems. And this iteninfo is the most current kRO, and I do not use one of the bRO server. As much as I use the AnSII option of notpad ++ and save when I close the intent it returns the Korean sprite and I do not want this.
  6. I do not know what might be happening but I can not compile this current emulator of github ... I'm trying but it only gets this error.
  7. Hello, I would like to know if gef_dun00 is up to gef_dun03 and has some configuration problem in the mob, because a player went there and told us that the mobs are not dropping an item or attacking the player.
  8. anyone in good heart could fix this refiner to pick up and use the protection items as they are configured? because it is working otherwise, and I did not understand anything either. To each weapon + he used the corresponding protection, which for me he is not doing which would be the items in this line: // If .SecureType is 1 //============================================================ //= 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 Isso significa que este item, e qualquer coisa sobre ele será ido."; 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; }
  9. Hi friends, I'd like some help from you guys to adjust this Gold Room. 1st I would like to set (Monday, Wednesday and Friday) for her to open 2nd Set a certain time of day (18:30, 21:30 and 00:30) As soon as this Monday at 18:30 it would open and close after 1 hour. 3º to kill 1 monster instead of being born this monster pile, he selected one of the list and was born, whenever one dies one is born another in the place, but using these same monsters. //********************************************************************************************************************************************************************************* //***--Topic Link : ***\( ^ ~ ^ )/*** //*** //*** //********************************************************************************************************************************************************************************* //***-- Script by : ***\( ^ ~ ^ )/*** //***-- Emistry //*** //********************************************************************************************************************************************************************************* //***-- Contact Info : ***\( ^ ~ ^ )/*** //***-- My Email : [email protected] //*** //********************************************************************************************************************************************************************************* //***-- Messages : ***\( ^ ~ ^ )/*** //***-- Drop me a private message or email if you are looking for my helps ^^. //***-- Beside that, I am looking for a Server to work with ^^ . //***-- I will do my best to help you ^^. //***-- More Details ? PM Me ^^. //*** //********************************************************************************************************************************************************************************* //***Although these scripts might not suit or follow with what you have requested completely. But i still wish you can give it a try before reject the works. //*** //********************************************************************************************************************************************************************************* //-------------------------MONSTER DATABASE [ REPLACE it in Your MOB_DB.txt ] -------------------------------------------------------------------- //1852,G_EM_ANGELING,Angeling,Angeling,99,120,0,0,0,1,60,71,100,99,1,17,80,80,126,20,10,12,0,8,66,0x37B5,300,1288,288,384,0,0,0,0,0,0,969,5000,969,10000,969,8000,969,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //1853,G_EM_DEVILING,Deviling,Deviling,99,120,0,0,0,1,60,71,100,99,1,17,80,80,126,20,10,12,0,8,66,0x37B5,300,1288,288,384,0,0,0,0,0,0,7444,5000,7444,10000,7444,5000,969,10000,969,5000,0,0,0,0,0,0,0,0,0,0,0,0 //-------------------------NPC [ Warper + Exchanger ] -------------------------------------------------------------------- sala_vip,104,103,5 script Gold Room 10120,{ set @NPC$,"^A020F0[Gold Room]^000000"; // Nome do Npc. mes @NPC$; mes "Eu posso te levar para uma mina de ouro."; next; mes @NPC$; mes "Eu cobro um valor de:"; mes "100.000 Zeny por entrada."; next; switch(select("Entrar na sala de ouro:Cancelar")) { case 1: if(Zeny < 100000) goto nomoney; set .@a,rand(50); set .@b,rand(50); mes @NPC$; mes "Antes de entrar, você precisa responder a pergunta para verificação de segurança."; mes "Se A = "+.@a+" B = "+.@b; switch( rand(1) ){ set .@answer,.@a + .@b; mes "Quantos são A + B ?"; next; input .@input; next; if( .@input!=.@answer ) { //atcommand "@kick " + strcharinfo(0); warp "SavePoint",0,0; close; break; } else if (.@input==.@answer) { set Zeny,Zeny-1000000; addtimer 5000,strnpcinfo(0)+"::OnTimeLimit"; mes @NPC$; mes "Você provou seu valor."; mes "Por favor. Entre."; next; warp "pvp_y_1-5",0,0; close; } end; } case 2: mes @NPC$; mes "Owh...."; mes "Não importa... Já que é sua decisão."; mes "Tudo depende de você."; mes "Volte se você mudar de idéia."; close; } nomoney: mes @NPC$; mes "Desculpe. Você precisa de 1.000.000z para poder entrar!"; close; OnTimeLimit: message strcharinfo(0),"[Gold Room ] Você tem 15 minuto!"; sleep2 900000; warp "SavePoint",0,0; end; OnInit: //removemapflag "pvp_y_1-5",mf_nowarp; monster "pvp_y_1-5",0,0,"Gold Angeling",1096,25,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Ghostring",1120,25,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold ArchAngeling",1388,25,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Deviling",1582,25,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Poring",1002,100,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Poporing",1031,100,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Poring Noel",1062,100,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Drops",1113,100,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Botaring",2093,100,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Marin",1242,100,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Metaling",1613,100,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Stapo",1784,100,strnpcinfo(0)+"::OnKill"; end; OnKill: monster "pvp_y_1-5",0,0,"Gold Mastering",1090,1,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Angeling",1096,1,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Ghostring",1120,1,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold ArchAngeling",1388,1,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Deviling",1582,1,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Poring",1002,1,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Poporing",1031,1,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Poring Noel",1062,1,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Drops",1113,1,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Botaring",2093,1,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Marin",1242,1,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Metaling",1613,1,strnpcinfo(0)+"::OnKill"; monster "pvp_y_1-5",0,0,"Gold Stapo",1784,1,strnpcinfo(0)+"::OnKill"; if(rand(100)<50){ getitem 969,1; } end; }
  10. It was 1000% ... The way I wanted it, super top. Thank you.
  11. Sorry to be disturbing you, she's almost perfect. Only 2 things are missing. 1ª when the shop is active, I select remove orb it jumps straight to the shop, I believe it is something in that part, I already tried to put a "closed" and "end" but I think I did not find the right place. s_select_menu: mes "^A020F0[Encantadora]^000000"; mes "Então, o que quer fazer!"; next; if(.enable_the_shop == 1){ switch(select("Encantar:Remover Encantamento:Os itens que você pode encantar")){ case 2: remove_orbs = 1; case 3: callsub Q_shop; } }else{ switch(select("Encantar:Remover Encantamento")){ case 2: remove_orbs = 1; } } callsub s_select_armor; end; Another is, I wanted it to be pretty even at the time of add, this quay with text [empty slot] instead of null, like the image ... Only that left over ... And the random option issue, I forgot to disable, but even active or inactive was not working very well, now it worked as it was meant to be. Thank you. https://imgur.com/a/CNsg1
  12. The function that is configured removes and destroys all orb and cards of the equipment, what would be better, is instead of doing this, could choose and remove only 1 at a time, same when we will select the orb and the slot. We would choose the equipped slot and remove. //===== rAthena Script ======================================= //= saders enchant npc //===== By: ================================================== //= Sader1992 //https://rathena.org/board/profile/30766-sader1992/ //===== Current Version: ===================================== //= 2.0 //===== Compatible With: ===================================== //= rAthena Project //https://rathena.org/board/files/file/3602-saders-enchantment-npc/ //https://github.com/sader1992/sader_scripts //===== Description: ========================================= //============================================================ //============================================================ sala_vip,80,105,6 script Encantadora [VIP] 485,{ callsub s_check_menu; end; s_check_menu: if(.s_only_vip == 1 && vip_status(1)){ mes "^A020F0[Encantadora]^000000"; mes "Este serviço é apenas para VIP!"; close; } if (BaseLevel < .s_level_required[0] || BaseLevel > .s_level_required[1]){ mes "^A020F0[Encantadora]^000000"; mes "Você não atende os requisitos."; mes " "; mes "Nível mínimo: "+.s_level_required[0]+"."; mes "Nível máximo: "+.s_level_required[1]+"."; close; } callsub s_start_menu; end; s_start_menu: mes "^A020F0[Encantadora]^000000"; mes "Olá!"; mes "Você quer encantar seus itens!"; mes "Eu sou a melhora feiticeira do mundo!"; next; if (.s_zeny > 0) { mes "^A020F0[Encantadora]^000000"; mes "Isso vai te custar " + .s_zeny + " Zeny!"; } if (.item_is_required == 1) { mes "E uma Pedra de Encantamento."; } mes "Eu farei o meu melhor para encantá-lo com sucesso!"; mes "Mas lembre-se..."; mes "Há sorte neste trabalho também."; next; mes "^A020F0[Encantadora]^000000"; mes "Preste atenção."; mes "Se você tiver itens iguais ao item que deseja encantar."; mes "Deposite eles no armazém e volte aqui!"; next; mes "^A020F0[Encantadora]^000000"; mes "Preste atenção."; mes "Se tiver mais de uma Pedra de Encantamento no inventário guarde todas as quais não for usar no seu armazém."; mes "Deixe apenas a que for usar no inventário."; next; set s_all_selected,0; set s_orb_selected,0; set selected_orb_id ,0; set s_slot_selected,0; set remove_orbs,0; set selected_orb_size,0; set s_item_refine,0; if(.remove_enchant == 1){ callsub s_select_menu; }else{ callsub s_select_armor; } close; end; s_select_menu: mes "^A020F0[Encantadora]^000000"; mes "Então, o que quer fazer!"; next; if(.enable_the_shop == 1){ switch(select("Encantar:Remover Encantamento:Os itens que você pode encantar")){ case 2: remove_orbs = 1; case 3: callsub Q_shop; } }else{ switch(select("Encantar:Remover Encantamento")){ case 2: remove_orbs = 1; } } callsub s_select_armor; end; s_select_armor: next; mes "^A020F0[Encantadora]^000000"; mes "Selecione o item que deseja encantar."; for(.@i=0; .@i<getarraysize(.s_all$); .@i++) if(getequipid(.s_all_loc[.@i])>-1) { set .@armor_menu$, .@armor_menu$ + .s_all$[.@i] + " - [ ^E81B02" + getitemname(getequipid(.s_all_loc[.@i])) + "^000000 ]:"; }else{ set .@armor_menu$, .@armor_menu$ + .s_all$[.@i] + " - [ ^D6C4E8" + "Slot Vazio" + "^000000 ]:"; } set s_all_selected, select(.@armor_menu$) -1; if(getequipid(.s_all_loc[s_all_selected])< 0) { mes "^A020F0[Encantadora]^000000"; mes "Você não tem item equipado neste slot."; close; } if (countitem(getequipid(.s_all_loc[s_all_selected])) > 1){ mes "^A020F0[Encantadora]^000000"; mes "Você tem mais de um item que você deseja encantar."; close; } s_item_refine = getequiprefinerycnt(.s_all_loc[s_all_selected]); callsub s_specific_gears; end; s_specific_gears: if( getd(".specific_" + .s_all$[s_all_selected] + "s") ==1){ for(.@i=0;.@i<getarraysize(getd("." + .s_all$[s_all_selected] + "s$"));.@i++){ if(getequipid(.s_all_loc[s_all_selected]) == atoi(getd("." + .s_all$[s_all_selected] + "s$["+.@i+"]"))){ .@good_to_go = 1; } } }else{ for(.@i=0;.@i<getarraysize(.black_list$);.@i++){ if(getequipid(.s_all_loc[s_all_selected]) == atoi(.black_list$[.@i])){ .@black_list_item = 1; } } .@good_to_go = 1; } if(!.@good_to_go || .@black_list_item == 1){ mes "Desculpe. Eu não posso encantar este item."; close; } if(remove_orbs == 1){callsub s_select_remove;} if(.chosse_orb == 1){callsub s_select_orb;}else{callsub s_random_orb;} end; Q_shop: switch(select("Armas:Armaduras:Escudos:Vestuários:Calçados:Acessórios:Topo:Meio:Baixo")){ case 1: callshop "enchantable_items_Weapon",1; break; case 2: callshop "enchantable_items_Armor",1; break; case 3: callshop "enchantable_items_Shield",1; break; case 4: callshop "enchantable_items_Germent",1; break; case 5: callshop "enchantable_items_Shose",1; break; case 6: callshop "enchantable_items_Accessary",1; break; case 7: callshop "enchantable_items_Upper",1; break; case 8: callshop "enchantable_items_Middel",1; break; case 9: callshop "enchantable_items_Lower",1; break; } end; s_select_orb: next; mes "^A020F0[Encantadora]^000000"; mes "Selecione a Pedra de Encantamento que deseja."; for(.@i=0; .@i<getarraysize(getd("." + .s_all$[s_all_selected] + "$")); .@i++) set .@orb_menu$, .@orb_menu$ + getitemname(atoi(getd("." + .s_all$[s_all_selected] + "$["+.@i+"]"))) + ":"; set s_orb_selected, select(.@orb_menu$) -1; selected_orb_id = getd("." + .s_all$[s_all_selected] + "$["+s_orb_selected+"]"); callsub s_select_slot; end; s_select_slot: next; mes "^A020F0[Encantadora]^000000"; mes "Qual slot?"; .@card0 = getequipcardid(.s_all_loc[s_all_selected],0); .@card1 = getequipcardid(.s_all_loc[s_all_selected],1); .@card2 = getequipcardid(.s_all_loc[s_all_selected],2); .@card3 = getequipcardid(.s_all_loc[s_all_selected],3); for(.@i=getd(".slot_count_" + .s_all$[s_all_selected]); .@i<4; .@i++) if(getequipcardid(.s_all_loc[s_all_selected],.@i)!= null) { set .@slot_menu$, .@slot_menu$ + " [ ^E81B02" + getitemname(getequipcardid(.s_all_loc[s_all_selected],.@i)) + "^000000 ]:"; }else{ set .@slot_menu$, .@slot_menu$ + " [ ^D6C4E8" + "Slot Vazio" + "^000000 ]:"; } set s_slot_selected, select(.@slot_menu$) -1; if(.s_enchant_overwrite == 0){ if(getequipcardid(.s_all_loc[s_all_selected],s_slot_selected) > 0){ mes "Você já possui Pedra de Encantamento neste slot!"; close; } } callsub s_enchant_progress; end; s_enchant_progress: .@card0 = getequipcardid(.s_all_loc[s_all_selected],0); .@card1 = getequipcardid(.s_all_loc[s_all_selected],1); .@card2 = getequipcardid(.s_all_loc[s_all_selected],2); .@card3 = getequipcardid(.s_all_loc[s_all_selected],3); if (Zeny < .s_zeny) { mes "^A020F0[Encantadora]^000000"; mes "Desculpe, mas você não tem zeny suficiente."; close; } if(.item_is_required == 1){ if (countitem(selected_orb_id) < 1){ mes"Você não tem Pedra de Encantamento."; close; } } close2; specialeffect2 EF_MAPPILLAR; progressbar "ffff00",.progress_time; set Zeny, Zeny-.s_zeny; if(.item_is_required == 1){delitem selected_orb_id,1;} if (rand(100) < .success_chanse[s_slot_selected]) callsub s_enchant_success; else callsub s_brack; end; s_brack: specialeffect2 155; mes "^A020F0[Encantadora]^000000"; mes "Sinto muito!"; mes "Eu... falhei"; specialeffect2 EF_PHARMACY_FAIL; if (rand(100) < .brack_chance){ set .@item, getequipid(.s_all_loc[s_all_selected]); delitem .@item,1; mes "e quebrou!!"; specialeffect EF_SUI_EXPLOSION; } close; end; s_enchant_success: .@card0 = getequipcardid(.s_all_loc[s_all_selected],0); .@card1 = getequipcardid(.s_all_loc[s_all_selected],1); .@card2 = getequipcardid(.s_all_loc[s_all_selected],2); .@card3 = getequipcardid(.s_all_loc[s_all_selected],3); mes "^A020F0[Encantadora]^000000"; mes "Sucesso ao encatar o item!"; specialeffect2 154; setd(".@card" + s_slot_selected, selected_orb_id); set .@item, getequipid(.s_all_loc[s_all_selected]); delitem .@item,1; getitem2 .@item, 1, 1, s_item_refine, 0, .@card0, .@card1, .@card2, .@card3; equip .@item; close; end; s_select_remove: .@card0 = getequipcardid(.s_all_loc[s_all_selected],0); .@card1 = getequipcardid(.s_all_loc[s_all_selected],1); .@card2 = getequipcardid(.s_all_loc[s_all_selected],2); .@card3 = getequipcardid(.s_all_loc[s_all_selected],3); next; mes "^A020F0[Encantadora]^000000"; mes "Isso removerá todos as Cartas e Pedra de Encantamento dentro do item!"; if (.s_zeny_remove > 0) { mes "Isso vai te custar " + .s_zeny_remove + " Zeny."; } mes "Você tem certeza?"; switch(select("Não:Sim")){ if (Zeny < .s_zeny_remove) { mes "Desculpe, mas você não tem zeny suficiente."; close; } case 2: specialeffect2 EF_REPAIRWEAPON; set .@item, getequipid(.s_all_loc[s_all_selected]); delitem .@item,1; getitem2 .@item, 1, 1, s_item_refine, 0, 0, 0, 0, 0; set Zeny, Zeny-.s_zeny_remove; } close; end; s_random_orb: selected_orb_size = rand(getarraysize(getd("." + .s_all$[s_all_selected] + "$"))); selected_orb_id = getd("." + .s_all$[s_all_selected] + "$["+selected_orb_size+"]"); callsub s_select_slot; end; OnInit: //--------------------------------------------------------------// //--------------------------------------------------------------// //-------------------- configuration -----------------------// //--------------------------------------------------------------// //--------------------------------------------------------------// //--------------------------------------------------------------// //Se você deseja remover um do menu, é necessário removê-lo também! / ou adicione //--------------------------------------------------------------// setarray .s_all$,"Weapon","Armor","Shield","Germent","Shose","Accessary","Upper","Middel","Lower"; setarray .s_all_loc,EQI_HAND_R,EQI_ARMOR,EQI_HAND_L,EQI_GARMENT,EQI_SHOES,EQI_ACC_L,EQI_HEAD_TOP,EQI_HEAD_MID,EQI_HEAD_LOW; //--------------------------------------------------------------// //IDs de Orbs (Nota: Shield = mão esquerda para que a arma da mão esquerda conta como Shield também! //--------------------------------------------------------------// //right handed weapons setarray .Weapon$, 4700,4701,4702,4703,4704,4705,4706,4707,4708,4709, 4710,4711,4712,4713,4714,4715,4716,4717,4718,4719, 4720,4721,4722,4723,4724,4725,4726,4727,4728,4729, 4730,4731,4732,4733,4734,4735,4736,4737,4738,4739, 4740,4741,4742,4743,4744,4745,4746,4747,4748,4749, 4750,4751,4752,4753,4754,4755,4756,4757,4758,4759, 4760,4761,4806, 4883,4896,4897,4898,4899,4906,4907, 4882,4766,4767,4894,4895,4904,4905, 4807,4842, 4791,4792,4793,4794,4893,4902,4903, 4890,4786,4891,4787,4892,4788,4789,4790, 4927,4795,4796,4797,4798,4799, 4928,4870,4871,4800,4801,4802, 4815,4814,4813,4812,4826,4827,4828,4829,4830,4831, 4885,4886,4887,4888,4889, 4811,4810,4809,4808,4820,4821,4822,4823,4824,4825, 4818,4817,4816,4843,4844, 4832,4833,4834,4835,4836,4837,4838,4839,4840,4841, 4861,4862,4867,4868,4900, 4863,4864,4865,48636, 4908,4909,4910, 4911,4912,4913, 4914,4915,4916, 4917,4918,4919, 4920,4921,4922, 4923,4924,4925, 4926,4939,4940,4941,4764,4765, 4859,4860,4762,4763, 4933,934,4935, 4994,4995,4996, 4997,4998,4999, 4869,4872,4873,4881, 4942,4943,4944, 4945,4946,4947, 4948,4949,4950, 4850,4851,4852, 4853,4854,4855,4856,4857,4858, 4936,4937,4938, 4803,4804,4805,4819,4845,4846,4847,4848,4849,4875,4876,4877,4878,4879,4880,4884,4929,4930,4931,4932; //Armors setarray .Armor$, 4700,4701,4702,4703,4704,4705,4706,4707,4708,4709; //Shields and left hand weapons setarray .Shield$, 4700,4701,4702,4703,4704,4705,4706,4707,4708,4709; //Germent setarray .Germent$, 4700,4701,4702,4703,4704,4705,4706,4707,4708,4709; //Shose setarray .Shose$, 4700,4701,4702,4703,4704,4705,4706,4707,4708,4709; //orbs id setarray .Accessary$, 4700,4701,4702,4703,4704,4705,4706,4707,4708,4709,; //Accessary setarray .Upper$, 4700,4701,4702,4703,4704,4705,4706,4707,4708,4709; //Middel setarray .Middel$, 4700,4701,4702,4703,4704,4705,4706,4707,4708,4709; //Lower setarray .Lower$, 4700,4701,4702,4703,4704,4705,4706,4707,4708,4709; //--------------------------------------------------------------// //se você quiser colocar IDs específicos para o tipo de equipamento, coloque-o em 1 //--------------------------------------------------------------// .specific_Weapons = 1; .specific_Armors = 1; .specific_Shields = 1; .specific_Germents = 1; .specific_Shoses = 1; .specific_Accessarys = 1; .specific_Uppers = 1; .specific_Middels =1; .specific_Lowers = 1; //--------------------------------------------------------------// //se específico colocar as ID aqui //--------------------------------------------------------------// setarray .Weapons$,1601,1201,1204,1207,1210,1213,1216,1219,1222,1247,1248,1249; //right handed weapons setarray .Armors$,2301,2303,2305,2307,2307,2309,2312,2314,2316,2321,2323,2325,2328,2330,2332; //Armors setarray .Shields$,2101,2103,2105,2107,2113,2117; //Shields and left hand weapons setarray .Germents$,2512,2501,2503,2505; //Germents setarray .Shoses$,2416,2401,2403,2405,2411; //Shoses setarray .Accessarys$,2628,2608,2609,2612,2613,2627; //Accessarys setarray .Uppers$,2206,2208,2211,2216; //Uppers setarray .Middels$,2218,2241; //Middels setarray .Lowers$,2628,2206; //Lowers //--------------------------------------------------------------// //se não específico, coloque as IDs da lista negra aqui (se desejar //--------------------------------------------------------------// setarray .black_list$,2335,2338,2340,2341; //--------------------------------------------------------------// //Aqui você pode fazer um número de slot específico para cada tipo //0 = all 4 slot ,1 = last 3 slot ,2 = last 2 slot ,3 = last 1 slot //--------------------------------------------------------------// .slot_count_Weapon = 0; .slot_count_Armor = 0; .slot_count_Shield = 0; .slot_count_Germent = 0; .slot_count_Shose = 0; .slot_count_Accessary = 0; .slot_count_Upper = 0; .slot_count_Middel = 0; .slot_count_Lower = 0; //--------------------------------------------------------------// //outra configuração //--------------------------------------------------------------// setarray .s_level_required,100,255; //the level required to use the npc .s_only_vip = 1; //if you want only vip to use it put it to 1 setarray .success_chanse,100,75,50,25; //success chanse [1st_slot_chanse,2nd_slot_chanse,3rd_slot_chanse,4th_slot_chanse] .s_zeny = 1000000; //if you don't want zeny requirment set it to 0 .s_zeny_remove = 1000000; //this for enchantment reset .item_is_required = 1; //if you want the orb it self to be required 1 = yes , 0 = no .s_enchant_overwrite = 1; //if 1 then you can overwrite the enchant .progress_time = 10; //the time that needed to wait until the socket end .chosse_orb = 0; //0 = random ,1 = yes .brack_chance = 0; //the chanse that it will brack if it fail .remove_enchant = 1; //0 = no ,1 = yes //--------------------------------------------------------------// //Isso só mostrará os itens que o npc pode encantar em uma loja, mas ninguém pode comprar, contanto que você não lhes dê o valor //--------------------------------------------------------------// .enable_the_shop = 0; //--------------------------------------------------------------// //Não edite aqui //--------------------------------------------------------------// npcshopdelitem "enchantable_items_Weapon",512; npcshopdelitem "enchantable_items_Armor",512; npcshopdelitem "enchantable_items_Shield",512; npcshopdelitem "enchantable_items_Germent",512; npcshopdelitem "enchantable_items_Shose",512; npcshopdelitem "enchantable_items_Accessary",512; npcshopdelitem "enchantable_items_Upper",512; npcshopdelitem "enchantable_items_Middel",512; npcshopdelitem "enchantable_items_Lower",512; for (.@i = 0; .@i < getarraysize(.Weapons$); .@i++) npcshopadditem "enchantable_items_Weapon", atoi(.Weapons$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Armors$); .@i++) npcshopadditem "enchantable_items_Armor", atoi(.Armors$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Shields$); .@i++) npcshopadditem "enchantable_items_Shield", atoi(.Shields$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Germents$); .@i++) npcshopadditem "enchantable_items_Germent", atoi(.Germents$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Shoses$); .@i++) npcshopadditem "enchantable_items_Shose", atoi(.Shoses$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Accessarys$); .@i++) npcshopadditem "enchantable_items_Accessary", atoi(.Accessarys$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Uppers$); .@i++) npcshopadditem "enchantable_items_Upper", atoi(.Uppers$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Middels$); .@i++) npcshopadditem "enchantable_items_Middel", atoi(.Middels$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Lowers$); .@i++) npcshopadditem "enchantable_items_Lower", atoi(.Lowers$[.@i]),1; end; } - pointshop enchantable_items_Weapon -1,#YOU_CAN_ENCHANT_Weapons,512:1; - pointshop enchantable_items_Armor -1,#YOU_CAN_ENCHANT_Armors,512:1; - pointshop enchantable_items_Shield -1,#YOU_CAN_ENCHANT_Shields,512:1; - pointshop enchantable_items_Germent -1,#YOU_CAN_ENCHANT_Germents,512:1; - pointshop enchantable_items_Shose -1,#YOU_CAN_ENCHANT_Shoses,512:1; - pointshop enchantable_items_Accessary -1,#YOU_CAN_ENCHANT_Accessarys,512:1; - pointshop enchantable_items_Upper -1,#YOU_CAN_ENCHANT_Uppers,512:1; - pointshop enchantable_items_Middel -1,#YOU_CAN_ENCHANT_Middels,512:1; - pointshop enchantable_items_Lower -1,#YOU_CAN_ENCHANT_Lowers,512:1;
  13. Hi, thanks, but I do not know if it worked right. My friend and I are trying to use this script, but are fighting with me that I wanted instead of removing everything I could remove the orb I wanted and without ever needing to enchant on it, does it? Another question, is ... I added many orbs in the script, now when I create the item the npc says that I do not have the item, even if it has been configured its id, is some mistake or something else that I need to leave the map and come back to be able to add a new orb in the same weapon that I just put? The options to request the item are active, but when I use one and I'm going to sweat again even though I have another inventory, it says I do not have one.
  14. how would you do to instead of remove and the items disappear they go back to the inventory?
×
×
  • Create New...