Jump to content
  • 0

Gold Room how to make it 100% point


Sergardo

Question


  • Group:  Members
  • Topic Count:  64
  • Topics Per Day:  0.02
  • Content Count:  148
  • Reputation:   0
  • Joined:  03/06/15
  • Last Seen:  

 .rate = 50;         - if i make it 100 no point drop when killing 

// https://rathena.org/board/topic/108888-request-a-gold-room-drop-gold-point/

prontera,155,181,5    script    Sample#goldroom    4_F_KAFRA1,{
    doevent "gold_room_main::OnTalk";
}
// warp portal back prontera
ordeal_3-2,123,123,0    warp    gold_room_back_prt    1,1,prontera,155,181

// peco peco summon
ordeal_3-2,0,0,0,0    monster    Peco Peco    1019,200,60000,0,"gold_room_main::OnKill"


-    script    gold_room_main    -1,{
    
    OnInit:
        // gold room map
        .map$ = "ordeal_3-2";
        // entrance fee
        .zeny_cost = 200000;
        // rate to get gold
        .rate = 50;         - if i make it 100 no point drop when killing 
        // gold random amount
        setarray .gold_amount,1,5;
        
        setmapflag .map$,mf_noteleport;
        setmapflag .map$,mf_pvp;
        setmapflag .map$,mf_pvp_noguild;
        setmapflag .map$,mf_pvp_noparty;
        setmapflag .map$,mf_nobranch;
        setmapflag .map$,mf_nosave;
        setmapflag .map$,mf_nomemo;
        setmapflag .map$,mf_noreturn;
        setmapflag .map$,mf_nowarp;
        setmapflag .map$,mf_nowarpto;
        end;
    
    OnTalk:
        mes "Enter Gold Room ?";
        if ( .zeny_cost ) 
            mes F_InsertComma( .zeny_cost ) + " Zeny";
        switch ( select( 
            "Enter Gold Room",
            "Exchange Gold Point",
            "Cancel"
        )) {
            case 1:
                if ( Zeny < .zeny_cost ) {
                    mes "Not enough Zeny.";
                }
                else {
                    Zeny -= .zeny_cost;
                    warp .map$,0,0;
                }
                break;
            case 2:    
                mes "You got "+F_InsertComma( #GOLDPOINTS )+" Points";
                input .@value,0,#GOLDPOINTS;
                if ( checkweight( 969, .@value ) ) {
                    #GOLDPOINTS -= .@value;
                    getitem 969,.@value;
                    mes "Gained "+.@value+" Gold.";
                }
                else {
                    mes "You overweight.";
                }
            default:
                break;
        }
        close;
        
    OnKill:    
        if ( .rate < rand( 100 ) ) {
            .@point = rand( .gold_amount[0],.gold_amount[1] );
            #GOLDPOINTS += .@point;
            dispbottom "Gained "+.@point+" Point. You got "+F_InsertComma( #GOLDPOINTS )+" Points now.";
        }
        end;

    OnPCDieEvent:
        .@killerrid = killerrid;
        if ( strcharinfo(3) == .map$ && .@killerrid != getcharid(3) && getmonsterinfo( .@killerrid,MOB_NAME ) != "null" ) {
            #GOLDPOINTS = 0;
            dispbottom "You died, you lost all the point.";
        }
        end;
}


 

Edited by Mabuhay
Please use codebox next time
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  50
  • Topics Per Day:  0.01
  • Content Count:  1702
  • Reputation:   238
  • Joined:  09/05/12
  • Last Seen:  

Try below

prontera,155,181,5	script	Sample#goldroom	4_F_KAFRA1,{
    doevent "gold_room_main::OnTalk";
}
// warp portal back prontera
ordeal_3-2,123,123,0	warp	gold_room_back_prt	1,1,prontera,155,181

// peco peco summon
ordeal_3-2,0,0,0,0	monster	Peco Peco	1019,200,60000,0,"gold_room_main::OnKill"

-	script	gold_room_main	-1,{
    
    OnInit:
        // gold room map
        .map$ = "ordeal_3-2";
        // entrance fee
        .zeny_cost = 200000;
        // rate to get gold
        .rate = 100;
        // gold random amount
        setarray .gold_amount,1,5;
        
        setmapflag .map$,mf_noteleport;
        setmapflag .map$,mf_pvp;
        setmapflag .map$,mf_pvp_noguild;
        setmapflag .map$,mf_pvp_noparty;
        setmapflag .map$,mf_nobranch;
        setmapflag .map$,mf_nosave;
        setmapflag .map$,mf_nomemo;
        setmapflag .map$,mf_noreturn;
        setmapflag .map$,mf_nowarp;
        setmapflag .map$,mf_nowarpto;
        end;
    
    OnTalk:
        mes "Enter Gold Room ?";
        if ( .zeny_cost ) 
            mes F_InsertComma( .zeny_cost ) + " Zeny";
        switch ( select( 
            "Enter Gold Room",
            "Exchange Gold Point",
            "Cancel"
        )) {
            case 1:
                if ( Zeny < .zeny_cost ) {
                    mes "Not enough Zeny.";
                }
                else {
                    Zeny -= .zeny_cost;
                    warp .map$,0,0;
                }
                break;
            case 2:    
                mes "You got "+F_InsertComma( #GOLDPOINTS )+" Points";
                input .@value,0,#GOLDPOINTS;
                if ( checkweight( 969, .@value ) ) {
                    #GOLDPOINTS -= .@value;
                    getitem 969,.@value;
                    mes "Gained "+.@value+" Gold.";
                }
                else {
                    mes "You overweight.";
                }
            default:
                break;
        }
        close;
        
    OnKill:    
        if ( .rate > rand( 100 ) ) {
            .@point = rand( .gold_amount[0],.gold_amount[1] );
            #GOLDPOINTS += .@point;
            dispbottom "Gained "+.@point+" Point. You got "+F_InsertComma( #GOLDPOINTS )+" Points now.";
        }
        end;

    OnPCDieEvent:
        .@killerrid = killerrid;
        if ( strcharinfo(3) == .map$ && .@killerrid != getcharid(3) && getmonsterinfo( .@killerrid,MOB_NAME ) != "null" ) {
            #GOLDPOINTS = 0;
            dispbottom "You died, you lost all the point.";
        }
        end;
}

 

Link to comment
Share on other sites

  • 1

  • Group:  Members
  • Topic Count:  38
  • Topics Per Day:  0.01
  • Content Count:  167
  • Reputation:   22
  • Joined:  11/23/11
  • Last Seen:  

OnKill:    
        if ( .rate < rand( 100 ) ) {
            .@point = rand( .gold_amount[0],.gold_amount[1] );
            #GOLDPOINTS += .@point;
            dispbottom "Gained "+.@point+" Point. You got "+F_InsertComma( #GOLDPOINTS )+" Points now.";
        }
	end;

to

OnKill:    

		.@point = rand( .gold_amount[0],.gold_amount[1] );
		#GOLDPOINTS += .@point;
		dispbottom "Gained "+.@point+" Point. You got "+F_InsertComma( #GOLDPOINTS )+" Points now.";\
		end;

 

Edited by Katazui
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  5
  • Topics Per Day:  0.00
  • Content Count:  11
  • Reputation:   0
  • Joined:  01/02/16
  • Last Seen:  

Default monster is 50. 
If party member <=5 monster +10,
If party member <=10 monster +10,
If party member <= 15 monster +10.

Thank you for your help.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  64
  • Topics Per Day:  0.02
  • Content Count:  148
  • Reputation:   0
  • Joined:  03/06/15
  • Last Seen:  

On 6/17/2020 at 10:26 AM, Katazui said:

OnKill:    
        if ( .rate < rand( 100 ) ) {
            .@point = rand( .gold_amount[0],.gold_amount[1] );
            #GOLDPOINTS += .@point;
            dispbottom "Gained "+.@point+" Point. You got "+F_InsertComma( #GOLDPOINTS )+" Points now.";
        }
	end;

to


OnKill:    

		.@point = rand( .gold_amount[0],.gold_amount[1] );
		#GOLDPOINTS += .@point;
		dispbottom "Gained "+.@point+" Point. You got "+F_InsertComma( #GOLDPOINTS )+" Points now.";\
		end;

 

nothing happen sir still no point 

 

gold room with point system when killing peco pa help mga idol yung working sa 2015 + client 

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  105
  • Topics Per Day:  0.02
  • Content Count:  446
  • Reputation:   229
  • Joined:  03/20/12
  • Last Seen:  

Execute this script command (Samples on how to use it is provided) (Source : doc/script_commands.txt).

*getpartymember <party id>{,<type>{,<array_variable>}};

This command will find all members of a specified party and returns their names
(or character id or account id depending on the value of "type") into an array
of temporary global variables. There's actually quite a few commands like this
which will fill a special variable with data upon execution and not do anything
else.

Upon executing this,

$@partymembername$[] is a global temporary string array which contains all the
                     names of these party members
                     (only set when type is 0 or not specified)

$@partymembercid[]   is a global temporary number array which contains the
                     character id of these party members.
                     (only set when type is 1)

$@partymemberaid[]   is a global temporary number array which contains the
                     account id of these party members.
                     (only set when type is 2)

$@partymembercount   is the number of party members that were found.

The party members will (apparently) be found regardless of whether they are
online or offline. Note that the names come in no particular order.

Be sure to use $@partymembercount to go through this array, and not
'getarraysize', because it is not cleared between runs of 'getpartymember'. If
someone with 7 party members invokes this script, the array would have 7
elements. But if another person calls up the NPC, and he has a party of 5, the
server will not clear the array for you, overwriting the values instead. So in
addition to returning the 5 member names, the 6th and 7th elements from the last
call remain, and you will get 5+2 members, of which the last 2 don't belong to
the new guy's party. $@partymembercount will always contain the correct number,
(5) unlike 'getarraysize()' which will return 7 in this case.

If 'array_variable' is set, the result will be stored to that variable instead
using global variable.

Example 1: list party member names

	// get the party member names
	getpartymember getcharid(1),0;

	// It's a good idea to copy the global temporary $@partymember*****
	// variables to your own scope variables because if you have pauses in this
	// script (sleep, sleep2, next, close2, input, menu, select, or prompt),
	// another player could click this NPC, trigger 'getpartymember', and
	// overwrite the $@partymember***** variables.
	.@count = $@partymembercount;
	copyarray .@name$[0], $@partymembername$[0], $@partymembercount;

	// list the party member names
	for (.@i = 0; .@i < .@count; .@i++)
		mes (.@i +1) + ". ^0000FF" + .@name$[.@i] + "^000000";
	close;


Example 2: check party count (with a 'next' pause), before warping to event

	.register_num = 5; // How many party members are required?

	// get the charID and accountID of character's party members
	getpartymember getcharid(1), 1;
	getpartymember getcharid(1), 2;

	if ( $@partymembercount != .register_num ) {
		mes "Please form a party of " + .register_num + " to continue";
		close;
	}

	// loop through both and use 'isloggedin' to count online party members
	for ( .@i = 0; .@i < $@partymembercount; .@i++ )
		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) )
			.@count_online++;

	// We search accountID & charID because a single party can have multiple
	// characters from the same account. Without searching through the charID,
	// if a player has 2 characters from the same account inside the party but
	// only 1 char online, it would count their online char twice.

	if ( .@count_online != .register_num ) {
		mes "All your party members must be online to continue";
		close;
	}

	// copy the array to prevent players cheating the system
	copyarray .@partymembercid, $@partymembercid, .register_num;

	mes "Are you ready ?";
	next; // careful here
	select("Yes");

	// When a script hits a next, menu, sleep or input that pauses the script,
	// players can invite or /leave and make changes in their party. To prevent
	// this, we call getpartymember again and compare with the original values.

	getpartymember getcharid(1), 1;
	if ( $@partymembercount != .register_num ) {
		mes "You've made changes to your party !";
		close;
	}
	for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
		if ( .@partymembercid[.@i] != $@partymembercid[.@i] ) {
			mes "You've made changes to your party !";
			close;
		}
	}

	// Finally, it's safe to start the event!
	warpparty "event_map", 0,0, getcharid(1);
  1. Count the players on the party.
  2. Store into temp variable (or not if you prefer to)
  3. Add the arguments 
  4. That should be it.

 

Gold_Room_Script_Download

Edited by Mabuhay
  • Like 1
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...