ArcEmu: Server Crashes While Using Getgroupleader() Without Group - 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
  • You cannot start a new topic
  • You cannot reply to this topic

Server Crashes While Using Getgroupleader() Without Group

#1 User is offline   Magnifikator 

  • Interested
  • PipPipPipPip
  • Group: Members
  • Posts: 398
  • Joined: 05-October 11
  • Gender:Male
  • Location:Switzerland
  • Server OS:Windows

Posted 14 May 2012 - 04:15 PM

For a script I have used GetGroupLeader() and wrote an example in the wiki:
http://arcemu.org/wi..._GetGroupLeader

But I have recognized that if you use the Lua methode GetGroupLeader() and the player is not in a group the server crashed immediately. The crash can be prevented by checking before if the player IsInGroup().

But this should be repaired in the core.

function NPC_GossipHello(pUnit, event, pPlayer)

  if (pPlayer:IsInGroup()) then
	pUnit:GossipCreateMenu(100, pPlayer, 0)
	if (pPlayer:GetName() == pPlayer:GetGroupLeader():GetName()) then 
  	pUnit:GossipMenuAddItem(0, "My companions are all accounted for, Muradin. Let's go!", 5, 0)
	else
  	pUnit:GossipMenuAddItem(0, "I'm not the raid leader...", 6,  0)
	end
	pUnit:GossipSendMenu(pPlayer)
  end

end

RegisterUnitGossipEvent(50006, 1, NPC_GossipHello)



An I have a question. I compare like that:
pPlayer:GetName() == pPlayer:GetGroupLeader():GetName())
But I don't think that's the best way. Can I compare in Lua objects like that ? In other languages it wouldn't work.
pPlayer == pPlayer:GetGroupLeader()
Try out the LoE ArcEmu World database. Please visit dev.LandOfElves.net.

Posted Image


0

#2 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 14 May 2012 - 06:04 PM

Well ofc it crashes if you call a Lua method on a NIL value.
There is no real way to prevent this, unless you want it to return the player itself in case they are not in a group, that can be arranged.

Also as far as I remember the expression

 "string1" == "string2"


is totally valid string comparison in Lua.
"The demand for free goods is infinite."
0

#3 User is offline   Magnifikator 

  • Interested
  • PipPipPipPip
  • Group: Members
  • Posts: 398
  • Joined: 05-October 11
  • Gender:Male
  • Location:Switzerland
  • Server OS:Windows

Posted 15 May 2012 - 10:41 AM

Of course "string1" == "string2" is valid. I just thought there is maybe a more efficient way to compare 2 player units, than to compare their names.

And you mean the crash is not coming because of GetGroupLeader(). It is because of applying the method GetName() to a nil value of non grouped player.

Just an idea: Wouldn't it be a way to return instead a nil some kind of dummy unit object ? To prevent the crash ? A dummy unit (a NULL unit :D) that writes error messages if applying methods to it.Or that can be explicit be checked for being a dummy unit.

Like: If (unitvalid(pUnit)) then ...

Just to prevent the crash.

Edit: I'm just thinking about a way to make the core more safe against bad Lua scripting ;)
Try out the LoE ArcEmu World database. Please visit dev.LandOfElves.net.

Posted Image


0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

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