EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   General::General Discussion (https://www.eqemulator.org/forums/forumdisplay.php?f=586)
-   -   Any Race/Class combo classic servers? (https://www.eqemulator.org/forums/showthread.php?t=37374)

Fadedspirit 10-12-2013 06:45 PM

Any Race/Class combo classic servers?
 
Been mulling around the idea for awhile, but I wanted to see if anyone has one of these in the works or up already?

I've always thought it was dumb that frogloks can't be magicians, or that gnomes can't be monks (seriously, the short people have the best center of gravity for kung-fu!).


I heard there use to be two servers that had this, but stopped for unknown reasons (it wasn't due to the any race/class combo, it was easily achieved according to an x-Guide from one of these servers I spoke to playing EQ-Live).

Is it "actually" that hard to achieve? What would I have to do other than setting all gear to any race ;)?

Cheers,
Faded :grin:

NatedogEZ 10-12-2013 06:53 PM

char_create_combinations table .. just gotta add all the ones you don't have :)

Kingly_Krab 10-12-2013 07:51 PM

You must modify two tables, char_create_combinations and char_create_point_allocations, you may modify these to have any race, any class, and even make all the classes have the same level of allocation in order to balance them.

Fadedspirit 10-13-2013 12:53 AM

Neato, thanks :)!


Trying to think if I want to set my own server up or not and work on it over time.

Couple more things though....

How hard is it to add new races to the global set? I just found one that has added like 138 races or so from the monster pool. However, most of them are pretty lame :P.

Was wondering if it was possible to say....add gnolls from BlackBurrow as a choosable race once you get in the game? Obviously the issue is that the way EQ used to work is that you could only have X number of global mob skins due to how it was designed.

Has that changed?



My idea:
-Add a couple basic new races, such as Gnolls, Goblins, Kobolds, Orcs, and otters.

-Allow anyone to become any race they want with any class they want (only possible at character creation!)

-1.25x normal experience

-Either a progression unlock or a normal server with Classic, Kunark, Velious, and PoP unlocked from start.

-Spawn times reduces for major mobs to 1/4th of their normal timers. In other words a Raid boss that takes 24hrs to respawn will only take 6hrs :).

-Doubled drop-rate of items. (ie: FBSS will drop in every 10kills rather than 20kills on average).




The purpose of the server would be to harken back to "like live" old-school days, but with the idea that people have jobs/kids now and cannot play for 20hr playsessions at a time anymore ;). Also, I've just always wanted to play a gnoll magician :-D!

Kingly_Krab 10-13-2013 12:58 AM

With races like that you could just have an NPC do that, that will work fine as long as you're not using the Rain of Fear client. Also, there are globalloads out now that allow all races to be global, although they're rather resource requiring.

knowom 10-13-2013 02:03 AM

Quote:

Originally Posted by Fadedspirit (Post 224829)
Neato, thanks :)!


Trying to think if I want to set my own server up or not and work on it over time.

Couple more things though....

How hard is it to add new races to the global set? I just found one that has added like 138 races or so from the monster pool. However, most of them are pretty lame :P.

Was wondering if it was possible to say....add gnolls from BlackBurrow as a choosable race once you get in the game? Obviously the issue is that the way EQ used to work is that you could only have X number of global mob skins due to how it was designed.

Has that changed?



My idea:
-Add a couple basic new races, such as Gnolls, Goblins, Kobolds, Orcs, and otters.

-Allow anyone to become any race they want with any class they want (only possible at character creation!)

-1.25x normal experience

-Either a progression unlock or a normal server with Classic, Kunark, Velious, and PoP unlocked from start.

-Spawn times reduces for major mobs to 1/4th of their normal timers. In other words a Raid boss that takes 24hrs to respawn will only take 6hrs :).

-Doubled drop-rate of items. (ie: FBSS will drop in every 10kills rather than 20kills on average).




The purpose of the server would be to harken back to "like live" old-school days, but with the idea that people have jobs/kids now and cannot play for 20hr playsessions at a time anymore ;). Also, I've just always wanted to play a gnoll magician :-D!

