Jump to content
  • 0

Help me with Charity NPC


Heartfelt

Question


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  40
  • Reputation:   0
  • Joined:  01/09/16
  • Last Seen:  

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;
}

This script i found on rathena, the countdown works
but i want to make it give double EXP when the zeny charity is fulfilled
please help me what part to modify?
thank you

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:  212
  • Reputation:   94
  • Joined:  06/02/12
  • Last Seen:  

Hi, find the line with // unhide npc and add:

setbattleflag( "base_exp_rate", getbattleflag("base_exp_rate") * 2 );
setbattleflag( "job_exp_rate", getbattleflag("job_exp_rate") * 2 );
setbattleflag( "quest_exp_rate", getbattleflag("quest_exp_rate") * 2 );

Now find the line with // hidenpc and add:

setbattleflag( "base_exp_rate", getbattleflag("base_exp_rate") / 2 );
setbattleflag( "job_exp_rate", getbattleflag("job_exp_rate") / 2 );
setbattleflag( "quest_exp_rate", getbattleflag("quest_exp_rate") / 2 );

 

  • Upvote 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  0
  • Topics Per Day:  0
  • Content Count:  1
  • Reputation:   0
  • Joined:  10/26/24
  • Last Seen:  

Help me with Charity NPC" is a quest that centers around a non-playable character (NPC) dedicated to charitable activities within a game world. Players may need to assist this NPC in various tasks, such as gathering resources, completing missions, or raising awareness for a cause. A key aspect of the quest may involve understanding the Payment Date for donations or rewards, which adds an element of strategy to players’ actions. Engaging with this NPC often leads to unique storylines and opportunities to contribute to in-game community-building efforts, reinforcing themes of generosity and altruism in gaming.

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