Jump to content
  • 0

lucky spin problems


max65

Question


  • Group:  Members
  • Topic Count:  46
  • Topics Per Day:  0.02
  • Content Count:  120
  • Reputation:   1
  • Joined:  10/02/18
  • Last Seen:  

hi all ^^, I have a small problem, this NPC works, but when the event is over, it does not close ". Bmp" and the window of the npc.

can you help me plz.

 

1242622024_screenTheFairiesOfRo001.thumb.jpg.a22bdfb9034cebbb3c645ea972526be7.jpg

//===== Hercules Script ======================================
//= Wheel of Fortune
//===== By ===================================================
//= Habilis
//= Edited by Myriad
//===== Version ==============================================
//= 1.02 - June 15, 2018
//  - Made the script work with zeny, to be more accesibly to everyone.
//= 1.01 - June 14, 2018
//    - Added @wheel_of_fortune GM command (level 98+).
//    - Merged S_Pay and S_Loop subs into main line of text.
//    - S_Gamble is now S_Spin and it will 'return' instead of
//    calling back to the initial sub.
//= 1.00 - June 13, 2018
//    - Initial script edit for Habilis.
//===== Description ==========================================
//= Wheel of fortune something.
//============================================================

-    script    Wheel_of_Fortune    FAKE_NPC ,{

OnInit:
    disablenpc("Wheel of Fortune#Main");
    .EventName$ = "[Wheel Of Fortune]";
    end;


OnClock0900:
OnClock1600:
OnClock2200:
OnStart:
    .Start = true;
    announce(sprintf("%s : The event will begin in 1 minute, near the center of Prontera.", .EventName$), bc_blue | bc_all);
    initnpctimer();
    end;

OnTimer60000: // 1 min
    enablenpc("Wheel of Fortune#Main");
    announce(sprintf("%s : Come to Prontera and test your luck", .EventName$), bc_yellow | bc_all);
    end;

OnTimer60500: // 1 mins
    announce(sprintf("%s : One minute, do your last spin!", .EventName$), bc_yellow | bc_all);
    end;

OnTimer120000: // 2 mins
OnStop:
    .Start = false;
    stopnpctimer();
    disablenpc("Wheel of Fortune#Main");
    end;

OnCommand:
    if (.@atcmd_numparameters != 1) {
        dispbottom(sprintf("Usage: %s <start/end>", .@atcmd_command$), 0x00FF00);
        dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
        end;
    }

    if (.@atcmd_parameters$[0] == "start") {
        if (!.Start)
            donpcevent(sprintf("%s::OnStart", strnpcinfo(NPC_NAME)));
        else {
            dispbottom("The Wheel of Fortune has already started.", 0x00FF00);
            dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
        }
    } else if (.@atcmd_parameters$[0] == "end") {
        if (.Start)
            donpcevent(sprintf("%s::OnEnd", strnpcinfo(NPC_NAME)));
        else {
            dispbottom("The Wheel of Fortune is not active.", 0x00FF00);
            dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
        }
    } else {
        dispbottom(sprintf("Usage: %s <start/end>", .@atcmd_command$), 0x00FF00);
        dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
    }
    end;
}

prontera,164,169,1    script    Wheel of Fortune#Main    2_SLOT_MACHINE,{
    
OnTalk:

