View Single Post
  #7  
Old 04-21-2008, 03:42 PM
Striat
Sarnak
 
Join Date: Aug 2006
Posts: 60
Default

Also, can use SendWearChange I believe. I did add these commands to my server. I broke them down to 8 commands to keep things easier. Could also easily do it as one command. But, here is what we have:

Add to perlparser.cpp
Code:
XS(XS__npcrace);
XS(XS__npcrace)
{
	dXSARGS;
	if (items != 1)
		Perl_croak(aTHX_ "Usage: npcrace(race_id)");

	int	race_id = (int)SvIV(ST(0));

	quest_manager.npcrace(race_id);

	XSRETURN_EMPTY;
}

XS(XS__npcgender);
XS(XS__npcgender)
{
	dXSARGS;
	if (items != 1)
		Perl_croak(aTHX_ "Usage: npcgender(gender_id)");

	int	gender_id= (int)SvIV(ST(0));

	quest_manager.npcgender(gender_id);

	XSRETURN_EMPTY;
}

XS(XS__npcsize);
XS(XS__npcsize)
{
	dXSARGS;
	if (items != 1)
		Perl_croak(aTHX_ "Usage: npcsize(newsize)");

	int	newsize = (int)SvIV(ST(0));

	quest_manager.npcsize(newsize);

	XSRETURN_EMPTY;
}

XS(XS__npctexture);
XS(XS__npctexture)
{
	dXSARGS;
	if (items != 1)
		Perl_croak(aTHX_ "Usage: npctexture(newtexture)");

	int	newtexture = (int)SvIV(ST(0));

	quest_manager.npctexture(newtexture);

	XSRETURN_EMPTY;
}

XS(XS__playerrace);
XS(XS__playerrace)
{
	dXSARGS;
	if (items != 1)
		Perl_croak(aTHX_ "Usage: playerrace(race_id)");

	int	race_id = (int)SvIV(ST(0));

	quest_manager.playerrace(race_id);

	XSRETURN_EMPTY;
}

XS(XS__playergender);
XS(XS__playergender)
{
	dXSARGS;
	if (items != 1)
		Perl_croak(aTHX_ "Usage: playergender(gender_id)");

	int	gender_id= (int)SvIV(ST(0));

	quest_manager.playergender(gender_id);

	XSRETURN_EMPTY;
}

XS(XS__playersize);
XS(XS__playersize)
{
	dXSARGS;
	if (items != 1)
		Perl_croak(aTHX_ "Usage: playersize(newsize)");

	int	newsize = (int)SvIV(ST(0));

	quest_manager.playersize(newsize);

	XSRETURN_EMPTY;
}

XS(XS__playertexture);
XS(XS__playertexture)
{
	dXSARGS;
	if (items != 1)
		Perl_croak(aTHX_ "Usage: playertexture(newtexture)");

	int	newtexture = (int)SvIV(ST(0));

	quest_manager.playertexture(newtexture);

	XSRETURN_EMPTY;
}
And also add to perlparser.cpp
Code:
		newXS(strcpy(buf, "npcrace"), XS__npcrace, file);
		newXS(strcpy(buf, "npcgender"), XS__npcgender, file);
		newXS(strcpy(buf, "npcsize"), XS__npcsize, file);
		newXS(strcpy(buf, "npctexture"), XS__npctexture, file);
		newXS(strcpy(buf, "playerrace"), XS__playerrace, file);
		newXS(strcpy(buf, "playergender"), XS__playergender, file);
		newXS(strcpy(buf, "playersize"), XS__playersize, file);
		newXS(strcpy(buf, "playertexture"), XS__playertexture, file);
Now, add to questmgr.cpp
Code:
void QuestManager::npcrace(int race_id)
{
		owner->SendIllusionPacket(race_id);
}

void QuestManager::npcgender(int gender_id)
{
		owner->SendIllusionPacket(owner->GetRace(), gender_id);
}
void QuestManager::npcsize(int newsize)
{
				owner->ChangeSize(newsize, true);
}
void QuestManager::npctexture(int newtexture)
{
			owner->SendIllusionPacket(owner->GetRace(), 0xFF, newtexture);
}

void QuestManager::playerrace(int race_id)
{
			initiator->SendIllusionPacket(race_id);
}

void QuestManager::playergender(int gender_id)
{
			initiator->SendIllusionPacket(initiator->GetRace(), gender_id);
}
void QuestManager::playersize(int newsize)
{
			initiator->ChangeSize(newsize, true);
}
void QuestManager::playertexture(int newtexture)
{
			initiator->SendIllusionPacket(initiator->GetRace(), 0xFF, newtexture);
}
And finally add to questmgr.h
Code:
	void npcrace(int race_id);
	void npcgender(int gender_id);
	void npcsize(int newsize);
	void npctexture(int newtexture);
	void playerrace(int race_id);
	void playergender(int gender_id);
	void playersize(int newsize);
	void playertexture(int newtexture);
Now, usage from our Edone.pl npc:
Code:
sub EVENT_SAY {   
if($text=~/hail/i) {
	quest::say("As you wish!");
}
if($text=~/race/i) {
	quest::say("As you wish!");
	quest::npcrace(217);
	quest::playerrace(217);
}
if($text=~/gender/i) {
	quest::say("As you wish!");
	quest::npcgender(1);
	quest::playergender(1);
}
if($text=~/size/i) {
	quest::say("As you wish!");
	quest::npcsize(20);
	quest::playersize(20);
}
if($text=~/texture/i) {
	quest::say("As you wish!");
	quest::npctexture(22);
	quest::playertexture(15);
}
}
If you do not know how to compile these changes, see http://www.eqemulator.net/wiki/wikka...a=DevVSExpress.
Also, if you have any questions, feel free to PM me or look for me on irc as Striat.
Reply With Quote