Jump to content
  • 0

Pay to Enchant


Question

Posted

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

2 answers to this question

Recommended Posts

  • 1
Posted

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

 

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...