EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Archive::Bugs (https://www.eqemulator.org/forums/forumdisplay.php?f=622)
-   -   Req: Update to starting_items table (https://www.eqemulator.org/forums/showthread.php?t=5967)

Trumpcard 03-16-2003 09:50 AM

No, but character backups changed recently...

Put these in your database...

CREATE TABLE player_corpses_backup (
id int(11) unsigned NOT NULL auto_increment,
charid int(11) unsigned NOT NULL default '0',
parent_corpse_id int(11) unsigned NOT NULL default '0',
zoneid smallint(11) NOT NULL default '0',
x float NOT NULL default '0',
y float NOT NULL default '0',
z float NOT NULL default '0',
heading float NOT NULL default '0',
data blob NOT NULL,
timeofdeath datetime NOT NULL,
timeofdelete datetime NOT NULL default '0',
PRIMARY KEY (id),
KEY charid (charid)
) TYPE=MyISAM;

CREATE TABLE character_backup (
id int(11) unsigned NOT NULL auto_increment,
backupreason tinyint(3) unsigned not null default '0',
charid int(11) unsigned not null default '0',
account_id int(11) unsigned NOT NULL default '0',
name varchar(64) NOT NULL default '',
profile blob,
guild int(11) unsigned default '0',
guildrank tinyint(2) unsigned default '5',
x float NOT NULL default '0',
y float NOT NULL default '0',
z float NOT NULL default '0',
zoneid smallint(5) not null default '0',
alt_adv blob,
ts timestamp(14),
PRIMARY KEY (id),
KEY name (name),
KEY charid (charid)
) TYPE=MyISAM;


Other than that, I'm not 100% sure

killspree 03-16-2003 11:50 PM

Make sure the character_backup table has the field backupreason

That was causing crashes for me until I added it in.

Drawde 03-17-2003 03:09 AM

Thanks for the info, that seems to have fixed it.
I've put made a .sql script to update these tables -
http://www.edwardpinniger.bctalk.net...atebackups.sql
also an items DB compatible with the new format -
http://www.edwardpinniger.bctalk.net/eq/items_44dr1.zip

Trumpcard 03-17-2003 03:45 AM

Oh Drawde, I figured out whats happening to low end damage... Turns out its a casting problem (surprise surprise)

Heres the offender..

int max_hit = weapon_damage * ((GetSTR() + GetSkill(skillinuse)+ mylevel) / 100);

All these fields are integers.. What happens is that if STR+SKILL+LEVEL < 100, then the total is a 0, and you get 0 * weapon_damage, so your max_hit will always be 0.

What I've done to fix this is to cast the 3 variables to floats, then when they get jammed back into max_hit, it drops the remainder, but you dont lose the <1 case.

The new field is
int max_hit = weapon_damage * (( (float)GetSTR() + (float)GetSkill(skillinuse)+ (float)mylevel) / 100);

A wrote a little driver stub to test this, heres the before and after with a Str of 75, skill of 0, level 1 and weapon_damage of 8.

BEFORE
Damage is : 2
Damage is : 2
Damage is : 2
Damage is : 2
Damage is : 2
Damage is : 2
Damage is : 2
Damage is : 2
Damage is : 2
Damage is : 2
Damage is : 2

AFTER
Damage is : 6
Damage is : 6
Damage is : 2
Damage is : 3
Damage is : 3
Damage is : 6
Damage is : 2
Damage is : 4
Damage is : 4
Damage is : 4
Damage is : 3

a_Guest03 03-17-2003 06:28 AM

Yaaaaay, Trump :) I hated not having any weapon skills... It takes a LOT of fun out of the game when mobs hit you all the time and you can't do any damage.

Drawde 03-17-2003 08:13 AM

So that's why the skill level needed for the damage output to work properly varied (sometimes it was 10, sometimes 15, 20, or 25),
it was due to the varying STR of my characters. Couldn't work out why it was varying so much, I thought it was version-related..

Anyway, great work on finally fixing this!


All times are GMT -4. The time now is 05:29 PM.

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