Using Variables in Quest Objects
For some reason, I can't seem to get this working. It seems like variables don't work in quest objects. I have tried many different combinations to get this working, but none seem to do what I want. Basically, I want the NPC to gate to one of the 8 possible locations when they are attacked.
This first code doesn't work at all, even though it seems to me like it should: Code:
sub EVENT_ATTACK { This second version doesn't work right either, but at least it does something. Basically, it always teleports the NPC to the $warp8 location. I am guessing it is just executing all of the 8 locations and ends up on the last one. I don't know why it is executing these even though I am only trying to define them as a variable at that point. It definitely doesn't seem to want to use the random command properly to work for quest objects. I guess they don't mix well? Code:
sub EVENT_ATTACK { Code:
quest::say("Trying to move to loc, $gate"); |
As I understand it, this has to do with the data types that are being passed. $warp1 through $warp8 is a string, where SendTo is looking for 3 separate numbers. Essentially, you would need to use arrays or hashes. You could use nested data structures to create nested arrays, but because you kinda have to hack it to work (it's not as direct as PHP), it's real difficult. I was messing with it for a half hour and couldn't quite get it to do what I wanted it to do.
I think an easier way to do it would be to choose a random # first, in this case between 1 & 8, to see which location to warp to. This can be done one of 2 different ways: Code:
my $rand = quest::ChooseRandom(1, 2, 3, 4, 5, 6, 7, 8); Then run through IF statements for each one: Code:
if ($rand == 1) {$npc->SendTo(212.9, 2628.3, 67.2)} Code:
use Switch; Anyway, hope this helps. |
try this
Code:
sub EVENT_ATTACK { |
Thanks guys! I will give those a try and see how they work out. I appreciate the details on what is happening, AndMetal! I think it is time for me to go through some perl tutorials or something lol. If I had a better understanding of the basics, I probably wouldn't need so much help when trying to use it, lol.
I guess my main problem is that I try not to learn too much at once and I just started studying C Coding a bit. I think understanding C and Perl will be 2 things that will help me get a better understanding of what is going on for the emu and should let me be much more helpful around here. |
Finally got it working with AndMetals code. Thanks!
Code:
sub EVENT_ATTACK { The other 2 suggestions in this thread didn't seem to work though. Maybe I was missing something. |
I didn't fully test this for you, it looks like I messed up the "my" part of declaring the variables $x, $y and $z. Here's the fix (i think, still didn't test it).
@ is perl for array and each /loc is an array that gets loaded into x,y,z from the chooserandom function Code:
sub EVENT_ATTACK { |
All times are GMT -4. The time now is 09:18 AM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.