ArcEmu: [lua] Frost Queen's Lair - 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

[lua] Frost Queen's Lair Epic All-In-One (Including Rimefang and Spinestalker)

#1 User is offline   Twisting-Nether 

  • Newbie
  • Group: Members
  • Posts: 3
  • Joined: 06-February 11
  • Gender:Male
  • Location:Upper Montclair, NJ
  • Interests:LUA, C++, WoW, ArcEmu
  • Server OS:Darwin/OS X

Posted 02 March 2011 - 05:49 PM

The Frost Queen's Lair
Epic All-In-One

So, after many hours of hard work, I've finally put some of the finishing touches on one of the first actual Blizzlike Frost Queen's Lair scripts! Of course (like any other script) there are small bugs which can easily be worked out, but it generally works. To install it correctly, just drag the script to your "scripts" folder, and then spawn the NPC Rimefang (Entry ID: 36661) on the right side of Sindragosa's Run. You may need to test it a couple times in order to see if it works the way its supposed to. After you do that, everything else should fall right into place!

So enough talk on my part... here's the script:


Epic Frost Queen's Lair Script

Comments and Feedback would be wonderful!

2

#2 User is offline   paroxysm 

  • Chatty Cathy
  • Group: Retired
  • Posts: 320
  • Joined: 25-June 08
  • Gender:Male
  • Server OS:Windows

Posted 16 March 2011 - 12:13 AM

While I appreciate the effort you put into this, this is a prime example of what not to do when writing scripts. The script uses too many functions to accomplish the same thing. Functions, compared to variables are more memory and cpu demanding. If you can be able to rewrite the script to use variables for phases and timers, then do it.
1

#3 User is offline   Twisting-Nether 

  • Newbie
  • Group: Members
  • Posts: 3
  • Joined: 06-February 11
  • Gender:Male
  • Location:Upper Montclair, NJ
  • Interests:LUA, C++, WoW, ArcEmu
  • Server OS:Darwin/OS X

Posted 27 March 2011 - 02:02 PM

View Postparoxysm, on 16 March 2011 - 12:13 AM, said:

While I appreciate the effort you put into this, this is a prime example of what not to do when writing scripts. The script uses too many functions to accomplish the same thing. Functions, compared to variables are more memory and cpu demanding. If you can be able to rewrite the script to use variables for phases and timers, then do it.

I'm working out tons of crap in this script, and I know its not 100% Blizzlike and it does use way too many functions, but its better then anything else I've seen yet so say what you want and I'll keep this thread updated.
0

#4 User is offline   salamanda 

  • Enthusiast
  • PipPipPip
  • Group: Members
  • Posts: 161
  • Joined: 10-July 08

Posted 28 March 2011 - 02:10 AM

View Postparoxysm, on 16 March 2011 - 12:13 AM, said:

While I appreciate the effort you put into this, this is a prime example of what not to do when writing scripts. The script uses too many functions to accomplish the same thing. Functions, compared to variables are more memory and cpu demanding. If you can be able to rewrite the script to use variables for phases and timers, then do it.


Random question a bit off topic, better to handle everything within one event with lots of conditions or through several functions? E.g:

function X(pUnit, Event)
    if Event == 1 then
        print("OnCombat triggered")
    elseif Event == 2 then
        print("Something triggered")
    else
        print("Ohai the only other event fired")
    end
end

RegisterUnitEvent(x, 1, "X")
RegistreUnitEvent(x, 2, "X")
RegisterUnitEvent(x, 3, "X")


Instead of having a separate function for each hook.
0

#5 User is offline   iEzri 

  • < Ace of spades >
  • Group: Contributor
  • Posts: 1,692
  • Joined: 22-December 08
  • Gender:Female
  • Interests:I'm likely to cause mischief
  • Server OS:Linux

Posted 28 March 2011 - 09:49 AM

im not sure how parox would do this, but i think one might use a sort of "case method" i.e. to the following?

function switch(t)
  t.case = function (self,x)
    local f=self[x] or self.default
    if f then
      if type(f)=="function" then
        f(x,self)
      else
        error("case "..tostring(x).." not a function")
      end
    end
  end
  return t
end

Posted Image I do not join. I lead.
0

#6 User is offline   paroxysm 

  • Chatty Cathy
  • Group: Retired
  • Posts: 320
  • Joined: 25-June 08
  • Gender:Male
  • Server OS:Windows

Posted 28 March 2011 - 09:56 PM

You could use 1 function and if statements, but then it doesn't look very clean. The standard here is to write clean scripts that don't sacrifice significant performance.
The performance and memory footprint by using separate functions in that example is negligible.
0

#7 User is offline   Picasopaya 

  • Member
  • Pip
  • Group: Members
  • Posts: 82
  • Joined: 21-March 11
  • Gender:Male
  • Server OS:Linux

Posted 29 March 2011 - 02:22 PM

I'm not a professional but if you do the 7 phases as a Salamanda has suggested, then you have optimized 6 functions less and thus the code a bit.

However, I think it's good that he presents his script available! :)

Love greeting

Pica
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