Drow Posted April 18, 2020 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 17 Reputation: 1 Joined: 01/30/16 Last Seen: November 1, 2022 Share Posted April 18, 2020 Estimados(a) no logro hacer que mi npc funcione correctamente siempre me arroja un error, les adjuntare el error y el script. [Error]: npc_parse_function: Missing left curly '%TAB%{' in file 'npc/NPCsServer/refine.txt', line '47'. Skipping the rest of the file. (scrip adjunto) Saludos cordiales. Refinador por tokens custom.txt Quote Link to comment Share on other sites More sharing options...
pelon Posted April 18, 2020 Group: Members Topic Count: 4 Topics Per Day: 0.00 Content Count: 31 Reputation: 2 Joined: 03/07/14 Last Seen: February 1 Share Posted April 18, 2020 cual es tu version de rAthena y el script es reciclado o lo escribiste? Quote Link to comment Share on other sites More sharing options...
Drow Posted April 19, 2020 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 17 Reputation: 1 Joined: 01/30/16 Last Seen: November 1, 2022 Author Share Posted April 19, 2020 Hola perdon por lo lento de la respuesta pero no me llego la notificaron de que me respondieron. El npc es reciclado de un proyecto anterior, y lo ver la vercion del emulador no recuerdo como verla xD. Le preguntare al hoster. Quote Link to comment Share on other sites More sharing options...
Mael Posted April 19, 2020 Group: Forum Moderator Topic Count: 25 Topics Per Day: 0.01 Content Count: 837 Reputation: 321 Joined: 02/11/19 Last Seen: Friday at 09:57 PM Share Posted April 19, 2020 9 hours ago, Drow said: Hola perdon por lo lento de la respuesta pero no me llego la notificaron de que me respondieron. El npc es reciclado de un proyecto anterior, y lo ver la vercion del emulador no recuerdo como verla xD. Le preguntare al hoster. Aquí esta la versión actualizada del script que adjuntas: https://github.com/rathena/rathena/blob/master/npc/merchants/refine.txt Quote Link to comment Share on other sites More sharing options...
Drow Posted April 20, 2020 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 17 Reputation: 1 Joined: 01/30/16 Last Seen: November 1, 2022 Author Share Posted April 20, 2020 hummm Hola, no comprendo este npc que me envias , este puede refinar seguro usando tokens ? o.o porque a mi no me hace eso Quote Link to comment Share on other sites More sharing options...
Mael Posted April 20, 2020 Group: Forum Moderator Topic Count: 25 Topics Per Day: 0.01 Content Count: 837 Reputation: 321 Joined: 02/11/19 Last Seen: Friday at 09:57 PM Share Posted April 20, 2020 (edited) 10 hours ago, Drow said: hummm Hola, no comprendo este npc que me envias , este puede refinar seguro usando tokens ? o.o porque a mi no me hace eso Digamos que es la versión actual del script que compartes. Tu script es muy antiguo aún arreglando el [Error]: npc_parse_function: Missing left curly '%TAB%{' in file 'npc/NPCsServer/refine.txt', line '47'. Skipping the rest of the file. La lista de nuevos errores es un dolor de cabeza, especifica mejor qué es lo que debería hacer ese npc o mejor dicho cómo funciona ese npc. Edited April 20, 2020 by Mael Más información Quote Link to comment Share on other sites More sharing options...
Drow Posted April 20, 2020 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 17 Reputation: 1 Joined: 01/30/16 Last Seen: November 1, 2022 Author Share Posted April 20, 2020 Ok, esencialmente este npc funciona como el refiner normal pero cuando tienes que refinar los upgrades riesgosos te permite utilizar un "token" para realizarlo de forma segura. Eso es básicamente lo que hace. Quote Link to comment Share on other sites More sharing options...
Mael Posted April 20, 2020 Group: Forum Moderator Topic Count: 25 Topics Per Day: 0.01 Content Count: 837 Reputation: 321 Joined: 02/11/19 Last Seen: Friday at 09:57 PM Share Posted April 20, 2020 4 hours ago, Drow said: Ok, esencialmente este npc funciona como el refiner normal pero cuando tienes que refinar los upgrades riesgosos te permite utilizar un "token" para realizarlo de forma segura. Eso es básicamente lo que hace. O sea te permite evitar la destrucción? o te permite subir un nivel de refinería si o si? Quote Link to comment Share on other sites More sharing options...
Drow Posted April 20, 2020 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 17 Reputation: 1 Joined: 01/30/16 Last Seen: November 1, 2022 Author Share Posted April 20, 2020 Claro, al momento que te dice que el upgrade es peligroso te pregunta si quieres refinarlo de manera segura, es entonces cuando pide el " refinery token" Quote Link to comment Share on other sites More sharing options...
Mael Posted April 20, 2020 Group: Forum Moderator Topic Count: 25 Topics Per Day: 0.01 Content Count: 837 Reputation: 321 Joined: 02/11/19 Last Seen: Friday at 09:57 PM Share Posted April 20, 2020 17 minutes ago, Drow said: Claro, al momento que te dice que el upgrade es peligroso te pregunta si quieres refinarlo de manera segura, es entonces cuando pide el " refinery token" Aquí está lo que buscas: Quote Link to comment Share on other sites More sharing options...
Drow Posted April 21, 2020 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 17 Reputation: 1 Joined: 01/30/16 Last Seen: November 1, 2022 Author Share Posted April 21, 2020 checking oo I do not understand that I isolate him, I still sent him a PM but he has not responded. Although I may not respond since the post is from 2012 Quote Link to comment Share on other sites More sharing options...
Mael Posted April 21, 2020 Group: Forum Moderator Topic Count: 25 Topics Per Day: 0.01 Content Count: 837 Reputation: 321 Joined: 02/11/19 Last Seen: Friday at 09:57 PM Share Posted April 21, 2020 5 hours ago, Drow said: No compre que iso el, igualmente le envie un PM pero no a respondido. Aunque quizas no responda ya que el posteo es del 2012 A qué te refieres? Quote Link to comment Share on other sites More sharing options...
Drow Posted April 21, 2020 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 17 Reputation: 1 Joined: 01/30/16 Last Seen: November 1, 2022 Author Share Posted April 21, 2020 Pasa que no entiendo que fue lo el iso para agregar la función, Quote Link to comment Share on other sites More sharing options...
Mael Posted April 21, 2020 Group: Forum Moderator Topic Count: 25 Topics Per Day: 0.01 Content Count: 837 Reputation: 321 Joined: 02/11/19 Last Seen: Friday at 09:57 PM Share Posted April 21, 2020 (edited) 37 minutes ago, Drow said: Pasa que no entiendo que fue lo el iso para agregar la función, Creo que no has revisado bien el post que compartí... btw aquí está en script que necesitas. function script refinemaint { disable_items; .@npc_name$ = getarg(0); .@features = getarg(1); mes "["+ .@npc_name$ +"]"; mes "I'm the Armsmith."; mes "I can refine all kinds of weapons, armor and equipment, so let me"; mes "know what you want me to refine."; next; setarray .@indices[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW; for(.@i = 1; .@i<getarraysize(.@indices); ++.@i) { if(getequipisequiped(.@indices[.@i])) { .@menu$ = .@menu$ + F_getpositionname(.@indices[.@i]) + "-[" + getequipname(.@indices[.@i]) + "]"; .@equipped = 1; } .@menu$ = .@menu$ + ":"; } if (.@equipped == 0) { mes "["+ .@npc_name$ +"]"; mes "I don't think I can refine any items you have..."; close; } .@part = .@indices[select(.@menu$)]; if(!getequipisequiped(.@part)) { //custom check mes "["+ .@npc_name$ +"]"; mes "You're not wearing"; mes "anything there that"; mes "I can refine."; emotion ET_FRET; close; } //Check if the item is refinable... if(!getequipisenableref(.@part)) { mes "["+ .@npc_name$ +"]"; mes "I don't think I can"; mes "refine this item at all..."; close; } //Check to see if the items is already +10 if(getequiprefinerycnt(.@part) >= 10) { mes "["+ .@npc_name$ +"]"; mes "I can't refine this"; mes "any more. This is as"; mes "refined as it gets!"; close; } .@refineitemid = getequipid(.@part); // save id of the item .@refinerycnt = getequiprefinerycnt(.@part); //save refinery count setarray .@card[0], getequipcardid(.@part,0), getequipcardid(.@part,1), getequipcardid(.@part,2), getequipcardid(.@part,3); .@price = getequiprefinecost(.@part, REFINE_COST_NORMAL, REFINE_ZENY_COST); .@material = getequiprefinecost(.@part, REFINE_COST_NORMAL, REFINE_MATERIAL_ID); switch (getequipweaponlv(.@part)) { case 1: .@safe = 7; break; case 2: .@safe = 6; break; case 3: .@safe = 5; break; case 4: default: .@safe = 4; break; } // If the VIP system is enabled, the prices for non-VIP players are considerably higher. if (VIP_SCRIPT && !vip_status(VIP_STATUS_ACTIVE)) { switch(getequipweaponlv(.@part)) { case 0: .@price = .@price * 10; break; case 1: .@price = .@price * 40; break; case 2: .@price = .@price * 50; break; case 3: .@price = .@price * 2; break; case 4: .@price = .@price * 2; break; case 5: .@price = .@price * 10; break; } } .@failsafe_itemid = 7539; .@failsafe_rate = 50; if (.@failsafe_itemid) { if (getequippercentrefinery(.@part) <= .@failsafe_rate) { mes "[Item Protection]"; mes "Do you have "+getitemname(.@failsafe_itemid)+" item ? It will protect your armor/weapon from broken."; next; if (select((countitem(.@failsafe_itemid)? "Yes":""), "No") == 1) { .@failsafe = 1; } } } if(.@features != 1) { mes "["+ .@npc_name$ +"]"; mes "To refine this I need"; mes "one ^003366"+getitemname(.@material)+"^000000 and"; mes "a service fee of " + .@price + " Zeny."; mes "Do you really wish to continue?"; next; if(select("Yes:No") == 2){ mes "["+ .@npc_name$ +"]"; mes "Yeah..."; mes "There's no need to"; mes "rush. Take your time."; close; } if(getequippercentrefinery(.@part) < 100) { mes "["+ .@npc_name$ +"]"; mes "Oh no! If I continue to"; mes "refine this, there's a risk it could"; switch(.@material) { case 985: mes "be destroyed! That means that ^FF0000this equipment^000000, and ^FF0000any cards^000000 or special properties added to this armor, ^FF0000will be gone^000000."; break; default: mes "be destroyed, and you'd ^FF0000lose the weapon^000000, any ^FF0000cards in the weapon^000000,"; mes "or any added special properties."; break; } next; mes "["+getarg(0)+"]"; mes "I can't make it any clearer."; mes "Once a weapon is destroyed,"; mes "there's no getting it back."; mes "You really have a chance to"; mes "^FF0000lose this weapon^000000 forever."; mes "Do you still want to refine?"; next; if(select("Yes:No") == 2){ mes "["+ .@npc_name$ +"]"; mes "I completely agree..."; mes "I might be a great refiner, but sometimes even I make mistakes."; close; } } if((countitem(.@material) < 1) || (Zeny < .@price)) { mes "["+ .@npc_name$ +"]"; mes "You don't seem to have"; mes "enough Zeny or "+getitemname(.@material)+"..."; mes "Go get some more. I'll be"; mes "here all day if you need me."; close; } Zeny = Zeny-.@price; delitem .@material,1; // anti-hack if (callfunc("F_IsEquipIDHack", .@part, .@refineitemid) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]) || callfunc("F_IsEquipRefineHack", .@part, .@refinerycnt)) { mes "["+ .@npc_name$ +"]"; emotion ET_FRET; mes "Wait a second..."; mes "Do you think I'm stupid?!"; mes "You switched the item while I wasn't looking! Get out of here!"; close; } if(getequippercentrefinery(.@part) <= rand(100)) { if (.@failsafe) delitem .@failsafe_itemid, 1; else failedrefitem .@part; mes "["+ .@npc_name$ +"]"; emotion (!rand(5))?ET_MONEY:ET_HUK; .@lose = rand(1,3); if (.@lose == 1) { mes "OH! MY GOD!"; mes "Damn it! Not again!"; mes "I'm terribly sorry, but you know practice does make perfect."; mes "Um, right? Heh heh..."; } else if(.@lose == 2) { mes "Nooooooo!"; mes "It broke!"; mes "I-I'm sorry!"; } else { mes "Crap!"; mes "It couldn't take"; mes "much more tempering!"; mes "Sorry about this..."; } close; } mes "["+getarg(0)+"]"; successrefitem .@part; emotion ET_SMILE; .@win = rand(1,3); if (.@win == 1) { mes "Perfect!"; mes "Heh heh!"; mes "Once again,"; mes "flawless work"; mes "from the master~"; } else if(.@win == 2) { mes "Success...!"; mes "Yet again, my amazing"; mes "talent truly dazzles"; mes "and shines today."; } else { mes "Heh heh!"; mes "I'm all done."; mes "No doubt, my work is"; mes "to your satisfaction."; mes "Sheer, utter perfection~"; } close; } } prontera,150,150,5 script Vestry#prt 826,{ callfunc "refinemaint","Vestry",0; end; } Aquí cambias el item que quieras utilizar como Token: .@failsafe_itemid = 7539; Créditos a: @Emistry Edited April 21, 2020 by Mael Información Adicional Quote Link to comment Share on other sites More sharing options...
Drow Posted April 21, 2020 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 17 Reputation: 1 Joined: 01/30/16 Last Seen: November 1, 2022 Author Share Posted April 21, 2020 Ya lo puse y funciona, pero no es exactamente lo que deseo, osea refina seguro pero te tira todo el refine de una vez. osea te pide el item el oridecon y todo bien pero cuando refina te sube a +10 de una. Quote Link to comment Share on other sites More sharing options...
Mael Posted April 21, 2020 Group: Forum Moderator Topic Count: 25 Topics Per Day: 0.01 Content Count: 837 Reputation: 321 Joined: 02/11/19 Last Seen: Friday at 09:57 PM Share Posted April 21, 2020 (edited) 5 minutes ago, Drow said: Ya lo puse y funciona, pero no es exactamente lo que deseo, osea refina seguro pero te tira todo el refine de una vez. osea te pide el item el oridecon y todo bien pero cuando refina te sube a +10 de una. Ah? has probado el que acabo de postear? 45 minutes ago, Mael said: Creo que no has revisado bien el post que compartí... btw aquí está en script que necesitas. function script refinemaint { disable_items; .@npc_name$ = getarg(0); .@features = getarg(1); mes "["+ .@npc_name$ +"]"; mes "I'm the Armsmith."; mes "I can refine all kinds of weapons, armor and equipment, so let me"; mes "know what you want me to refine."; next; setarray .@indices[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW; for(.@i = 1; .@i<getarraysize(.@indices); ++.@i) { if(getequipisequiped(.@indices[.@i])) { .@menu$ = .@menu$ + F_getpositionname(.@indices[.@i]) + "-[" + getequipname(.@indices[.@i]) + "]"; .@equipped = 1; } .@menu$ = .@menu$ + ":"; } if (.@equipped == 0) { mes "["+ .@npc_name$ +"]"; mes "I don't think I can refine any items you have..."; close; } .@part = .@indices[select(.@menu$)]; if(!getequipisequiped(.@part)) { //custom check mes "["+ .@npc_name$ +"]"; mes "You're not wearing"; mes "anything there that"; mes "I can refine."; emotion ET_FRET; close; } //Check if the item is refinable... if(!getequipisenableref(.@part)) { mes "["+ .@npc_name$ +"]"; mes "I don't think I can"; mes "refine this item at all..."; close; } //Check to see if the items is already +10 if(getequiprefinerycnt(.@part) >= 10) { mes "["+ .@npc_name$ +"]"; mes "I can't refine this"; mes "any more. This is as"; mes "refined as it gets!"; close; } .@refineitemid = getequipid(.@part); // save id of the item .@refinerycnt = getequiprefinerycnt(.@part); //save refinery count setarray .@card[0], getequipcardid(.@part,0), getequipcardid(.@part,1), getequipcardid(.@part,2), getequipcardid(.@part,3); .@price = getequiprefinecost(.@part, REFINE_COST_NORMAL, REFINE_ZENY_COST); .@material = getequiprefinecost(.@part, REFINE_COST_NORMAL, REFINE_MATERIAL_ID); switch (getequipweaponlv(.@part)) { case 1: .@safe = 7; break; case 2: .@safe = 6; break; case 3: .@safe = 5; break; case 4: default: .@safe = 4; break; } // If the VIP system is enabled, the prices for non-VIP players are considerably higher. if (VIP_SCRIPT && !vip_status(VIP_STATUS_ACTIVE)) { switch(getequipweaponlv(.@part)) { case 0: .@price = .@price * 10; break; case 1: .@price = .@price * 40; break; case 2: .@price = .@price * 50; break; case 3: .@price = .@price * 2; break; case 4: .@price = .@price * 2; break; case 5: .@price = .@price * 10; break; } } .@failsafe_itemid = 7539; .@failsafe_rate = 50; if (.@failsafe_itemid) { if (getequippercentrefinery(.@part) <= .@failsafe_rate) { mes "[Item Protection]"; mes "Do you have "+getitemname(.@failsafe_itemid)+" item ? It will protect your armor/weapon from broken."; next; if (select((countitem(.@failsafe_itemid)? "Yes":""), "No") == 1) { .@failsafe = 1; } } } if(.@features != 1) { mes "["+ .@npc_name$ +"]"; mes "To refine this I need"; mes "one ^003366"+getitemname(.@material)+"^000000 and"; mes "a service fee of " + .@price + " Zeny."; mes "Do you really wish to continue?"; next; if(select("Yes:No") == 2){ mes "["+ .@npc_name$ +"]"; mes "Yeah..."; mes "There's no need to"; mes "rush. Take your time."; close; } if(getequippercentrefinery(.@part) < 100) { mes "["+ .@npc_name$ +"]"; mes "Oh no! If I continue to"; mes "refine this, there's a risk it could"; switch(.@material) { case 985: mes "be destroyed! That means that ^FF0000this equipment^000000, and ^FF0000any cards^000000 or special properties added to this armor, ^FF0000will be gone^000000."; break; default: mes "be destroyed, and you'd ^FF0000lose the weapon^000000, any ^FF0000cards in the weapon^000000,"; mes "or any added special properties."; break; } next; mes "["+getarg(0)+"]"; mes "I can't make it any clearer."; mes "Once a weapon is destroyed,"; mes "there's no getting it back."; mes "You really have a chance to"; mes "^FF0000lose this weapon^000000 forever."; mes "Do you still want to refine?"; next; if(select("Yes:No") == 2){ mes "["+ .@npc_name$ +"]"; mes "I completely agree..."; mes "I might be a great refiner, but sometimes even I make mistakes."; close; } } if((countitem(.@material) < 1) || (Zeny < .@price)) { mes "["+ .@npc_name$ +"]"; mes "You don't seem to have"; mes "enough Zeny or "+getitemname(.@material)+"..."; mes "Go get some more. I'll be"; mes "here all day if you need me."; close; } Zeny = Zeny-.@price; delitem .@material,1; // anti-hack if (callfunc("F_IsEquipIDHack", .@part, .@refineitemid) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]) || callfunc("F_IsEquipRefineHack", .@part, .@refinerycnt)) { mes "["+ .@npc_name$ +"]"; emotion ET_FRET; mes "Wait a second..."; mes "Do you think I'm stupid?!"; mes "You switched the item while I wasn't looking! Get out of here!"; close; } if(getequippercentrefinery(.@part) <= rand(100)) { if (.@failsafe) delitem .@failsafe_itemid, 1; else failedrefitem .@part; mes "["+ .@npc_name$ +"]"; emotion (!rand(5))?ET_MONEY:ET_HUK; .@lose = rand(1,3); if (.@lose == 1) { mes "OH! MY GOD!"; mes "Damn it! Not again!"; mes "I'm terribly sorry, but you know practice does make perfect."; mes "Um, right? Heh heh..."; } else if(.@lose == 2) { mes "Nooooooo!"; mes "It broke!"; mes "I-I'm sorry!"; } else { mes "Crap!"; mes "It couldn't take"; mes "much more tempering!"; mes "Sorry about this..."; } close; } mes "["+getarg(0)+"]"; successrefitem .@part; emotion ET_SMILE; .@win = rand(1,3); if (.@win == 1) { mes "Perfect!"; mes "Heh heh!"; mes "Once again,"; mes "flawless work"; mes "from the master~"; } else if(.@win == 2) { mes "Success...!"; mes "Yet again, my amazing"; mes "talent truly dazzles"; mes "and shines today."; } else { mes "Heh heh!"; mes "I'm all done."; mes "No doubt, my work is"; mes "to your satisfaction."; mes "Sheer, utter perfection~"; } close; } } prontera,150,150,5 script Vestry#prt 826,{ callfunc "refinemaint","Vestry",0; end; } Aquí cambias el item que quieras utilizar como Token: .@failsafe_itemid = 7539; Créditos a: @Emistry Edited April 21, 2020 by Mael Typo error Quote Link to comment Share on other sites More sharing options...
Drow Posted April 21, 2020 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 17 Reputation: 1 Joined: 01/30/16 Last Seen: November 1, 2022 Author Share Posted April 21, 2020 (edited) Si lo testie pero el npc falla el refine y cuando lo hace te da un down grade al item Edited April 21, 2020 by Drow Quote Link to comment Share on other sites More sharing options...
Mael Posted April 22, 2020 Group: Forum Moderator Topic Count: 25 Topics Per Day: 0.01 Content Count: 837 Reputation: 321 Joined: 02/11/19 Last Seen: Friday at 09:57 PM Share Posted April 22, 2020 2 hours ago, Drow said: Si lo testie pero el npc falla el refine y cuando lo hace te da un down grade al item No se que habrás testeado xD cuando falla se consume el poring coin y se evita la destrucción del item. Quote Link to comment Share on other sites More sharing options...
Drow Posted April 22, 2020 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 17 Reputation: 1 Joined: 01/30/16 Last Seen: November 1, 2022 Author Share Posted April 22, 2020 Pues lo que quiero esque pida el item y que refine seguro. pero no se logra con ese npc :C Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.