Go Back   EQEmulator Home > EQEmulator Forums > Quests > Quests::Q&A

Quests::Q&A This is the quest support section

Reply
 
Thread Tools Display Modes
  #1  
Old 05-22-2019, 09:50 PM
WarAngel's Avatar
WarAngel
Sarnak
 
Join Date: Oct 2017
Location: Washington State
Posts: 51
Default Flymode script, plugin

Yeah I am back again on this silly subject...But I am trying to make script this time. As I usually plagiarize all your folks outstanding works, for my own evil empire. This time I am attempting to actually script myself (well, sorta...)
I need help/push in the right direction.

Searches so far in the past two days... Flymode,$npc,$mob,setflymode,set

*** Done so far ***
I am using a in-game macro to set the NPC(Mob) flymode=0. This (for me) enables myself to hear the walking sounds of mobs nearby. Now I am trying to do this automated through a script (script is below).

*** Concerns ***
1. Since the macro is a clicky, it is dependent on my interaction with the NPC. Which is "meh", it works, but I am concerned about the effect it might have on the NPC(see number 2) as I leave its area of influence.
2. I am concerned with scripting issues and so forth with everything tied to a flymode=3.


*** Intention***
1. I am trying to use a script that will fire...to change the NPC(Mob)'s Flymode=0, when entering a $client range...and set it back to Flymode=3 when leaving.
2. I plan to make this a plugin and then call on it in the Global_player.pl.
3. It will have exception list for water mobs and such eventually.
4. Maybe figure out to make a in-game toggle command, just in case I come across a weird issue.
5. Will place it all in a quest::timer.

*** CURRENT ISSUE ***
I am having the worst brainfog on what to do, to get a mob's flymode to change. I can do it with a in-game command. And it seems looking at the Perl Reference list I can do this in a script. Of course unless I can get the script below to work, it is no use to go any further.

All my attempts that do not (seem) work have been #commented out but left to reference on failures.
Any suggestions?

(Placed in a global_npc.pl. for testing)
sub EVENT_SAY
# Testing only for now...later this will be in a check_distance on a timer...etc.
{
if($text=~/hail/i)
{
quest::say("You have grounded me!");

# my $npc_target = $client->GetTarget();
# my $mob_target = $npc_target->GetID();

# quest::FlyMode(0);
# $mob->SetFlyMode(uint8 flymode[0])
# $mob->SetFlyMode(0);
# SetFlyMode(0);
# $mob->SetFlyMode(uint8 flymode(0));
# $mob->SetFlyMode(uint8 flymode() = 0);
# $npc->SetFlyMode(0);
# my->SetFlyMode(0);
# $npc_target->SetFlyMode(0);
# $npc_target->SetFlyMode(flymode 0);
# $npc->SetFlyMode(flymode 0);
# SetFlyMode(0);

}
}

Thank you in advance!!
-Eric
Reply With Quote
  #2  
Old 05-23-2019, 02:12 AM
Huppy
Demi-God
 
Join Date: Oct 2010
Location: Canada
Posts: 1,010
Default

This works real simple for setting it globally. I could hear all mobs walking anywhere. (using RoF2) BUT, it would need to be built on (in some way) to prevent the water mobs from being included.