Chetari + Burynai + Otter = Redwall! FYI Burynai aggro radius should be zone wide because let's face it Honey badger dgaf and eats everything!

Fadedspirit 10-13-2013 02:15 AM

Quote:

Originally Posted by knowom (Post 224832)
Chetari + Burynai + Otter = Redwall! FYI Burynai aggro radius should be zone wide because let's face it Honey badger dgaf and eats everything!

ROFL!


Yea, and yea I was thinking about having new players spawn in a specific starter area that is locked off from the rest of the game that they cannot get back to. In this area, it would facilitate race/class change, and then once you're happy you start the game in your starter city :grin:!

If you picked a mob race it'd start in the city that it closest originates from.

ie: Gnolls come from Qeynos, Orcs from Freeport, etc.

Watcha think? Personally I like the sound of a classic legit server with a little "twist", but not so much of one that it ruins the feel of the server. :smile:

ps: Any recommendations for a server provider? How much do good ones run on average per month?

knowom 10-13-2013 04:24 AM

It's your call really if your designing it you can do what you want to really. As far as server hosting I think it depends on your requirements. I think I recall reading you can expect about 10-20 people online at a time from a 1mbps upload connection. I think most just host it themselves if it's a small scale server they might upgrade their cable plan and pay $10-$30's more a month though for a plan with a better upload connection.

In terms of design it's entirely up to the developer how they want to setup the server players will either like it or won't and plenty won't mince words about their personal feelings about it if they do hate it. I think a twist is a good thing generally if it's too classic you run the risk of coming off as just another rip off server of project 1999 with a smaller player base, but that's just my personal take on the matter honestly.

Fadedspirit 10-13-2013 12:06 PM

Quote:

Originally Posted by knowom (Post 224834)
It's your call really if your designing it you can do what you want to really. As far as server hosting I think it depends on your requirements. I think I recall reading you can expect about 10-20 people online at a time from a 1mbps upload connection. I think most just host it themselves if it's a small scale server they might upgrade their cable plan and pay $10-$30's more a month though for a plan with a better upload connection.

In terms of design it's entirely up to the developer how they want to setup the server players will either like it or won't and plenty won't mince words about their personal feelings about it if they do hate it. I think a twist is a good thing generally if it's too classic you run the risk of coming off as just another rip off server of project 1999 with a smaller player base, but that's just my personal take on the matter honestly.

Honestly I cannot stand project 1999. They look down on multiboxers like we're cheaters. I multiboxed back in 1999 just fine, but then again I was in the 5% of EQ players whom had really good internet "Relatively" for the time.

That and I was a 10yr old that built computers and sold them to people rather than mowing lawns :D!

Trying to recreate that classic feel without stepping on people's toes telling them they're evil if they don't play how I experienced the game back then :I.

Tabaluga_Dragon 10-13-2013 01:31 PM

Make a server like that I for one would check it out.

rdnck 10-16-2013 08:42 AM

Quote:

Originally Posted by Fadedspirit (Post 224829)
Neato, thanks :)!


Trying to think if I want to set my own server up or not and work on it over time.

Couple more things though....

How hard is it to add new races to the global set? I just found one that has added like 138 races or so from the monster pool. However, most of them are pretty lame :P.

Was wondering if it was possible to say....add gnolls from BlackBurrow as a choosable race once you get in the game? Obviously the issue is that the way EQ used to work is that you could only have X number of global mob skins due to how it was designed.

Has that changed?



My idea:
-Add a couple basic new races, such as Gnolls, Goblins, Kobolds, Orcs, and otters.

-Allow anyone to become any race they want with any class they want (only possible at character creation!)

-1.25x normal experience

-Either a progression unlock or a normal server with Classic, Kunark, Velious, and PoP unlocked from start.

-Spawn times reduces for major mobs to 1/4th of their normal timers. In other words a Raid boss that takes 24hrs to respawn will only take 6hrs :).

