Jump to content

unequip costume when change sex


Go to solution Solved by Syreldar,

Recommended Posts

Hey guys,

I'm using the following quest to change sex of characters. The problem im facing is, that when someone wear as example a male costume and change to female, the costume keep equiped.
Does someone know how to solve this problem?

Spoiler

quest item_change_sex begin
	state start begin
		when 71048.use begin 
			if pc.get_level() < 50 then 
				say_title(translate().change_empire._50_sayTitle)
				say(translate().item_change_sex._10_sayReward)
				return
			end
			
			if pc.is_engaged() then
				say_title(translate().change_empire._50_sayTitle)
				say(translate().item_change_sex._30_sayReward)
				return
			end

			if pc.is_married() then
				say_title(translate().change_empire._50_sayTitle)
				say(translate().item_change_sex._30_sayReward)
				return
			end

			if pc.is_polymorphed() then
				say_title(translate().change_empire._50_sayTitle)
				say(translate().item_change_sex._60_sayReward)
				return
			end

			if get_time() < pc.getqf("next_time") then
				say_title(translate().change_empire._50_sayTitle)
				say(translate().item_change_sex._80_sayReward)
				say(translate().item_change_sex._90_say)

				if pc.is_gm() then
					say(string.format(translate().item_change_sex._100_say, time_to_str(pc.getqf("next_time"))))
					say(translate().item_change_sex._110_say)
					local s =  select(translate().locale.guild.yes, translate().locale.guild.no)
					if s == 1 then
						say(translate().change_empire._80_say)
						pc.setqf("next_time", 0)
					end
				end
				return

			end

			say_title(translate().item_change_sex._120_sayTitle)
			say(translate().item_change_sex._130_say)
			wait()
			say_title(translate().item_change_sex._120_sayTitle)
			say(translate().item_change_sex._140_say)
			local s= select(translate().locale.guild.yes, translate().locale.guild.no)

			if 1==s then
				say_title(translate().item_change_sex._120_sayTitle)
				say(translate().item_change_sex._150_say)
				say_reward(translate().change_empire._230_sayReward)
				
				pc.remove_item("71048",1)
				pc.setqf("next_time", get_time() + 0 * 0)

				pc.change_sex()

				local m_sex = pc.get_sex()

				if m_sex == 0 then
				    char_log(0, "CHANGE_SEX", "F -> M")
				else
				    char_log(0, "CHANGE_SEX", "M -> F")
				end

			elseif 2==s then
				say(translate().item_change_sex._160_say)
			end
		end
	end
end		

 



Would appreciate some help.

Thank you!

 

Link to comment
Share on other sites

  • Premium
  • Solution
quest item_change_sex begin
	state start begin
		when 71048.use begin
			say_title(translate().change_empire._50_sayTitle)
			if (pc.get_level() < 50) then
				return say_reward(translate().item_change_sex._10_sayReward);

			elseif (pc.get_wear(19) ~= nil) then
				return say_reward("You have to unequip your body costume first.");

			elseif (pc.is_engaged()) then
				return say_reward(translate().item_change_sex._30_sayReward)

			elseif (pc.is_married()) then
				return say_reward(translate().item_change_sex._30_sayReward)

			elseif (pc.is_polymorphed()) then
				return say_reward(translate().item_change_sex._60_sayReward)
			end -- if/elseif
		
			say(translate().item_change_sex._130_say)
			wait()
			say_title(translate().item_change_sex._120_sayTitle)
			say(translate().item_change_sex._140_say)

			if (select(translate().locale.guild.yes, translate().locale.guild.no) == 1) then
				say_title(translate().item_change_sex._120_sayTitle)
				say(translate().item_change_sex._150_say)
				say_reward(translate().change_empire._230_sayReward)
				
				pc.remove_item(71048, 1);
				pc.change_sex();
  				pc.polymorph(20032); -- So you don't need to relog.
			end -- if
		end -- when
	end -- state
end -- quest

 

Edited by Syreldar
  • Love 1

 

"Nothing's free in this life.

Ignorant people have an obligation to make up for their ignorance by paying those who help them.

Either you got the brains or cash, if you lack both you're useless."

Syreldar

Link to comment
Share on other sites

7 minutes ago, Syreldar said:

quest item_change_sex begin
	state start begin
		when 71048.use begin
			say_title(translate().change_empire._50_sayTitle)
			if (pc.get_level() < 50) then
				return say_reward(translate().item_change_sex._10_sayReward);

			elseif (pc.get_wear(19) ~= nil) then
				return say_reward("You have to unequip your body costume first.");

			elseif (pc.is_engaged()) then
				return say_reward(translate().item_change_sex._30_sayReward)

			elseif (pc.is_married()) then
				return say_reward(translate().item_change_sex._30_sayReward)

			elseif (pc.is_polymorphed()) then
				return say_reward(translate().item_change_sex._60_sayReward)
			end -- if/elseif
		
			say(translate().item_change_sex._130_say)
			wait()
			say_title(translate().item_change_sex._120_sayTitle)
			say(translate().item_change_sex._140_say)

			if (select(translate().locale.guild.yes, translate().locale.guild.no) == 1) then
				say_title(translate().item_change_sex._120_sayTitle)
				say(translate().item_change_sex._150_say)
				say_reward(translate().change_empire._230_sayReward)
				
				pc.remove_item(71048, 1);
				pc.change_sex();
  				pc.polymorph(20032); -- So you don't need to relog.
			end -- if
		end -- when
	end -- state
end -- quest

 

Thank you so much! :)

Link to comment
Share on other sites

  • Honorable Member

alternate

static bool FN_check_item_sex(LPCHARACTER ch, LPITEM item) // char_item.cpp
{
	if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_MALE))
		return SEX_MALE != GET_SEX(ch);

	if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_FEMALE))
		return SEX_FEMALE != GET_SEX(ch);

	return true;
}

//Find
					if (item->CheckItemUseLevel(ch->GetLevel()) == true )
  
///Change
					if (item->CheckItemUseLevel(ch->GetLevel()) == true && FN_check_item_sex(ch, item) == true)

input_db.cpp

use with re-login function

  • Love 1

 

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.