global_npc.pl
Code:
sub EVENT_SPAWN {

    $npc->SetFlyMode(0);
}
In the npc_types table there is 454 npctype id's that are flagged as 'underwater'. This is a list of them.
Code:
2005
2151
3001
3002
8000
8012
10028
10146
10167
11073
11074
11075
17025
17026
17034
17052
19000
19001
19047
19118
20086
20087
20088
20162
21036
21054
21057
21058
21093
24001
24005
24006
24007
24008
24009
24010
24011
24012
24057
24058
24105
24110
25102
25397
38052
38055
38057
45000
45014
45022
45023
45041
45092
47062
47155
47163
48037
48038
48039
48074
48075
48121
48152
48220
48223
48226
48227
48242
51010
51011
51036
51039
51051
51121
51158
51160
51171
52117
57150
57152
57156
64000
64002
64005
64007
64008
64010
64011
64012
64014
64017
64018
64019
64020
64021
64022
64023
64024
64025
64026
64028
64030
64032
64033
64038
64040
64041
64043
64049
64051
64056
64058
64063
64073
64074
64075
64077
64085
64086
64087
64089
64091
64092
64094
64099
64100
64101
64102
64103
64105
64106
69021
69054
69065
69066
69067
69068
69069
69141
69151
74029
74083
85039
85040
85042
85043
85068
85105
85106
85122
85156
85157
85194
85212
85217
85224
93306
96039
96040
96041
96042
96043
96044
96045
96046
98001
98005
98006
98007
98014
98015
98021
98028
98029
98030
98031
98032
106006
117021
117024
117025
117026
117027
117028
117029
117031
117037
117046
117063
117089
117090
117091
125000
125001
125002
125003
125004
125005
125007
125008
125011
125022
125023
125033
125034
125053
125062
125064
125073
125074
154104
156057
156062
156063
156098
156099
160133
160379
166074
166085
166086
166087
166088
170109
170110
170111
170112
170113
170114
170115
170116
170117
170118
170119
170120
170121
170122
170169
170181
170196
182150
204040
210085
210086
216000
216001
216002
216003
216004
216005
216006
216007
216008
216009
216010
216011
216012
216013
216014
216016
216017
216018
216019
216020
216021
216022
216023
216024
216025
216026
216027
216028
216029
216030
216031
216032
216033
216034
216035
216037
216038
216039
216040
216041
216042
216043
216045
216046
216047
216048
216049
216050
216051
216052
216053
216054
216055
216056
216057
216058
216059
216060
216061
216062
216063
216064
216065
216066
216067
216068
216069
216070
216071
216072
216073
216074
216075
216076
216077
216078
216079
216080
216081
216082
216083
216084
216085
216086
216087
216088
216089
216090
216091
216092
216093
216094
216095
216096
216097
216098
216099
216100
216101
216102
216103
216104
216105
216106
216107
216108
216109
216110
224432
225220
225359
280014
280025
280030
280031
280032
383228
383231
384041
384050
394043
408003
408004
408006
408020
409151
409152
409153
409251
414066
414070
414074
414084
414090
422029
422030
422033
422034
422036
422037
422040
422041
422045
422046
422047
422049
422051
422052
422053
422056
422058
422059
422060
422061
422062
422063
422064
422065
422066
422068
422069
422070
422071
422072
422073
422075
422076
422078
422080
422081
422082
422083
422084
422085
422124
423006
423012
423021
423027
423110
423111
423126
423182
423192
423203
423251
423278
423300
423331
423360
423388
423389
427014
427016
427017
427025
427032
427033
427036
427048
427049
456180
456181
456189
457037
457045
457047
468018
468020
480117
Reply With Quote
  #3  
Old 05-23-2019, 09:12 AM
chrsschb's Avatar
chrsschb
Dragon
 
Join Date: Nov 2008
Location: GA
Posts: 890
Default

Quote:
Originally Posted by Huppy View Post
This works real simple for setting it globally. I could hear all mobs walking anywhere. (using RoF2) BUT, it would need to be built on (in some way) to prevent the water mobs from being included.

In the npc_types table there is 454 npctype id's that are flagged as 'underwater'. This is a list of them.
And don't forget the ones that fly like bats, bees and spectres
__________________
Clumsy's World: Resurgence
Clumsy's World [2006-2012]
Reply With Quote
  #4  
Old 05-23-2019, 11:43 AM
Huppy
Demi-God
 
Join Date: Oct 2010
Location: Canada
Posts: 1,010
Default

Quote:
Originally Posted by chrsschb View Post
And don't forget the ones that fly like bats, bees and spectres
Ya, it never affected them at all. I was even suprised that the boats still floated with flymode set to 0.
Reply With Quote
  #5  
Old 05-23-2019, 10:48 PM
WarAngel's Avatar
WarAngel
Sarnak
 
Join Date: Oct 2017
Location: Washington State
Posts: 51
Default

Code:
    $npc->SetFlyMode(0);
I had to have goofed this up with other silly code nonsense. As opposed to just trying by itself. Ugh. Good news, my wife had ordered Perl and Lua for dummies. Not sure if she is making fun of me or helping. Hehe.

Thank you. And thank you for the underwater npc listing. That must have been a mess to figure out. Very awesome.

Question...have you had any issues with Flymode=0 ? The NPCs acting proper to your deity like demands?

-Eric
Reply With Quote
  #6  
Old 05-23-2019, 11:37 PM
Huppy
Demi-God
 
Join Date: Oct 2010
Location: Canada
Posts: 1,010
Default