if (Zeny < .Zeny_Cost && #freewheelfortunespin < 0) {
        mes("[^0055FFLucky Spin^000000]", .EventName$);
        mes("You are out of Zeny");
        mes("and have no more");
        mes("free spins. Come back");
        mes("next time for more!");
        close();
    }

    .@mes$ = (#freewheelfortunespin > 0) ? sprintf(", but you, my friend, have %d free spin%s!", #freewheelfortunespin, (#freewheelfortunespin == 1) ? "" : "s") : ".";
    addtimer(1, sprintf("%s::OnEnd", strnpcinfo(NPC_NAME)));
    mes("[^0055FFLucky Spin^000000]", .EventName$);
    mes("Do you want to spin the wheel?");
    mes("It costs ^FF000050.000 Zeny^000000 to play", .@mes$);
    next();

    while (true) {
        if (Zeny < .Zeny_Cost && #freewheelfortunespin < 0)
            callsub(S_End);
        switch (select(
            (#freewheelfortunespin > 0) ? sprintf("Yes! Use free spin! (%d left)", #freewheelfortunespin) : "",
            (Zeny >= .Zeny_Cost ) ? sprintf("Yes! Use Zeny. (costs %dz)", .Zeny_Cost) : "",
            "No (Leave)"
        )) {
        // pay with free spin
        case 1:
            if (#freewheelfortunespin > 0) {
                if ((#freewheelfortunespin -= 1) < 0)
                    #freewheelfortunespin = 0;
                callsub(S_Spin);
            } else
                callsub(S_End);
            break;

        // Pay with zeny
        case 2:
            if (Zeny >= .Zeny_Cost) {
                Zeny -= .Zeny_Cost;
                callsub(S_Spin);
            } else {
                cutin("aca_salim02", 2);
                mes("[^0055FFLucky Spin^000000]", .EventName$);
                mes("Awww, you don't have enough to gamble...");
                mes(" ");
                mes("Have you ever heard?");
                mes("'Money isn't all that matters' Got it?");
                mes("Byeeeeeeeeeeeeee ;)");
                callsub(S_End);
            }
            break;

        default:
            callsub(S_End);
        }
    }

// Wheel spin animation
S_Spin:
    .@Sector = rand(.Sector_Range[0], .Sector_Range[1]);
    .@Display = .@Sector * 2 - 1;
    .@Speed = .Spin_Speed;
    
    for (.@i = 0; .@i < .nbTurns; .@i++) {
        .@b = .Cutin_Range[0];
        while (.@b <= .Cutin_Range[1]) {
            cutin(sprintf("%s%d", .Cutin$, .@b), 4);
            sleep2(.@Speed);
            .@b++;
            .@Speed += 1; // not ++, because  you may want to adjust the stopping +1 +2 +3
        }
    }
    
    .@b = .Cutin_Range[0];
    while (.@b < .@Display) {
        cutin(sprintf("%s%d", .Cutin$, .@b), 4);
        sleep2(.@Speed);
        .@b++;
    }

    cutin(sprintf("%s%d", .Cutin$, .@b), 4);

    if (.Prize_ID[.@Sector] == -1) {
        // Free spin
        if (.Sound_Effects)
            soundeffect("wheel_jackpot.wav", 0);
        announce(sprintf("[%s] : Wow, %dx more Free spins!!!", .EventName$, .Prize_Qty[.@Sector]), bc_blue | bc_self);
        #freewheelfortunespin = #freewheelfortunespin == 0 ? .Prize_Qty[.@Sector] : #freewheelfortunespin + .Prize_Qty[.@Sector];
    } else if (.Prize_ID[.@Sector] == 0) {
        // Nothing
        if (.Sound_Effects)
            soundeffect("wheel_lost.wav", 0);
        announce(sprintf("[%s] : Awwww, no luck in your gamble, more luck in love...", .EventName$), bc_blue | bc_self);
    } else {
        // Item
        if (.Sound_Effects)
            soundeffect("wheel_won.wav", 0);
        announce(sprintf("[%s] : %dx %s - enjoy your prize!", .EventName$, .Prize_Qty[.@Sector], getitemname(.Prize_ID[.@Sector])), bc_blue | bc_self);
        getitem(.Prize_ID[.@Sector], .Prize_Qty[.@Sector]);
    }

    sleep2(1000);
    if (Zeny < .Zeny_Cost && #freewheelfortunespin < 0) {
        mes("[^0055FFLucky Spin^000000]", .EventName$);
        mes("You are out of Zeny");
        mes("and have no more");
        mes("free spins. Come back");
        mes("next time for more!");
        close();
    }
    return;
    
S_End:
    close2();
OnEnd:
    cutin("", 255);
    end;
    
OnInit:
    .EventName$ = "Wheel Of Fortune";
    bindatcmd("wheel_of_fortune", "Wheel_of_Fortune::OnCommand", 98,false);
    .Spin_Speed = 50; // What is the base spin speed? (ms)
    .nbTurns = 2; // How many times the arrow makes a complete turn, before entering the stopping routine
    .Zeny_Cost = 50000; // How much zeny does it cost for a spin?
    .Sound_Effects = true; // Enable sound effects? (true/false)

    // You must have a total of 10 prizes. DO NOT remove 0 or -1 from the array and do not
    // change their order.
    setarray(.Prize_ID[1], -1, 7539, 14345, 7539,   617,   607, 7539,   604, 0,  12214);
    setarray(.Prize_Qty[1], 2,     3,     1,     1,     3,     3,     1,     3, 0,     1);

    // Don't touch below
    .Cutin$ = "WheelOfFortune_";
    setarray(.Sector_Range, 1, 10); // Sector range
    setarray(.Cutin_Range, 0, 19); // Cutin range
    end;
}

thx for your reply

screenThe Fairies Of Ro001.jpg

Edited by Emistry
Please use codebox
Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

  • Group:  Content Moderator
  • Topic Count:  55
  • Topics Per Day:  0.02
  • Content Count:  1676
  • Reputation:   702
  • Joined:  12/21/14
  • Last Seen:  

this a herc script

 

I am not sure if you use rathena or but if you use rathena you can use close3; to close any image on the screen

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  46
  • Topics Per Day:  0.02
  • Content Count:  120
  • Reputation:   1
  • Joined:  10/02/18
  • Last Seen:  

i will try thx for you repply ^^

 

 

i have remplace close2 ==> close3 but have a same problem's =s

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  99
  • Topics Per Day:  0.02
  • Content Count:  623
  • Reputation:   94
  • Joined:  05/11/12
  • Last Seen:  

I believe it is necessary to make many changes, the script was not made for this emulator.

Edited by Kakaroto
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  46
  • Topics Per Day:  0.02
  • Content Count:  120
  • Reputation:   1
  • Joined:  10/02/18
  • Last Seen:  

nobody can solved this npc and post here? i think many people wants that ^^ Lucky spin.rar

  • Like 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  36
  • Reputation:   4
  • Joined:  04/16/12
  • Last Seen:  

I use latest rathena, and i can convert it to rathena, but not completely fixed,

no error for image, but still, i stuck in "while (true) {"

anyone can help me to solve it?

 

1540358234242.gif

 

i stuck in here

  while (true) {
        if ( (zeny < .Zeny_Cost) && (#freewheelfortunespin < 0))
            callsub S_End;
        switch (select(
            (#freewheelfortunespin > 0)?"Yes! Use free spin! ("+#freewheelfortunespin+" left)":
            (Zeny >= .Zeny_Cost)?"Yes! Use Zeny. (costs "+.Zeny_Cost+"z)":
            "No (Leave)"
        )) {
        // pay with free spin
        case 1:
            if (#freewheelfortunespin > 0) {
                if ((#freewheelfortunespin -= 1) < 0)
                    #freewheelfortunespin = 0;
                callsub S_Spin;
            } else
                callsub S_End;
            break;

        // Pay with zeny
        case 2:
            if (zeny >= .Zeny_Cost) {
                set zeny,zeny-.Zeny_Cost;
                callsub S_Spin;
            } else {
                cutin "aca_salim02",2;
                mes .EventName$;
                mes "Awww, you don't have enough to gamble...";
                mes " ";
                mes "Have you ever heard?";
                mes "'Money isn't all that matters' Got it?";
                mes "Byeeeeeeeeeeeeee ;)";
                callsub S_End;
            }
            break;

        default:
            callsub S_End;
        }
    }

 

Edited by Emistry
Please use codebox
Link to comment
Share on other sites

  • 0

  • Group:  Forum Moderator
  • Topic Count:  93
  • Topics Per Day:  0.02
  • Content Count:  10013
  • Reputation:   2345
  • Joined:  10/28/11
  • Last Seen:  

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  46
  • Topics Per Day:  0.02
  • Content Count:  120
  • Reputation:   1
  • Joined:  10/02/18
  • Last Seen:  

Thx emistry but now have that in my console

148131500_Sanstitre.png.3dec021b953ffba16cf9886bf4f51d55.png

//= Wheel of Fortune
//===== By ===================================================
//= Habilis
//= Edited by Myriad
//===== Version ==============================================
//= 1.02 - June 15, 2018
//  - Made the script work with zeny, to be more accesibly to everyone.
//= 1.01 - June 14, 2018
//    - Added @wheel_of_fortune GM command (level 98+).
//    - Merged S_Pay and S_Loop subs into main line of text.
//    - S_Gamble is now S_Spin and it will 'return' instead of
//    calling back to the initial sub.
//= 1.00 - June 13, 2018
//    - Initial script edit for Habilis.
//===== Description ==========================================
//= Wheel of fortune something.
//============================================================

-	script	Wheel_of_Fortune	FAKE_NPC ,{

OnInit:
    disablenpc("Wheel of Fortune#Main");
    .EventName$ = "[Wheel Of Fortune]";
    end;


OnClock0900:
OnClock1600:
OnClock2200:
OnStart:
    .Start = true;
    announce(sprintf("%s : The event will begin in 1 minute, near the center of Prontera.", .EventName$), bc_blue | bc_all);
    initnpctimer();
    end;

OnTimer60000: // 1 min
    enablenpc("Wheel of Fortune#Main");
    announce(sprintf("%s : Come to Prontera and test your luck", .EventName$), bc_yellow | bc_all);
    end;

OnTimer60500: // 1 mins
    announce(sprintf("%s : One minute, do your last spin!", .EventName$), bc_yellow | bc_all);
    end;

OnTimer120000: // 2 mins
OnStop:
    .Start = false;
    stopnpctimer();
    disablenpc("Wheel of Fortune#Main");
    end;

OnCommand:
    if (.@atcmd_numparameters != 1) {
        dispbottom(sprintf("Usage: %s <start/end>", .@atcmd_command$), 0x00FF00);
        dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
        end;
    }

    if (.@atcmd_parameters$[0] == "start") {
        if (!.Start)
            donpcevent(sprintf("%s::OnStart", strnpcinfo(NPC_NAME)));
        else {
            dispbottom("The Wheel of Fortune has already started.", 0x00FF00);
            dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
        }
    } else if (.@atcmd_parameters$[0] == "end") {
        if (.Start)
            donpcevent(sprintf("%s::OnEnd", strnpcinfo(NPC_NAME)));
        else {
            dispbottom("The Wheel of Fortune is not active.", 0x00FF00);
            dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
        }
    } else {
        dispbottom(sprintf("Usage: %s <start/end>", .@atcmd_command$), 0x00FF00);
        dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
    }
    end;
}

prontera,164,169,1	script	Wheel of Fortune#Main	2_SLOT_MACHINE,{
    
OnTalk:

if (Zeny < .Zeny_Cost && #freewheelfortunespin < 0) {
        mes("[^0055FFLucky Spin^000000]", .EventName$);
        mes("You are out of Zeny");
        mes("and have no more");
        mes("free spins. Come back");
        mes("next time for more!");
        close();
    }

    .@mes$ = (#freewheelfortunespin > 0) ? sprintf(", but you, my friend, have %d free spin%s!", #freewheelfortunespin, (#freewheelfortunespin == 1) ? "" : "s") : ".";
    addtimer(1, sprintf("%s::OnEnd", strnpcinfo(NPC_NAME)));
    mes("[^0055FFLucky Spin^000000]", .EventName$);
    mes("Do you want to spin the wheel?");
    mes("It costs ^FF000050.000 Zeny^000000 to play", .@mes$);
    next();

    while (true) {
        if (Zeny < .Zeny_Cost && #freewheelfortunespin < 0)
            callsub(S_End);
        switch (select(
            (#freewheelfortunespin > 0) ? sprintf("Yes! Use free spin! (%d left)", #freewheelfortunespin) : "",
            (Zeny >= .Zeny_Cost ) ? sprintf("Yes! Use Zeny. (costs %dz)", .Zeny_Cost) : "",
            "No (Leave)"
        )) {
        // pay with free spin
        case 1:
            if (#freewheelfortunespin > 0) {
                if ((#freewheelfortunespin -= 1) < 0)
                    #freewheelfortunespin = 0;
                callsub(S_Spin);
            } else
                callsub(S_End);
            break;

        // Pay with zeny
        case 2:
            if (Zeny >= .Zeny_Cost) {
                Zeny -= .Zeny_Cost;
                callsub(S_Spin);
            } else {
                cutin("aca_salim02", 2);
                mes("[^0055FFLucky Spin^000000]", .EventName$);
                mes("Awww, you don't have enough to gamble...");
                mes(" ");
                mes("Have you ever heard?");
                mes("'Money isn't all that matters' Got it?");
                mes("Byeeeeeeeeeeeeee ;)");
                callsub(S_End);
            }
            break;

        default:
            break;
        }
        callsub(S_End);
    }

// Wheel spin animation
S_Spin:
    .@Sector = rand(.Sector_Range[0], .Sector_Range[1]);
    .@Display = .@Sector * 2 - 1;
    .@Speed = .Spin_Speed;
    
    for (.@i = 0; .@i < .nbTurns; .@i++) {
        .@b = .Cutin_Range[0];
        while (.@b <= .Cutin_Range[1]) {
            cutin(sprintf("%s%d", .Cutin$, .@b), 4);
            sleep2(.@Speed);
            .@b++;
            .@Speed += 1; // not ++, because  you may want to adjust the stopping +1 +2 +3
        }
    }
	.@b = .Cutin_Range[0];
    while (.@b < .@Display) {
        cutin(sprintf("%s%d", .Cutin$, .@b), 4);
        sleep2(.@Speed);
        .@b++;
    }

    cutin(sprintf("%s%d", .Cutin$, .@b), 4);

    if (.Prize_ID[.@Sector] == -1) {
        // Free spin
        if (.Sound_Effects)
            soundeffect("wheel_jackpot.wav", 0);
        announce(sprintf("[%s] : Wow, %dx more Free spins!!!", .EventName$, .Prize_Qty[.@Sector]), bc_blue | bc_self);
        #freewheelfortunespin = #freewheelfortunespin == 0 ? .Prize_Qty[.@Sector] : #freewheelfortunespin + .Prize_Qty[.@Sector];
    } else if (.Prize_ID[.@Sector] == 0) {
        // Nothing
        if (.Sound_Effects)
            soundeffect("wheel_lost.wav", 0);
        announce(sprintf("[%s] : Awwww, no luck in your gamble, more luck in love...", .EventName$), bc_blue | bc_self);
    } else {
        // Item
        if (.Sound_Effects)
            soundeffect("wheel_won.wav", 0);
        announce(sprintf("[%s] : %dx %s - enjoy your prize!", .EventName$, .Prize_Qty[.@Sector], getitemname(.Prize_ID[.@Sector])), bc_blue | bc_self);
        getitem(.Prize_ID[.@Sector], .Prize_Qty[.@Sector]);
    }

    sleep2(1000);
    if (Zeny < .Zeny_Cost && #freewheelfortunespin < 0) {
        mes("[^0055FFLucky Spin^000000]", .EventName$);
        mes("You are out of Zeny");
        mes("and have no more");
        mes("free spins. Come back");
        mes("next time for more!");
        close();
    }
    return;
    
S_End:
    close2();
OnEnd:
    cutin("", 255);
    end;
    
OnInit:
    .EventName$ = "Wheel Of Fortune";
    bindatcmd("wheel_of_fortune", "Wheel_of_Fortune::OnCommand", 98,false);
    .Spin_Speed = 50; // What is the base spin speed? (ms)
    .nbTurns = 2; // How many times the arrow makes a complete turn, before entering the stopping routine
    .Zeny_Cost = 50000; // How much zeny does it cost for a spin?
    .Sound_Effects = true; // Enable sound effects? (true/false)

    // You must have a total of 10 prizes. DO NOT remove 0 or -1 from the array and do not
    // change their order.
    setarray(.Prize_ID[1], -1, 7539, 14345, 7539,   617,   607, 7539,   604, 0,  12214);
    setarray(.Prize_Qty[1], 2,     3,     1,     1,     3,     3,     1,     3, 0,     1);

    // Don't touch below
    .Cutin$ = "WheelOfFortune_";
    setarray(.Sector_Range, 1, 10); // Sector range
    setarray(.Cutin_Range, 0, 19); // Cutin range
    end;
}

 

Edited by max65
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  4
  • Topics Per Day:  0.00
  • Content Count:  303
  • Reputation:   117
  • Joined:  12/10/16
  • Last Seen:  

//===== Hercules Script ======================================
//= Wheel of Fortune
//===== By ===================================================
//= Habilis
//= Edited by Myriad
//===== Version ==============================================
//= 1.02 - June 15, 2018
//  - Made the script work with zeny, to be more accesibly to everyone.
//= 1.01 - June 14, 2018
//	- Added @wheel_of_fortune GM command (level 98+).
//	- Merged S_Pay and S_Loop subs into main line of text.
//	- S_Gamble is now S_Spin and it will 'return' instead of
//	calling back to the initial sub.
//= 1.00 - June 13, 2018
//	- Initial script edit for Habilis.
//===== Description ==========================================
//= Wheel of fortune something.
//============================================================

-	script	Wheel_of_Fortune	-1,{

OnInit:
	disablenpc("Wheel of Fortune#Main");
	.EventName$ = "[Wheel Of Fortune]";
	end;


OnClock0900:
OnClock1600:
OnClock2200:
OnStart:
	.Start = true;
	announce(sprintf("%s : The event will begin in 1 minute, near the center of Prontera.", .EventName$), bc_blue | bc_all);
	initnpctimer();
	end;

OnTimer60000: // 1 min
	enablenpc("Wheel of Fortune#Main");
	announce(sprintf("%s : Come to Prontera and test your luck", .EventName$), bc_yellow | bc_all);
	end;

OnTimer60500: // 1 mins
	announce(sprintf("%s : One minute, do your last spin!", .EventName$), bc_yellow | bc_all);
	end;

OnTimer120000: // 2 mins
OnStop:
	.Start = false;
	stopnpctimer();
	disablenpc("Wheel of Fortune#Main");
	end;

OnCommand:
	if (.@atcmd_numparameters != 1) {
		dispbottom(sprintf("Usage: %s <start/end>", .@atcmd_command$), 0x00FF00);
		dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
		end;
	}

	if (.@atcmd_parameters$[0] == "start") {
		if (!.Start)
			donpcevent(sprintf("%s::OnStart", strnpcinfo(NPC_NAME)));
		else {
			dispbottom("The Wheel of Fortune has already started.", 0x00FF00);
			dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
		}
	} else if (.@atcmd_parameters$[0] == "end") {
		if (.Start)
			donpcevent(sprintf("%s::OnEnd", strnpcinfo(NPC_NAME)));
		else {
			dispbottom("The Wheel of Fortune is not active.", 0x00FF00);
			dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
		}
	} else {
		dispbottom(sprintf("Usage: %s <start/end>", .@atcmd_command$), 0x00FF00);
		dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
	}
	end;
}

prontera,164,169,1	script	Wheel of Fortune#Main	2_SLOT_MACHINE,{
	
OnTalk:

if (Zeny < .Zeny_Cost && #freewheelfortunespin < 0) {
		mes("[^0055FFLucky Spin^000000]", .EventName$);
		mes("You are out of Zeny");
		mes("and have no more");
		mes("free spins. Come back");
		mes("next time for more!");
		close();
	}

	.@mes$ = (#freewheelfortunespin > 0) ? sprintf(", but you, my friend, have %d free spin%s!", #freewheelfortunespin, (#freewheelfortunespin == 1) ? "" : "s") : ".";
	addtimer(1, sprintf("%s::OnEnd", strnpcinfo(NPC_NAME)));
	mes("[^0055FFLucky Spin^000000]", .EventName$);
	mes("Do you want to spin the wheel?");
	mes("It costs ^FF000050.000 Zeny^000000 to play", .@mes$);
	next();

	while (true) {
		if (Zeny < .Zeny_Cost && #freewheelfortunespin < 0)
			callsub(S_End);
		switch (select(
			(#freewheelfortunespin > 0) ? sprintf("Yes! Use free spin! (%d left)", #freewheelfortunespin) : "",
			(Zeny >= .Zeny_Cost ) ? sprintf("Yes! Use Zeny. (costs %dz)", .Zeny_Cost) : "",
			"No (Leave)"
		)) {
		// pay with free spin
		case 1:
			if (#freewheelfortunespin > 0) {
				if ((#freewheelfortunespin -= 1) < 0)
					#freewheelfortunespin = 0;
				callsub(S_Spin);
			} else
				callsub(S_End);
			break;

		// Pay with zeny
		case 2:
			if (Zeny >= .Zeny_Cost) {
				Zeny -= .Zeny_Cost;
				callsub(S_Spin);
			} else {
				cutin("aca_salim02", 2);
				mes("[^0055FFLucky Spin^000000]", .EventName$);
				mes("Awww, you don't have enough to gamble...");
				mes(" ");
				mes("Have you ever heard?");
				mes("'Money isn't all that matters' Got it?");
				mes("Byeeeeeeeeeeeeee ;)");
				callsub(S_End);
			}
			break;

		default:
			break;
		}
		callsub(S_End);
	}

// Wheel spin animation
S_Spin:
	.@Sector = rand(.Sector_Range[0], .Sector_Range[1]);
	.@Display = .@Sector * 2 - 1;
	.@Speed = .Spin_Speed;
	
	for (.@i = 0; .@i < .nbTurns; .@i++) {
		.@b = .Cutin_Range[0] - 1;
		while (.@b <= (.Cutin_Range[1] - 1)) {
			cutin(sprintf("%s%d", .Cutin$, .@b), 4);
			sleep2(.@Speed);
			.@b++;
			.@Speed += 1; // not ++, because  you may want to adjust the stopping +1 +2 +3
		}
	}
	
	.@b = .Cutin_Range[0] - 1;
	while (.@b < .@Display) {
		cutin(sprintf("%s%d", .Cutin$, .@b), 4);
		sleep2(.@Speed);
		.@b++;
	}

	cutin(sprintf("%s%d", .Cutin$, .@b), 4);

	if (.Prize_ID[.@Sector] == -1) {
		// Free spin
		if (.Sound_Effects)
			soundeffect("wheel_jackpot.wav", 0);
		announce(sprintf("[%s] : Wow, %dx more Free spins!!!", .EventName$, .Prize_Qty[.@Sector]), bc_blue | bc_self);
		#freewheelfortunespin = #freewheelfortunespin == 0 ? .Prize_Qty[.@Sector] : #freewheelfortunespin + .Prize_Qty[.@Sector];
	} else if (.Prize_ID[.@Sector] == 0) {
		// Nothing
		if (.Sound_Effects)
			soundeffect("wheel_lost.wav", 0);
		announce(sprintf("[%s] : Awwww, no luck in your gamble, more luck in love...", .EventName$), bc_blue | bc_self);
	} else {
		// Item
		if (.Sound_Effects)
			soundeffect("wheel_won.wav", 0);
		announce(sprintf("[%s] : %dx %s - enjoy your prize!", .EventName$, .Prize_Qty[.@Sector], getitemname(.Prize_ID[.@Sector])), bc_blue | bc_self);
		getitem(.Prize_ID[.@Sector], .Prize_Qty[.@Sector]);
	}

	sleep2(1000);
	if (Zeny < .Zeny_Cost && #freewheelfortunespin < 0) {
		mes("[^0055FFLucky Spin^000000]", .EventName$);
		mes("You are out of Zeny");
		mes("and have no more");
		mes("free spins. Come back");
		mes("next time for more!");
		close();
	}
	return;
	
S_End:
	close2();
OnEnd:
	cutin("", 255);
	end;
	
OnInit:
	.EventName$ = "Wheel Of Fortune";
	bindatcmd("wheel_of_fortune", "Wheel_of_Fortune::OnCommand", 98,false);
	.Spin_Speed = 50; // What is the base spin speed? (ms)
	.nbTurns = 2; // How many times the arrow makes a complete turn, before entering the stopping routine
	.Zeny_Cost = 50000; // How much zeny does it cost for a spin?
	.Sound_Effects = true; // Enable sound effects? (true/false)

	// You must have a total of 10 prizes. DO NOT remove 0 or -1 from the array and do not
	// change their order.
	setarray(.Prize_ID[1], -1, 7539, 14345, 7539,   617,   607, 7539,   604, 0,  12214);
	setarray(.Prize_Qty[1], 2,	 3,	 1,	 1,	 3,	 3,	 1,	 3, 0,	 1);

	// Don't touch below
	.Cutin$ = "WheelOfFortune_";
	setarray .Sector_Range[0], 1, 10; // Sector range
	setarray .Cutin_Range[0], 1, 20; // Cutin range
	end;
}

 

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  46
  • Topics Per Day:  0.02
  • Content Count:  120
  • Reputation:   1
  • Joined:  10/02/18
  • Last Seen:  

same problèms , have save with notepad++ on uncode --> UTF8 without BOM

171658561_Sanstitre.png.82ee20b502e8bcd4f0aa531a75292649.png

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  4
  • Topics Per Day:  0.00
  • Content Count:  303
  • Reputation:   117
  • Joined:  12/10/16
  • Last Seen:  

What if you erase that line and readd it manually?

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  27
  • Topics Per Day:  0.02
  • Content Count:  115
  • Reputation:   7
  • Joined:  05/09/19
  • Last Seen:  

How to add icon Lucky spin on the screen top right corner position Cash shop

 

thank you.

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