-Doubled drop-rate of items. (ie: FBSS will drop in every 10kills rather than 20kills on average).




The purpose of the server would be to harken back to "like live" old-school days, but with the idea that people have jobs/kids now and cannot play for 20hr playsessions at a time anymore ;). Also, I've just always wanted to play a gnoll magician :-D!


eh? Normal server with no Luclin? What do you have against the kitties? :confused:

Fadedspirit 10-16-2013 09:40 AM

Quote:

Originally Posted by rdnck (Post 224955)
eh? Normal server with no Luclin? What do you have against the kitties? :confused:

Not sure if I want to hate on kitties or not. I definitely will hate on the Drakken though. It all depends how people feel about it. Right now i'm on the fence.

Either:

Lock the server on release to Classic only, and allow cats, Iksars, and Frogloks.

OR

Lock the server on release to Classic only, and only allow Iksars.


The whole idea of the server is to have a classic feel, but not be 100%. I like to give people choices, which is why I'm currently trying to add Gnolls into the game as playable characters. So restricting races (other than Drakken whom can burn in a pit for all eternity) is kind of counter-intuitive to that mindset of choices.

I DO have All Race/Class/Deity combo working, and I decided on a landing hub-zone for initial character creation for you to choose your starting city from and/or if you want to play an extra monster race.

Right now my current problem is:
-Trying to find all the known textures for the different gnolls. I was only able to find 4 so far.
-Trying to figure out how to add Gnoll, and all its textures as a global model.
-Trying to figure out why I'm seeing human models in blackburrow for the gnolls there, but if i go into Qeynos Hills I see gnolls just fine?



Cheers,
Faded

Davood 10-16-2013 06:47 PM

nobody mentioned Alakamin!

I have like 150+ races and all can be all classes on my server... i even have equipment working for monster races, and I figured out how to force display stuff for the regular pc races that they shouldn't be able to display normally (human with erudite hoodie etc).. only works in Titanium, SoD and RoF , but not in UF

And there is a bug with monster races, you can't enter the game if you are using the RoF client... it works on all earlier clients though.

i even have tiered skill progression using # commands for the non standard races.... as well as physical growth adn other goodies...

example:

dragons get various ae attacks and stuns..

also
you don't have to download anything to play on my server. its all serverside.

I hvae been maintaining it but i haven't developed for it since april as I've been involved in a massive project IRL that will result in $, eqemu is a hobby for me.. i put in the time I can.

I have tiers 1 through 30 open, but i have a design modeled and ready to go up to tier 70, and I will be experimenting with a newgame+ mode (when I have time.) where you can play continually more challenging instances of everything.

Davood 10-16-2013 06:48 PM

oh yeah

i will be hacking together my own version of "project M" when I do have serious development time. (december probably). as my reason for making monster races was to eventually have two diametrically opposed ways of progressing through the content on my server.

Davood 10-16-2013 06:49 PM

send me a pm and I can help you figure all this stuff out.. my server code (95% same as main eqemu) is on github too if you want to see what i did with beastlord pets and the special combat abilities (i changed some formulae)

Davood 10-16-2013 07:05 PM

oh yeah if anyone cares
if you check out alakamin (search for it on github) and compile it.. and then update your db to include the monster race (i think 65535) on specific (or all) items. the server will register the stats properly.

at some point I will re-design my horrible, atrocious, vomit inducing website and explain everything more effectively.

Fadedspirit 10-18-2013 04:46 PM

Quote:

Originally Posted by Davood (Post 224983)
oh yeah if anyone cares
if you check out alakamin (search for it on github) and compile it.. and then update your db to include the monster race (i think 65535) on specific (or all) items. the server will register the stats properly.

at some point I will re-design my horrible, atrocious, vomit inducing website and explain everything more effectively.

Could you point me towards where in your source you changed to make items work for 65535 races?

:)

Davood 10-18-2013 05:58 PM

https://github.com/davoodinator/Serv...ource=cc#L1893