That list was easy enough, with Navicat and Notepad++, the sorting features on those, it only takes a matter of minutes and a few clicks to generate the list. I haven't done any further testing with that flymode 0 thing, so I don't know if there is other issues with it.
Reply With Quote
  #7  
Old 05-24-2019, 04:36 PM
WarAngel's Avatar
WarAngel
Sarnak
 
Join Date: Oct 2017
Location: Washington State
Posts: 51
Default

I need to look into the Notepad++.

Another question for anyone willing...

It seems that some commands or whatnots do not work in the "EVENT_SAY". Such as my issue with the "flymode=0". Works perfect in the "EVENT_SPAWN". I had come across another post (tried to find it yesterday) where it was a similar issue and was fix when the individual move it out of the "EVENT_SAY". Any thoughts as to why that may be?

I always like testing my scripts with the "EVENT_SAY" before moving them to other EVENTS. But now I am thinking some of my failures could have maybe worked in the past if I used a different technique. CHEERS!!

-Eric
Reply With Quote
  #8  
Old 05-24-2019, 05:35 PM
c0ncrete's Avatar
c0ncrete
Dragon
 
Join Date: Dec 2009
Posts: 719
Default

Paste an example of what you are trying to do in EVENT_SAY and have issues with.

Also, don't forget to run perl -c your_script.pl from a command prompt for a quick syntax check.
__________________
I muck about @ The Forge.
say(rand 99>49?'try '.('0x'.join '',map{unpack 'H*',chr rand 256}1..2):'incoherent nonsense')while our $Noport=1;
Reply With Quote
  #9  
Old 05-25-2019, 12:54 AM
WarAngel's Avatar
WarAngel
Sarnak
 
Join Date: Oct 2017
Location: Washington State
Posts: 51
Default

cOncrete, thank you for replying.

As far as issues with EVENT_SAY, up until now (code below) I had been able to cannibalize scripts and debug/test them on the fly with EVENT_SAY in game. I wish I could find that other individuals post, but I was really tired when I came across it, and didn't save for later use as a personal help file. Kicking myself for that, it was a "AHA!" moment, but now I do not remember why. Ugh.

This code did not work...but...read further.


Code:
(Placed in a global_npc.pl. for testing)
sub EVENT_SAY 
# Testing only for now...later this will be in a check_distance on a timer...etc.
{ 
if($text=~/hail/i)
{
quest::say("You have grounded me!");

# my $npc_target = $client->GetTarget();
# my $mob_target = $npc_target->GetID();

# quest::FlyMode(0);
# $mob->SetFlyMode(uint8 flymode[0])
# $mob->SetFlyMode(0);
# SetFlyMode(0);
# $mob->SetFlyMode(uint8 flymode(0));
# $mob->SetFlyMode(uint8 flymode() = 0);
# $npc->SetFlyMode(0);
# my->SetFlyMode(0);
# $npc_target->SetFlyMode(0);
# $npc_target->SetFlyMode(flymode 0);
# $npc->SetFlyMode(flymode 0);
# SetFlyMode(0);

} 
}
When Huppy replied with a simple code, using EVENT_SPAWN...did I realize that the "$NPC->SetFlyMode()" does not work in the EVENT_SAY environment (for me at least). Which led me to wonder if in the past I had concocted scripts that I cannibalize from you folks in the EVENT_SAY and gave up on them when they could have work elsewhere such as EVENT_SPAWN. They are vaporware now, I could not begin to remember them for examples, I am sorry.

"run perl -c your_script.pl from a command prompt" I need to re-attack that and learn the knowledge of how to perform the command. In the past I had the same issue with trying to run the "eqemu_server.pl". I gave up and made a batch file that does it for me. There is some part of my brain that just cannot get this right. And I do not know why. Half of doing CMD stuff eludes me. I do use Visual 2017, it seems to catch a lot of my mistakes. But, again I need to try to learn what you suggested.

Posting again with what I have so far with this ittybitty script.

-Eric
Reply With Quote
  #10  
Old 05-25-2019, 01:16 AM
WarAngel's Avatar
WarAngel
Sarnak
 
Join Date: Oct 2017
Location: Washington State
Posts: 51
Default

Ok, so far this is what I have done...

More post searches so far...Array,Hash,!=,ne,comparison,IF,FOREACH
Been reading and trying many different ideas all day.

***Done so far***

With Huppy chiming in and graciously handing me what I now call "Swimmers" list. I have been able to make the spawns set their Flymode=0. So now what I am trying to do is make it that when the NPCs spawn in, they check against the Swimmers. If they swim they do nothing, if the NPC is a landlubber then set the Flymode=0.

