Jump to content

Error en npc Refiner Ayuda porfavor


Drow

Recommended Posts


  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  17
  • Reputation:   1
  • Joined:  01/30/16
  • Last Seen:  

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

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  4
  • Topics Per Day:  0.00
  • Content Count:  31
  • Reputation:   2
  • Joined:  03/07/14
  • Last Seen:  

cual es tu version de rAthena y el script es reciclado o lo escribiste?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  17
  • Reputation:   1
  • Joined:  01/30/16
  • Last Seen:  

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.

Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  25
  • Topics Per Day:  0.01
  • Content Count:  832
  • Reputation:   317
  • Joined:  02/11/19
  • Last Seen:  

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

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  17
  • Reputation:   1
  • Joined:  01/30/16
  • Last Seen:  

hummm Hola, no comprendo este npc que me envias , este puede refinar seguro usando tokens ? o.o

porque a mi no me hace eso

 

Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  25
  • Topics Per Day:  0.01
  • Content Count:  832
  • Reputation:   317
  • Joined:  02/11/19
  • Last Seen:  

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 by Mael
Más información
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  17
  • Reputation:   1
  • Joined:  01/30/16
  • Last Seen:  

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.

Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  25
  • Topics Per Day:  0.01
  • Content Count:  832
  • Reputation:   317
  • Joined:  02/11/19
  • Last Seen:  

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?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  17
  • Reputation:   1
  • Joined:  01/30/16
  • Last Seen:  

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"

Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  25
  • Topics Per Day:  0.01
  • Content Count:  832
  • Reputation:   317
  • Joined:  02/11/19
  • Last Seen:  

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:

 

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  17
  • Reputation:   1
  • Joined:  01/30/16
  • Last Seen:  

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

Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  25
  • Topics Per Day:  0.01
  • Content Count:  832
  • Reputation:   317
  • Joined:  02/11/19
  • Last Seen:  

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?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  17
  • Reputation:   1
  • Joined:  01/30/16
  • Last Seen:  

Pasa que no entiendo que fue lo el iso para agregar la función,

Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  25
  • Topics Per Day:  0.01
  • Content Count:  832
  • Reputation:   317
  • Joined:  02/11/19
  • Last Seen:  

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 by Mael
Información Adicional
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  17
  • Reputation:   1
  • Joined:  01/30/16
  • Last Seen:  

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.

Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  25
  • Topics Per Day:  0.01
  • Content Count:  832
  • Reputation:   317
  • Joined:  02/11/19
  • Last Seen:  

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 by Mael
Typo error
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  17
  • Reputation:   1
  • Joined:  01/30/16
  • Last Seen:  

Si lo testie pero el npc falla el refine y cuando lo hace te da un down grade al item

Edited by Drow
Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  25
  • Topics Per Day:  0.01
  • Content Count:  832
  • Reputation:   317
  • Joined:  02/11/19
  • Last Seen:  

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.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  17
  • Reputation:   1
  • Joined:  01/30/16
  • Last Seen:  

Pues lo que quiero esque pida el item y que refine seguro. pero no se logra con ese npc :C

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...