EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Quests::Q&A (https://www.eqemulator.org/forums/forumdisplay.php?f=599)
-   -   Can you access quest::setglobal from a plugin? (https://www.eqemulator.org/forums/showthread.php?t=33530)

revloc02c 05-13-2011 12:11 AM

Can you access quest::setglobal from a plugin?
 
So I've been working on plugins and discovered that I can't access $qglobals{variable_name_here} from inside the plugin. Am I correct? Is there a work around?

So I passed $qglobals{variable_name_here} into the plugin to a var just called $qglobals and that was working until I wanted to set/save a value. I found
Code:

quest::setglobal("variable_name_here", 1, 5, "F");
doesn't work. Am I correct? Is there a work around?

Just a couple more points, it was all working fine in a regular .pl file in the "quests" folder (so I got the $qglobal created in the db just fine, and the flag in the "npc_types" table set already too), just when I tried to get it in a plugin where I am running into trouble.

Akkadius 05-13-2011 12:25 AM

Quote:

Originally Posted by revloc02c (Post 199840)
So I've been working on plugins and discovered that I can't access $qglobals{variable_name_here} from inside the plugin. Am I correct? Is there a work around?

So I passed $qglobals{variable_name_here} into the plugin to a var just called $qglobals and that was working until I wanted to set/save a value. I found
Code:

quest::setglobal("variable_name_here", 1, 5, "F");
doesn't work. Am I correct? Is there a work around?

Just a couple more points, it was all working fine in a regular .pl file in the "quests" folder (so I got the $qglobal created in the db just fine, and the flag in the "npc_types" table set already too), just when I tried to get it in a plugin where I am running into trouble.

Check out this link where the instances plugin uses qglobals inside a plugin:

http://code.google.com/p/eqemuplugin...k/Instances.pl

In order for this to work you need to make a change to globals.pl, you can source the plugins SVN for the file or check out the whole thing in general. That should help you achieve your goals.

revloc02c 06-02-2011 12:17 AM

I can't figure it out
 
That info Akkadius was very helpful, thanks.

I can't get this to work, here's my plugin:
Code:

sub NewbieBot_say {
        my $qglobals = plugin::var('qglobals');
        my $client = plugin::val('$client');
        $client->Message(315, "TEST 1");
        $client->SetGlobal("newbie_charm", 1, 5, "F");
        $client->Message(315, "TEST 2");
        if ($qglobals->{"newbie_charm"}) {
                        $client->Message(315, "It exists!");
                }
                else {
                        $client->Message(315, "It DOES NOT exists!");
                }
        my $test = $qglobals->{"newbie_charm"};
        $client->Message(315, "$test");
        $client->Message(315, "TEST 3");
}

return 1;

And here's the output:
Code:

TEST 1
TEST 2

And that's it. Somehow I am not getting it to interpret $qglobals->{"newbie_charm"}; correctly. I checked the database and it is getting in there correctly from line 5. But as soon as I try to access it, nuthin. Can anyone see the problem?

Akkadius 06-02-2011 12:34 AM

Quote:

Originally Posted by revloc02c (Post 200586)
That info Akkadius was very helpful, thanks.

I can't get this to work, here's my plugin:
Code:

sub NewbieBot_say {
        my $qglobals = plugin::var('qglobals');
        my $client = plugin::val('$client');
        $client->Message(315, "TEST 1");
        $client->SetGlobal("newbie_charm", 1, 5, "F");
        $client->Message(315, "TEST 2");
        if ($qglobals->{"newbie_charm"}) {
                        $client->Message(315, "It exists!");
                }
                else {
                        $client->Message(315, "It DOES NOT exists!");
                }
        my $test = $qglobals->{"newbie_charm"};
        $client->Message(315, "$test");
        $client->Message(315, "TEST 3");
}

return 1;

And here's the output:
Code:

TEST 1
TEST 2

And that's it. Somehow I am not getting it to interpret $qglobals->{"newbie_charm"}; correctly. I checked the database and it is getting in there correctly from line 5. But as soon as I try to access it, nuthin. Can anyone see the problem?

From the sounds of it, your Perl script has compilation errors, as in it isn't getting past line 7 to parse the $qglobals object.

Did you source the plugins SVN first? Because it has a line commit global.pl that allows the parsing of $qglobals from within plugins.

revloc02c 06-08-2011 09:36 PM

Thanks for looking at that. It must be my global.pl file, which I know you've mentioned twice, but I am not following you.
Quote:

source the plugins SVN
What does that mean?

(Sorry, I am not trying to be daft, just kinda new and still learning the lingo.)

I did "SVN Update" with Tortoise on the plugins folder, but that did not help, so you must mean something else.

Akkadius 06-08-2011 09:47 PM

Quote:

Originally Posted by revloc02c (Post 200707)
Thanks for looking at that. It must be my global.pl file, which I know you've mentioned twice, but I am not following you.

What does that mean?

(Sorry, I am not trying to be daft, just kinda new and still learning the lingo.)

I did "SVN Update" with Tortoise on the plugins folder, but that did not help, so you must mean something else.

Checkout plugins from here:

http://www.eqemulator.org/forums/showthread.php?t=32608

revloc02c 06-23-2011 11:07 AM

I know it takes me a long time to reply, I got a busy RL.

Anyway, I just want to say a thorough thanks. I got it. Akkadius, I really, really appreciate you taking the time to answer my questions.


In case anyone else ever reads the thread here's some more details:
I followed the link in the previous post, and then the two links there. The first link took me to a list of plugins, and I copied the "globals.pl" one. It looks the same as the one I already had, but on closer inspection it is different, and once I replaced it, my code works like a charm--in other words, the $qglobals variable can be accessed from inside a plugin.

As an aside: I found lots of other useful plugins in those links. Gonna take me months to look through it because I am so busy, but it should be fun (that's why we do this right?).

Akkadius 06-23-2011 01:08 PM

Quote:

Originally Posted by revloc02c (Post 200951)
I know it takes me a long time to reply, I got a busy RL.

Anyway, I just want to say a thorough thanks. I got it. Akkadius, I really, really appreciate you taking the time to answer my questions.


In case anyone else ever reads the thread here's some more details:
I followed the link in the previous post, and then the two links there. The first link took me to a list of plugins, and I copied the "globals.pl" one. It looks the same as the one I already had, but on closer inspection it is different, and once I replaced it, my code works like a charm--in other words, the $qglobals variable can be accessed from inside a plugin.

As an aside: I found lots of other useful plugins in those links. Gonna take me months to look through it because I am so busy, but it should be fun (that's why we do this right?).

Not a problem


All times are GMT -4. The time now is 04:13 PM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.