So far they either all change their mode or none at all. I cannot grasp the array language. Well ok strike "cannot"....I am so far learning how to not be successful with arrays. That is good info too, right?


global_npc.pl

Code:
sub EVENT_SPAWN
{
	# my $Owner =  $npc->GETNPCTypeID();
	# my $npc->GETNPCTypeID();
	my @Swimmers = (2005, 2151, 3001, 3002, 8000, 8012, 10028, 10146, 10167, 11073, 11074, 11075, 17025, 17026, 17034, 17052, 19000, 19001, 19047, 19118, 20086..20088, 20162, 21036, 21054, 21057, 21058, 21093, 24001, 24005..24012, 24057, 24058, 24105, 24110, 25102, 25397, 38052, 38055, 38057, 45000, 45014, 45022, 45023, 45041, 45092, 47062, 47155 ,47163, 48037..48039, 48074, 48075, 48121, 48152, 48220, 48223, 48226, 48227, 48242, 51010, 51011, 51036, 51039, 51051, 51121, 51158, 51160, 51171, 52117, 57150, 57152, 57156, 64000, 64002, 64005, 64007, 64008, 64010..64012, 64014, 64017..64019, 64020..64026, 64028, 64030, 64032, 64033, 64038, 64040, 64041, 64043, 64049, 64051, 64056, 64058, 64063, 64073..64075, 64077, 64085..64087, 64089, 64091, 64092, 64094, 64099, 64100..64103, 64105, 64106, 69021, 69054, 69065..69069, 69141, 69151, 74029, 74083, 85039, 85040, 85042, 85043, 85068, 85105, 85106, 85122, 85156, 85157, 85194, 85212, 85217, 85224, 93306, 96039, 96040, 96041..96046, 98001, 98005..98007, 98014, 98015, 98021, 98028..98032, 106006, 117021, 117024..117028, 117029, 117031, 117037, 117046, 117063, 117089..117091, 125000..125005, 125007, 125008, 125011, 125022, 125023, 125033, 125034, 125053, 125062, 125064, 125073, 125074, 154104, 156057, 156062, 156063, 156098, 156099, 160133, 160379, 166074, 166085..166088, 170109..170122, 170169, 170181, 170196, 182150, 204040, 210085, 210086, 216000, 216001, 216002, 216003, 216004, 216005, 216006, 216007, 216008, 216009, 216010, 216011, 216012, 216013, 216014, 216016, 216017, 216018, 216019, 216020, 216021, 216022, 216023, 216024, 216025, 216026, 216027, 216028, 216029, 216030, 216031, 216032, 216033, 216034, 216035, 216037, 216038, 216039, 216040, 216041, 216042, 216043, 216045, 216046, 216047, 216048, 216049, 216050, 216051, 216052, 216053, 216054, 216055, 216056, 216057, 216058, 216059, 216060, 216061, 216062, 216063, 216064, 216065, 216066, 216067, 216068, 216069, 216070, 216071, 216072, 216073, 216074, 216075, 216076, 216077, 216078, 216079, 216080, 216081, 216082, 216083, 216084, 216085, 216086, 216087, 216088, 216089, 216090, 216091, 216092, 216093, 216094, 216095, 216096, 216097, 216098, 216099, 216100, 216101, 216102, 216103, 216104, 216105, 216106, 216107, 216108, 216109, 216110, 224432, 225220, 225359, 280014, 280025, 280030, 280031, 280032, 383228, 383231, 384041, 384050, 394043, 408003, 408004, 408006, 408020, 409151, 409152, 409153, 409251, 414066, 414070, 414074, 414084, 414090, 422029, 422030, 422033, 422034, 422036, 422037, 422040, 422041, 422045, 422046, 422047, 422049, 422051, 422052, 422053, 422056, 422058, 422059, 422060, 422061, 422062, 422063, 422064, 422065, 422066, 422068, 422069, 422070, 422071, 422072, 422073, 422075, 422076, 422078, 422080, 422081, 422082, 422083, 422084, 422085, 422124, 423006, 423012, 423021, 423027, 423110, 423111, 423126, 423182, 423192, 423203, 423251, 423278, 423300, 423331, 423360, 423388, 423389, 427014, 427016, 427017, 427025, 427032, 427033, 427036, 427048, 427049, 456180, 456181, 456189, 457037, 457045, 457047, 468018, 468020, 480117);

	#foreach $Mob (@Swimmers)
	#{
		
		# if($Owner ne $Swimmers) #Everyone goes flymode=3
		# if($Owner != $Swimmers) #Everyone goes flymode=3
		# if($npc != $Swimmers) #Everyone goes flymode=3
		# if($npc ne $Swimmers) #Everyone goes flymode=3
		# if($npc->GetNPCTypeID() != $Swimmers()) #Everyone goes flymode=3
		if($npc->GetNPCTypeID() != $Swimmers) #Everyone goes Flymode=0 including Swimmers
		# if($npc->GetNPCTypeID() ~~ $Swimmers) #Everyone goes flymode=3
		{
		$npc->SetFlyMode(0);
		}
	#}
}
BIG LEARNING POINT. And something maybe the Developers might want to know...

