PDA

View Full Version : plugin::ScaleTrash


Township EQ
01-26-2014, 05:22 AM
This is a very simple plugin used to set a mobs level within a range. Using this combined with Akka's scaling system can save so much time when making a zone. You can get his scaling system here (http://www.eqemulator.org/forums/showthread.php?t=37660).

This is an example from a default.pl I've been working on. This will set every mob in the zone that has "snake" in its name to 40-50 with a variance of 3. Akka's scaling system then takes over and scales that mob to its level. I hope this saves some of you a bit of time!

Example:


sub EVENT_SPAWN {
$nn = $npc->GetCleanName();
$nid = $npc->GetNPCTypeID();
if($nn=~/snake/i) {
plugin::ScaleTrash(40, 50, 3);
}
}

Plugin:

#::: Usage: plugin::ScaleTrash(min_level, max_level, variance);
sub ScaleTrash {
$npc = plugin::val('$npc');
$npc->SetLevel(plugin::RandomRange($_[0] + plugin::RandomRange(0 - $_[2], $_[2]), $_[1] + plugin::RandomRange(0 - $_[2], $_[2])));
}

Kingly_Krab
01-26-2014, 09:59 AM
Question?: Couldn't you use the 'level' and 'maxlevel' column in the database to set level rather than doing it every time a mob spawns?

joligario
01-26-2014, 10:29 AM
Not when, for example, you are dynamically creating zone spawns based off raid/group/player level in an instance.

Kingly_Krab
01-26-2014, 10:49 AM
I guess, but that's not what's happening here, this is just what I said in Perl form.

Township EQ
01-26-2014, 11:15 AM
Question?: Couldn't you use the 'level' and 'maxlevel' column in the database to set level rather than doing it every time a mob spawns?

Dunno.. never done it that way. Doesn't seem very practical either. With this you can edit it basically on the fly.. changing 2 variables at most instead of one db entry for every mob in the zone. As for what joligario said if you wanted to you could also get a group's average level (or a solo player).. store it in a qglobal.. define it and use it for min and the defined variable +whatever for the max with if checks based on npc names/ids to scale an entire zone.

Kingly_Krab
01-26-2014, 11:22 AM
I guess if you're wanting your content to scale based around the player you can do it that way, but the way you're currently doing it can be done in the database then manipulated by Akkadius' scaling script; therefore, this is unnecessary without a scaling factor determining the level of the mobs. For example, if I were to go in Crushbone, I have a level of 1 on a mob, a max level of 5 on the same mob, he'll go between 1 and 5 and scale based upon the database scale rate, and if I have Akkadius' script, he'll scale with that. Now I could make it to where it checks the version of the zone and pulls the average level of a group in order to scale the zone to their specifications, but I don't see the necessity of scaling it based upon the level of the people in a group. With that you would only need one zone for content if they scaled based upon average group level, scaled through Akkadius' script, then had loot added to them according to level.

Township EQ
01-26-2014, 11:27 AM
I guess if you're wanting your content to scale based around the player you can do it that way, but the way you're currently doing it can be done in the database then manipulated by Akkadius' scaling script; therefore, this is unnecessary without a scaling factor determining the level of the mobs. For example, if I were to go in Crushbone, I have a level of 1 on a mob, a max level of 5 on the same mob, he'll go between 1 and 5 and scale based upon the database scale rate, and if I have Akkadius' script, he'll scale with that. Now I could make it to where it checks the version of the zone and pulls the average level of a group in order to scale the zone to their specifications, but I don't see the necessity of scaling it based upon the level of the people in a group, with that you would only need one zone for content if they scaled based upon level, scaled through Akkadius' script, then had loot added to them according to level.

Then you're welcome to make your content that way man.. I can set an if check for the name "orc" and put in 1 and 5 to this and if I test it out and 1-5 isn't what I want i literally change the 5 to a different number. If you do it your way you're changing every entry of each different npc type that's an orc.. Which way is more practical?

The whole group thing was an example I used of what you can easily do with this. You using it or not is up to you lol.

Kingly_Krab
01-26-2014, 11:32 AM
Actually, I'm not doing all Orcs, I do it by zone.

UPDATE npc_types n INNER JOIN spawnentry s ON n.id = s.npcID INNER JOIN spawn2 s2
ON s.spawngroupID = s2.spawngroupID SET n.CHANGEME = VALUE WHERE s2.zone = 'ZONENAME';

SELECT DISTINCT n.* FROM npc_types n INNER JOIN spawnentry s
ON n.id = s.npcID INNER JOIN spawn2 s2 ON s.spawngroupID = s2.spawngroupID WHERE s2.zone = 'ZONENAME'
ORDER BY `hp` DESC LIMIT 1000;

Township EQ
01-26-2014, 11:46 AM
Actually, I'm not doing all Orcs, I do it by zone.

UPDATE npc_types n INNER JOIN spawnentry s ON n.id = s.npcID INNER JOIN spawn2 s2
ON s.spawngroupID = s2.spawngroupID SET n.CHANGEME = VALUE WHERE s2.zone = 'ZONENAME';

