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.