Jump to content

IndieRO

Members
  • Content Count

    286
  • Joined

  • Last visited

  • Days Won

    13

Posts posted by IndieRO


  1. prontera,146,189,3	script	PvP Room	469,{
    	
    	mes "[^ff0000PvP Room^000000]";
    	mes "Ok, Choose One!";
    	mes "^FF0000PVP Free for All^000000: Enable all equipment and items";
    	mes "^FF0000Champ vs Champ^000000: Weapon and Acc only.";
    	mes "^FF0000SinX vs SinX^000000: Sinx Maniac!";
    	mes "^FF0000Solo Mode^000000: Disable Party.";
    	mes "^FF0000GVG Map^000000: Guild only map with WoE system and mechanics.";
    	next;
    	menu
    	"^008000- ^000000 PVP Free for all ^FF0000["+ (getmapusers("06guild_08.gat"))+ "]^000000",MM,
    	"^008000- ^000000 Champ vs Champ ^FF0000["+ (getmapusers("pvp_n_6-5.gat"))+ "]^000000",SS,
    	"^008000- ^000000 SinX vs SinX ^FF0000["+ (getmapusers("pvp_n_4-5.gat"))+ "]^000000",SX,
    	"^008000- ^000000 Solo Mode ^FF0000["+ (getmapusers("[email protected]"))+ "]^000000",SM,
    	"^008000- ^000000 GVG Map ^FF0000["+ (getmapusers("guild_vs3.gat"))+ "]^000000",DM;
    
    SM:
    	.@party_id = getcharid(1);
    	if (.@party_id < 1) {
    		mes "^ff0000You have party! please remove your party!.^000000";
    		close;
    	}
    	mes "[^ff0000PvP Room^000000]";
    	mes "Here we go!";
    	if (getgroupid()<6) {
    		announce strcharinfo(0)+" Has Entered The Pvp [Solo Mode]",bc_all,0xcccccc;
    
    	}
    	warp "5@mtower", 0,0; 
    	close;
    
    MM:
    	warp "06guild_08",0,0;
    	announce ""+ strcharinfo(0) +" Has Entered The Pvp room.",bc_all,0xcccccc;
    	end;
    
    
    DM:
    	mes "[^ff0000PvP Room^000000]";
    	if (getcharid(2) == 0){
    		next;
    		mes "You don't have guild";
    		close;
    	}
    	mes "Here we go!";
    	warp "guild_vs3",0,0;
    	if (getgroupid()<6) {
    	announce strcharinfo(0)+" Has Entered The GVG Map",bc_all,0xcccccc;
    	}
    	close;
    
    SX:
    	if ( class == 4013) {
    		warp "pvp_n_4-5",0,0;
    		announce strcharinfo(0)+" Has Entered The PVP [Sinx VS Sinx]",bc_all,0x00FFFF;
    		end;
    	}
    	mes "[^ff0000PvP Room^000000]";
    	mes "Only Sinx can enter this room";
    	close;
    
    SS:
    	if (class == 4016) {
    		warp "pvp_n_6-5",0,0;
    		announce strcharinfo(0)+" Has Entered The PVP [Champ VS Champ]",bc_all,0x00FFFF;
    		end;
    	}
    	mes "[^ff0000PvP Room^000000]";
    	mes "This is Room Champ Only!!";
    	end;
    
    L_No:
    	mes "[^ff0000PvP Room^000000]";
    	mes "Ok Right !";
    	close;
    
    end;
    OnInit:
    	waitingroom "[PvP Room]",0;
    	end;
    }
    
    
    // custom
    5@mtower	mapflag	nowarpto
    5@mtower	mapflag	nowarp
    5@mtower	mapflag	noreturn
    guild_vs2	mapflag	nowarpto
    guild_vs2	mapflag	nowarp
    guild_vs2	mapflag	noreturn
    guild_vs3	mapflag	nowarpto
    guild_vs3	mapflag	nowarp
    guild_vs3	mapflag	noreturn
    pvp_n_6-5	mapflag	nowarpto
    pvp_n_6-5	mapflag	nowarp
    pvp_n_6-5	mapflag	noreturn
    guild_vs3	mapflag	restricted	3
    pvp_n_6-5	mapflag	restricted	3
    guild_vs2	mapflag	restricted	3
    pvp_n_6-5	mapflag	nobranch
    guild_vs2	mapflag	nobranch
    5@mtower	mapflag	nobranch
    guild_vs3	mapflag	nocommand	5
    pvp_n_6-5	mapflag	nocommand	5
    5@mtower	mapflag	nocommand	5
    5@mtower	mapflag	pvp
    5@mtower	mapflag	nosave
    5@mtower	mapflag	noteleport
    5@mtower	mapflag	pvp_noguild
    
    
    
    06guild_08	mapflag	nosave
    06guild_08	mapflag	nowarpto
    06guild_08	mapflag	nowarp
    06guild_08	mapflag	noreturn
    06guild_08	mapflag	nobranch
    06guild_08	mapflag	nocommand	5
    06guild_08	mapflag	pvp
    06guild_08	mapflag	noteleport
    06guild_08	mapflag	pvp_noguild
    
    pvp_n_4-5	mapflag	nosave
    pvp_n_4-5	mapflag	nowarpto
    pvp_n_4-5	mapflag	nowarp
    pvp_n_4-5	mapflag	noreturn
    pvp_n_4-5	mapflag	nobranch
    pvp_n_4-5	mapflag	nocommand	5
    pvp_n_4-5	mapflag	pvp
    pvp_n_4-5	mapflag	noteleport
    pvp_n_4-5	mapflag	pvp_noguild
    

     


  2. I just share my guild storage for Hercules

    Spoiler
    
    payon,130,127,3	script	Guild Storage	4_RAGFES_03,{
    	mes "[Warehouse Manager]";
    	mes "How are you? We are specialized in guild warehouses. This is our ^0000cdstory^000000:";
    	mes "Why can't guild members share a storage? We started off with that simple question.";
    	next;
    	mes "[Warehouse Manager]";
    	mes "You can open the warehouse for 1000 Zeny or look up the usage history of the guild.";
    	mes "How can I help you?";
    	next;
    	if( select( "Open guild warehouse:cancel" ) == 1 ){
    		if (Zeny < 1000){
    			mes "[Warehouse Manager]";
    			mes "I am afraid you do not have enough money to settle the fee.";
    			mes "The fee is 1000 Zeny.";
    			close;
    		}
    		if (guildopenstorage() == 0) {
    			Zeny -= 1000;
    			close;
    		}
    		else if (guildopenstorage() == 1) {
    			mes "I'm sorry but another guild member is using the guild storage";
    			mes "right now.  Please wait until that person is finished.";
    			close;
    		}
    		else if (guildopenstorage() == 2) {
    			mes "[Warehouse Manager]";
    			mes "The guild storage is only available for guild members.";
    			close;
    		}
    		else if (guildopenstorage() == 3) {
    			mes "[Warehouse Manager]";
    			mes "It seems that it is not yet possible for your guild to use the guild warehouse.";
    			mes "Please come back after checking the guild skill and the permission to access the warehouse.";
    			close;
    		}
    		else if (guildopenstorage() == 4) {
    			mes "You doesnt have permission to use guild storage";
    			close;
    		}
    		
    		end;
    
    	}else{
    		end;
    	}
    	end;
    
    }

     

     


  3. HI, I just try to convert Punching Bag rathena to Hercules with param Setting

     

    Spoiler
    
    //===== Hercules Script =============================================
    //= Punching Bag NPC with Parameter settings
    //===== By: ========================================================
    //= Secretdataz
    //= Modified by Mabuhay
    //= RagnaIDN
    //===== Current Version: ===========================================
    //= 3.0
    //===== Changelog: =================================================
    //= 0.1 Initial commit
    //= 0.2 Add MD_KNOCKBACK_IMMUNE
    //= 2.0 Added parameter settings
    //= 3.0 Convert into Hercules
    //===== Compatible With: ===========================================
    //= Hercules 07/01/2022
    //===== Additional Comments: =======================================
    //= When duplicating this NPC. Only use NUMBER after the # [secret]
    //= [NOTE#1]: Removed HP and Hit in param settings. Useless? Uncomment ALL to enable 
    //==================================================================
    vpayon,126,34,6	script	Punch Bag Owner#0	4_M_REBELLION,{
    function get_size_name;
    function get_race_name;
    function get_ele_name;
    	mes "[ Punch Bag Owner ]"; 
    	mes "Hi, I can set Samsak based on parameter you want.";
    	next;
    	menu "Show info", M1, "Set param", M2, "Set Default", M3, "^777777Cancel", M4;
    
    M1: .@dupid = atoi(strnpcinfo(NPC_NAME_HIDDEN));
    	.@size = getunitdata(.mobid[.@dupid], UDT_SIZE);
    	.@level = getunitdata(.mobid[.@dupid], UDT_LEVEL);
    	.@race = getunitdata(.mobid[.@dupid], UDT_RACE);
    	.@elet = getunitdata(.mobid[.@dupid], UDT_ELETYPE);
    	.@elelv = getunitdata(.mobid[.@dupid], UDT_ELELEVEL);
    	.@STR = getunitdata(.mobid[.@dupid], UDT_STR);
    	.@AGI = getunitdata(.mobid[.@dupid], UDT_AGI);
    	.@VIT = getunitdata(.mobid[.@dupid], UDT_VIT);
    	.@INT = getunitdata(.mobid[.@dupid], UDT_INT);
    	.@DEX = getunitdata(.mobid[.@dupid], UDT_DEX);
    	.@LUK = getunitdata(.mobid[.@dupid], UDT_LUK);
    	.@DEF = getunitdata(.mobid[.@dupid], UDT_DEF);
    	.@MDEF = getunitdata(.mobid[.@dupid], UDT_MDEF);
    	.@FLEE = getunitdata(.mobid[.@dupid], UDT_FLEE);
    	.@PDODGE = getunitdata(.mobid[.@dupid], UDT_PDODGE);
    	
    	.@size$ = get_size_name(.@size);
    	.@race$ = get_race_name(.@race);
    	.@ele$ = get_ele_name(.@elet);
    	mes "^777777Size : ^000000"+ .@size$;
    	mes "^777777Level : ^000000"+ .@level;
    	mes "^777777Race : ^000000"+ .@race$;
    	mes "^777777Ele type : ^000000"+ .@ele$;
    	mes "^777777Ele level : ^000000"+ .@elelv;
    	//mes "^777777HP : ^000000"+ .@data[UDT_HP]; // disabled || uncomment to enable
    	mes "^777777Str : ^000000"+ .@STR;
    	mes "^777777Agi : ^000000"+ .@AGI;
    	mes "^777777Vit : ^000000"+ .@VIT;
    	mes "^777777Int : ^000000"+ .@INT;
    	mes "^777777Dex : ^000000"+ .@DEX;
    	mes "^777777Luk : ^000000"+ .@LUK;
    	mes "^777777Def : ^000000"+ .@DEF;
    	mes "^777777Mdef : ^000000"+ .@MDEF;
    	//mes "^777777Hit : ^000000"+ .@data[UDT_HIT]; // disabled || uncomment to enable
    	mes "^777777Flee : ^000000"+ .@FLEE;
    	mes "^777777Pdodge : ^000000"+ .@PDODGE;
    	close;
    	
    M2:	setarray .menu$,
    		// Structure : <menu name>|<UDT_DATA>|<min value>|<max value>
    		"Size|UDT_SIZE|0|2",
    		"Level|UDT_LEVEL|1|99",
    		"Race|UDT_RACE|0|10",
            "Ele type|UDT_ELETYPE|0|9",
    		"Ele level|UDT_ELELEVEL|1|4",
    		//"Hp|UDT_HP|1|99999999", // disabled = why need to set hp data? || uncomment to enable
            "Str|UDT_STR|1|999",
    		"Agi|UDT_AGI|1|999",
    		"Vit|UDT_VIT|1|999",
    		"Int|UDT_INT|1|999",
            "Dex|UDT_DEX|1|999",
    		"Luk|UDT_LUK|1|999",
    		"Def|UDT_DEF|1|999",
    		"Mdef|UDT_MDEF|1|999",
    		//"Hit|UDT_HIT|1|999", // disabled = why need to set hit data? || uncomment to enable
            "Flee|UDT_FLEE|1|999",
    		"Pdodge|UDT_PDODGE|1|999";
    	
    	for(.@i = 0; .@i < getarraysize(.menu$); .@i++) {
    		explode(.@n$, .menu$[.@i], "|");
    		.@menu$ += .@n$[0]+":";
    	}
    	.@s = select(.@menu$)-1;
    	explode(.data$, .menu$[.@s], "|");
    	mes "^777777Param to set :^000000 ^ff0000"+ .data$[0] +"^000000";
    	if ( .data$[0] == "Size" ) .@val$ = get_size_name(getd("."+.data$[1]));
    	else if ( .data$[0] == "Race" ) .@val$ = get_race_name(getd("."+.data$[1]));
    	else if ( .data$[0] == "Ele type" ) .@val$ = get_ele_name(getd("."+.data$[1]));
    	else .@val$ = getd("."+.data$[1]);
    	mes "^777777Current value :^000000 ^ff0000"+ .@val$ +"^000000";
    	mes "^777777Min value :^000000 ^ff0000"+ .data$[2] +"^000000";
    	mes "^777777Max value :^000000 ^ff0000"+ .data$[3] +"^000000";
    	mes "^777777---------------------^000000";
    	if ( .data$[0] == "Size" ) {
    		mes "^777777 0 - Small^000000";
    		mes "^777777 1 - Medium^000000";
    		mes "^777777 2 - Large^000000";
    	}
    	else if ( .data$[0] == "Race" ) {
    		mes "^777777 0 - Formless^000000";
    		mes "^777777 1 - Undead^000000";
    		mes "^777777 2 - Brute^000000";
    		mes "^777777 3 - Plant^000000";
    		mes "^777777 4 - Insect^000000";
    		mes "^777777 5 - Fish^000000";
    		mes "^777777 6 - Demon^000000";
    		mes "^777777 7 - Demi-Human^000000";
    		mes "^777777 8 - Angel^000000";
    		mes "^777777 9 - Dragon^000000";
    		mes "^777777 10 - Player(default race for player)^000000";
    	}
    	else if ( .data$[0] == "Ele type" ) {
    		mes "^777777 0 - Neutral^000000";
    		mes "^777777 1 - Water^000000";
    		mes "^777777 2 - Earth^000000";
    		mes "^777777 3 - Fire^000000";
    		mes "^777777 4 - Wind^000000";
    		mes "^777777 5 - Poison^000000";
    		mes "^777777 6 - Holy^000000";
    		mes "^777777 7 - Shadow^000000";
    		mes "^777777 8 - Ghost^000000";
    		mes "^777777 9 - Undead^000000";
    	}
    	else
    		mes "^777777 Enter a value between min and max ^000000";
    	next;
    	input .@val;
    	if ( .data$[0] == "Size" ) .@size$ = get_size_name(.@val);
    	else if ( .data$[0] == "Race" ) .@race$ = get_race_name(.@val);
    	else if ( .data$[0] == "Ele type" ) .@ele$ = get_ele_name(.@val);
    	mes "Do you want to set ^ff0000"+.data$[0]+"^000000 to ^ff0000"+((.data$[0] == "Size") ? .@size$:((.data$[0] == "Race") ? .@race$:((.data$[0] == "Ele type") ? .@ele$:.@val)))+"^000000?";
    	mes "^777777---------------------^000000";
    	next;
    	select("Yes");
    	mes "Respawning Samsak..";
    	close2;
    	setd "."+.data$[1], .@val;
    	killmonster strnpcinfo(4),strnpcinfo(0)+"::OnMyMobDead";
    	donpcevent strnpcinfo(0)+"::OnMyMobDead";
    	end;
    
    M3:
    	mes "Respawning Samsak..";
    	close2;
    	.UDT_SIZE = 1;
    	.UDT_LEVEL = 99;
    	.UDT_RACE = 7;
    	.UDT_ELETYPE = Ele_Neutral;
    	.UDT_ELELEVEL = 3;
    	//.UDT_HP = 99999999; // disabled || uncomment to enable
    	.UDT_STR = 10;
    	.UDT_AGI = 10;
    	.UDT_VIT = 10;
    	.UDT_INT = 10;
    	.UDT_DEX = 10;
    	.UDT_LUK = 10;
    	.UDT_DEF = 20;
    	.UDT_MDEF = 20;
    	//.UDT_HIT = 99; // disabled || uncomment to enable
    	.UDT_FLEE = 10;
    	.UDT_PDODGE = 10;
    	killmonster strnpcinfo(4),strnpcinfo(0)+"::OnMyMobDead";
    	donpcevent strnpcinfo(0)+"::OnMyMobDead";
    M4: end;
    
    
    OnInit:
    	// Default values on initial spawn
    	.UDT_SIZE = 1;
    	.UDT_LEVEL = 99;
    	.UDT_RACE = 7;
    	.UDT_ELETYPE = Ele_Neutral;
    	.UDT_ELELEVEL = 3;
    	//.UDT_HP = 99999999; // disabled || uncomment to enable
    	.UDT_STR = 10;
    	.UDT_AGI = 10;
    	.UDT_VIT = 10;
    	.UDT_INT = 10;
    	.UDT_DEX = 10;
    	.UDT_LUK = 10;
    	.UDT_DEF = 20;
    	.UDT_MDEF = 20;
    	//.UDT_HIT = 99; // disabled || uncomment to enable
    	.UDT_FLEE = 10;
    	.UDT_PDODGE = 10;
    OnMyMobDead:	
    	.mobid = monster( "vpayon",130,36,"Samsak",2410,1,strnpcinfo(0)+"::OnMyMobDead");
    	getunitdata(getnpcid(0), .@d);
    	.@dupid = atoi(strnpcinfo(NPC_NAME_HIDDEN));
    	.gid[.@dupid] = .mobid;
    	.mhp[.@dupid] = strmobinfo(4,2410);
    	setunitdata .gid[.@dupid],UDT_MODE,.@d[UDT_MODE]|0x4000000|0x0200000; // Set MD_STATUS_IMMUNE (0x4000000) because EDP/burn/%MHP based status can skew the DPS counter so much.
    	setunitdata .gid[.@dupid], UDT_SIZE, .UDT_SIZE;
    	setunitdata .gid[.@dupid], UDT_LEVEL, .UDT_LEVEL;
    	setunitdata .gid[.@dupid], UDT_RACE, .UDT_RACE;
    	setunitdata .gid[.@dupid], UDT_ELETYPE, .UDT_ELETYPE;
    	setunitdata .gid[.@dupid], UDT_ELELEVEL, .UDT_ELELEVEL;
    	//setunitdata .gid[.@dupid], UDT_HP, .UDT_HP;  // disabled || uncomment to enable
    	setunitdata .gid[.@dupid], UDT_STR, .UDT_STR;
    	setunitdata .gid[.@dupid], UDT_AGI, .UDT_AGI;
    	setunitdata .gid[.@dupid], UDT_VIT, .UDT_VIT;
    	setunitdata .gid[.@dupid], UDT_INT, .UDT_INT;
    	setunitdata .gid[.@dupid], UDT_DEX, .UDT_DEX;
    	setunitdata .gid[.@dupid], UDT_LUK, .UDT_LUK;
    	setunitdata .gid[.@dupid], UDT_DEF, .UDT_DEF;
    	setunitdata .gid[.@dupid], UDT_MDEF, .UDT_MDEF;
    	//setunitdata .gid[.@dupid], UDT_HIT, .UDT_HIT; // disabled || uncomment to enable
    	setunitdata .gid[.@dupid], UDT_FLEE, .UDT_FLEE;
    	setunitdata .gid[.@dupid], UDT_PDODGE, .UDT_PDODGE;
    	initnpctimer;
    	end;
    	
    OnTimer5000:
    	.@dupid = atoi(strnpcinfo(NPC_NAME_HIDDEN));
    	if(.mobid){
    		.@mhp = getunitdata(.gid[.@dupid],UDT_HP);
    		.@diff = (.mhp[.@dupid] - .@mhp);
    		if(.@diff > 0){
    			npctalk "Punching Bag has taken " + (.@diff) + " DPS in last 5 seconds.";
    			setunitdata .gid[.@dupid],UDT_HP,.mhp[.@dupid];
    		}
    	}
    	initnpctimer;
    	end;
    	function	get_size_name	{
    		switch ( getarg(0) ) {
    			case 0 : .@val$ = "Small"; break;
    			case 1 : .@val$ = "Medium"; break;
    			case 2 : .@val$ = "Large"; break;
    		}
    		return .@val$;
    	}
    	
    	function	get_race_name	{
    		switch ( getarg(0) ) {
    			case 0: .@val$ = "Formless"; break;
    			case 1: .@val$ = "Undead"; break;
    			case 2: .@val$ = "Brute"; break;
    			case 3: .@val$ = "Plant"; break;
    			case 4: .@val$ = "Insect"; break;
    			case 5: .@val$ = "Fish"; break;
    			case 6: .@val$ = "Demon"; break;
    			case 7: .@val$ = "Demi-Human"; break;
    			case 8: .@val$ = "Angel"; break;
    			case 9: .@val$ = "Dragon"; break;
    			case 10: .@val$ = "Player"; break;
    		}
    		return .@val$;
    	}
    	
    	function	get_ele_name	{
    		switch ( getarg(0) ) {
    			case 0: .@val$ = "Neutral"; break;
    			case 1: .@val$ = "Water"; break;
    			case 2: .@val$ = "Earth"; break;
    			case 3: .@val$ = "Fire"; break;
    			case 4: .@val$ = "Wind"; break;
    			case 5: .@val$ = "Poison"; break;
    			case 6: .@val$ = "Holy"; break;
    			case 7: .@val$ = "Shadow"; break;
    			case 8: .@val$ = "Ghost"; break;
    			case 9: .@val$ = "Undead"; break;
    		}
    		return .@val$;
    	}
    }

     


    Enjoy

    note : maybe someone can improve the part getunitdata


  4. On 11/5/2021 at 1:38 AM, Ai4rei said:

    Updated to 4.1.3, this release fixes an assertion when applying optimized patches.

    Updated to 4.1.4, this release adds support for the new, short-lived (2021-11-03 ~ 2021-11-17) kRO Sakray server. This is a different server from the one removed in 4.1.2 and requires a new full client. There is no mirror support for this one and it is released only as part of the bundle package.

    image.png.c1c5a661049924711b5ef162ad75600b.pngcan't patch for ZRO


  5. 2 hours ago, kalabasa said:

    after all mushroom has been killed im having debug messages

    [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list!

    [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list!

    maybe you have typo on this part

    setarray .maps$[0],"izlude","geffen","morocc","prontera"; // Possible maps

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.