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;
}
Question
lamnor
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
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.