from 1893 to 1933 is the code snippet you are interested in

Code:

bool Item_Struct::IsEquipable(uint16 Race, uint16 Class_) const
{
        bool IsRace = false;
        bool IsClass = false;

        uint32 Classes_ = Classes;

        uint32 Races_ = Races;

        int32 Race_ = GetArrayRace(Race);

        for (int CurrentClass = 1; CurrentClass <= PLAYER_CLASS_COUNT; ++CurrentClass)
        {
                if (Classes_ % 2 == 1)
                {
                        if (CurrentClass == Class_)
                        {
                                        IsClass = true;
                                break;
                        }
                }
                Classes_ >>= 1;
        }

        Race_ = (Race_ == 18 ? 16 : Race_);

        for (unsigned int CurrentRace = 1; CurrentRace <= PLAYER_RACE_COUNT; ++CurrentRace)
        {
                if (Races_ % 2 == 1)
                {
                                if (CurrentRace == Race_)
                        {
                                        IsRace = true;
                                break;
                        }
                }
                Races_ >>= 1;
        }
        if (Race_ == 69) {IsRace = true;}
        return (IsRace && IsClass);
}

that said.

that is only one small part of it

you will also have to make those races available in other ways too in the source code

there are changes i've made too, to make it happen.. properly.
client.cpp
race.h
races.cpp
bot.cpp

many changes. honestly just download those files and diff them with the main source and you should see the differences pretty clearly (how I added races).. ultimately im going to add all of the races (for no good reason, just beacuse i can)

honestly, if you aren't too picky, you should just download my code from github and compile it, if you pester me enough ill update it to include all races, so that its friendly to whatever you want to do with it.

One thing you may want to do is change pets.cpp to teh original one from eqemu source. as i have heavily modified that file... and i'm not done.. gonna add all the monster races to it too... bixies need their halfling pets mk

Fadedspirit 10-19-2013 03:55 PM

Quote:

Originally Posted by Davood (Post 225046)
https://github.com/davoodinator/Serv...ource=cc#L1893

from 1893 to 1933 is the code snippet you are interested in

Code:

bool Item_Struct::IsEquipable(uint16 Race, uint16 Class_) const
{
        bool IsRace = false;
        bool IsClass = false;

        uint32 Classes_ = Classes;

        uint32 Races_ = Races;

        int32 Race_ = GetArrayRace(Race);

        for (int CurrentClass = 1; CurrentClass <= PLAYER_CLASS_COUNT; ++CurrentClass)
        {
                if (Classes_ % 2 == 1)
                {
                        if (CurrentClass == Class_)
                        {
                                        IsClass = true;
                                break;
                        }
                }
                Classes_ >>= 1;
        }

        Race_ = (Race_ == 18 ? 16 : Race_);

        for (unsigned int CurrentRace = 1; CurrentRace <= PLAYER_RACE_COUNT; ++CurrentRace)
        {
                if (Races_ % 2 == 1)
                {
                                if (CurrentRace == Race_)
                        {
                                        IsRace = true;
                                break;
                        }
                }
                Races_ >>= 1;
        }
        if (Race_ == 69) {IsRace = true;}
        return (IsRace && IsClass);
}

that said.

that is only one small part of it

you will also have to make those races available in other ways too in the source code

there are changes i've made too, to make it happen.. properly.
client.cpp
race.h
races.cpp
bot.cpp

many changes. honestly just download those files and diff them with the main source and you should see the differences pretty clearly (how I added races).. ultimately im going to add all of the races (for no good reason, just beacuse i can)

honestly, if you aren't too picky, you should just download my code from github and compile it, if you pester me enough ill update it to include all races, so that its friendly to whatever you want to do with it.

One thing you may want to do is change pets.cpp to teh original one from eqemu source. as i have heavily modified that file... and i'm not done.. gonna add all the monster races to it too... bixies need their halfling pets mk

Question:

I see that the only thing you changed in IsEquipable is you added the line "if (Race_ == 69) {IsRace = true;}".