So when everyone is "Flymode=0" swimmers included. I have witnessed in two different zones that the swimmers still swim. BUT! When the move about, attack/chase...they do not do so fluidly. I watch them in a timely manner, depending on walking or running/chasing...skip or pop forward on their path. Or in other words, they tend to disappear and reappear every few in game feet. As apposed to watching them swim. They do however, float/swim around and not fall to the in game floor and walk. CHEERS!

-Eric
Reply With Quote
  #11  
Old 05-25-2019, 01:26 AM
c0ncrete's Avatar
c0ncrete
Dragon
 
Join Date: Dec 2009
Posts: 719
Default

your token on Swimmers needs to be a @ (for an array), not a $ (for a scalar).
__________________
I muck about @ The Forge.
say(rand 99>49?'try '.('0x'.join '',map{unpack 'H*',chr rand 256}1..2):'incoherent nonsense')while our $Noport=1;
Reply With Quote
  #12  
Old 05-25-2019, 04:09 AM
WarAngel's Avatar
WarAngel
Sarnak
 
Join Date: Oct 2017
Location: Washington State
Posts: 51
Default

I have no clue as to why my last post elongated so bad. Just in case it was the script I change the look a bit.

So I applied the change of a "@". I think I had done that before in one of my many iterations in trying the different lines. But it is in there, still the swimmers do not stay in Flymode=3. I will keep searching the forums and such, but I am beginning to think I might have to find how to do this another way.

Here is a clean version of my attempt...