SELECT DISTINCT n.* FROM npc_types n INNER JOIN spawnentry s
ON n.id = s.npcID INNER JOIN spawn2 s2 ON s.spawngroupID = s2.spawngroupID WHERE s2.zone = 'ZONENAME'
ORDER BY `hp` DESC LIMIT 1000;

K well.. I'm not gonna have a dick-swinging contest with you. Do things your way. I shared this because I figured it would save some people a bit of time.

joligario
01-26-2014, 11:55 AM
I guess, but that's not what's happening here, this is just what I said in Perl form.

Yeah, I didn't mean his specific implementation.

Kingly_Krab
01-26-2014, 11:57 AM
Yeah, I didn't mean his specific implementation.
Okay, haha.

Akkadius
01-27-2014, 02:19 AM
Township does work with me directly, if his plugin didn't make sense from a practicality/use standpoint I would have been straight open and honest about it before it found its way here.

The DB field in npc_types only affects the inital spawn, this is only to scale on the fly via script to set the key for my scaling system.

It is a simple addition, to use or not to use is up to the end user.

Aardil
01-17-2018, 05:02 PM
I am looking for a way to scale only certain NPC's. I dont want to scale the whole zone.

Is it possible?
if so how?

Aardil

Splose
01-17-2018, 06:31 PM
I am looking for a way to scale only certain NPC's. I dont want to scale the whole zone. Note that stats will stay the same unless using Akka's scaling system or adding a bit more code.

Is it possible?
if so how?

Aardil

yeah.. you can use default.pl to control any npc in the zone provided they don't already have their own script.

Here is a very simple example of doing that.

quests/zonesn/default.pl


sub EVENT_SPAWN {
$nn = $npc->GetCleanName();

if($nn=~/skeleton/i) {
$npc->SetLevel(60); #:: Set all npcs in the zone with 'skeleton' in their name to level 60
}

if($nn eq "Fippy Darkpaw") {
$npc->SetLevel(75); #:: Set any npc with the name 'Fippy Darkpaw' to level 75
}
}

Splose
01-17-2018, 06:55 PM
I am looking for a way to scale only certain NPC's. I dont want to scale the whole zone.

Is it possible?
if so how?

Aardil

yeah.. you can use default.pl to control any npc in the zone provided they don't already have their own script. Note that stats will stay the same unless using Akka's scaling system or adding a bit more code.

Here is a very simple example of doing that.


sub EVENT_SPAWN {
$nn = $npc->GetCleanName();

if($nn=~/skeleton/i) {
$npc->SetLevel(60); #:: Set all npcs in the zone with 'skeleton' in their name to level 60
}

if($nn eq "Fippy Darkpaw") {
$npc->SetLevel(75); #:: Set any npc with the name 'Fippy Darkpaw' to level 75
}
}

Aardil
01-18-2018, 01:23 PM
If Akk's scaling system would work for only certain NPC's then that would be what I need.

This is a special event so the NPC's in question are only spawned during the event.

NPC's are all named A_Thief
no other NPC's contain that name.
So the above script could work IF I could get Akk's leveling system to work.

I have dug around a bit and the links to Akk's leveling system seem broken, I keep getting error 404..

Another issue is he posted that it wont work with some DB.

I guess what I need is a walk through on how to install the system on my DB
I am not a super coder, I know perl but not alot else.

Aardil

Akkadius
01-18-2018, 02:17 PM
Yeah my scaling system is definitely out of date - I can look at refreshing the documentation tonight or tomorrow potentially

Aardil
01-18-2018, 02:22 PM
That would be great!

Thank you

Aardil
01-25-2018, 04:59 PM
Not trying to sound pushy but any progress on this?

Aardil

Aardil
02-08-2018, 10:08 AM
Shameless "bump"

Still waiting

Aardil

Uleat
02-08-2018, 05:05 PM
Akkadius absolutely has zero time right now and for the foreseeable future.

Bumps are ok..but, please be patient.

Aardil
02-08-2018, 08:50 PM
I understand completely.
Normally I am busy also and dont have enough time to do what I need /want.
Currently, I am laid up (hurt shoulder) so I have time as I cant work ATM.
One hand typing SUX!!!!

I dont mean to sound pushy at all. Just trying to keep this on his mind.
In the mean time I am attempting to learn Blender...... Its over my head right now.
I can create a few things Thanks to the forums here but I still have a lot to figure out.
I am no artist so basically, I need to find on line what I need then through blender change it some then import it to eq.

Its alot harder than it seems for me.

Akkadius
02-10-2018, 04:06 PM
I've been out of town for the past two weeks on business, I will look at this when I have time here. If you keep tabs/bump it will help me remember to rewrite the scaling for this since it has changed significantly

Aardil
02-21-2018, 07:39 AM
Been working on trying to get this working.
Mind you I have not gotten very far but some progress.
I managed to create the DB entries based on the snippets you posted.

Where my issue comes in is after creating the tables, I must have done something wrong.
The tables are there and have the appropriate headers (may not be what they are really called) but it does have all the names.
When I create or add a row, the row will accept numbers but not letters.

So I can create a row and type in 12345 and it works.
If I try to type butcher in the zonesn column, it ignored it and goes back to a blank row

Any idea how to resolve this?

Thanks

Aardil

Fixed nevermind