Meaning if the Race of the player is ever 69, ie: Will-O-Wisp, then it is a valid race.

If the only way to become a non-player race is to talk to a npc to get it done for you why not simply comment out the "if (Races_ %2 ==1)" logic and just put:
If (Races_ != null && Races_ != 0)
{
IsRace = true;
break;
}

???

This would allow any non-standard race to equip any item, ever.

Davood 10-19-2013 04:02 PM

im speaking off the cuff here. but i couldnt be mistaken, its literally been 8-9 months since ive looked at that part of the code. but in the other files i referenced i haev lumped all of the non pc races into one "race" for reference elsewhere, that might be what the 69 is. otherwise you are probably right.

the problem lies in the OTHER parts, a /who all won't work unless you also update the other cpp and .h files i mentioned and add all of the races

Davood 10-19-2013 04:03 PM

and yes without tijnkering with teh client, the only way to change to one of these races is to do a permarace call in perl

Fadedspirit 10-19-2013 05:23 PM

Quote:

Originally Posted by Davood (Post 225063)
and yes without tijnkering with teh client, the only way to change to one of these races is to do a permarace call in perl

Hmm, i made changes similar to yours in the source you mentioned except for client.cpp.

When i did a compare between default and your client.cpp's there were no differences??

Are you sure all i have to do is changed:
race.cpp
race.h
items.cpp?

