// https://rathena.org/board/topic/115288-lotti-girl-ranker-wreward/
/*
create table lotti_rank (
char_id int(11),
name varchar(24),
lotti_point int(11),
primary key (char_id),
key (lotti_point)
) engine = innodb;
*/
prontera,155,181,5 script Lotti Girl 1_F_MARIA,{
goto L_talk;
OnInit:
setarray .cost, 7227,300;
// setarray .p1, 70, 607,25;
// setarray .p2, 70, 13710,1;
// setarray .p3, 40, 5471,1;
// setarray .p4, 40, 5210,1;
// setarray .p5, 40, 5224,1;
// setarray .p6, 50, 2357,1, 2524,1, 2421,1, 2115,1;
// setarray .p7, 25, 2701,1;
// setarray .p8, 5, 2394,1;
// setarray .p9, 30+30+60+60+60+50+75+95, 12214,1;
setarray .p1, 10, 501, 1;
setarray .p2, 8, 502, 1;
setarray .p3, 5, 503, 1;
setarray .p4, 3, 504, 1;
setarray .p5, 1, 505, 1;
setarray .p6, 90+92+95+97+99, 512, 10;
setarray .itemid,1101,1201,1301,1501,1601;
setarray .itemcost,10,20,30,40,50;
for ( .@i = 1; getd(".p"+ .@i ); .@i++ ) {
.itemtotalchance += getd(".p"+ .@i );
.itemsize[.@i] = ( getarraysize( getd(".p"+ .@i ) ) -1 ) /2;
}
// .points[ <random number on item chance> ] = <get this points>; // otherwise only get 1 point
.points[10] = 10;
.points[9] = 20;
.points[8] = 30;
.points[7] = 40;
.points[6] = 50;
.points[5] = 60;
.points[4] = 70;
.points[3] = 80;
.points[2] = 90;
.points[1] = 100;
.shop_size = getarraysize(.itemid);
npcshopdelitem "Lotti#hidden", 512;
for ( .@i = 0; .@i < .shop_size; .@i++ )
npcshopadditem "Lotti#hidden", .itemid[.@i], .itemcost[.@i];
npcshopattach "Lotti#hidden";
end;
L_talk:
mes "[Lotti Girl]";
mes "Welcome to the blah blah where I can blah blah and shop shop"; // lazy dialog
next;
switch ( select ( "Play", "Lotti Ranking", "Lotti Shop" ) ) {
mes "[Lotti Girl]";
case 1:
mes "It costs "+ .cost[1] +"x "+ getitemname( .cost[0] ) +" to play.";
if ( countitem( .cost[0] ) < .cost[1] ) close;
next;
if ( select( "Deal me in!", "No way..." ) == 2 ) close;
mes "[Lotti Girl]";
while ( true ) {
mes "Here we go...";
.@rand = rand(.itemtotalchance);
.@r = 0;
while ( ( .@rand = .@rand - getd( ".p"+ .@r +"[0]" ) ) >= 0 ) .@r++;
deletearray .@itemid;
deletearray .@itemamount;
for ( .@i = 0; .@i < .itemsize[.@r]; .@i++ ) {
.@itemid[.@i] = getd( ".p"+ .@r +"["+( .@i *2 +1 )+"]" );
.@itemamount[.@i] = getd( ".p"+ .@r +"["+( .@i *2 +2 )+"]" );
}
if ( checkweight2( .@itemid, .@itemamount ) == false ) {
mes "\rit appears you have overweight";
break;
}
delitem .cost[0], .cost[1];
for ( .@i = 0; .@i < .itemsize[.@r]; ++.@i )
getitem .@itemid[.@i], .@itemamount[.@i];
if ( .points[ getd( ".p"+ .@r +"[0]" ) ] > 0 )
.@points = .points[ getd( ".p"+ .@r +"[0]" ) ];
else
.@points = 1;
Lotti_Points = Lotti_Points + .@points;
query_sql "insert into lotti_rank values ( "+ getcharid(0) +", '"+ escape_sql( strcharinfo(0) ) +"', "+ .@points +" ) on duplicate key update lotti_point = lotti_point + "+ .@points;
dispbottom "Lotti_Points -> "+ Lotti_Points +" ++"+ .@points;
mes "\rwanna try again ?";
next;
if ( select( "Yes", "No" ) == 2 ) break;
mes "[Lotti Girl]";
if ( countitem( .cost[0] ) < .cost[1] ) {
mes "\rit seems you have ran out of "+ getitemname( .cost[0] );
break;
}
}
mes "\rThank you for using Lotti service~";
close;
case 2:
.@query$ = "SELECT `name`, IF(@d=t.`lotti_point`, @r, @r:=@i), @d:=t.`lotti_point`, @i:=@i+1 ";
.@query$ += "FROM `lotti_rank` t, (SELECT @d:=0, @r:=0, @i:=1)q ";
.@query$ += "ORDER BY `lotti_point` DESC LIMIT 5";
.@nb = query_sql(.@query$, .@name$, .@rank, .@points, .@dummy);
if ( !.@nb ) {
mes "There's no ranking yet ~";
close;
}
for ( .@i = 0; .@i < .@nb; .@i++ )
mes .@rank[.@i] +"> "+ .@name$[.@i] +" > "+ .@points[.@i] +" Points.";
if ( !query_sql( "SELECT `lotti_point`, 1+(SELECT COUNT(1) FROM `lotti_rank` t1 WHERE t1.lotti_point > t2.lotti_point) FROM `lotti_rank` t2 WHERE `char_id` = "+ getcharid(0), .@kills, .@rank ) ) {
mes "\rYou are not in the rank.";
close;
}
mes "\rYour current Point > "+ .@points;
mes "Your current Rank > "+ .@rank;
close;
case 3:
mes "You currently have "+ Lotti_Points +" Lotti Points.";
dispbottom "You currently have "+ Lotti_Points +" Lotti Points.";
close2;
callshop "Lotti#hidden", 1;
end;
}
close;
OnBuyItem:
mes "[Lotti Girl]";
if ( !@bought_quantity ) end;
if ( checkweight2( @bought_nameid, @bought_quantity ) == false ) {
mes "It appears you can't carry them all";
close;
}
.@size = getarraysize( @bought_nameid );
for ( .@i = 0; .@i < .@size; .@i++ ) {
for ( .@j = 0; .@j < .shop_size; .@j++ )
if ( @bought_nameid[.@i] == .itemid[.@j] )
break;
.@itemcost = .@itemcost + .itemcost[.@j] * @bought_quantity[.@i];
}
if ( .@itemcost > Lotti_Points ) {
mes "You don't have enough Lotti Points";
close;
}
Lotti_Points = Lotti_Points - .@itemcost;
for ( .@i = 0; .@i < .@size; .@i++ )
getitem @bought_nameid[.@i], @bought_quantity[.@i];
deletearray @bought_nameid;
deletearray @bought_quantity;
mes "Thanks for buying ~";
close;
}
- shop Lotti#hidden -1,512:1000