Like this? (untested)
//Charity NPC//
//Ryonin//
izlude,124,139,6 script Lucy 101,{
function Display_Timer; // define function
if ($totaldonate >= 75000000)
end;
// Variables
set .@n$, "[Lucy]";
setarray .@donation_Zeny[0],
5000000,
10000000,
15000000,
25000000;
// Zeny Detector
if (Zeny < .@donation_Zeny[0]) {
mes .@n$;
mes "Sorry, you dont have enough money to talk to me.";
mes "You need to have atleast ^FF00005,000,000z^000000.";
mes "The total amount I collected is : ^0000CD[" + $totaldonate + "]^000000 Zeny."; // '$' for permanent server variable
close; // don't need end after close
}
// Start
mes .@n$;
mes "Hello, Citizen of Ragnarok Offline.";
mes "Can I help you with something?";
next;
if (select("Yes, I would like to donate:No, Thank you") == 1) {
mes .@n$;
mes "Okay then. See you later.";
close;
}
mes .@n$;
mes "I was assigned by the ^DAA520 GM Team^000000 to collect the donation money.";
mes "The total amount I collected is : ^0000CD[" + $totaldonate + "]^000000 Zeny.";
next;
mes .@n$;
mes "You can only donate 1,000,000z or 5,000,000z.";// different from menu
next;
mes .@n$;
mes "If I collected a total amount of ^FF000075,000,000^000000z.";
mes "I can activate this event:";
mes "Event: ^8B008BComodo Hat Festival Quest^000000.";
mes "Event Duration: ^006400[2 DAYS]^000000.";
next;
mes .@n$;
mes "How much money you want to donate?";
mes "Once you donate, I can't your money back.";
next;
.@size = getarraysize( .@donation_Zeny );
for ( .@i = 0; .@i < .@size; .@i++ )
.@menu$ += callfunc( "F_InsertComma", .@donation_Zeny[.@i] ) + ":"; // dynamical menu
.@s = select(.@menu$) - 1;
if ($totaldonate >= 75000000) { // already on
mes .@n$;
mes "The total amount I collected is : ^0000CD[" + $totaldonate + "]^000000 Zeny.";
close;
}
if (Zeny < .@donation_Zeny[.@s]) { // re-check player zeny amount
mes .@n$;
mes "Sorry, you dont have enough money to talk to me.";
mes "You need to have atleast ^FF00005,000,000z^000000.";
mes "The total amount I collected is : ^0000CD[" + $totaldonate + "]^000000 Zeny.";
close;
}
set Zeny, Zeny - .@donation_Zeny[.@s];
set $totaldonate, $totaldonate + .@donation_Zeny[.@s];
mes .@n$;
mes "Thank you for donating " + callfunc( "F_InsertComma", .@donation_Zeny[.@s] ) + "z!";
mes "We appreciate your generosity.";
announce "[Charity Lucy: "+strcharinfo(0)+"] has donated [" + callfunc( "F_InsertComma", .@donation_Zeny[.@s] ) + "z] to Charity! We appreciate your generosity.",0;
if ($totaldonate >= 75000000) {
$donation_timer = gettimetick(2) + 86400; // 86400 seconds = 2 days
donpcevent strnpcinfo(3) + "::OnInit";
}
next;
mes .@n$;
mes "The total amount I collected is : ^0000CD[" + $totaldonate + "]^000000 Zeny.";
close;
function Display_Timer {
.@time = getarg(0);
.@hour = .@time / 3600;
.@mins = ( .@time % 3600 ) / 60;
.@secs = .@time % 60;
.@string$ = (.@hour ? .@hour + " hour" : "");
.@string$ += (.@string$ != "" ? " " : "") + (.@mins ? .@mins + " min" + (.@mins > 1 ? "s" : "" ) : "");
.@string$ += (.@string$ != "" ? " " : "") + (.@secs + " sec") + (.@secs > 1 ? "s" : "" );
return .@string$;
}
OnInit:
if ($totaldonate < 75000000)
end;
.@time_left = $donation_timer - gettimetick(2);
if (.@time_left <= 0)
$totaldonate = 0;
else {
// unhide npc
while (.@time_left > 0) {
waitingroom Display_Timer( .@time_left ),0;
sleep 1000;
delwaitingroom;
.@time_left--;
}
// hidenpc
set $totaldonate, 0;
$donation_timer = 0;
announce "Charity Lucy: Charity Event for 2 Days has ended. Don't forget to donate to activate.",0;
sleep 10000;
announce "Charity Lucy: Thank you for your generosity.",0;
}
end;
}
EDIT : oh well I wasn't supposed to post the whole script in support section >.<