Code:
sub EVENT_SPAWN
{
	my @Swimmers = (2005, 2151, 3001, 3002, 8000, 8012, 10028, 10146, 10167, 11073, 11074, 11075, 17025, 17026, 17034, 17052, 19000, 19001, 19047, 19118, 20086..20088, 20162, 21036, 21054, 21057, 21058, 21093, 24001, 24005..24012, 24057, 24058, 24105, 24110, 25102, 25397, 38052, 38055, 38057, 45000, 45014, 45022, 45023, 45041, 45092, 47062, 47155 ,47163, 48037..48039, 48074, 48075, 48121, 48152, 48220, 48223, 48226, 48227, 48242, 51010, 51011, 51036, 51039, 51051, 51121, 51158, 51160, 51171, 52117, 57150, 57152, 57156, 64000, 64002, 64005, 64007, 64008, 64010..64012, 64014, 64017..64019, 64020..64026, 64028, 64030, 64032, 64033, 64038, 64040, 64041, 64043, 64049, 64051, 64056, 64058, 64063, 64073..64075, 64077, 64085..64087, 64089, 64091, 64092, 64094, 64099, 64100..64103, 64105, 64106, 69021, 69054, 69065..69069, 69141, 69151, 74029, 74083, 85039, 85040, 85042, 85043, 85068, 85105, 85106, 85122, 85156, 85157, 85194, 85212, 85217, 85224, 93306, 96039, 96040, 96041..96046, 98001, 98005..98007, 98014, 98015, 98021, 98028..98032, 106006, 117021, 117024..117028, 117029, 117031, 117037, 117046, 117063, 117089..117091, 125000..125005, 125007, 125008, 125011, 125022, 125023, 125033, 125034, 125053, 125062, 125064, 125073, 125074, 154104, 156057, 156062, 156063, 156098, 156099, 160133, 160379, 166074, 166085..166088, 170109..170122, 170169, 170181, 170196, 182150, 204040, 210085, 210086, 216000, 216001, 216002, 216003, 216004, 216005, 216006, 216007, 216008, 216009, 216010, 216011, 216012, 216013, 216014, 216016, 216017, 216018, 216019, 216020, 216021, 216022, 216023, 216024, 216025, 216026, 216027, 216028, 216029, 216030, 216031, 216032, 216033, 216034, 216035, 216037, 216038, 216039, 216040, 216041, 216042, 216043, 216045, 216046, 216047, 216048, 216049, 216050, 216051, 216052, 216053, 216054, 216055, 216056, 216057, 216058, 216059, 216060, 216061, 216062, 216063, 216064, 216065, 216066, 216067, 216068, 216069, 216070, 216071, 216072, 216073, 216074, 216075, 216076, 216077, 216078, 216079, 216080, 216081, 216082, 216083, 216084, 216085, 216086, 216087, 216088, 216089, 216090, 216091, 216092, 216093, 216094, 216095, 216096, 216097, 216098, 216099, 216100, 216101, 216102, 216103, 216104, 216105, 216106, 216107, 216108, 216109, 216110, 224432, 225220, 225359, 280014, 280025, 280030, 280031, 280032, 383228, 383231, 384041, 384050, 394043, 408003, 408004, 408006, 408020, 409151, 409152, 409153, 409251, 414066, 414070, 414074, 414084, 414090, 422029, 422030, 422033, 422034, 422036, 422037, 422040, 422041, 422045, 422046, 422047, 422049, 422051, 422052, 422053, 422056, 422058, 422059, 422060, 422061, 422062, 422063, 422064, 422065, 422066, 422068, 422069, 422070, 422071, 422072, 422073, 422075, 422076, 422078, 422080, 422081, 422082, 422083, 422084, 422085, 422124, 423006, 423012, 423021, 423027, 423110, 423111, 423126, 423182, 423192, 423203, 423251, 423278, 423300, 423331, 423360, 423388, 423389, 427014, 427016, 427017, 427025, 427032, 427033, 427036, 427048, 427049, 456180, 456181, 456189, 457037, 457045, 457047, 468018, 468020, 480117);

	if($npc->GetNPCTypeID() != @Swimmers) # This is not working. Everyone goes Flymode=0 including Swimmers, need swimmers to stay Flymode=3.
	{
	$npc->SetFlyMode(0);
	}
}
Edit...I have no clue how to fix my replies. For me they are REALY wide. I seriously apologize for this.

-Eric
Reply With Quote
  #13  
Old 05-25-2019, 06:43 AM
c0ncrete's Avatar
c0ncrete
Dragon
 
Join Date: Dec 2009
Posts: 719
Default

you're using the wrong operator. use ~~ to test if a value is in an array (!~ for inverse).

using code blocks with long lines (like your @Swimmers definition) on the forums is what causes the width issue with the post.
__________________
I muck about @ The Forge.
say(rand 99>49?'try '.('0x'.join '',map{unpack 'H*',chr rand 256}1..2):'incoherent nonsense')while our $Noport=1;
Reply With Quote
  #14  
Old 05-25-2019, 08:11 AM
Huppy
Demi-God
 
Join Date: Oct 2010
Location: Canada
Posts: 1,010
Default

Quote:
Originally Posted by c0ncrete View Post
you're using the wrong operator. use ~~ to test if a value is in an array (!~ for inverse).
Yes, WarAngel, if you do this (like c0ncrete suggests), it works good. Sharks in OOT were flymode 3 (as well as boats), and land mobs/npc's were flymode 0. Not sure how it would affect mobs that are in and out of water, like gators, lol