Items are still red with race:All on them to my gnoll :(


[edit]: Scratch that, i looked at zone\client.cpp but it is only returning string values, and not really handling anything? I still added Gnoll but no change.

So i've changed:
race.cpp
race.h
items.cpp
client.cpp

still stats are not affecting my custom race :(

rencro 10-19-2013 06:57 PM

world/client.cpp

hmm I played with this a while back as well...

but dont recall, Im gonna mess with it as well on my end

Fadedspirit 10-19-2013 06:59 PM

Quote:

Originally Posted by rencro (Post 225066)
world/client.cpp

world/client.cpp has nothing to do with races being able to equip items though?

The only thing he changed in his world/client.cpp was stuff about tutorial. :confused:

rencro 10-19-2013 07:04 PM

Yea, sorry, dont mind me..trying to do 15 things at once :oops:

Fadedspirit 10-19-2013 07:05 PM

Quote:

Originally Posted by rencro (Post 225068)
Yea, sorry, dont mind me..trying to do 15 things at once :oops:

/10char xD lol

rencro 10-20-2013 01:01 AM

65535 = all races but with this patch it does not include the shroud class which is equal to 65536, so for shroud only characters item needs to be 65536. To make it usable by all races need to make it 65535+65536=131071

With that the items stats will work.. This still shows ALL for races in items listed as 65535 but will not work for shrouds, so needs to be patched to show all classes minus shroud when item has 65535 in db...

This does show "Shroud" as class if item race is set to 65536..

Fadedspirit 10-20-2013 03:24 AM

Quote:

Originally Posted by rencro (Post 225076)
65535 = all races but with this patch it does not include the shroud class which is equal to 65536, so for shroud only characters item needs to be 65536. To make it usable by all races need to make it 65535+65536=131071

With that the items stats will work.. This still shows ALL for races in items listed as 65535 but will not work for shrouds, so needs to be patched to show all classes minus shroud when item has 65535 in db...

This does show "Shroud" as class if item race is set to 65536..

I'll try this suggestion tomorrow, thanks!

Fadedspirit 10-20-2013 03:36 AM

Quote:

Originally Posted by rencro (Post 225076)
65535 = all races but with this patch it does not include the shroud class which is equal to 65536, so for shroud only characters item needs to be 65536. To make it usable by all races need to make it 65535+65536=131071

With that the items stats will work.. This still shows ALL for races in items listed as 65535 but will not work for shrouds, so needs to be patched to show all classes minus shroud when item has 65535 in db...

This does show "Shroud" as class if item race is set to 65536..

Ok so new problem that I thought would go away when I got stats to work...my weapons all say "Invulnerable" when you try to attack with a race other than non-standard? Is this because said races aren't registered to be able to use said class or what's that about?

Was using a rusty dagger, no level req obviously, and still invuln on melee hits?

rencro 10-20-2013 01:33 PM

I have mine setup with only Human Pirates, was using a monk and gave him a club, he hit fine with it. Then permaraced him to a warrior, gave him rusty dagger, and again was fine.

What race class combo you trying so I can try building it on my end as well?

Also, are you attacking a mob that is invulnerable to non magical items by chance?

Kingly_Krab 10-20-2013 01:44 PM

Quote:

Originally Posted by rencro (Post 225084)
I have mine setup with only Human Pirates, was using a monk and gave him a club, he hit fine with it. Then permaraced him to a warrior, gave him rusty dagger, and again was fine.

What race class combo you trying so I can try building it on my end as well?

Also, are you attacking a mob that is invulnerable to non magical items by chance?

I hopped on his server, he was playing a Gnoll Warrior I believe and he was attacking normal mobs such as 'a rodent' in North Qeynos and it was invulnerable to all his attacks.

Fadedspirit 10-20-2013 01:52 PM

Quote:

Originally Posted by Kingly_Krab (Post 225085)
I hopped on his server, he was playing a Gnoll Warrior I believe and he was attacking normal mobs such as 'a rodent' in North Qeynos and it was invulnerable to all his attacks.

Yup :(


Also, although it LOOKs like stats are working on my gnoll, my HP and Mana will not regen above my "naked" stats when I equip items :(.

Davood 10-20-2013 03:39 PM

oh shoot - something is broken on alakamin?

i better check this.. i had equipping working before.. must be a merge that i didn't pay attention to sometime recently.

Fadedspirit 10-20-2013 03:42 PM

Quote:

Originally Posted by Davood (Post 225097)
oh shoot - something is broken on alakamin?

i better check this.. i had equipping working before.. must be a merge that i didn't pay attention to sometime recently.

Not sure if it is on your server, talking about mine lol. I don't like just throwing stuff in so I'm trying to work it out myself :).


Do you know what could be the issue with weapons not working right in custom form, or why hp/mana won't regen when you put items on?


ps: I'm on my TS3

Kingly_Krab 10-20-2013 03:44 PM

I was talking about Fadedspirit's server.

Davood 10-20-2013 03:57 PM

wew! ok i just tested it, it still works properly on my server hehe.

I will pop into TS3 in a few. i have to run some errands

rencro 10-20-2013 04:05 PM

Your Gnolls are not properly defined in the code, I replaced my Human pirates with Gnolls and now my Human Pirates have the same behavior you are talking about..But Gnolls work fine now..

Perhaps something was missed when you patched it, here is the diff for me, numbers may not line up as I have lots of other custom stuff in:

Code:

diff --git a/common/Item.cpp b/common/Item.cpp
index 1f74b1b..9e15f48 100644
--- a/common/Item.cpp
+++ b/common/Item.cpp
@@ -1928,6 +1928,7 @@ bool Item_Struct::IsEquipable(uint16 Race, uint16 Class_) const
                }
                Races_ >>= 1;
        }
+        if (Race_ == 69) {IsRace = true;} // davood
        return (IsRace && IsClass);
 }
 
diff --git a/common/races.cpp b/common/races.cpp
index d088ce1..69878d1 100644
--- a/common/races.cpp
+++ b/common/races.cpp
@@ -106,6 +106,8 @@ uint32 GetArrayRace(uint16 race) {
                        return Array_Race_FROGLOK;
                case DRAKKIN:
                        return Array_Race_DRAKKIN;
+                case ALAKAMIN_HUMAN_PIRATE:
+                        return Array_Race_SHROUD; //  davood
                default:
                        return Array_Race_UNKNOWN;
        }
