ArcEmu: Custom Spirit Healer - ArcEmu

Jump to content

Toggle shoutbox Lastest Announcements

dfighter  : (07 December 2014 - 12:06 PM) Arcemu is in hibernation mode, please read http://arcemu.org/fo...showtopic=26903
dfighter  : (01 January 2013 - 05:56 PM) Arcemu wishes you all a happy new year!
Hasbro  : (12 September 2012 - 10:01 AM) Please excuse our outage from the web! Our web host had a major malfunction!
dfighter  : (01 September 2012 - 04:05 PM) Since the spam bots just don't want to stop, I've enabled admin verification when registering.
dfighter  : (23 January 2012 - 09:56 PM) Please note that from now on you will need to confirm your email on the wiki in order to edit it!
Hasbro  : (31 December 2011 - 12:50 PM) Happy New Years all!
Navid  : (26 December 2011 - 04:09 AM) Merry Christmas !!!!!! Happy holidays all :)
WAmadeus  : (24 December 2011 - 03:54 PM) Merry Christmas to all!
dfighter  : (24 December 2011 - 11:05 AM) The Arcemu team wishes y'all a Merry Christmukkah!
Hasbro  : (05 October 2011 - 12:53 PM) Looking for web designers for upcoming web related project. If you're interested in designing user interfaces contact me
dfighter  : (02 September 2011 - 03:47 PM) So who here wants vehicles in Arcemu? :P http://arcemu.org/fo...showtopic=25440
Hasbro  : (14 August 2011 - 03:25 PM) Join us on irc, grab an irc client and connect to irc.freenode.net join channel #arcemu /server irc.freenode.net:6667 /join #arcemu
jackpoz  : (03 August 2011 - 05:33 AM) to all Lua Engine (old one) users: please check http://arcemu.org/fo...showtopic=25274
Hasbro  : (20 May 2011 - 05:27 PM) Looking for people experienced with CMake configuration and setup! Contact me asap
Hasbro  : (15 May 2011 - 05:03 PM) ArcEmu is recruiting C++ programmers, contact Hasbro if interested.
paroxysm  : (03 May 2011 - 06:26 PM) Updated luabridge gossip example to describe the whole gossip creation process rather than just how to create menu. Gossip tutorial
paroxysm  : (23 April 2011 - 11:35 AM) Lua writers can refer to the Luabridge Tutorials section in the Wiki to learn how to write gossip code correctly.
Hasbro  : (20 April 2011 - 05:22 PM) Thank you for your continuous contribution of bug reports, we are working on them.
Hasbro  : (17 April 2011 - 03:20 AM) Please consider donating to support our bills. Donations can be sent using PayPal to donations@arcemu.org - Thank you for your support.
paroxysm  : (10 April 2011 - 12:43 AM) Refer to the Luabridge Tutorials section in the Wiki to learn the new syntax of luabridge.
Resize Shouts Area

Page 1 of 1

Custom Spirit Healer

#1 User is offline   Doxx 

  • Newbie
  • Group: Members
  • Posts: 4
  • Joined: 26-June 13
  • IRC:Doxx
  • Gender:Male
  • Location:Sweden
  • Server OS:Windows

Posted 08 July 2013 - 08:17 AM

Ive tried several times now without any success and wish for better luck here. I want to create a gossip but as the spirit healer he should only appear when your dead and be able to talk. Please if you have any clue how to do this within lua, please let me know ! :)
0

#2 User is offline   Satanail 

  • Enthusiast
  • PipPipPip
  • Group: Members
  • Posts: 150
  • Joined: 11-March 12
  • Gender:Male
  • Location:Absurdistan
  • Server OS:Windows

Posted 08 July 2013 - 02:26 PM

You can't do that in lua. Spirit healer id's are coded into the core and you must edit it to add your custom npc id there. Otherwise you can still make a spirit healer, but he will be visible while the player is alive. The code, you need to edit is located in: \src\arcemu-world\Object.cpp between line 397 and 406:
switch(GetEntry())
{
	case 6491:  // Spirit Healer
	case 13116: // Alliance Spirit Guide
	case 13117: // Horde Spirit Guide
		{
			flags2 |= MOVEFLAG_WATER_WALK; //0x10000000
		}
		break;
}

You need to add your custom npc like so:
	case 6491:  // Spirit Healer
	case 13116: // Alliance Spirit Guide
	case 13117: // Horde Spirit Guide
	case 56000: // Custom npc

You must also edit Unit.h that is located in the same dir. Here the code is between line 1601 and 1606:
case 6491:  // Spirit Healer
case 13116: // Alliance Spirit Guide
case 13117: // Horde Spirit Guide
case 9299:  // Gaeriyan (Qnpc)
case 8888:  // Franclorn Forgewright (Qnpc)
case 29259: // Scarlet Enclave

Just do the same thing like in Object.cpp.
If you don't want to edit the core, you can just set plr:IsAlive() check in your lua. But then the alive players will also see it. Here is an example:
function SpiritOnGossip(pUnit, event, pPlayer)
pUnit:GossipCreateMenu(100, pPlayer, 0)
if not(pPlayer:IsAlive())then
	pUnit:GossipMenuAddItem(0, "Ressurect now?", 1, 0)
end
pUnit:GossipSendMenu(pPlayer)
end

function OnSelectMenu(pUnit, event, pPlayer, id, intid, code)
if(intid == 1)then
	-- do stuff
	pPlayer:GossipComplete()
end
end

RegisterUnitGossipEvent(56000, 1, "SpiritOnGossip")
RegisterUnitGossipEvent(56000, 2, "OnSelectMenu")

Also make sure that the npc has flag 2 in creature_names - flags1 and that the npc flags contain flag 16384 - (UNIT_NPC_FLAG_SPIRITHEALER) + 1 - (UNIT_NPC_FLAG_GOSSIP).
0

#3 User is offline   dfighter 

  • Titles are overrated
  • PipPipPipPipPipPipPipPipPipPip
  • Group: Administrator
  • Posts: 5,189
  • Joined: 14-June 08
  • IRC:dfighter
  • Gender:Male
  • Server OS:Linux

Posted 08 July 2013 - 02:30 PM

That is one of the hacks that we should have removed ages ago, but never got around to it... :\
"The demand for free goods is infinite."
0

#4 User is offline   Satanail 

  • Enthusiast
  • PipPipPip
  • Group: Members
  • Posts: 150
  • Joined: 11-March 12
  • Gender:Male
  • Location:Absurdistan
  • Server OS:Windows

Posted 08 July 2013 - 03:36 PM

View Postdfighter, on 08 July 2013 - 02:30 PM, said:

That is one of the hacks that we should have removed ages ago, but never got around to it... :\

I found something in Creature.h - line 503:
ARCEMU_INLINE uint32 isSpiritHealer()	const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPIRITHEALER); }

Not sure that this can be used to remove the hack somehow, but i will try to do something with it when i get more free time.
0

#5 User is offline   Doxx 

  • Newbie
  • Group: Members
  • Posts: 4
  • Joined: 26-June 13
  • IRC:Doxx
  • Gender:Male
  • Location:Sweden
  • Server OS:Windows

Posted 08 July 2013 - 08:49 PM

View PostSatanail, on 08 July 2013 - 03:36 PM, said:

I found something in Creature.h - line 503:
ARCEMU_INLINE uint32 isSpiritHealer()	const { return HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPIRITHEALER); }

Not sure that this can be used to remove the hack somehow, but i will try to do something with it when i get more free time.


Thanks I appreciate it! :)
0

Share this topic:


Page 1 of 1


Fast Reply

  

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users