Jump to content

Eross

Members
  • Posts

    349
  • Joined

  • Last visited

Posts posted by Eross

  1. Hi guys ! I need a little help with my instance settings.. This is how this should work...

    #1. Party of 2 to 5 members to finish an instance. If they a player die 3x inside the instance, that player should warp out and automatically transfer the leadership (if the died player is the leader) [RANDOMLY] to any party member, so that the instance wont break. the condition is that member should be ONLINE.. 

    #2. When creating an instance the leader and members should share the quest price. For example the party has 4 members (including leader) and the amount to get quest is 10,000 zeny .. The NPC should check if party members and also the leader have enough zeny to pay for it .. so every member should have 2,500 zeny on their wallet.. 

    here are my sample scripts .. Im really tired, apology if I messed up 
    This first one is not organized yet and Im kinda confused what to do with this 

    -	script	mh_ghall	-1,{
    OnPCDieEvent:
    	@die_count++;
    	if (@die_count >= 1) {
    		.@party_id = getcharid(1);
    		if (is_party_leader(getcharid(1))) {
    			getpartymember .@party_id, 1;
    			party_changeleader(getcharid(1),$@partymembercid[rand(1,$@partymembercount)]);
    		}
    		
    		party_delmember(getcharid(0));
    		@die_count = 0;
    		end;
    	}
    	end;
    
    
    OnPCLogoutEvent:
    	instance_destroy(instance_id(IM_PARTY));
    	set @instance_name$, "";
    	instance_active = 0;
    } 

    This is the creating of instance NPC 

    		switch (@menu_instance) {
    		case 1:			
    		case 2:			
    		case 3:			
    		case 4:
    			if (instance_active > 0) {
    				mes .@name$;
    				mes "You have already created one. Kindly destroy instance before getting new one.";
    				end;
    			}		
    			instance_create(.@instance_name$[@menu_instance], IM_PARTY);
    			set @instance_name$ , ""+.@instance_name$[@menu_instance]+"";
    			instance_active = 1;
    			break;
    		case 5:
    			mes .@name$;
    			mes "Are you sure you want to destroy ["+.@instance_name$[@menu_instance]+"] instance?";
    			switch (select("I'm 100% sure!","No, cancel it!")) {
    				case 1:
    					dispbottom "["+@instance_name$+"] instance has been destroyed.";
    					instance_destroy(instance_id(IM_PARTY));
    					specialeffect2 677;
    					set @instance_name$, "";
    					instance_active = 0;
    					end;
    					break;
    				case 2:
    					end;
    			}			
    		}

    Thankyou ! 

  2. 4 hours ago, Hyroshima said:

    could you explain better?

    Hi ! what i mean is , is it possible to have multiple instances in one npc ?? like for example I have the gld_dun01 gld_dun02 ~ 03 instances ?
    I mean , I want to make an NPC like this sir .. I have codes below , problems are noted with // .. Thankyou!

     

    	setarray .@Instance_Name$[0], "gld_dun01", "gld_dun02", "gld_dun03";
    
    	switch (select("Create Instance", "Enter Instance", "Exit")) {
    		case 1:
                set .@menu, select("Guild Dungeon 1","Guild Dungeon 2","Guild Dungeon 3");
                switch(.@menu) {
                  case 1:
                      <create instance for gld01>
                        break;
                  case 2:
                       <create instance for gld02>
                         break;
                  case 3:
                       <create instance for gld03> 
                      break;
                }
           //NOW AFTER THE PLAYER CREATES INSTANCE THE NPC WILL THEN CLOSE DIALOGUE AND THE PLAYER WILL BE UNATTACHED TO NPC.              
           //THE PROBLEM IS HERE IN CASE 2. MY QUESTION IS.... HOW WILL NPC REGNIZE YOUR CURRENT INSTANCE???
           case 2:
              switch(instance_enter( PROBLEM #2 COZ MY INSTANCE NAMES ARE IN ARRAY FORM.. HOW WILL THE NPC KNOW WHAT INSTANCE TO RUN AND TO WARP MY CHARACTER???))
                 
    	}

    Because Ive noticed that instance npc like Endless tower has only 1 dedicated script/npc .. Im planning to make an NPC with many INSTANCES inside.. Please help thankyou ..

  3. Hi ! I would like to ask if is it possible to have an array of Instance names (.@instance_name$)?? 

    For example

    //prontera,155,181,5	script	Guild Instance Officer	418,{
    moc_para01,52,32,4	script	Guild Instance Officer 	418,{ 
    	.@InstanceCooldown = 28800;
    	.@name$ = "["+strnpcinfo(0)+"]";
    	setarray .@instance_name$[0] = "gld_dun01","gld_dun02","gld_dun03","gld_dun04";
    
    	//if (!is_party_leader()) { mes .@name$; mes "You must be a party leader"; end;};
    	mes .@name$;
    	mes "Today's featured instance guild dungeon is [^000088"+.@instance_name$+"^000000]!";
    	mes "What would you like to do?";
    	next;
    	switch(select(	"~ ^FF6900Create Instance^000000 -> 1,000,000 Z",
    					"~ ^000088Enter Instance^000000 [^777777"+.@instance_name$+"^000000] -> 200,000 Z",
    					"~ ^FF0000Destroy Current Instance^000000")) {
    		case 1:
    			if (#CD > gettimetick(2)) {
    				mes .@name$;
    				mes "You can create new instance after " + Time2Str(CD) + ".";
    				end;
    			}		
    			if (!is_party_leader()) { mes .@name$; mes "Only party leader can create an instance."; end;};
    			if (instance_picker > 0) {
    				mes .@name$;
    				mes "You have already created one. Kindly destroy instance before getting new one.";
    				end;
    			}
    			callsub(OnCheckZenyCreate);
    			#CD = gettimetick(2) + .@InstanceCooldown;
    			instance_create(.@instance_name$, IM_PARTY);
    			instance_picker = 1;	
    			specialeffect2 75;			
    			break;
    		case 2:
    			mes .@name$;
    			mes "^FF0000Please note that Token of^000000";
    			mes "^FF0000Siegfried, Kafra Card^000000";
    			mes "^FF0000infinite fly wing and any teleport^000000";
    			mes "^FF0000skills are not allowed inside.^000000";
    			next;
    			mes .@name$;
    			mes "Ah! I almost Forgot, all guild";
    			mes "dungeons have two Bow and Sword Guardians.";
    			next;
    			if (select("Enter now","Cancel")==2) end;
    			if ((countitem(40036) || countitem(12887) || countitem(40014) || countitem(12323) || countitem(40028) || countitem(6293) || countitem(40114) || countitem(12211) || countitem(40114) || countitem(40029) || countitem(13602) || countitem(14211) || countitem(13603) || countitem(14212) || countitem(12909) || countitem(14165) ||  countitem(7621) || countitem(13601) || countitem(14210) || countitem(13600) || countitem(14209) || countitem(12922) || countitem(14178)) > 0 ) {
    				mes .@name$;
    				mes "Kafra Card, Token of Siegfried or Flywing item or boxes on your inventory.";
    				end;
    			}
    			
    			switch(instance_enter(.@instance_name$)) {
    				case IE_NOMEMBER:
    					mes .@name$;
    					mes "ERROR: Party not found.";
    					break;
    				case IE_NOINSTANCE:
    					mes .@name$;
    					mes "ERROR: Party does not have an instance.";
    					break;
    				case IE_OTHER:
    					mes .@name$;
    					mes "ERROR: Unknown error.";
    					break;
    				default:
    					callsub(OnCheckZenyEntry);
    					#CD = gettimetick(2) + .@InstanceCooldown;
    					//announce "Player ["+strcharinfo(0)+"] has entered Guild Dungeon ["+.@instance_name$+"]!",BC_ALL;
    					break;
    			}
    			break;
    		case 3:
    			if (instance_picker <= 0) {
    				mes .@name$;
    				mes "No current instance available to destroy.";
    				end;
    			}
    			mes .@name$;
    			mes "Are you sure you want to destroy ["+.@instance_name$+"] instance?";
    			switch (select("I'm 100% sure!","No, cancel it!")) {
    				case 1:
    					dispbottom "["+.@instance_name$+"] instance has been destroyed.";
    					instance_destroy(instance_id(IM_PARTY));
    					specialeffect2 677;
    					instance_picker = 0;
    					break;
    				case 2:
    					end;
    			}
    	}
    	close;
    OnCheckZenyCreate:
    	.@name$ = "["+strnpcinfo(0)+"]";
    	if (Zeny < 1000000) {
    		mes .@name$;
    		mes "You don't have enough zeny to enter this instance.";
    		end;
    	}
    	Zeny -= 1000000;
    	return;
    OnCheckZenyEntry:
    	.@name$ = "["+strnpcinfo(0)+"]";
    	if (Zeny < 200000) {
    		mes .@name$;
    		mes "You don't have enough zeny to enter this instance.";
    		end;
    	}
    	Zeny -= 200000;
    	return;	
    	
    //OnPCLogoutEvent:
    //OnPCLoginEvent:
    //OnPCDieEvent:
    	//if (!IE_NOINSTANCE) end;
    	//if (strcharinfo(3) != "gld_dun01" || strcharinfo(3) != "gld_dun02" || strcharinfo(3) != "gld_dun03" || strcharinfo(3) != "gld_dun04" || strcharinfo(3) != "schg_dun01" || strcharinfo(3) != "arug_dun01") end;	
    	//instance_announce('instance_id,"A party member has died! You have 5 minutes to resurect or the instance will be destroyed.",0);
    	
    	//instance_destroy(instance_id(IM_PARTY));
    	//instance_picker = 0;
    	//end;
    }

    If yes, how does the NPC recognize your chosen instance after creating instance and leaving npc ??? 

    Quote

    setarray .@instance_name$[0] = "gld_dun01","gld_dun02","gld_dun03","gld_dun04";

    This post is related to my last topic .. 

    I hope someone help me agan. thanks

  4. 9 hours ago, EIysium said:

    Go to db/pre-re/status.yml and search Impositio

      - Status: Impositio
        Icon: EFST_IMPOSITIO
        DurationLookup: PR_IMPOSITIO
        CalcFlags:
          Watk: true
        Flags:
          SuperNoviceAngel: true
        End:
          Impositio: true

    to

      - Status: Impositio
        Icon: EFST_IMPOSITIO
        DurationLookup: PR_IMPOSITIO
        CalcFlags:
          Watk: true
          Matk: true
        Flags:
          SuperNoviceAngel: true
        End:
          Impositio: true


     

    Thanks ! Ill try this when I get home .. Seems rathena make it more easier to adjust 

  5. Good day ! I need help on activating the matk bonus on impositio magnus please to pre-renewal .. Last time I did it on my old server is I just change this line from the previous rathena status.cpp

    	set_sc( KN_AUTOCOUNTER		, SC_AUTOCOUNTER	, EFST_AUTOCOUNTER	, SCB_NONE );
    	set_sc( PR_IMPOSITIO		, SC_IMPOSITIO		, EFST_IMPOSITIO	, SCB_WATK
    #ifdef RENEWAL
    		|SCB_MATK );
    #else
    		|SCB_MATK );

    but when I used the new repo those lines are gone .. can you help me please ?

  6. Good day folks ! Just need a little help .. Is it possible in battle.cpp to make a separate effect or damage depending on map (normal, pvp and gvg) ?? 

    Example is PA_SACRIFICE ...

    		case PA_SACRIFICE:
    			skillratio += -10 + 10 * skill_lv;
    			break;

    is there a code like this ?

    		case PA_SACRIFICE:
    		 #ifdef map_flag_gvg
    			skillratio += -10 + 2 * skill_lv;
    		#endif
    			skillratio += -10 + 10 * skill_lv;
    			break;
    
    ----------- OR --------------
    
    		case PA_SACRIFICE:
    		 #ifdef map_flag_pvp
    			skillratio += -10 + 2 * skill_lv;
    		#endif
    			skillratio += -10 + 10 * skill_lv;
    			break;

    Or is there a more easier way to do this ? Thankyou ! I hope someone notice my post .. Have a nice day !!

  7. On 4/13/2022 at 7:06 PM, DEsMOn said:

    Hello Scripters,

    Having issue in this script can anyone solve this?

    //===== rAthena Script =======================================
    //= MVP Ladder Game
    //===== By: ==================================================
    //= aftermath, AnnieRuru (rewrite)
    //===== Current Version: =====================================
    //= 1.0
    //===== Compatible With: =====================================
    //= rAthena Project
    //===== Description: =========================================
    //= Gather a party and kill every MVP in ascending order.
    //===== Additional Comments: =================================
    //= 1.0 First version, edited. [Euphy]
    //============================================================
    
    prontera,170,169,3	script	MvP Ladder Warper	404,{
    	mes "[MvP Ladder Warper]";
    	mes "Say... do you want to play the MvP Ladder game?";
    	next;
    	switch(select("Yes, let's get it on!:Information.:Show me the best record.:No.")) {
    	case 1:
    		break;
    	case 2:
    		mes "[MvP Ladder Warper]";
    		mes "In this game, your party has to kill every single MvP monster in ascending order, from the weakest to strongest.";
    		if ( .finish_item_amount )
    			mes "If your party can finish the MVP ladder game, each member will earn "+ callfunc("F_InsertPlural", .finish_item_amount, getitemname( .finish_item_id )) +".";
    		if ( .register_cost )
    			mes "But the entrance fee is "+ callfunc( "F_InsertComma", .register_cost ) +" zeny.";
    		next;
    		mes "[MvP Ladder Warper]";
    		mes "You lose the game if you can't finish in "+ .timeout +" minutes, or if your entire party is killed.";
    		mes "Good luck!";
    		close;
    	case 3:
    		mes "[MvP Ladder Warper]";
    		if ( !$mvpladdderparty_time ) {
    			mes "Nobody has finished this game yet.";
    			close;
    		}
    		mes "The best record is";
    		mes "[ "+( $mvpladdderparty_time / 60 )+" min "+( $mvpladdderparty_time % 60 )+" sec ]";
    		mes "By the party ^FF0000"+ $mvpladdderparty_name$ +"^000000.";
    		.@size = getarraysize( $mvpladderparty_member$ );
    		for ( .@i = 0; .@i < .@size; .@i++ )
    			mes "^000000"+ ( .@i +1 ) +". ^0000FF"+ $mvpladderparty_member$[.@i];
    		if ( getgmlevel() < .gmlvlreset ) close;
    		next;
    		if ( select( "Close.", "Reset the record." ) == 1 ) close;
    		if ( select( "Never mind.", "I really want to reset it." ) == 1 ) close;
    		$mvpladdderparty_time = 0;
    		$mvpladdderparty_name$ = "";
    		deletearray $mvpladderparty_member$[.@i];
    		mes "[MvP Ladder Warper]";
    		mes "Record reset successfully.";
    		close;
    	case 4:
    		mes "[MvP Ladder Warper]";
    		mes "When you are strong enough to complete the game, please come back.";
    		close;
    	}
    	if ( !getcharid(1) ) {
    		mes "[MvP Ladder Warper]";
    		mes "You have to form a party to play.";
    		close;
    	}
    	if ( is_party_leader() == false ) {
    		mes "[MvP Ladder Warper]";
    		mes "Only the party leader can register.";
    		close;
    	}
    	.@origin = getcharid(3);
    	getpartymember getcharid(1), 1;
    	getpartymember getcharid(1), 2;
    	for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
    		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
    			attachrid $@partymemberaid[.@i];
    			if ( strcharinfo(3) == strnpcinfo(4) )
    				.@online++;
    		}
    	}
    	attachrid .@origin;
    	if ( $@partymembercount != .register_min ) {
    		mes "[MvP Ladder Warper]";
    		mes "You have to form a party with exactly "+ .register_min +" members to play.";
    		close;
    	}
    	else if ( .@online != .register_min )  {
    		mes "[MvP Ladder Warper]";
    		mes "Your party must have "+ .register_min +" members online on map '"+ strnpcinfo(4) +"'.";
    		close;
    	}
    	else if ( .register_cost && Zeny < .register_cost ) {
    		mes "[MvP Ladder Warper]";
    		mes "You don't have enough zeny. Please come back when you do.";
    		close;
    	}
    	else if ( .party_id ) {
    		mes "[MvP Ladder Warper]";
    		mes "I'm sorry, but a party is currently playing the game. Please standby until the party is finished.";
    		mes "Thank you.";
    		close;
    	}
    	Zeny -= .register_cost;
    	announce "The party ["+ strcharinfo(1) +"] has started the MvP ladder game.", bc_all;
    	set .party_id, getcharid(1);
    	set .@time_enter, gettimetick(2);
    	for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
    		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
    			attachrid $@partymemberaid[.@i];
    			if ( strcharinfo(3) == strnpcinfo(4) ) {
    				announce "You have "+ .timeout +" minutes to complete "+ .totalround +" rounds.", bc_self;
    				.@name$[.@c] = strcharinfo(0);
    				.@c++;
    			}
    		}
    	}
    	cleanmap .eventmap$;
    	warpparty .eventmap$, 0,0, .party_id, strnpcinfo(4);
    	donpcevent strnpcinfo(0)+"::OnMvpDead";
    	sleep .timeout * 60000;
    	if ( .round == .totalround +1 ) {
    		getpartymember .party_id, 1;
    		getpartymember .party_id, 2;
    		mapannounce .eventmap$, "Congratulations... You were able to defeat all the MVPs!", bc_map;
    		for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
    			if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
    				attachrid $@partymemberaid[.@i];
    				if ( strcharinfo(3) == .eventmap$ )
    					getitem .finish_item_id, .finish_item_amount;
    			}
    		}
    		set .@timeused, gettimetick(2) - .@time_enter;
    		if ( .bonus_item_amount && .@timeused < .bonus_time * 60 ) {
    			mapannounce .eventmap$, "You are rewarded a bonus item for completing the ladder within "+ .bonus_time +" minutes.", bc_map;
    			for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
    				if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
    					attachrid $@partymemberaid[.@i];
    					if ( strcharinfo(3) == .eventmap$ )
    						getitem .bonus_item_id, .bonus_item_amount;
    				}
    			}
    		}
    
    		if ( !$mvpladdderparty_time || .@timeused < $mvpladdderparty_time ) {
    			mapannounce .eventmap$, "And you broke the record! [ "+( .@timeused / 60 )+" min "+( .@timeused % 60 )+" sec ]", bc_map;
    			set $mvpladdderparty_time, .@timeused;
    			set $mvpladdderparty_name$, getpartyname( .party_id );
    			copyarray $mvpladderparty_member$, .@name$, .register_min;
    		}
    		else
    			mapannounce .eventmap$, "Time used [ "+( .@timeused / 60 )+" min "+( .@timeused % 60 )+" sec ]", bc_map;
    		sleep 10000;
    		announce "The party ["+ getpartyname( .party_id ) +"] has finished the MvP ladder game!", bc_all;
    	}
    	else
    		announce "The party ["+ getpartyname( .party_id ) +"] has failed to finish the MvP ladder game.", bc_all;
    	mapwarp .eventmap$, .map$, .x, .y;
    	killmonsterall .eventmap$;
    	.party_id = .round = 0;
    	end;
    
    OnMvpDead:
    	getpartymember .party_id, 1;
    	getpartymember .party_id, 2;
    	.round++;
    	if ( .round >= 2 && .round != .totalround +1 && .round_item_amount ) {
    		for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
    			if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
    				attachrid $@partymemberaid[.@i];
    				if ( strcharinfo(3) == .eventmap$ )
    					getitem .round_item_id, .round_item_amount;
    			}
    		}
    	}
    	if ( .round == .totalround +1 ) {
    		awake strnpcinfo(0);
    		end;
    	}
    	else if ( .round == .totalround )
    		mapannounce .eventmap$, "The final Round will begin in "+ .delay +" seconds...", bc_map;
    	else
    		mapannounce .eventmap$, "Starting round "+ .round +" in "+ .delay +" seconds...", bc_map;
    	sleep .delay * 1000;
    	if ( .mvpid[.round] == 1646 )  // pick random Bio3 MVP
    		.mvpid[.round] = rand(1646,1651);
    	monster .eventmap$,0,0, "--ja--", .mvpid[.round], 1, strnpcinfo(0)+"::OnMvpDead";
    	mapannounce .eventmap$, getmonsterinfo( .mvpid[.round], MOB_NAME ) +" has spawned!", bc_map|bc_blue;
    	end;
    
    OnPCLogoutEvent:
    	if ( hp > 0 )
    		.@less_one = 1;
    	else
    		end;
    OnPCDieEvent:
    	if ( strcharinfo(3) != .eventmap$ || !getcharid(1) ) end;
    	if ( getcharid(1) != .party_id ) end;
    	getpartymember .party_id, 1;
    	getpartymember .party_id, 2;
    	for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
    		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
    			attachrid $@partymemberaid[.@i];
    			if ( strcharinfo(3) == .eventmap$ && hp > 0 )
    				.@alive++;
    		}
    	}
    	if ( .@less_one )
    		.@alive--;
    	if ( !.@alive ) {
    		mapannounce .eventmap$, "Party wiped!", bc_map;
    		sleep 10000;
    		awake strnpcinfo(0);
    	}
    	end;
    
    OnInit:
    //	Configurations -----------------------------------------------------
    
    	// Time limit (in minutes)
    	// When time runs out, all players inside the room will be kicked out.
    	// Do NOT set this to zero!
    	set .timeout, 60;
    
    	// entrance fee (in Zeny)
    	set .register_cost, 100000;
    
    	// exact amount of party members needed to start the game
    	set .register_min, 2;
    
    	// id of each mvp. you can add more
    	setarray .mvpid[1],
    		1086,//	Golden Thief Bug	64
    		1115,//	Eddga				65
    		1150,//	Moonlight Flower	67
    		1159,//	Phreeoni			69
    		1112,//	Drake				70
    		1583,//	Tao Gunka			70
    		1492,//	Incantation Samurai	71
    		1046,//	Doppelgangger		72
    		1252,//	Garm				73
    		1418,//	Evil Snake Lord		73
    		1059,//	Mistress			74
    		1190,//	Orc Lord			74
    		1087,//	Orc Hero			77
    		1251,//	Knight of Windstorm	77
    		1038,//	Osiris				78
    		1658,//	Ygnizem				79
    		1272,//	Dark Lord			80
    		1147,//	Maya				81
    		1785,//	Atroce				82
    		1389,//	Dracula				85
    		1630,//	Bacsojin			85
    		1885,//	Gorynych			85	
    		1511,//	Amon Ra				88
    		1688,//	Lady Tanee			89		
    		1157,//	Pharaoh				93		
    		1312;//	Turtle General		97		
    		
    		
    
    	// number of rounds (default: 39)
    	set .totalround, getarraysize(.mvpid) -1;
    
    	// item reward for completing each round
    	set .round_item_id, 34139;
    	set .round_item_amount, 2;
    
    	// item reward for completing the entire ladder
    	set .finish_item_id, 22654;
    	set .finish_item_amount, 10;
    
    	// bonus reward if ladder completed within a certain time (in minutes)
    	set .bonus_time, 45; // if completed within 45 minutes, this reward is given
    	set .bonus_item_id, 7227;
    	set .bonus_item_amount, 10;
    
    	// time delay between rounds, in seconds (default: 3)
    	set .delay, 5;
    
    	// minimum GM level to reset the best record
    	set .gmlvlreset, 99;
    
    	// event map
    	set .eventmap$, "guild_vs2-2";
    
    	// mapflag configuration
    	setarray .@mapflag,
    		mf_nowarp,
    		mf_nowarpto,
    		mf_nosave,
    		mf_nomemo,
    		mf_noteleport,
    //		mf_nopenalty, // disable exp loss
    		mf_noreturn,
    //		mf_nobranch,
    //		mf_nomobloot, // disable monster drop loots,
    //		mf_nomvploot, // 2 of these
    		mf_partylock;
    
    //	Config Ends --------------------------------------------------------------
    
    	mapannounce .eventmap$, "An administrator has refreshed the server. Please re-register. We apologize for the inconvenience.", bc_map;
    	getmapxy .map$, .x, .y, BL_NPC;
    	mapwarp .eventmap$, .map$, .x, .y;
    	killmonsterall .eventmap$;
    	.@size = getarraysize( .@mapflag );
    	for ( .@i = 0; .@i < .@size; .@i++ )
    		setmapflag .eventmap$, .@mapflag[.@i];
    	end;
    }

     

    can you show us the error ? its on your donpcevent link i supposed.. 

  8. 7 minutes ago, IsabelaFernandez said:

    hi partners.
    I would like this script instead of needing zeny to require items in this case the item ID 7420 (skull) in order to be enchanting.

      Hide contents

    prontera,161,173,3    script    Encantador    933,{
    mes "eu posso encantar "+getitemname( .faw_itemid );
    mes " ";
    if( getequipid( EQI_GARMENT ) == .faw_itemid ){

        .@refine = getequiprefinerycnt( EQI_GARMENT );
        for( .@i = 0; .@i < 4; .@i++ )
            .@card[.@i] = getequipcardid( EQI_GARMENT,.@i );
            
        switch( select( "Encantar o item.","Resetar encantamentos." ) ){
            case 1:
                mes "Escolha um slot para encantar.";
                mes "Você pode encantar mais slots quando tiver um refinamento superior.";
                .@slot = select(
                    ( .@card[1] || .@refine < 7 )?"":"Enchant Slot 1",
                    ( .@card[2] || .@refine < 8 )?"":"Enchant Slot 2",
                    ( .@card[3] || .@refine < 9 )?"":"Enchant Slot 3",
                    "Cancel"
                );
                if( .@slot < 4 ){
                    mes "Pick Enchant Type";
                    .@type = select( .enchant_type_menu$ ) - 1;
                    .@size = .enchant_list_size[.@type];
                    if( .@size ){
                        copyarray .@enchant_list[0],getd( ".enchant_list_"+( .@type+1 )+"[0]" ),.@size;
                        if( .@refine >= 9 ){
                            .@enchant_list[.@size] = .special_enchant[.@type];
                            .@size++;
                        }
                        delequip EQI_GARMENT;
                        if( rand( 100 ) < .success_rate ){
                            setd( ".@card["+.@slot+"]" ),.@enchant_list[ rand( .@size ) ];
                            mes "Pronto, item encantado com sucesso.";
                            getitem2 .faw_itemid,1,1,.@refine,0,.@card[0],.@card[1],.@card[2],.@card[3];
                            equip .faw_itemid;
                        }else{
                            mes "Que pena, não conseguimos encantar o item.";
                        }
                    }
                }
                break;
            case 2:
                mes "Você precisa "+.enchant_reset_Zeny+" Zeny.";
                if( Zeny >= .enchant_reset_Zeny ){
                    if( select( "Confirmar para resetar todos os encantamentos?","Cancelar" ) == 1 ){
                        if( !.@card[1] && !.@card[2] && !.@card[3] ){
                            mes "Seu item não tem nenhum item encantado.";
                        }else{
                            Zeny -= .enchant_reset_Zeny;
                            delequip EQI_GARMENT;
                            getitem2 .faw_itemid,1,1,.@refine,0,.@card[0],0,0,0;
                            equip .faw_itemid;
                            mes "Concluído removido todos os itens encantados.";
                        }
                    }
                }
            default: break;
        }
        
    }else{
        mes "Certifique-se de estar equipado com "+getitemname( .faw_itemid );
    }
    close;


    OnInit:
    // FAW item id
    .faw_itemid = 2589;

    // enchant success rate
    .success_rate = 100;

    // enchant reset cost
    .enchant_reset_Zeny = 1000000;

    // enchant type category
    setarray .enchant_type$,"Espírito do Lutador","Pedra Mágica","Mira Apurada","Crítico","MaxHP","MaxSP","ASPD","STR","AGI","DEX","VIT","INT","LUK";

    // enchant list ( Fighting Spirit )
    setarray .enchant_list_1,4810,4809,4808;
    // enchant list ( Magic )
    setarray .enchant_list_2,4812,4827,4826;
    // enchant list ( Archer )
    setarray .enchant_list_3,4832,4833,4834;
    // enchant list ( Critical )
    setarray .enchant_list_4,4764,4765;
    // enchant list ( Max HP )
    setarray .enchant_list_5,4797,4798,4799;
    // enchant list ( Max SP )
    setarray .enchant_list_6,4870,4800,4801;
    // enchant list ( ASPD )
    setarray .enchant_list_7,4807,4842;
    // enchant list ( STR )
    setarray .enchant_list_8,4702,4703,4704;
    // enchant list ( AGI )
    setarray .enchant_list_9,4732,4733,4734;
    // enchant list ( DEX )
    setarray .enchant_list_10,4722,4723,4724;
    // enchant list ( VIT )
    setarray .enchant_list_11,4742,4743,4744;
    // enchant list ( INT )
    setarray .enchant_list_12,4712,4713,4714;
    // enchant list ( LUK )
    setarray .enchant_list_13,4752,4753,4754;

    // extra 1 special enchant for 3rd slot if refine above 9 ( follow by category sequences )
    //setarray .special_enchant,4821,4828,4835,4765,4868,4801,4807,4853,4854,4857,4855,4856,4858;


    .enchant_type_size = getarraysize( .enchant_type$ );
    for( .@i = 0; .@i < .enchant_type_size; .@i++ ){
        .enchant_list_size[.@i] = getarraysize( getd( ".enchant_list_"+( .@i+1 ) ) );
        if( !.enchant_list_size[.@i] ){
            .enchant_type$[.@i] = "";
        }
        else{
            .enchant_type_menu$ = .enchant_type_menu$ + .enchant_type$[.@i];
        }
        .enchant_type_menu$ = .enchant_type_menu$ + ":";
    }
    end;
    }

     

    prontera,161,173,3    script    Encantador    933,{
    mes "eu posso encantar "+getitemname( .faw_itemid );
    mes " ";
    if( getequipid( EQI_GARMENT ) == .faw_itemid ){
    
        .@refine = getequiprefinerycnt( EQI_GARMENT );
        for( .@i = 0; .@i < 4; .@i++ )
            .@card[.@i] = getequipcardid( EQI_GARMENT,.@i );
            
        switch( select( "Encantar o item.","Resetar encantamentos." ) ){
            case 1:
                mes "Escolha um slot para encantar.";
                mes "Você pode encantar mais slots quando tiver um refinamento superior.";
                .@slot = select(
                    ( .@card[1] || .@refine < 7 )?"":"Enchant Slot 1",
                    ( .@card[2] || .@refine < 8 )?"":"Enchant Slot 2",
                    ( .@card[3] || .@refine < 9 )?"":"Enchant Slot 3",
                    "Cancel"
                );
                if( .@slot < 4 ){
                    mes "Pick Enchant Type";
                    .@type = select( .enchant_type_menu$ ) - 1;
                    .@size = .enchant_list_size[.@type];
                    if( .@size ){
                        copyarray .@enchant_list[0],getd( ".enchant_list_"+( .@type+1 )+"[0]" ),.@size;
                        if( .@refine >= 9 ){
                            .@enchant_list[.@size] = .special_enchant[.@type];
                            .@size++;
                        }
                        delequip EQI_GARMENT;
                        if( rand( 100 ) < .success_rate ){
                            setd( ".@card["+.@slot+"]" ),.@enchant_list[ rand( .@size ) ];
                            mes "Pronto, item encantado com sucesso.";
                            getitem2 .faw_itemid,1,1,.@refine,0,.@card[0],.@card[1],.@card[2],.@card[3];
                            equip .faw_itemid;
                        }else{
                            mes "Que pena, não conseguimos encantar o item.";
                        }
                    }
                }
                break;
            case 2:
                mes "Você precisa "+.enchant_reset_skull+" Skulls.";
                if(countitem(7420) >= .enchant_reset_skull) {
                    if( select( "Confirmar para resetar todos os encantamentos?","Cancelar" ) == 1 ){
                        if( !.@card[1] && !.@card[2] && !.@card[3] ){
                            mes "Seu item não tem nenhum item encantado.";
                        }else{
                  			getitem 7420, .enchant_reset_skull;
                            delequip EQI_GARMENT;
                            getitem2 .faw_itemid,1,1,.@refine,0,.@card[0],0,0,0;
                            equip .faw_itemid;
                            mes "Concluído removido todos os itens encantados.";
                        }
                    }
                }
            default: break;
        }
        
    }else{
        mes "Certifique-se de estar equipado com "+getitemname( .faw_itemid );
    }
    close;
    
    
    OnInit:
    // FAW item id
    .faw_itemid = 2589;
    
    // enchant success rate
    .success_rate = 100;
    
    // enchant reset cost
    .enchant_reset_Zeny = 1000000;
                  
    // enchant reset cost (skull)
    .enchant_reset_skull = 10;              
    
    // enchant type category
    setarray .enchant_type$,"Espírito do Lutador","Pedra Mágica","Mira Apurada","Crítico","MaxHP","MaxSP","ASPD","STR","AGI","DEX","VIT","INT","LUK";
    
    // enchant list ( Fighting Spirit )
    setarray .enchant_list_1,4810,4809,4808;
    // enchant list ( Magic )
    setarray .enchant_list_2,4812,4827,4826;
    // enchant list ( Archer )
    setarray .enchant_list_3,4832,4833,4834;
    // enchant list ( Critical )
    setarray .enchant_list_4,4764,4765;
    // enchant list ( Max HP )
    setarray .enchant_list_5,4797,4798,4799;
    // enchant list ( Max SP )
    setarray .enchant_list_6,4870,4800,4801;
    // enchant list ( ASPD )
    setarray .enchant_list_7,4807,4842;
    // enchant list ( STR )
    setarray .enchant_list_8,4702,4703,4704;
    // enchant list ( AGI )
    setarray .enchant_list_9,4732,4733,4734;
    // enchant list ( DEX )
    setarray .enchant_list_10,4722,4723,4724;
    // enchant list ( VIT )
    setarray .enchant_list_11,4742,4743,4744;
    // enchant list ( INT )
    setarray .enchant_list_12,4712,4713,4714;
    // enchant list ( LUK )
    setarray .enchant_list_13,4752,4753,4754;
    
    // extra 1 special enchant for 3rd slot if refine above 9 ( follow by category sequences )
    //setarray .special_enchant,4821,4828,4835,4765,4868,4801,4807,4853,4854,4857,4855,4856,4858;
    
    
    .enchant_type_size = getarraysize( .enchant_type$ );
    for( .@i = 0; .@i < .enchant_type_size; .@i++ ){
        .enchant_list_size[.@i] = getarraysize( getd( ".enchant_list_"+( .@i+1 ) ) );
        if( !.enchant_list_size[.@i] ){
            .enchant_type$[.@i] = "";
        }
        else{
            .enchant_type_menu$ = .enchant_type_menu$ + .enchant_type$[.@i];
        }
        .enchant_type_menu$ = .enchant_type_menu$ + ":";
    }
    end;
    }

     

  9. Hi ! does anyone here have these buttons ? 

    Texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/btn_e_change_a.bmp
    Texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/btn_e_change_b.bmp
    Texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/btn_e_change_c.bmp
    
    Texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/btn_e_off_a.bmp
    Texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/btn_e_off_b.bmp
    Texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/btn_e_off_c.bmp

    Im currently getting an error .. after trying to make buttons it appears that the off button is at the middle off change button. I honestly have no Idea for this yet. Please help ..Thankyou !

    image.png.5a0d8fe6f5184f998ce2c3a33c475bcc.png

    image.png.9fc133c4a05bc5f30bb6ae3ffa5c3107.png

    image.png.cce605e401d5d673ea51a0206563a432.png

  10. Just now, Start_ said:

    Yes, try research 'bonus_script' and use

    bonus2 bSkillCooldown,sk,t;        Increases cooldown of skill sk by t milliseconds

    to adjust skill cooldown when enter specific maps.

    How about on skill in src for example ? 
     

    		case AS_GRIMTOOTH:
    			skillratio += 20 * skill_lv;
    			break;

    How to make it skillratio for gvg and for normal ??

  11. Hi good day! Is it possible to make skill have different cooldowns, behavior, damage etc base on map? Like for example ASURA STRIKE, in pvp it has a cooldown of 3seconds but in normal maps it has none, also in damage for example theres a skill with 100+10*skill level on normal map but different formula in pvp and gvg. Thankyou

  12. On 2/4/2022 at 11:47 PM, Akkarin said:

    You can just ignore it - newer clients don't use it.

    I patched it using NEMO with recommended 
    Also added the READ DATA FOLDER FIRST for my sclientinfo.xml

    but after selecting services it cannot go through character select sir 

     

    Im getting this kind of error 

    image.png.5b92cc8f795e17011eaa5187a7b1bb31.png

  13. Just now, Start_ said:

    20211103 should already set in \rathena\src\config\packets.hpp lines 16

    If it wasn't, you may have to update your rAthena.

     

     

    Yes I set it here

    #ifndef PACKETVER
        /// Do NOT edit this line! To set your client version, please do this instead:
        /// In Windows: Add this line in your src\custom\defines_pre.hpp file: #define PACKETVER YYYYMMDD
        /// In Linux: The same as above or run the following command: ./configure --enable-packetver=YYYYMMDD
        #define PACKETVER 20211103
    #endif

     

  14. Good day ! Just need a small help guys , I commented the PACKET_OBFUSCATION part in packets.hpp but still enabled 

    #if PACKETVER >= 20110817
    	/// Comment to disable the official packet obfuscation support.
    	/// This requires PACKETVER 2011-08-17 or newer.
    	#ifndef PACKET_OBFUSCATION
    		//#define PACKET_OBFUSCATION
    
    		// Define these inside src/custom/defines_pre.hpp or src/custom/defines_post.hpp
    		//#define PACKET_OBFUSCATION_KEY1 <key1>
    		//#define PACKET_OBFUSCATION_KEY2 <key2>
    		//#define PACKET_OBFUSCATION_KEY3 <key3>
    
    		/// Comment this to disable warnings for missing client side encryption
    		#define PACKET_OBFUSCATION_WARN
    	#endif

    image.png.4359ce01900fecfd9f93a506dadb4689.png

  15. 9 minutes ago, Mael said:

    Your problem is in the setting up... You will have to wait for all the patches, the client is still new.

    Got it ..but for the mean time what client ver do you prefer or you can suggest ..im looking for client that has a feature like map name banner .. like example I warp in Prontera, theres a banner that says PRONTERA on top of screen ..what client version has that

×
×
  • Create New...