Jump to content
  • 0

Unexpected case error


Reimi

Question


  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.01
  • Content Count:  2
  • Reputation:   0
  • Joined:  02/15/24
  • Last Seen:  

Hello everyone

I have a little problem with a refiner script.

i used the start of the original one, then put some custom script, but i get this error from map server :

script error on npc/mesnpc/kafra.txt line 670
    parse_syntax: unexpected 'case'
   665 :                                        close;
   666 :                                }
   667 :                        }
   668 :                        mes "test end";
   669 :                        close;
*  670 :                'c'ase 2:
   671 :                        mes "case 3 pas encore code";
   672 :                        close;
   673 :                case 3:
   674 :                        clear;
   675 :                        mes "[" + getarg(0) + "]";

here is the script :

prt_in,64,60,8	script	Forgeron::Jonas	63,{
	callfunc "forgeron","Jonas";
}

function	script	forgeron	{
	mes "[" + getarg(0) + "]";
	mes "Bienvenue a ma forge.";
	mes "Que puis-je faire pour toi ?";
	switch(select("Je veux raffiner un equipement:Avoir des infos sur les materiaux enrichie:Je ne fais que passer")){
		case 1:
			mes "que veux tu rafiner ?";
			next;
			setarray .@listequip[1],eqi_hand_r,eqi_armor,eqi_hand_l,eqi_garment,eqi_shoes,eqi_head_top,eqi_head_mid,eqi_head_low,eqi_acc_r,eqi_acc_l;
			for(.@t=1; .@t<getarraysize(.@listequip); .@t ++) {
				if (getequipisequiped(.@listequip[.@t])) {
					.@menu$ = .@menu$ + getequipname(.@listequip[.@t]);
					.@est_equipe = 1;
				}
				.@menu$ = .@menu$ +":";
			}
			if(.@est_equipe == 0) {mes "Tu n'as pas d'equipement sur toi."; close;}
			
			
			.@equipement = .@listequip[select(.@menu$)];
			clear;
			mes "[" + getarg(0) + "]";
			if(!getequipisenableref(.@equipement)){
				mes "Ah ! Je sui desole, mais cet equipement ne peux pas etre raffine.";
				close;
			}
			.@rafiner = getequiprefinerycnt(.@equipement);
			if(.@rafiner >= 10) {
				mes "Eh! cet equipement est deja raffine au maximum.";
				mes "Il n'y a rien que je puisse faire de plus.";
				close;
			}
			L_Encore :
			if(getequipweaponlv(.@equipement) == 0) {
			
	//-------------------------Armure Bouclier Garment etc.--------------------------------------
				
				
				.@rafiner = getequiprefinerycnt(.@equipement);
				.@prix = 2000 + 2000 * .@rafiner;
				if(.@rafiner < 4 ) {.@reussite = 99; .@objetID = 757; .@objet$ = "Rough Elunium";}
				if(.@rafiner > 3  && .@rafiner < 7) {.@objetID = 985; .@objet$ = "Elunium";}
				if(.@rafiner > 6 ) {.@objetID = 6291; .@objet$ = "Elunium Enrichie";}
				if(.@rafiner == 4) {.@reussite = 79; .@casse = 79;}
				if(.@rafiner == 5) {.@reussite = 69; .@casse = 59;}
				if(.@rafiner == 6) {.@reussite = 59; .@casse = 59;}
				if(.@rafiner == 7) {.@reussite = 34; .@casse = 39;}
				if(.@rafiner == 8) {.@reussite = 24; .@casse = 39;}
				if(.@rafiner == 9) {.@reussite = 9; .@casse = 19;}
				
				mes "oh! une piece d'armure";
				mes "tres bien voyons cela.";
				next;
				//goto L_raffinage;
			}

			if(getequipweaponlv(.@equipement) == 1) {
			
	//----------------------------ARME LV1-----------------------------------------------

				.@rafiner = getequiprefinerycnt(.@equipement);
				.@prix = 200 + 200 * .@rafiner;
				.@armelv = getequipweaponlv(.@equipement);
				.@objetID = 1010;
				.@objet$ = "Phracon";
				if(.@rafiner < 7 ) {.@reussite = 99;}
				if(.@rafiner == 7) {.@reussite = 79; .@casse = 89;}
				if(.@rafiner == 8) {.@reussite = 59; .@casse = 69;}
				if(.@rafiner == 9) {.@reussite = 39; .@casse = 49;}
				
				mes "oh! une Arme Lv" + .@armelv;
				mes "tres bien voyons cela.";
				next;
				//goto L_raffinage;
			}
			
			if(getequipweaponlv(.@equipement) == 2) {
			
	//----------------------------ARME LV2-----------------------------------------------

				.@rafiner = getequiprefinerycnt(.@equipement);
				.@prix = 500 + 500 * .@rafiner;
				.@armelv = getequipweaponlv(.@equipement);
				.@objetID = 1011;
				.@objet$ = "Emveretarcon";
				if(.@rafiner < 6 ) {.@reussite = 99; }
				if(.@rafiner == 6) {.@reussite = 79; .@casse = 89;}
				if(.@rafiner == 7) {.@reussite = 59; .@casse = 79;}
				if(.@rafiner == 8) {.@reussite = 44; .@casse = 59;}
				if(.@rafiner == 9) {.@reussite = 34; .@casse = 44;}
				
				//mes "oh! une Arme Lv" + .@armelv;
				//mes "tres bien voyons cela.";
				//next;
				//goto L_raffinage;
			}
			
			if(getequipweaponlv(.@equipement) == 3) {
			
	//----------------------------ARME LV3-----------------------------------------------

				.@rafiner = getequiprefinerycnt(.@equipement);
				.@prix = 1000 + 1000 * .@rafiner;
				.@armelv = getequipweaponlv(.@equipement);
				if(.@rafiner < 5) {.@reussite = 99; .@objetID = 1011; .@objet$ = "Emveretarcon";}
				if(.@rafiner > 4) {.@objetID = 756; .@objets$ = "Rough Oridecon";}
				if(.@rafiner > 7) {.@objetID = 984; .@objets$ ="Oridecon";}
				if(.@rafiner == 5) {.@reussite = 79; .@casse = 84;}
				if(.@rafiner == 6) {.@reussite = 74; .@casse = 74;}
				if(.@rafiner == 7) {.@reussite = 49; .@casse = 54;}
				if(.@rafiner == 8) {.@reussite = 34; .@casse = 39;}
				if(.@rafiner == 9) {.@reussite = 24; .@casse = 29;}
				
				mes "oh! une Arme Lv" + .@armelv;
				mes "tres bien voyons cela.";
				//next;
				//goto L_raffinage;
			}
			
			if(getequipweaponlv(.@equipement) == 4) {
			
	//----------------------------ARME LV4-----------------------------------------------

				.@rafiner = getequiprefinerycnt(.@equipement);
				.@prix = 2000 + 2000 * .@rafiner;
				.@armelv = getequipweaponlv(.@equipement);
				if(.@rafiner < 3) {.@reussite = 99; .@objetID = 759; .@objet$ = "Rough Oridecon";}
				if(.@rafiner > 2) {.@objetID = 984; .@objets$ = "Oridecon";}
				if(.@rafiner > 5) {.@objetID = 6292; .@objets$ ="Oridecon Enrichie";}
				if(.@rafiner == 5) {.@reussite = 69; .@casse = 74;}
				if(.@rafiner == 6) {.@reussite = 54; .@casse = 59;}
				if(.@rafiner == 7) {.@reussite = 29; .@casse = 44;}
				if(.@rafiner == 8) {.@reussite = 14; .@casse = 19;}
				if(.@rafiner == 9) {.@objetID = 7806; .@objetID1 = 7807; .@objetID2 = 7808; .@objetID3 = 7809;
					.@objet$ = "God Anvil"; .@objet1$ = "God Mineral"; .@objet2$ = "God Hammer"; .@objet3$ = "God Furnace";
					.@reussite = 100; .@prix = 50000}
				
				mes "oh! une Arme Lv" + .@armelv;
				mes "tres bien voyons cela.";
				next;
				//goto L_raffinage;
			}
			//L_raffinage:
			if(.@reussite == 99) {
			//-----------rafinage Safe---------------------
			
				mes "[" + getarg(0) + "]";
				mes "Cette piece d'equipement";
				mes "est raffiner a +" + .@rafiner;
				mes "je peux la rafiner sans le moindre risque.";
				next;
				mes "[" + getarg(0) + "]";
				mes "Il me faudra";
				mes "^8010101 " + .@objet$ + "^000000";
				mes "Et le prix est de : " + .@prix + " z";
				mes "c'est ok pour toi ?";
				if(select("Oui:Non") == 2){
					clear;
					mes "[" + getarg(0) + "]";
					mes "Comme tu veux, n'hesites pas a repasser me voir si tu changes d'avis.";
					close;
				}
				if(countitem(.@objetID) < 1) {
					clear;
					mes "[" + getarg(0) + "]";
					mes "Oh, tu n'as pas de ^801010" +.@objet$ + "^000000";
					mes "Reviens lorsque tu auras tout","le materiel necessaire sur toi.";
					close;
				}
				if(zeny < .@prix) {
					clear;
					mes "[" + getarg(0) + "]";
					mes "Tu n'as pas assez d'argent.";
					mes "Ne reviens pas avant d'avoir de quoi payer.";
					close;
				}
				delitem .@objetID,1;
				zeny = zeny - .@prix;
				successrefitem(.@equipement);
				.@emo = rand(3);
				if(.@emo == 0) {emotion et_smile;}
				if(.@emo == 1) {emotion et_best;}
				if(.@emo == 2) {emotion et_scissor;}
				clear;
				mes "[" + getarg(0) + "]";
				mes "Et voila le travail";
				mes "tu veux continuer ?";
				if(select("Continuer le raffinage:Arreter la") == 2){
					mes "c'est peut etre un choix judicieux, n'hesites pas a revenir si tu changes d'avis.";
					close;
				}
				goto L_Encore;
			}
			if(.@reussite < 99) {
			//--------------------Rafinage Risquer----------------------------
			
				mes "[" + getarg(0) + "]";
				mes "Cette piece d'equipement";
				mes "est raffiner a +" + .@rafiner;
				mes "Ca ce complique.";
				next;
				mes "[" + getarg(0) + "]";
				mes "Il va me falloir un ^801010" +.@objet$ + "^000000";
				mes "ainsi que " + .@prix + " z";
				mes "C'est ok pour toi ?";
				if(select("Oui:Non") == 2) {
					clear;
					mes "[" + getarg(0) + "]";
					mes "C'est toi qui voit.";
					mes "reviens me voir si tu changes d'avis.";
					close;
				}
				mes "^DD1010ATTENTION ! ! !^000000";
				mes "A ce niveau de difficulte, je ne peux te garantir la reussite.";
				next;
				mes "[" + getarg(0) + "]";
				mes " Mes chances de succes pour ce niveau de raffinage sont de ^DD1010" + (.@reussite + 1) + "%^000000";
				mes "Si j'echoue :";
				mes "^DD1010le raffinage de l'equipement baissera de 1";
				mes .@objet$ + " sera perdu.";
				mes "et je ne pourrai pas te rembourser.^000000";
				next;
				mes "[" + getarg(0) + "]";
				mes "Il se peut egalement que l'equipement se brise.";
				mes "^DD1010J'ai " + (.@casse + 1) + "% de chance de reussir a le conserver^000000.";
				mes "en cas d'echec :";
				mes "^DD1010L'equipement sera definitivement perdu.";
				mes "Toutes carte insere serait elle aussi perdu !^000000";
				mes "La encore, je ne pourrai pas te dedomager.";
				mes "Veux tu tenter le raffinage ?";
				if(select("Oui:Non") == 2) {
					clear;
					mes "[" + getarg(0) + "]";
					mes "C'est comprehensible, mieux vaut avoir un equipement peux efficace, que pas d'equipement du tout.";
					close;
				}
				if(countitem(.@objetID) < 1) {
					clear;
					mes "[" + getarg(0) + "]";
					mes "Mais! tu n'as pas ^801010d'" + .@objet$ + "^000000";
					mes "Ne me fais pas perdre mon temps.";
					mes "Du balai.";
					close;
				}
				if(zeny < .@prix) {
					clear;
					mes "[" + getarg(0) + "]";
					mes "Eh! Tu n'as pas assez d'argent.";
					mes "Retourne travailler, et reviens me voir ensuite.";
					close;
				}
				delitem .@objetID,1;
				zeny = zeny -.@prix;
				if(.@reussite < rand(99)) {
					if(.@casse < rand(99)) {
						failedrefitem(.@equipement);
						emotion et_cry;
						clear;
						mes "[" + getarg(0) + "]";
						mes "Je suis vraiment navre, mais l'equipement a ete detruit.";
						mes "je n'ai rien pu faire pour le sauver.";
						mes "Hey ! que cela ne t'empeches pas de retenter.";
						mes "c'est par la pratique que l'on progresse.";
						close;
					}
					specialeffect2 155;
					emotion et_cry;
					downrefitem(.@equipement);
					clear;
					mes "[" + getarg(0) + "]";
					mes "Eh bien, c'est un echec.";
					mes "Heureusement j'ai pu sauver l'equipement durant le processus.";
					mes "Tout n'est pas perdu, on peux reessayer... si tu as les moyens bien sure. . .";
					close;
				}
				successrefitem(.@equipement);
				.@emo = rand(3);
				if(.@emo == 0) {emotion et_smile;}
				if(.@emo == 1) {emotion et_best;}
				if(.@emo == 2) {emotion et_scissor;}
				clear;
				mes "[" + getarg(0) + "]";
				mes "Une reussite, voila pourquoi il ne faut jamais douter de sois.";
				mes "tu veux continuer ?";
				if(select("Continuer le raffinage:Arreter la") == 2){
					mes "Une sage decision, il faut savoir quand s'arreter.";
					close;
				}
				goto L_Encore;
				
				
			}
			
			if(.@reussite == 100) {
				mes "[" + getarg(0) + "]";
				mes "Tu veux encore ameliore cette Arme ?";
				mes "Son raffinage est deja au top de tout ce qui peut etre fait.";
				mes "...Par un humain tout du moins.";
				next;
				switch(select("Et bien justement...:Qui pourrait me renseigner ?:Laisses tomber.")) {
				
					case 1:
					mes "pas encore code";
					close;
				
					case 2:
					mes "pas encore code";
					close;
				
					case 3:
					mes "pas encore code";
					close;
				}
			}
			mes "test end";
			close;
		case 2: 
			mes "case 3 pas encore code";
			close;
		case 3:
			clear;
			mes "[" + getarg(0) + "]";
			mes "Bon voyage alors.";
			close;
		
	}
}

It's probably a bracket problem, but i read it again and again and again... can't find what's wrong.

in game the script work until you choose a piece of equipement, and when you click next, the buton disapear, and the script don't go further.

it is working with a "menu" in place of the first "switch, and the use of the "L_raffinage" label. But i shouldn't need this label :x

if anyone can take a look at it.

thanks in advance.

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  0
  • Topics Per Day:  0
  • Content Count:  132
  • Reputation:   53
  • Joined:  06/02/12
  • Last Seen:  

Hello. There's a missing ; (semicolon)

Find:

.@reussite = 100; .@prix = 50000}

Change to:

.@reussite = 100; .@prix = 50000;}

 

Edited by Racaae
  • Upvote 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.01
  • Content Count:  2
  • Reputation:   0
  • Joined:  02/15/24
  • Last Seen:  

Thanks a lot.

working now 😄

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