EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Quests::Q&A (https://www.eqemulator.org/forums/forumdisplay.php?f=599)
-   -   Random Race? (https://www.eqemulator.org/forums/showthread.php?t=41443)

Baelu 07-15-2017 02:27 PM

Random Race?
 
So I was looking around for a code to make npc's have a random race upon spawn. I know how to write it for the most part but im having trouble finding which command to use. Only one I see on wiki is

Code:

quest::npcrace(raceid) # Temporarily changes the NPC's race
however my concern is what is the limitations on the 'temporary' change? Would that be the best line to use for what im trying to do?

If anyone is unclear I simply want the npc to be a random race when spawning.

Would this actually work? (Dont have time to test atm)

Code:

Sub EVENT_SPAWN {
$rand = quest::ChooseRandom(1..12,522,130);
quest::npcrace($rand) # Temporarily changes the NPC's race
}
}


Baelu 07-15-2017 02:49 PM

Well I tested it and it doesnt work, Not to sure what I did wrong lol

atrayas 07-15-2017 06:50 PM

havnt tested this but it should work.

Code:

@races = (464,466,469,458,467,454,367,420,);

sub EVENT_SPAWN
{
quest::npcrace(quest::ChooseRandom(@races));
}


Baelu 07-15-2017 07:03 PM

Will give it a shot, will it work like that for gender as well?

Baelu 07-15-2017 09:08 PM

So tested it and added line for gender as well, only question now is there a way to make the race picked have the correct size? Im getting giant gnomes and small ogres lol if not its no biggy but would like to have them scale size based on the race

atrayas 07-15-2017 11:53 PM

could create different arrays for big and small races then set the size in the script based on the model

Baelu 07-16-2017 07:29 AM

Mind giving me an example to build off of? Sounds a bit out of my current skill set lol

ghanja 07-17-2017 12:51 PM

Replied to your PM, but, posting here all to see:

Code:

sub EVENT_SPAWN {
        ## both arrays below should have same number of elements, in pairs
        my @npcraces = (367,        420,        454,        458,        464,        466,        467,        469);
        my @npcsizes = (5,                3,                7,                4,                6,                5,                5,                4);
        my $elementselected = quest::ChooseRandom(0..((scalar @npcraces) - 1));
        quest::npcrace($npcraces[$elementselected]);
        quest::npcsize($npcsizes[$elementselected]);
        quest::npcgender(quest::ChooseRandom(0..1));
}

## or

sub EVENT_SPAWN {
        # keys start at 1, add as many key/value pairs as you'd like, first element in array is race, second is size
        %SpawnHash = (
                1                =>        [367, 5],
                2                =>        [420, 3],
                3                =>        [454, 7],
                4                =>        [458, 4],
        );
        my $selectedkey = quest::ChooseRandom(1..(scalar keys %SpawnHash));
        quest::npcrace($SpawnHash[$selectedkey][0]);
        quest::npcsize($npcsizes[$selectedkey][1]);
        quest::npcgender(quest::ChooseRandom(0..1)); # in case you wouldn't want to deal with it in the hash
}

## or

sub EVENT_SPAWN {
        # keys start at 1, add as many key/value pairs as you'd like, first element in array is race, second is size, third is gender
        %SpawnHash = (
                1                =>        [367, 5, 0],
                2                =>        [420, 3, 1],
                3                =>        [454, 7, 1],
                4                =>        [458, 4, 0],
        );
        my $selectedkey = quest::ChooseRandom(1..(scalar keys %SpawnHash));
        quest::npcrace($SpawnHash[$selectedkey][0]);
        quest::npcsize($SpawnHash[$selectedkey][1]);
        quest::npcgender($SpawnHash[$selectedkey][2]);
}


Baelu 07-17-2017 05:16 PM

Using the following code, checked all races sizes and gender options via GM commands, but all i keep getting are tiny humans.

Code:

sub EVENT_SPAWN {
        # keys start at 1, add as many key/value pairs as you'd like, first element in array is race, second is size, third is gender
        %SpawnHash = (
        1                =>        [1, 6, 0],
        2                =>        [2, 7, 1],
        3                =>        [3, 6, 1],
        4                =>        [4, 5, 1],
        5                =>        [5, 6, 0],
        6                =>        [6, 5, 1],
        7                =>        [7, 5.5, 0],
        8                =>        [8, 4, 1],
        9                =>        [9, 8, 0],
        10                =>        [10, 9, 1],
        11                =>        [11, 3.5, 1],
        12                =>        [12, 3, 0],
        13                =>        [130, 7, 1],
        14                =>        [522, 6, 0],
        15                =>        [128, 6, 0],
        16                =>        [330, 5, 1],
        );
        my $selectedkey = quest::ChooseRandom(1..(scalar keys %SpawnHash));
        quest::npcrace($SpawnHash[$selectedkey][0]);
        quest::npcgender($SpawnHash[$selectedkey][2]);
        quest::npcsize($SpawnHash[$selectedkey][1]);
}


ghanja 07-17-2017 06:43 PM

As mentioned in your PM I just replied to, but will post if here. You're using a model not loading with the zone. You'll want to research how to modify your /resources/GlobalLoad.txt file based on your requirements/desires.

And yep, first time hearing about tiny humans (this could also be a gender issue, basically, the combination of race/gender doesnt match with what is loaded in the client either because of the globalload and/or because of wrong gender).

Baelu 07-18-2017 07:59 AM

idk man only models im using are playable races, and the code I originally used worked fine, was just having a sizing issue. Here is the code im using now

Code:

sub EVENT_SPAWN {
        # keys start at 1, add as many key/value pairs as you'd like, first element in array is race, second is size, third is gender
        %SpawnHash = (
        1                =>        [1, 6, 0],
        2                =>        [2, 7, 1],
        3                =>        [3, 6, 1],
        4                =>        [4, 5, 1],
        5                =>        [5, 6, 0],
        6                =>        [6, 5, 1],
        7                =>        [7, 5.5, 0],
        8                =>        [8, 4, 1],
        9                =>        [9, 8, 0],
        10                =>        [10, 9, 1],
        11                =>        [11, 3.5, 1],
        12                =>        [12, 3, 0],
        13                =>        [130, 7, 1],
        14                =>        [522, 6, 0],
        15                =>        [128, 6, 0],
        16                =>        [330, 5, 1],
        );
        my $selectedkey = quest::ChooseRandom(1..(scalar keys %SpawnHash));
        quest::npcrace($SpawnHash[$selectedkey][0]);
        quest::npcsize($SpawnHash[$selectedkey][1]);
        quest::npcgender($SpawnHash[$selectedkey][2]);
}


And here is my first code,

Code:

@races = (1,2,3,4,5,6,7,8,);
@gender = (0,1);
sub EVENT_SPAWN
{
quest::npcrace(quest::ChooseRandom(@races));
quest::npcgender(quest::ChooseRandom(@gender));
}

The first code produces only tiny humans, the 2nd code changes the races and genders but you end up with giant sized gnomes and small ogres lol. Anyone have a suggestion?


All times are GMT -4. The time now is 08:29 AM.

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