Jump to content
  • 0

Pay to Enchant


lamnor

Question


  • Group:  Members
  • Topic Count:  15
  • Topics Per Day:  0.01
  • Content Count:  25
  • Reputation:   0
  • Joined:  03/08/16
  • Last Seen:  

how do I charge a sum of zeny each time I do an enchantment?

here is the npc:

prontera,164,166,4	script	Encantamento Temporal	101,{

mes .n$;
mes "Olá, "+strcharinfo(0)+"!";
mes "Sou responsável por encantar o seu";
mes "Manto Temporal por apenas ^0000ff10KK^000000";
mes "Para encantar o Manto você deve estar com ele equipado.";
mes "Os valores são completamente randômicos!";
mes "Você gostaria de encantar?";
if(select("- Encantar Manto Temporal:- Sair") - 1) close;
next;
mes .n$;
set .@part,EQI_GARMENT; // Save equip location
mes .n$;
if(!getequipid(.@part)) {
	mes "O item não esta equipado!";
	close;
}
switch(getequipid(.@part)) {
	case 20963: // Manto Temporal FOR
	case 20964: // Manto Temporal AGI
	case 20965: // Manto Temporal VIT
	set .@Type$,"P";
	break;
	
	case 20966: // Manto Temporal INT
	set .@Type$,"M";
	break;
	
	case 20967: // Manto Temporal DEX
	case 20968: // Manto Temporal SOR
	set .@Type$,"R";
	break;
	
	default:
	mes "O item equipado não é um Manto Temporal!";
	close;
}
// Randomize each Option Slot:
// Random Option 1
set .@Opt1,rand(getarraysize(getd(".RandOpt1_"+.@Type$)));
if(getd(".RandOpt1_"+.@Type$+"_MinV["+.@Opt1+"]") != getd(".RandOpt1_"+.@Type$+"_MaxV["+.@Opt1+"]"))
	set .@Opt1_V,rand(getd(".RandOpt1_"+.@Type$+"_MinV["+.@Opt1+"]"),getd(".RandOpt1_"+.@Type$+"_MaxV["+.@Opt1+"]"));
else 
	set .@Opt1_V,getd(".RandOpt1_"+.@Type$+"_MaxV["+.@Opt1+"]");
	
// Random Option 2
set .@Opt2,rand(getarraysize(getd(".RandOpt2_"+.@Type$)));
if(getd(".RandOpt2_"+.@Type$+"_MinV["+.@Opt2+"]") != getd(".RandOpt2_"+.@Type$+"_MaxV["+.@Opt2+"]"))
	set .@Opt2_V,rand(getd(".RandOpt2_"+.@Type$+"_MinV["+.@Opt2+"]"),getd(".RandOpt2_"+.@Type$+"_MaxV["+.@Opt2+"]"));
else 
	set .@Opt2_V,getd(".RandOpt2_"+.@Type$+"_MaxV["+.@Opt2+"]");

// Apply options to equipped weapon
setrandomoption(.@part,0,getd(".RandOpt1_"+.@Type$+"["+.@Opt1+"]"),.@Opt1_V,0);
setrandomoption(.@part,1,getd(".RandOpt2_"+.@Type$+"["+.@Opt2+"]"),.@Opt2_V,0);
mes .n$;
mes "O ^0000ff\""+getitemname(getequipid(.@part))+"\"^000000 Foi encantado com sucesso.";
end;

OnInit:
// ========= Random Option Slot 1 ========= 
// - Physical
setarray .RandOpt1_P[0],RDMOPT_VAR_STRAMOUNT, // STR
						RDMOPT_VAR_AGIAMOUNT, // AGI
						RDMOPT_VAR_VITAMOUNT, // VIT
						RDMOPT_VAR_DEXAMOUNT, // DEX
						RDMOPT_VAR_LUKAMOUNT, // LUK
						RDMOPT_VAR_ATTPOWER,  // ATK
						RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET,	 	// Damage to Neutral Element
						RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET,	 	// Damage to Earth Element
						RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET,		 	// Damage to Fire Element
						RDMOPT_DAMAGE_PROPERTY_WATER_TARGET,	 	// Damage to Water Element
						RDMOPT_DAMAGE_PROPERTY_WIND_TARGET,		 	// Damage to Wind Element
						RDMOPT_DAMAGE_PROPERTY_POISON_TARGET,	 	// Damage to Poison Element
						RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET,	 	// Damage to Holy Element
						RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET,	 	// Damage to Dark Element
						RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET,	// Damage to Ghost Element
						RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET;		// Damage to Undead Element
					    // ToDo: // Recover 1000 of Damage lost from size penalties
						
// - Magical
setarray .RandOpt1_M[0],RDMOPT_VAR_VITAMOUNT, // VIT
						RDMOPT_VAR_INTAMOUNT, // INT
						RDMOPT_VAR_DEXAMOUNT, // DEX
						RDMOPT_VAR_LUKAMOUNT, // LUK
						RDMOPT_VAR_ATTMPOWER, // MATK
						RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET,	 	// Damage to Neutral Element
						RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET,	 	// Damage to Earth Element
						RDMOPT_MDAMAGE_PROPERTY_FIRE_TARGET,	 	// Damage to Fire Element
						RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET,	 	// Damage to Water Element
						RDMOPT_MDAMAGE_PROPERTY_WIND_TARGET,	 	// Damage to Wind Element
						RDMOPT_MDAMAGE_PROPERTY_POISON_TARGET,		// Damage to Poison Element
						RDMOPT_MDAMAGE_PROPERTY_SAINT_TARGET,		// Damage to Holy Element
						RDMOPT_MDAMAGE_PROPERTY_DARKNESS_TARGET,	// Damage to Dark Element
						RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_TARGET,	// Damage to Ghost Element
						RDMOPT_MDAMAGE_PROPERTY_UNDEAD_TARGET,	 	// Damage to Undead Element
						RDMOPT_HEAL_MODIFY_PERCENT; // Heal Power %
					    // ToDo: // Recover 1000 of Damage lost from size penalties
					  
// - Ranged
setarray .RandOpt1_R[0],RDMOPT_VAR_AGIAMOUNT, // AGI
						RDMOPT_VAR_VITAMOUNT, // VIT
						RDMOPT_VAR_DEXAMOUNT, // DEX
						RDMOPT_VAR_LUKAMOUNT, // LUK
						RDMOPT_VAR_ATTPOWER,  // ATK
						RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET,	 	// Damage to Neutral Element
						RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET,		// Damage to Earth Element
						RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET,		 	// Damage to Fire Element
						RDMOPT_DAMAGE_PROPERTY_WATER_TARGET,		// Damage to Water Element
						RDMOPT_DAMAGE_PROPERTY_WIND_TARGET,		 	// Damage to Wind Element
						RDMOPT_DAMAGE_PROPERTY_POISON_TARGET,		// Damage to Poison Element
						RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET,		// Damage to Holy Element
						RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET,	 	// Damage to Dark Element
						RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET,	// Damage to Ghost Element
						RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET;		// Damage to Undead Element
					    // ToDo: // Recover 1000 of Damage lost from size penalties

// - Values
// Note: When MinV and MaxV are the same, rand() will not be used!
setarray .RandOpt1_P_MinV[0],1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1;
setarray .RandOpt1_P_MaxV[0],10,10,10,10,10,150,15,15,15,15,15,15,15,15,15,15;
setarray .RandOpt1_M_MinV[0],1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,5;
setarray .RandOpt1_M_MaxV[0],10,10,10,10,150,15,15,15,15,15,15,15,15,15,15,20;
setarray .RandOpt1_R_MinV[0],1,1,1,1,10,1,1,1,1,1,1,1,1,1,1;
setarray .RandOpt1_R_MaxV[0],10,10,10,10,150,15,15,15,15,15,15,15,15,15,15;

// ========= Random Option Slot 2 ========= 
// - Physical
setarray .RandOpt2_P[0],RDMOPT_VAR_MAXHPPERCENT,
					    RDMOPT_VAR_MAXSPPERCENT,
					    RDMOPT_VAR_ATKPERCENT,
					    RDMOPT_VAR_ITEMDEFPOWER,
					    RDMOPT_VAR_MDEFPOWER,
					    RDMOPT_CLASS_DAMAGE_BOSS_TARGET,
					    RDMOPT_VAR_ATTPOWER,  // ATK
						RDMOPT_VAR_CRITICALSUCCESSVALUE, // Crit Chance
					    RDMOPT_DAMAGE_CRI_TARGET,	// Crit Damage %
					    RDMOPT_VAR_PLUSASPDPERCENT,	// ASPD %
						RDMOPT_DEC_SPELL_CAST_TIME,	// Variable Cast Time -%
					    RDMOPT_DEC_SPELL_DELAY_TIME,// Cast Delay -%
					    RDMOPT_DEC_SP_CONSUMPTION,	// Skill SP Cost -%
						RDMOPT_VAR_MAXHPAMOUNT;
						
// - Magical
setarray .RandOpt2_M[0],RDMOPT_VAR_MAXHPPERCENT,
					    RDMOPT_VAR_MAXSPPERCENT,
					    RDMOPT_VAR_MAGICATKPERCENT,
					    RDMOPT_VAR_ITEMDEFPOWER,
					    RDMOPT_VAR_MDEFPOWER,
					    RDMOPT_CLASS_MDAMAGE_BOSS,
					    RDMOPT_VAR_ATTMPOWER,  // MATK
						RDMOPT_CLASS_MDAMAGE_NORMAL,
					    RDMOPT_VAR_MAXHPAMOUNT,
					    RDMOPT_VAR_PLUSASPDPERCENT,	// ASPD %
						RDMOPT_DEC_SPELL_CAST_TIME,	// Variable Cast Time -%
					    RDMOPT_DEC_SPELL_DELAY_TIME,// Cast Delay -%
					    RDMOPT_DEC_SP_CONSUMPTION;	// Skill SP Cost -%
						
// - Ranged
setarray .RandOpt2_R[0],RDMOPT_VAR_MAXHPPERCENT,
					    RDMOPT_VAR_MAXSPPERCENT,
					    RDMOPT_VAR_PLUSAVOIDSUCCESSVALUE,
					    RDMOPT_VAR_ITEMDEFPOWER,
					    RDMOPT_VAR_MDEFPOWER,
					    RDMOPT_CLASS_DAMAGE_BOSS_TARGET,
					    RDMOPT_RANGE_ATTACK_DAMAGE_TARGET,
						RDMOPT_VAR_CRITICALSUCCESSVALUE, // Crit Chance
					    RDMOPT_DAMAGE_CRI_TARGET,	// Crit Damage %
					    RDMOPT_VAR_PLUSASPDPERCENT,	// ASPD %
					    RDMOPT_DEC_SPELL_CAST_TIME,	// Variable Cast Time -%
						RDMOPT_DEC_SPELL_DELAY_TIME,// Cast Delay -%
					    RDMOPT_DEC_SP_CONSUMPTION,	// Skill SP Cost -%
						RDMOPT_VAR_MAXHPAMOUNT;

// - Values
// Note: When MinV and MaxV are the same, rand() will not be used!
setarray .RandOpt2_P_MinV[0],1,1,2,10,10,1,10,1,1,1,1,1,1,500;
setarray .RandOpt2_P_MaxV[0],10,15,10,100,100,15,150,10,20,25,15,15,10,5000;
setarray .RandOpt2_M_MinV[0],1,1,2,10,10,1,10,1,500,1,1,1,1;
setarray .RandOpt2_M_MaxV[0],10,15,10,100,100,15,150,10,5000,25,15,15,10;
setarray .RandOpt2_R_MinV[0],1,1,5,10,10,1,5,1,1,1,1,1,1,500;
setarray .RandOpt2_R_MaxV[0],10,15,15,100,100,15,20,10,20,25,15,15,10,5000;
end;
}

Thanks

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 1

  • Group:  Members
  • Topic Count:  61
  • Topics Per Day:  0.02
  • Content Count:  911
  • Reputation:   166
  • Joined:  11/27/14
  • Last Seen:  

Here try this i just made it not tested but i hope you get the idea i try to make it more informative so you can understand

prontera,x,y	script	Test	99{
mes "Welcome";
mes "Let me check if you have zeny";
next;

//To check if the player have zeny
if ( Zeny > 5000){ // This is the condition if true then proceed if false then end the conversation

	set Zeny,Zeny-5000; // Deduct 5,000z 
	mes "I see you have zeny now what should i do?";
	next;
	switch(select("Process:Exit")){
		case 1:
				mes "You select Process this is the start for the menu process";
				end;
		case 2:
				mes "You select Exit this is the start for the menu exit";
				end;
	}
	end;
}
mes "Sorry you dont have zeny to process";
end; // To end conversation
}// End of script

 

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  15
  • Topics Per Day:  0.01
  • Content Count:  25
  • Reputation:   0
  • Joined:  03/08/16
  • Last Seen:  

worked, thank you

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
Answer this question...

×   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...