diff --git a/common/races.h b/common/races.h
index 2c360e9..d610c86 100644
--- a/common/races.h
+++ b/common/races.h
@@ -54,6 +54,7 @@
 #define EMU_RACE_NPC        131069 // was 65533
 #define EMU_RACE_PET        131070 // was 65534
 #define EMU_RACE_UNKNOWN 131071 // was 65535
+#define ALAKAMIN_HUMAN_PIRATE 341 // davood
 
 
 #define human_1                        1
@@ -72,6 +73,7 @@
 #define vahshir_1                8192
 #define rall_1                        16384 //froglok?
 #define drakkin_1                32768
+#define shroud_1                65536 //davood
 
 const char* GetRaceName(uint16 race);
 
@@ -97,8 +99,10 @@ inline uint32 GetRaceBitmask(uint16 race) { return uint32(pow(2.0f, float(GetArr
 #define Array_Race_DRAKKIN                16
 #define Array_Race_NPC                        17
 #define Array_Race_PET                        18
+#define Array_Race_SHROUD                69 // lets see if this works (Davood)
 #define Count_Array_Race                19 // used for array defines, must be the max + 1
-#define PLAYER_RACE_COUNT                16 // The count of all player races
+#define PLAYER_RACE_COUNT                17 // davood
+//#define PLAYER_RACE_COUNT                16 // The count of all player races
 
 /*
 
diff --git a/zone/client.cpp b/zone/client.cpp
index 96eb1a3..b183661 100644
--- a/zone/client.cpp
+++ b/zone/client.cpp
@@ -6264,6 +6264,7 @@ void Client::SendStatsWindow(Client* client, bool use_window)
                case 130: race_Name = "Vah Shir";        break;
                case 330: race_Name = "Froglok";        break;
                case 522: race_Name = "Drakkin";        break;
+                case 341: race_Name = "Human_Pirate"; break; // davood
                default: break;
        }
        /*##########################################################
@@ -7116,6 +7117,8 @@ const char* Client::GetRacePlural(Client* client) {
                        return "Frogloks"; break;
                case DRAKKIN:
                        return "Drakkin"; break;
+                case ALAKAMIN_HUMAN_PIRATE:
+                        return "Human_Pirate"; break; //davood
                default:
                        return "Races"; break;
        }

Just replace Human Pirate with Gnolls, and Gnoll info, must say, the Gnolls look cool as a playable race!! Thanks Davood!!!

Fadedspirit 10-20-2013 04:13 PM

Quote:

Originally Posted by rencro (Post 225108)
Your Gnolls are not properly defined in the code, I replaced my Human pirates with Gnolls and now my Human Pirates have the same behavior you are talking about..But Gnolls work fine now..

Perhaps something was missed when you patched it, here is the diff for me, numbers may not line up as I have lots of other custom stuff in:

Code:

diff --git a/common/Item.cpp b/common/Item.cpp
index 1f74b1b..9e15f48 100644
--- a/common/Item.cpp
+++ b/common/Item.cpp
@@ -1928,6 +1928,7 @@ bool Item_Struct::IsEquipable(uint16 Race, uint16 Class_) const
                }
                Races_ >>= 1;
        }
+        if (Race_ == 69) {IsRace = true;} // davood
        return (IsRace && IsClass);
 }
 
diff --git a/common/races.cpp b/common/races.cpp
index d088ce1..69878d1 100644
--- a/common/races.cpp
+++ b/common/races.cpp
@@ -106,6 +106,8 @@ uint32 GetArrayRace(uint16 race) {
                        return Array_Race_FROGLOK;
                case DRAKKIN:
                        return Array_Race_DRAKKIN;
+                case ALAKAMIN_HUMAN_PIRATE:
+                        return Array_Race_SHROUD; //  davood
                default:
                        return Array_Race_UNKNOWN;
        }
diff --git a/common/races.h b/common/races.h
index 2c360e9..d610c86 100644
--- a/common/races.h
+++ b/common/races.h
@@ -54,6 +54,7 @@
 #define EMU_RACE_NPC        131069 // was 65533
 #define EMU_RACE_PET        131070 // was 65534
 #define EMU_RACE_UNKNOWN 131071 // was 65535
+#define ALAKAMIN_HUMAN_PIRATE 341 // davood
 
 
 #define human_1                        1
@@ -72,6 +73,7 @@
 #define vahshir_1                8192
 #define rall_1                        16384 //froglok?
 #define drakkin_1                32768
+#define shroud_1                65536 //davood
 
 const char* GetRaceName(uint16 race);
 
@@ -97,8 +99,10 @@ inline uint32 GetRaceBitmask(uint16 race) { return uint32(pow(2.0f, float(GetArr
 #define Array_Race_DRAKKIN                16
 #define Array_Race_NPC                        17
 #define Array_Race_PET                        18
+#define Array_Race_SHROUD                69 // lets see if this works (Davood)
 #define Count_Array_Race                19 // used for array defines, must be the max + 1
-#define PLAYER_RACE_COUNT                16 // The count of all player races
+#define PLAYER_RACE_COUNT                17 // davood
+//#define PLAYER_RACE_COUNT                16 // The count of all player races
 
 /*
 
diff --git a/zone/client.cpp b/zone/client.cpp
index 96eb1a3..b183661 100644
--- a/zone/client.cpp
+++ b/zone/client.cpp
@@ -6264,6 +6264,7 @@ void Client::SendStatsWindow(Client* client, bool use_window)
                case 130: race_Name = "Vah Shir";        break;
                case 330: race_Name = "Froglok";        break;
                case 522: race_Name = "Drakkin";        break;
+                case 341: race_Name = "Human_Pirate"; break; // davood
                default: break;
        }
        /*##########################################################
@@ -7116,6 +7117,8 @@ const char* Client::GetRacePlural(Client* client) {
                        return "Frogloks"; break;
                case DRAKKIN:
                        return "Drakkin"; break;
+                case ALAKAMIN_HUMAN_PIRATE:
+                        return "Human_Pirate"; break; //davood
                default:
                        return "Races"; break;
        }

Just replace Human Pirate with Gnolls, and Gnoll info, must say, the Gnolls look cool as a playable race!! Thanks Davood!!!

You see why i wanted gnoll?

Also, can you supply code blocks instead of diffs ^-^. If not i'll just pick through it by hand :O. I hate using diffs :(.

But yea, i've already done all this without looking at davood's code lol. Maybe i messed up somewhere.

Fadedspirit 10-20-2013 04:22 PM

There's something else wrong, I rechecked 3 times now. I've already done all that lol. Still has the same issue, he changed something else somewhere :(.

[edit]: I also just backed up my stuff, and grabbed races.h, races.cpp, client.cpp, from his server setup. Still doesn't work lol, time to revert my code xD!

Davood 10-20-2013 04:57 PM

I will list off the sections I have changed:

(bolded)file name
(regular text) functions changed

bot.cpp (2 changes)
[search for the following]
bool Bot::IsValidRaceClassCombo() {
[search for the following]
std::string Bot::RaceIdToString(uint16 raceId) {

client.cpp (2 changes)
[search for the following]
char* Client::GetRacePlural(Client* client) {
[search for the following]
// Race
std::string race_Name = itoa(GetRace());
switch(GetRace())
{

item.cpp (1 change)
[search for the following]
bool Item_Struct::IsEquipable(uint16 Race, uint16 Class_) const

pets.cpp (1 change)
[search for the following]
//handle beastlord pet appearance
if(record.petnaming == 2)
{
switch(GetBaseRace())
{

race.h
I replaced 100% of this file

races.cpp (1 change)
[search for the following]
uint32 GetArrayRace(uint16 race) {


your IDE should be helpful in figuring out what the actual code blocks are that you need to copy.

i pullled those segments without looking at the code.. i have some offline notes. I don't have time right now to actually prepare the code blocks.. but maybe later tonight I can do that if you really want.

An easier solution is to take 100% of my code, and revert attack*.* pets.* and bots.* back to eqemu default. or keep them. your choice.


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

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