Code:
sub EVENT_SPAWN {

	my @Swimmers = (2005, 2151, 3001, 3002, 8000, 8012, 10028, 10146, 10167, 11073, 11074, 11075, 17025, 17026, 17034, 17052, 19000, 19001, 19047, 19118, 20086..20088, 20162, 21036, 21054, 21057, 21058, 21093, 24001, 24005..24012, 24057, 24058, 24105, 24110, 25102, 25397, 38052, 38055, 38057, 45000, 45014, 45022, 45023, 45041, 45092, 47062, 47155 ,47163, 48037..48039, 48074, 48075, 48121, 48152, 48220, 48223, 48226, 48227, 48242, 51010, 51011, 51036, 51039, 51051, 51121, 51158, 51160, 51171, 52117, 57150, 57152, 57156, 64000, 64002, 64005, 64007, 64008, 64010..64012, 64014, 64017..64019, 64020..64026, 64028, 64030, 64032, 64033, 64038, 64040, 64041, 64043, 64049, 64051, 64056, 64058, 64063, 64073..64075, 64077, 64085..64087, 64089, 64091, 64092, 64094, 64099, 64100..64103, 64105, 64106, 69021, 69054, 69065..69069, 69141, 69151, 74029, 74083, 85039, 85040, 85042, 85043, 85068, 85105, 85106, 85122, 85156, 85157, 85194, 85212, 85217, 85224, 93306, 96039, 96040, 96041..96046, 98001, 98005..98007, 98014, 98015, 98021, 98028..98032, 106006, 117021, 117024..117028, 117029, 117031, 117037, 117046, 117063, 117089..117091, 125000..125005, 125007, 125008, 125011, 125022, 125023, 125033, 125034, 125053, 125062, 125064, 125073, 125074, 154104, 156057, 156062, 156063, 156098, 156099, 160133, 160379, 166074, 166085..166088, 170109..170122, 170169, 170181, 170196, 182150, 204040, 210085, 210086, 216000, 216001, 216002, 216003, 216004, 216005, 216006, 216007, 216008, 216009, 216010, 216011, 216012, 216013, 216014, 216016, 216017, 216018, 216019, 216020, 216021, 216022, 216023, 216024, 216025, 216026, 216027, 216028, 216029, 216030, 216031, 216032, 216033, 216034, 216035, 216037, 216038, 216039, 216040, 216041, 216042, 216043, 216045, 216046, 216047, 216048, 216049, 216050, 216051, 216052, 216053, 216054, 216055, 216056, 216057, 216058, 216059, 216060, 216061, 216062, 216063, 216064, 216065, 216066, 216067, 216068, 216069, 216070, 216071, 216072, 216073, 216074, 216075, 216076, 216077, 216078, 216079, 216080, 216081, 216082, 216083, 216084, 216085, 216086, 216087, 216088, 216089, 216090, 216091, 216092, 216093, 216094, 216095, 216096, 216097, 216098, 216099, 216100, 216101, 216102, 216103, 216104, 216105, 216106, 216107, 216108, 216109, 216110, 224432, 225220, 225359, 280014, 280025, 280030, 280031, 280032, 383228, 383231, 384041, 384050, 394043, 408003, 408004, 408006, 408020, 409151, 409152, 409153, 409251, 414066, 414070, 414074, 414084, 414090, 422029, 422030, 422033, 422034, 422036, 422037, 422040, 422041, 422045, 422046, 422047, 422049, 422051, 422052, 422053, 422056, 422058, 422059, 422060, 422061, 422062, 422063, 422064, 422065, 422066, 422068, 422069, 422070, 422071, 422072, 422073, 422075, 422076, 422078, 422080, 422081, 422082, 422083, 422084, 422085, 422124, 423006, 423012, 423021, 423027, 423110, 423111, 423126, 423182, 423192, 423203, 423251, 423278, 423300, 423331, 423360, 423388, 423389, 427014, 427016, 427017, 427025, 427032, 427033, 427036, 427048, 427049, 456180, 456181, 456189, 457037, 457045, 457047, 468018, 468020, 480117);

	if ($npc->GetNPCTypeID() !~ @Swimmers) {
	$npc->SetFlyMode(0);
	}
	if ($npc->GetNPCTypeID() ~~ @Swimmers) {
	$npc->SetFlyMode(3);
	}
}
Reply With Quote
  #15  
Old 05-25-2019, 09:09 PM
WarAngel's Avatar
WarAngel
Sarnak
 
Join Date: Oct 2017
Location: Washington State
Posts: 51
Default

Operators get me every time. I am trying to grasp them though, have cheat sheets and keep rereading website info. Thank you.

I am gonna call this script solved and it is posted below for the future folks. If anyone does come up with a better solution or wishes to expand this script to new levels PLEASE do so. I love improvements. Thank you Huppy and cConcrete! It is hard to explain how very important this subject is to me. Makes a world of difference when I play.

Code:
#//////////////////////////////////////////////////////////////////////////////
# Created on 25 May 2019
# I will not take credit for this script. I had an idea and did the typing.
# Huppy did most of the structure and graciously provided the @Swimmers data.
# cOncrete and Huppy provided advice and were my instructors. This script
# has solved an issue that has always affected my personal immersion and
# memories of EverQuest.
# 
# - WarAngel
#//////////////////////////////////////////////////////////////////////////////
# All NPCs seem to default to Flymode=3.
# This script when placed in a global_npc.pl will enable the ground NPCs to 
# make walking sounds while the swimmers maintain...well...swimming.
#
# If you desire to add or remove NPCs look at the "@Swimmers" and add/delete
# the desired NPC ID. Note you can do a block of IDs "####..####".
#
# Flymode=0 grounded mode
# Flymode=1 flying mode
# Flymode=2 levitating mode
# Flymode=3 in water mode
#
# /////////////////////////////////////////////////////////////////////////////

