Jump to content

ADMSarah

Members
  • Posts

    146
  • Joined

  • Last visited

Posts posted by ADMSarah

  1. MVP Combination Gears


    In kRO has a system where you can collect special MVP loot to craft powerful gears. When you kill an MVP, it has a chance to drop 23817 Mysterious Combination Bundle. This is an album-type item that yields a random recipe 23822 in which you can craft powerful gears.

    This is just a custom NPC that follows the same logic on this wikipage information: https://hazyforest.com/mvp_combine

    If you encounter any problem or you have a suggestion feel free to contact me. 🙂


    • Submitter
    • Submitted
      04/02/25
    • Category
    • Video
    • Content Author
      [ADM]Sarah

     

  2.  

    Just now, Chaos92 said:

    maybe antivirus/malware could do that. and make sure u have the required .NET Framework installed.

    Well I didn't change anything it just happen that one day it is not working anymore...

    Regarding .NET Framework do you have the exact link for that? maybe that's the problem but still weird that it works before without noticing that framework thing....

  3. Someone can help to fix this script? After choosing roll the NPC got stocked up and the console tell that there's something wrong with the `rand` function not sure what is it and can you also give me an idea so that I can use it in the future as a reference thank you!

    Quote

    vend,217,289,4    script    Zeny Machine    2_DROP_MACHINE,{

        mes .name$;
        mes (gettime(3)>= 6&&gettime(3)<= 12?"Good Morning":(gettime(3)>=13&&gettime(3)<=18?"Good afternoon":"Good Night"))+", ^FFA500"+strcharinfo(0)+"^000000!";
        mes "shopping in the city?!";
        mes "How about you try your luck here?";
        next;
        switch(select("^0055FFRoll Machine!^000000:Information:Cancel")){
            case 1:
                mes .name$;
                mes "Are you sure you want to roll?";
                next;
                if(select("^0055FFYes, please!^000000:No, I'm afraid")==2) end;
    L_RollAgain:
                callsub OnPayMachine;
                callsub OnRollMachine;
                mes .name$;
                mes "Would you like to try again?";
                if(select("Try again!:Cancel")==2) end;
                clear();
                goto L_RollAgain;
                break;
            case 2:
                mes .name$;
                mes "To try your luck.";
                mes "You need the following:";
                if(.Zeny) mes "- ^0055FF"+callfunc("F_InsertComma",.Zeny)+"z^000000";
                if(.ItemID[0])
                    for(.@i=0;.@i<getarraysize(.ItemID);.@i++)
                        mes "- ^0055FF"+.ItemAmt[.@i]+" "+getitemname(.ItemID[.@i])+"^000000";
                if(.PointName$[0] != "")
                    for(.@i=0;.@i<getarraysize(.PointName$);.@i++)
                        mes "- ^0055FF"+.PointCost[.@i]+" "+.PointName$[.@i]+"^000000";
                for(.@i=0;.@i<getarraysize(.Prizes);.@i+=3){
                    if(.@i%10 == 0){
                        next;
                        mes .name$;
                        mes "This are the prize list:";
                    }
                    mes "- <ITEM>"+.Prizes[.@i+1]+"x "+getitemname(.Prizes[.@i])+"<INFO>"+.Prizes[.@i]+"</INFO></ITEM>";
                }
                break;
            case 3:
                mes .name$;
                mes callfunc("F_Bye");
                mes "Come see me when you want to try your Machine!";
                break;
        }
    end;

    OnPayMachine:
        if(.Zeny && Zeny < .Zeny)
            .@error$[.@a++] = "- ^FF520000000Zeny^000000";
        if(.ItemID[0])
            for(.@i=0;.@i<getarraysize(.ItemID);.@i++)
                if(countitem(.ItemID[.@i]) < .ItemAmt[.@i])
                    .@error$[.@a++] = "- ^FF520000000"+getitemname(.ItemID)+"^000000";
        if(.PointName$[0] != "")
            for(.@i=0;.@i<getarraysize(.PointName$);.@i++)
                if(getd(.PointVar$[.@i]) < .PointCost[.@i])
                    .@error$[.@a++] = "- ^FF520000000"+.PointName$[.@i]+"^000000";
        if(.@error$[0] == ""){
            if(.Zeny)
                Zeny -= .Zeny;
            if(.ItemID[0])
                for(.@i=0;.@i<getarraysize(.ItemID);.@i++)
                    delitem .ItemID[.@i],.ItemAmt[.@i];
            if(.PointName$[0] != "")
                for(.@i=0;.@i<getarraysize(.PointName$);.@i++)
                        setd .PointVar$[.@i],getd(.PointVar$[.@i])-.PointCost[.@i];
            return;
        }
        mes .name$;
        mes "Sorry but you don't have enough of the following:";
        for(.@i=0;.@i<getarraysize(.@error$);.@i++)
            mes .@error$[.@i];
    end;

    OnRollMachine:
        .@rand = rand(1,10000);
        for(.@i=1;.@i<getarraysize(.Prizes);.@i+=3)
            if(.@rand <= .Prizes[.@i+2]){
                .@iid[.@x] = .Prizes[.@i];
                .@amt[.@x] = .Prizes[.@i+1];
                .@x++;
            }
        .@getitem = rand(.@x);
        getitem .@iid[.@getitem],.@amt[.@getitem];
        if(inarray(.Announce,.@iid[.@getitem]) >= 0)
            announce "Congratulations! "+strcharinfo(0)+" just received "+(.@amt[.@getitem]>1 ? .@amt[.@getitem]+"x":"")+" "+getitemname(.@iid[.@getitem])+" from "+strnpcinfo(0)+"!",0;
    return;

    OnInit:
        .name$ = "^00B2EE[ Zeny Machine ]^000000";
        
        /***Payment Configuration***/
        .Zeny = 20000000;
        setarray .ItemID[0],0;
        setarray .ItemAmt[0],0;
        setarray .PointName$[0],"";
        setarray .PointVar$[0],"";
        setarray .PointCost[0],0;
        
        /***Prize Configuration***/
        setarray .Prizes[0],//Item ID, Amount, Chance(1-10000)
                            12246,1,100, //Mystical Card Album
                            9932,1,300, //Royal Secret Box
                            616,1,1000, //Old Card Album
                            11623,5,1000, //White Syrup
                            12100,50,1000, //Cooked Nine Tail's Tails
                            12090,50,1000, //Steamed Desert Scorpions
                            12095,50,1000, //Hwergelmir's Tonicv
                            12080,50,1000, //Dragon Breath Cocktail
                            12085,50,1000, //Immortal Stew
                            12075,50,1000, //Steamed Tongue
                            12263,5,1000, //Field Manual
                            12264,10,1000, //Bubble Gum
                            12265,5,1000, //Life Insurrance
                            607,50,1000, //Yggdrasil Berry
                            608,50,1000, //Yggdrasil Seed
                            25791,1,500, //Inventory Expansion Voucher
                            27330,1,1, //Kronecker Card
                            27332,1,1, //Skia Card
                            27200,1,1, //Nihil Card
                            27201,1,1, //Agnes Card
                            27202,1,1, //Juergen Card
                            27203,1,1, //Spica Card
                            300127,1,1, //Wolf Card
                            300129,1,1, //Poe Card
                            27393,1,1, //Kathryn Card
                            27395,1,1, //Isaac Card
                            300307,1,1, //Meyer Card
                            300309,1,1, //Helmut Card
                            300421,1,1, //Catherine Card
                            300423,1,1, //Friedrich Card
                            300425,1,1, //Crux Card
                            27196,1,1, //Nihil M. Heine Card
                            27197,1,1, //Agnes Lugenburg Card
                            27198,1,1, //Jurgen Wigner Card
                            27199,1,1, //Spica Nerius Card
                            300426,1,1, //Crux Findel Card
                            300424,1,1, //Friedrich S. Heine Card
                            300422,1,1, //Catherine Gaebolg Card
                            300308,1,1, //Meyer Lugenburg Card
                            300130,1,1, //Poe Richard Card
                            300128,1,1, //Wolf Lugenburg Card
                            27396,1,1, //Isaac Wigner Card
                            27331,1,1, //Kronecker G. Heine Card
                            27333,1,1; //Skia Nerius Card

        setarray .Announce[0],27330,27332,27200,27201,27202,27203,300127,300129,27393,27395,300307,300309,300421,300423,300425,27196,27197,27198,27199,300426,300424,300422,300308,300130,300128,27396,27331,27333,9932;
    end;
    }

     

  4. 12 minutes ago, rokimoki said:

    Sorry I did a mistake copying paste, this is the proper version corresponding to the % configured.

    function	script	AROCG	{
        set .@luckyRate, rand(100);
        set .@amount, rand(51, 100); // 1% chance
        set .@chance$, "1%";
        if (.@luckyRate >= 0 && .@luckyRate < 49) {// 49% chance
            set .@amount, rand(1, 10);
            set .@chance$, "50%";
        } else if (.@luckyRate >= 49 && .@luckyRate < 74) { // 25% chance
            set .@amount, rand(11, 20);
            set .@chance$, "25%";
        } else if (.@luckyRate >= 74 && .@luckyRate < 89) { // 15% chance
            set .@amount, rand(21, 30);
            set .@chance$, "15%";
        } else if (.@luckyRate >= 89 && .@luckyRate < 94) { // 5% chance
            set .@amount, rand(31, 50);
            set .@chance$, "5%";
        }
        getitem 50007, .@amount;
        announce "[" + strcharinfo(0) + "]: got [" + .@amount + "x " + getitemname(50007) + "] at " + .@chance$ + "% chance, from AsurielRO Coins Bag.", 0;
        end;
    }

     

    Thanks Mate!

  5. Can someone help me to modify this function?

    Quote

    function    script    AROCG    {
        .@amt = rand(1,100);
        getitem 50007,.@amt;
        announce "["+strcharinfo(0)+"] got [ "+.@amt+"x "+getitemname(50007)+"] from AsurielRO Coins Bag.",0;
        end;
    }

    I want the following:

    • 1 to 10 = 99%
    • 11 to 20 = 80%
    • 21 to 30 = 75%
    • 31 to 50 = 50%
    • 51 to 100 = 1%

    The announcement also includes what are the percentage of each category.

  6. 1 hour ago, Skorm said:

    @Questune Here's a modified version of my goldroom script. You can download free here: https://skorm.gumroad.com/l/wJIhW?layout=profile
     

    //NPCS
    //Goldroom V1.1
    prontera,160,158,2	script	Private Gold Room	100,{
    
    	mes .npc$;
    	mes "Hello, "+strcharinfo(0)+", I'm the ";
    	mes "Private gold room manager.";
    	mes "Here you can rent your own private gold room."; next;
    
    	for(.@a = 0;getarraysize(getd(".room"+.@a+"$"));.@a++) {
    		.rmn$ = ".room"+.@a+"$";
    		.rrm$ = getd(.rmn$+"[0]");
    		.map$ = getd(.rmn$+"[1]");
    		.mes$[.@a] = .rrm$;
    		setd ".remain"+.@a+"$", callfunc("t",atoi(getd(".rtime_"+.map$+"$"))-gettimetick(2));
    		while(.@b<=getarraysize(.srch$)) {
    			.@b++;
    			if(.srch$[.@b-1] != "") {
    				while(.@i<=countstr(.rrm$, .srch$[.@b-1])) {
    					.@i++;
    					if(atoi(getd(".remain"+.@a+"$"))>0)
    						set .mes$[.@a], replacestr(.mes$[.@a], .srch$[.@b-1], getd(getd(".srch$["+(.@b-1)+"]")+.@a+"$"), 1, 1);
    					else set .mes$[.@a], replacestr(.mes$[.@a], .repl$, .empty$, 1, 1);
    				}
    			}
    			set .@i, 0;
    		}
    		set .@b,0;
    	}
    	set .@menu$, implode(.mes$,":");
    	set .@menu, select(.@menu$)-1;
    	set .@remain, atoi(getd(".remain"+.@menu+"$"));
    	
    	if(strcharinfo(atoi(getd(".type"+.@menu+"$")))==getd(".name" +.@menu+"$") || getgmlevel() >= 60) {
    		if(.@remain>0) {
    			warp getd(".room"+.@menu+"$[1]"),0,0;
    			end;
    		}
    	}
    	
    	if(.@remain>0) {
    		mes .npc$;
    		mes "This room is already in use please pick a different one.";
    		close;
    	}
    	
    	mes .npc$;
    	mes "You may rent this room for ^0000FFYourself^000000, ^0000FFParty members^000000, or ^0000FFGuild members^000000.";
    	next;
    	set .@menu2, select("Myself Only:Party Members:Guild Members")-1;
    	
    	mes .npc$;
    	mes "How long would you like to rent this room?";
    	next;
    	set @menu, select(.menu2$)-1;
    	
    	if(Zeny<(.price[@menu]*.multi)) {
    		mes .npc$;
    		mes "I'm sorry you don't have enough";
    		mes "Zeny for that.";
    		emotion ET_CRY;
    		close;
    	}
    	
    	set Zeny, Zeny-(.price[@menu]*.multi);
    	setd(".type" +.@menu+"$", .@menu2);
    	setd(".time" +.@menu+"$", callfunc("t",.times[@menu]));
    	setd(".name" +.@menu+"$", strcharinfo(.@menu2));
    	setd(".rtime_"+getd(".room"+.@menu+"$[1]")+"$", gettimetick(2)+.times[@menu]);
    	initnpctimer(.cnt$+"#"+.@menu);
    	warp getd(".room"+.@menu+"$[1]"),0,0;
    	end;
    	
    Oninit:
    	//            Room#   Room Name                         ,  Map         ;
    	setarray .room0$  ,   "PGR 1 = .name, .time, .remain"   ,  "06guild_01";
    	setarray .room1$  ,   "PGR 2 = .name, .time, .remain"   ,  "06guild_02";
    	setarray .room2$  ,   "PGR 3 = .name, .time, .remain"   ,  "06guild_03";
    	setarray .room3$  ,   "PGR 4 = .name, .time, .remain"   ,  "06guild_04";
    	setarray .room4$  ,   "PGR 5 = .name, .time, .remain"   ,  "06guild_05";
    	setarray .room5$  ,   "PGR 6 = .name, .time, .remain"   ,  "06guild_06";
    	setarray .room6$  ,   "PGR 7 = .name, .time, .remain"   ,  "06guild_07";
    	setarray .room7$  ,   "PGR 8 = .name, .time, .remain"   ,  "06guild_08";
    	setarray .srch$,  ".name", ".time", ".remain";          //String searched and replaced in the Room Name Field.
    	setarray .mapfs,  mf_nomemo, mf_nosave, mf_noteleport, mf_nowarp, mf_nowarpto, mf_noskill; //mapflags
    	setarray .times,  60, 60*15, 60*30, 60*45, 60*60;       //In seconds.
    	setarray .price,  10, 150  , 300  , 450  , 600  ;       //Price of time multiplied by .multi.
    	set      .npc$,   "[^0000FFManager^000000]";            //NPC name
    	set      .cnt$,   "NPC";                                //connected npc name
    	set      .repl$,  ".name, .time, .remain";              //part of the name you want replace by .empty$ if it's not being used.
    	set      .empty$, "EMPTY";                              // This text will appear when the room is not being used.
    	set      .multi,  100000;
    	while(.@a++<=getarraysize(.price)) //Building static menus
    		set .menu2$, .menu2$+(.times[.@a-1]/60)+" minute"+((.times[.@a-1]/60>1)?"s":"")+" costs "+.price[.@a-1]+"M.:";
    	while(getarraysize(getd(".room"+.@i+"$"))) {
    		setmapflag getd(".room"+.@i+"$[1]"),.mapfs[.@i];
    		set .maps$, .maps$+"|"+getd(".room"+.@i+"$[1]");
    		.@i++;
    	}
    	set .maps$, .maps$+"|";
    }
    
    06guild_01,50,50,5	script	NPC#0	100,500,500,{
    
    	if(mobcount(strcharinfo(3),strnpcinfo(0)+"::OnDeathEvent")) {
    		mes .npc$;
    		mes getd(".amnt_"+strcharinfo(3))+" mobs still remain!";
    		mes "You need to kill them all before I can summon more.";
    		emotion ET_SWEAT;
    		close;
    	}
    
    	set .@len, getarraysize(getd(".monster"+strnpcinfo(2)));
    	for(.@h = 0; .@h < .@len; .@h += 3) {
    		.@i++;
    		set .@mobs[.@i-1], getd(".monster"+strnpcinfo(2)+"["+.@h+"]");
    		set .@chnc[.@i-1], getd(".monster"+strnpcinfo(2)+"["+(.@h+1)+"]");
    		set .@amnt[.@i-1], getd(".monster"+strnpcinfo(2)+"["+(.@h+2)+"]");
    		set .@menu$, .@menu$+getmonsterinfo(.@mobs[.@i-1],0)+":";
    	} set .@menu$, .@menu$+"Back to SavePoint";
    	
    	mes .npc$;
    	mes "Select which mob you'd like me to summon!"; next;
    	set @menu, select(.@menu$)-1;
    	
    	if(@menu>=getarraysize(.@mobs)) {
    		close2;
    		warp "SavePoint",0,0;
    		end;
    	}
    	
    	setd ".drop_"+strcharinfo(3), .@chnc[@menu];
    	setd ".amnt_"+strcharinfo(3), .@amnt[@menu];
    	monster strcharinfo(3),0,0,"--ja--",.@mobs[@menu],.@amnt[@menu],strnpcinfo(0)+"::OnDeathEvent";
    	close;
    	
    OnTouch:
    	if(strcharinfo(atoi(getvariableofnpc(getd(".type"+strnpcinfo(2)+"$"),.cnt$)))!=getvariableofnpc(getd(".name"+strnpcinfo(2)+"$"),.cnt$) && getgmlevel() <= 60) {
    		warp "SavePoint",0,0;
    		end;
    	}
    	end;
    
    	
    OnTimer1000:
    	initnpctimer;
    	setd ".timer"+strnpcinfo(2), (atoi(getvariableofnpc(getd(".rtime_"+strnpcinfo(4)+"$"),.cnt$))-gettimetick(2));
    	if(gettimetick(2)>=getd(".tick"+strnpcinfo(2))) {
    		setd ".tick"+strnpcinfo(2), gettimetick(2)+60;
    		mapannounce strnpcinfo(4),callfunc("t",getd(".timer"+strnpcinfo(2)))+" remaining!",bc_map|bc_blue;
    	}
    	if( getd(".timer"+strnpcinfo(2)) <= 0 ) {
    		stopnpctimer;
    		mapannounce strnpcinfo(4),"Gold Room Time has ended!",bc_map|bc_blue;
    		mapwarp strnpcinfo(4),"prontera",156,191;
    		killmonster strnpcinfo(4),strnpcinfo(0)+"::OnDeathEvent";
    	}
    	end;
    	
    OnDeathEvent:
    	if(!playerattached()) end;
    	getitem 969,rand(getd(".drop_"+strcharinfo(3)));
    	setd ".amnt_"+strcharinfo(3), getd(".amnt_"+strcharinfo(3))-1;
    	if( getd(".amnt_"+strcharinfo(3))<=0 )
    		mapannounce strcharinfo(3),"All monsters have been killed!",bc_map|bc_blue;
    	end;
    
    OnCommandEvent:
    	if ( !compare(getvariableofnpc(.maps$,.cnt$),"|"+strcharinfo(3)+"|") || getgmlevel() >= 99 )
    		atcommand .@atcmd_command$+" "+ implode( .@atcmd_parameters$," " );
    	else if (.@atcmd_command$ == "grtime")
    		dispbottom callfunc("t",getd(".timer"+strnpcinfo(2)))+" remaining!";
    	else
    		message strcharinfo(0), "You're not allowed to use that command here!";
    	end;
    	
    OnInit:
    	//           Room#  <ID>  Chance Amount ...
    	setarray .monster0,  1002, 2    , 100  , 1236, 3, 100, 1095, 4, 100, 1105, 5, 100, 1176, 6, 100;
    	setarray .monster1,  1002, 2    , 100  , 1236, 3, 100, 1095, 4, 100, 1105, 5, 100, 1176, 6, 100;
    	setarray .monster2,  1002, 2    , 100  , 1236, 3, 100, 1095, 4, 100, 1105, 5, 100, 1176, 6, 100;
    	setarray .monster3,  1002, 2    , 100  , 1236, 3, 100, 1095, 4, 100, 1105, 5, 100, 1176, 6, 100;
    	setarray .monster4,  1002, 2    , 100  , 1236, 3, 100, 1095, 4, 100, 1105, 5, 100, 1176, 6, 100;
    	setarray .monster5,  1002, 2    , 100  , 1236, 3, 100, 1095, 4, 100, 1105, 5, 100, 1176, 6, 100;
    	setarray .monster6,  1002, 2    , 100  , 1236, 3, 100, 1095, 4, 100, 1105, 5, 100, 1176, 6, 100;
    	setarray .monster7,  1002, 2    , 100  , 1236, 3, 100, 1095, 4, 100, 1105, 5, 100, 1176, 6, 100;
    	set .cnt$, "Private Gold Room";                        //Connecting NPC name (Change this if you change the npc above)
    	set .npc$, "[^0000FF"+strnpcinfo(1)+"^000000]";        //NPC Name
    	set .dlay, 60;                                         //Announce timer delay in seconds
    	bindatcmd  "storage",strnpcinfo(3)+"::OnCommandEvent"; //Disabled commands.
    	bindatcmd  "warp",strnpcinfo(3)+"::OnCommandEvent";
    	bindatcmd  "savepoint",strnpcinfo(3)+"::OnCommandEvent";
    	bindatcmd  "useskill",strnpcinfo(3)+"::OnCommandEvent";
    	bindatcmd  "skillon",strnpcinfo(3)+"::OnCommandEvent";
    	bindatcmd  "grtime",strnpcinfo(3)+"::OnCommandEvent";
    }
    
    //DUPLICATIONS
    06guild_02,50,50,5	duplicate(NPC#0)	NPC#1	100,500,500
    06guild_03,50,50,5	duplicate(NPC#0)	NPC#2	100,500,500
    06guild_04,50,50,5	duplicate(NPC#0)	NPC#3	100,500,500
    06guild_05,50,50,5	duplicate(NPC#0)	NPC#4	100,500,500
    06guild_06,50,50,5	duplicate(NPC#0)	NPC#5	100,500,500
    06guild_07,50,50,5	duplicate(NPC#0)	NPC#6	100,500,500
    06guild_08,50,50,5	duplicate(NPC#0)	NPC#7	100,500,500
    
    //FUNCTIONS
    function	script	t	{
    	function s;
    		set .@left, getarg(0);
    		if ( .@left <= 0 ) return getarg(0);
    		set .@day, .@left / 86400;
    		set .@hour, .@left % 86400 / 3600;
    		set .@min, .@left % 3600 / 60;
    		set .@sec, .@left % 60;
    		return ( ( .@day ? .@day +" day"+ s( .@day ) : "" ) + ( .@hour ? .@hour +" hour"+ s( .@hour ) : "" ) + ( .@min ? .@min +" min"+ s( .@min ) : "" ) + ( .@sec ? .@sec +" sec"+ s( .@sec,1 ) : "" ) );
    	function s { return ( ( getarg(0) > 1 ? "s" : "" ) + ( getarg(1,0) ? "" : " " ) ); }
    }

     

    Thank you!, is this the same of what I wanted?

  7. Greetings,

    I'm looking around the forum, but I can't find what I'm looking for. Can someone help me create this kind of gold room script? I appreciate it so much! I appreciate any help you can provide.

    - Only level 275 can enter the gold room

    - You need 1,000,000 Zeny to enter the gold room

    - Inside the dungeon you only have 5 hours to stay on the room and farm for gold once you get outside there will be a 1 day cooldown before you can enter again

    - You can check the remaining time when you are inside the gold room map by using @grtime

    - Pvp is on inside the dungeon

    - If you want to go outside the gold room you need to talk to exit npc and if you die you will be respawn to the respawn area or starting area of the map

    Hopefully someone can share or help to make this one.

    Thank you!

×
×
  • Create New...