Jump to content
  • 0

Need help for this enchantment script


Yaziid91

Question


  • Group:  Members
  • Topic Count:  21
  • Topics Per Day:  0.01
  • Content Count:  66
  • Reputation:   0
  • Joined:  04/20/19
  • Last Seen:  

ro_prontera,248,183,4	script	Equipment Enchanter	821,{
  disable_items;
   mes "[^0000FFEnchanteur Royal^000000]";
   mes "Ah, bienvenue voyageur !";
   mes "Je suis l'héritier d'une longue lignée d'enchanteurs royaux.";
   mes "Mon art a été transmis de génération en génération...";
   next;
   mes "[^0000FFEnchanteur Royal^000000]";
   mes "Jadis, nos enchantements protégeaient le royaume entier.";
   mes "Aujourd'hui, je mets mon savoir à votre service.";
   next;
   if(.s_zeny > 0)
   	mes "Pour une modique somme de " + .s_zeny + " Zeny...";
   if(.item_is_required)
   	mes "Et l'utilisation d'un orbe magique...";
   mes "Je peux tenter d'enchanter votre équipement.";
   next;
   mes "[^0000FFEnchanteur Royal^000000]";
   mes "Je vous conseille de retirer de votre inventaire";
   mes "tout équipement similaire à celui que vous";
   mes "souhaitez enchanter. Par sécurité...";
   next;
   .@string$[0] = "Enchanter un objet";
   if(.remove_enchant)
   	.@string$[1] = "Retirer un enchantement";
   if(.enable_the_shop)
   	.@string$[2] = "Voir les objets enchantables";
   mes "[^0000FFEnchanteur Royal^000000]";
   mes "Que puis-je faire pour vous ?";
   menu .@string$[0],L_Enchant,.@string$[1],L_Remove,.@string$[2],-;
	callsub Q_shop; end;
L_Remove: .@remove_orbs = true;
L_Enchant: 
next;
mes "[^0000FFEnchanteur Royal^000000]";
mes "Sélectionnez l'équipement à enchanter...";

// Construction du menu d'équipement
for(.@i=0; .@i<getarraysize(.s_all$); .@i++)
   if(getequipid(.s_all_loc[.@i])>-1) {
   	set .@armor_menu$, .@armor_menu$ + .s_all$[.@i] + " - [ ^E81B02" + getitemname(getequipid(.s_all_loc[.@i])) + "^000000 ]:";
   }else{
   	set .@armor_menu$, .@armor_menu$ + .s_all$[.@i] + " - [ ^D6C4E8" + "Non équipé" + "^000000 ]:";
   }
set .@s_all_selected, select(.@armor_menu$) -1;

if(getequipid(.s_all_loc[.@s_all_selected])< 0){
   mes "[^0000FFEnchanteur Royal^000000]";
   mes "Vous devez d'abord équiper un objet à cet emplacement.";
   close;
}
if (countitem(getequipid(.s_all_loc[.@s_all_selected])) > 1){
   mes "[^0000FFEnchanteur Royal^000000]";
   mes "Je détecte plusieurs objets identiques dans votre inventaire.";
   mes "Par sécurité, veuillez n'en garder qu'un seul.";
   close;
}
	.@s_item_refine = getequiprefinerycnt(.s_all_loc[.@s_all_selected]);
	if( getd(".specific_" + .s_all$[.@s_all_selected] + "s") ==1){
		for(.@i=0;.@i<getarraysize(getd("." + .s_all$[.@s_all_selected] + "s$"));.@i++){
			if(getequipid(.s_all_loc[.@s_all_selected]) == atoi(getd("." + .s_all$[.@s_all_selected] + "s$["+.@i+"]"))){
				.@good_to_go = true;
			}
		}
	}else{
		for(.@i=0;.@i<getarraysize(.black_list$);.@i++){
			if(getequipid(.s_all_loc[.@s_all_selected]) == atoi(.black_list$[.@i])){
				.@black_list_item = true;
			}
		}
		.@good_to_go = true;
	}
	if(!.@good_to_go || .@black_list_item){
		mes "désolée";
		mes "je ne peux pas enchanter cet objet.";
		close;
	}
	for(.@i=0;.@i<(MAX_ITEM_RDM_OPT-1);.@i++){
		.@r_id[.@i] = getequiprandomoption(.s_all_loc[.@s_all_selected],.@i,ROA_ID);
		.@r_v[.@i] = getequiprandomoption(.s_all_loc[.@s_all_selected],.@i,ROA_VALUE);
		.@r_p[.@i] = getequiprandomoption(.s_all_loc[.@s_all_selected],.@i,ROA_PARAM);
	}
	
	.@card0 = getequipcardid(.s_all_loc[.@s_all_selected],0);
	.@card1 = getequipcardid(.s_all_loc[.@s_all_selected],1);
	.@card2 = getequipcardid(.s_all_loc[.@s_all_selected],2);
	.@card3 = getequipcardid(.s_all_loc[.@s_all_selected],3);
	if(.@remove_orbs){
		next;
		mes "cela supprimera toutes les cartes et orbes à l'intérieur de l'objet!";
		if (.s_zeny_remove > 0) {
			mes "cela vous coûtera " + .s_zeny_remove + " Zeny.";
		}
		mes "es-tu sûr?";
			switch(select("Non:Oui")){
				case 1: end;
				case 2:
					mes "pour la dernière fois!";
					mes "es-tu sûr?";
					switch(select("Non:Oui")){
					case 1: end;
					case 2: 
						if (Zeny < .s_zeny_remove) {
							mes "Désolé, mais tu n'as pas assez de zeny.";
							close;
						}
						if(.select_remove_orb){
							if(.@card0 == 0).@card0$ = " - [ ^D6C4E8" + "No Equip" + "^000000 ]:"; else .@card0$ = getitemname(.@card0);
							if(.@card1 == 0).@card1$ = " - [ ^D6C4E8" + "No Equip" + "^000000 ]:"; else .@card1$ = getitemname(.@card1);
							if(.@card2 == 0).@card2$ = " - [ ^D6C4E8" + "No Equip" + "^000000 ]:"; else .@card2$ = getitemname(.@card2);
							if(.@card3 == 0).@card3$ = " - [ ^D6C4E8" + "No Equip" + "^000000 ]:"; else .@card3$ = getitemname(.@card3);
							switch(select(.@card0$,.@card1$,.@card2$,.@card3$)){
								case 1: .@card0 = 0; break;
								case 2: .@card1 = 0; break;
								case 3: .@card2 = 0; break;
								case 4: .@card3 = 0; break;
							}
							specialeffect2 EF_REPAIRWEAPON;
							set .@item, getequipid(.s_all_loc[.@s_all_selected]);
							delitem .@item,1;
							getitem3 .@item, 1, 1, .@s_item_refine, 0, .@card0, .@card1, .@card2, .@card3,.@r_id,.@r_v,.@r_p;
							set Zeny, Zeny-.s_zeny_remove;
							end;
						}
						specialeffect2 EF_REPAIRWEAPON;
						set .@item, getequipid(.s_all_loc[.@s_all_selected]);
						delitem .@item,1;
						getitem3 .@item, 1, 1, .@s_item_refine, 0, 0, 0, 0, 0,.@r_id,.@r_v,.@r_p;
						set Zeny, Zeny-.s_zeny_remove;
						end;
					}
			}
	}
if(.chosse_orb){
   next;
   mes "[^0000FFEnchanteur Royal^000000]";
   mes "Maintenant, choisissez l'orbe magique à utiliser :";
   for(.@i=0; .@i<getarraysize(getd("." + .s_all$[.@s_all_selected] + "$")); .@i++)
   		set .@orb_menu$, .@orb_menu$ + getitemname(atoi(getd("." + .s_all$[.@s_all_selected] + "$["+.@i+"]"))) + ":";
   set .@s_orb_selected, select(.@orb_menu$) -1;
   .@selected_orb_id = getd("." + .s_all$[.@s_all_selected] + "$["+.@s_orb_selected+"]");
}else{
		.@selected_orb_size = rand(getarraysize(getd("." + .s_all$[.@s_all_selected] + "$")));
		.@selected_orb_id = getd("." + .s_all$[.@s_all_selected] + "$["+.@selected_orb_size+"]");
	}
next;
mes "[^0000FFEnchanteur Royal^000000]";
mes "Dans quel emplacement souhaitez-vous placer l'enchantement ?";
	for(.@i=getd(".slot_count_" + .s_all$[.@s_all_selected]); .@i<4; .@i++)
		if(getequipcardid(.s_all_loc[.@s_all_selected],.@i)!= null) {
			set .@slot_menu$, .@slot_menu$ + " [ ^E81B02" + getitemname(getequipcardid(.s_all_loc[.@s_all_selected],.@i)) + "^000000 ]:";
		}else{
			set .@slot_menu$, .@slot_menu$ + " [ ^D6C4E8" + "Empty" + "^000000 ]:";
		}
	set .@s_slot_selected, select(.@slot_menu$) -1;
	.@s_slot_selected += getd(".slot_count_" + .s_all$[.@s_all_selected]);
	if(!.s_enchant_overwrite){
		if(getequipcardid(.s_all_loc[.@s_all_selected],.@s_slot_selected) > 0){
			mes "vous avez déjà une orbe dans cet emplacement";
			close;
		}
	}
// Processus d'enchantement
if (Zeny < .s_zeny) {
   mes "[^0000FFEnchanteur Royal^000000]";
   mes "Pardonnez-moi, mais vous n'avez pas assez de zeny...";
   close;
}
	if(.item_is_required && .chosse_orb){
		if (countitem(.@selected_orb_id) < 1){
			mes"tu n'as pas d'orbe d'enchantement";
			close;
		}
	}
// Animation et résultat
close2;
specialeffect2 EF_MAPPILLAR;
progressbar "ffff00",.progress_time;

// Prélever les coûts
if(.item_is_required && .chosse_orb){
    delitem .@selected_orb_id,1;  // Supprimer l'orbe utilisé
}
if (Zeny >= .s_zeny) {
    Zeny -= .s_zeny;  // Enlever le zeny
}

if (rand(100) < .success_chanse[.@s_slot_selected]){
    // Sauvegarde l'ID de l'item avant suppression
    set .@item_id, getequipid(.s_all_loc[.@s_all_selected]);
    
    // Supprime l'item original
    delitem .@item_id,1;
    
    // Annonce le succès
    if (.@item_id && getitemname(.@item_id) != "null") {
        announce "~~ Les arcanes résonnent ! "+strcharinfo(0)+" a réussi son enchantement sur "+getitemname(.@item_id)+" ! ~~",bc_all;
    }
    
    specialeffect2 154;
    mes "[^0000FFEnchanteur Royal^000000]";
    mes "^00FF00L'enchantement est un succès !^000000";
    mes "Les énergies magiques se sont parfaitement alignées.";
    
    // Applique l'enchantement et redonne l'item
    setd(".@card" + .@s_slot_selected, .@selected_orb_id);
    getitem3 .@item_id, 1, 1, .@s_item_refine, 0, .@card0, .@card1, .@card2, .@card3,.@r_id,.@r_v,.@r_p;
    equip .@item_id;
    close;
}
	
	
OnInit:
	//--------------------------------------------------------------//
	//--------------------------------------------------------------//
	//--------------------   configuration   -----------------------//
	//--------------------------------------------------------------//
	//--------------------------------------------------------------//
	//--------------------------------------------------------------//
	//if you want to remove one from the menu you need to remove it down too!! /or add
	//--------------------------------------------------------------//
	setarray .s_all$,"Armor","Shield","Germent","Shose","Accessary","Upper","Middel","Lower";
	setarray .s_all_loc,EQI_ARMOR,EQI_HAND_L,EQI_GARMENT,EQI_SHOES,EQI_ACC_L,EQI_HEAD_TOP,EQI_HEAD_MID,EQI_HEAD_LOW;	
	//--------------------------------------------------------------//
	//Orbs IDs (Note : Shield = left hand so the weapon on the left hand count as Shield too!
	//--------------------------------------------------------------//
	setarray .Armor$,29242,29302,29303,29304,29305,29306,29307,29308,29309,29361,29438;
	setarray .Shield$,20022,20023;
	setarray .Germent$,20020,20021;
	setarray .Shose$,20001,20002,20003,20004,20005,20007,20008,20009,20010,20011,20012,20013,20014,20015,20016,20017,20018,20019;	
	setarray .Accessary$,4763,4765,29240;
	setarray .Upper$,4709,4719,4729,4739,4749,4759,29443; 	
	setarray .Middel$,4709,4719,4729,4739,4749,4759,29443; 
	setarray .Lower$,4709,4719,4729,4739,4749,4759,29443; 	
	//--------------------------------------------------------------//
	//if you want to put specific IDs for kind of gear put it to 1
	//--------------------------------------------------------------//
	.specific_Armors = false;
	.specific_Shields = false;
	.specific_Germents = false;
	.specific_Shoses = false;
	.specific_Accessarys = false;
	.specific_Uppers = false;
	.specific_Middels = false;
	.specific_Lowers = false;
	//--------------------------------------------------------------//
	//here you can make a specific slot number for each kind
	//0 = all 4 slot ,1 = last 3 slot ,2 = last 2 slot ,3 = last 1 slot
	//--------------------------------------------------------------//
	.slot_count_Armor = 3;
	.slot_count_Shield = 3;
	.slot_count_Germent = 3;
	.slot_count_Shose = 3;
	.slot_count_Accessary = 3;
	.slot_count_Upper = 3;
	.slot_count_Middel = 3;
	.slot_count_Lower = 3;
	
	//--------------------------------------------------------------//
	//other configuration
	//--------------------------------------------------------------//
	setarray .success_chanse,0,0,0,100;	//success chanse [1st_slot_chanse,2nd_slot_chanse,3rd_slot_chanse,4th_slot_chanse]
	.s_zeny = 10000;	//if you don't want zeny requirment set it to 0
	.s_zeny_remove = 10000;	//this for enchantment reset
	.item_is_required = true;	//if you want the orb it self to be required true = yes , false = no(if .chosse_orb = false this will be false too)
	.s_enchant_overwrite = false;	//if true then you can overwrite the enchant
	.progress_time = 2;	//the time that needed to wait until the socket end
	.chosse_orb = true;	//false = random ,true = yes
	.remove_enchant = true;	//false = no ,true = yes
	.select_remove_orb = true;
	}

Hello, I customized the enchantment script but I have a small problem I do not understand why I cannot dislodge the enchanted orbs otherwise everything else works, I have no errors in the console if anyone can help me please

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  21
  • Topics Per Day:  0.01
  • Content Count:  66
  • Reputation:   0
  • Joined:  04/20/19
  • Last Seen:  

bump

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