# global_npc.pl   Executes once when the NPC is spawned. Lower CPU usage this way.

sub EVENT_SPAWN 
{
	my @Swimmers = (2005, 2151, 3001, 3002, 8000, 8012, 10028, 10146, 10167, 11073, 11074, 11075, 17025, 17026, 17034, 17052, 19000, 19001, 19047, 19118, 20086..20088, 20162, 21036, 21054, 21057, 21058, 21093, 24001, 24005..24012, 24057, 24058, 24105, 24110, 25102, 25397, 38052, 38055, 38057, 45000, 45014, 45022, 45023, 45041, 45092, 47062, 47155 ,47163, 48037..48039, 48074, 48075, 48121, 48152, 48220, 48223, 48226, 48227, 48242, 51010, 51011, 51036, 51039, 51051, 51121, 51158, 51160, 51171, 52117, 57150, 57152, 57156, 64000, 64002, 64005, 64007, 64008, 64010..64012, 64014, 64017..64019, 64020..64026, 64028, 64030, 64032, 64033, 64038, 64040, 64041, 64043, 64049, 64051, 64056, 64058, 64063, 64073..64075, 64077, 64085..64087, 64089, 64091, 64092, 64094, 64099, 64100..64103, 64105, 64106, 69021, 69054, 69065..69069, 69141, 69151, 74029, 74083, 85039, 85040, 85042, 85043, 85068, 85105, 85106, 85122, 85156, 85157, 85194, 85212, 85217, 85224, 93306, 96039, 96040, 96041..96046, 98001, 98005..98007, 98014, 98015, 98021, 98028..98032, 106006, 117021, 117024..117028, 117029, 117031, 117037, 117046, 117063, 117089..117091, 125000..125005, 125007, 125008, 125011, 125022, 125023, 125033, 125034, 125053, 125062, 125064, 125073, 125074, 154104, 156057, 156062, 156063, 156098, 156099, 160133, 160379, 166074, 166085..166088, 170109..170122, 170169, 170181, 170196, 182150, 204040, 210085, 210086, 216000..216014, 216016..216035, 216037..216043, 216045..216110, 224432, 225220, 225359, 280014, 280025, 280030..280032, 383228, 383231, 384041, 384050, 394043, 408003, 408004, 408006, 408020, 409151..409153, 409251, 414066, 414070, 414074, 414084, 414090, 422029, 422030, 422033, 422034, 422036, 422037, 422040, 422041, 422045..422047, 422049, 422051, 422052, 422053, 422056, 422058..422066, 422068..422073, 422075, 422076, 422078, 422080..422085, 422124, 423006, 423012, 423021, 423027, 423110, 423111, 423126, 423182, 423192, 423203, 423251, 423278, 423300, 423331, 423360, 423388, 423389, 427014, 427016, 427017, 427025, 427032, 427033, 427036, 427048, 427049, 456180, 456181, 456189, 457037, 457045, 457047, 468018, 468020, 480117);
	# my @Flyers = (####, ####..####); # Maybe look into enabling NPC to fly?
	# my @Levitators = (####, ####..####) # Maybe look into enabling NPC to levitate?

		if($npc->GetNPCTypeID() !~ @Swimmers) # Need to look into comparing flyers and Levitators as well.
			{
			$npc->SetFlyMode(0); # 0 Enables the land mobs to make walking sounds.
			}
		#if($npc->GetNPCTypeID() ~~ @Flyers) # script NOT tested!!!
			#{
			#$npc->SetFlyMode(1);
			#}
		#if($npc->GetNPCTypeID() ~~ @Levitators) # script NOT tested!!!
			#{
			#$npc->SetFlyMode(2);
			#}
		if($npc->GetNPCTypeID() ~~ @Swimmers)
			{
			$npc->SetFlyMode(3); # Enables the swimmers to maintain their swimming.
			}
}
-Eric
Reply With Quote
Reply

Tags
flymode, mob, npc, sound, walking

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 03:56 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3