This is the error code:
The exception packet_system.cpp here's the code for reference, it's stopping at the following statement:Unhandled exception at 0x00F213FA in DSGame-server.exe: 0xC0000005: Access violation reading location 0x00000000.
If there is a handler for this exception, the program may be safely continued.
ShowDebug(CL_CYAN"Building invite packet to send to lobby server for %s\n" CL_RESET, zoneutils::GetCharFromWorld(charid, targid)->GetName());
Code: Select all
void SmallPacket0x06E(map_session_data_t* session, CCharEntity* PChar, CBasicPacket data)
{
uint32 charid = RBUFL(data, 0x04);
uint16 targid = RBUFW(data, 0x08);
// cannot invite yourself
if (PChar->id == charid)
return;
if (jailutils::InPrison(PChar))
{
// Initiator is in prison. Send error message.
PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, 0, 0, 316));
return;
}
switch (RBUFB(data, (0x0A)))
{
case 0: // party - must by party leader or solo
if (PChar->PParty == nullptr || PChar->PParty->GetLeader() == PChar)
{
if (PChar->PParty && PChar->PParty->members.size() > 5)
{
PChar->pushPacket(new CMessageStandardPacket(PChar, 0, 0, 23));
break;
}
CCharEntity* PInvitee = nullptr;
if (targid != 0)
{
PInvitee = zoneutils::GetCharFromWorld(charid, targid);
}
if (PInvitee)
{
ShowDebug(CL_CYAN"%s sent party invite to %s\n" CL_RESET, PChar->GetName(), PInvitee->GetName());
//make sure invitee isn't dead or in jail, they aren't a party member and don't already have an invite pending, and your party is not full
if (PInvitee->isDead() || jailutils::InPrison(PInvitee) || PInvitee->InvitePending.id != 0 || PInvitee->PParty != nullptr)
{
ShowDebug(CL_CYAN"%s is dead, in prision, has a pending invite, or is already in a party\n" CL_RESET, PInvitee->GetName());
PChar->pushPacket(new CMessageStandardPacket(PChar, 0, 0, 23));
break;
}
if (PInvitee->StatusEffectContainer->HasStatusEffect(EFFECT_LEVEL_SYNC))
{
ShowDebug(CL_CYAN"%s has level sync, unable to send invite\n" CL_RESET, PInvitee->GetName());
PChar->pushPacket(new CMessageStandardPacket(PChar, 0, 0, 236));
break;
}
PInvitee->InvitePending.id = PChar->id;
PInvitee->InvitePending.targid = PChar->targid;
PInvitee->pushPacket(new CPartyInvitePacket(charid, targid, PChar, INVITE_PARTY));
ShowDebug(CL_CYAN"Sent party invite packet to %s\n" CL_RESET, PInvitee->GetName());
if (PChar->PParty && PChar->PParty->GetSyncTarget())
PInvitee->pushPacket(new CMessageStandardPacket(PInvitee, 0, 0, 235));
}
else
{
ShowDebug(CL_CYAN"Building invite packet to send to lobby server for %s\n" CL_RESET, zoneutils::GetCharFromWorld(charid, targid)->GetName());
//on another server (hopefully)
uint8 packetData[12];
WBUFL(packetData, 0) = charid;
WBUFW(packetData, 4) = targid;
WBUFL(packetData, 6) = PChar->id;
WBUFW(packetData, 10) = PChar->targid;
message::send(MSG_PT_INVITE, packetData, sizeof packetData, new CPartyInvitePacket(charid, targid, PChar, INVITE_PARTY));
ShowDebug(CL_CYAN"Sent invite packet to lobby server for %s\n" CL_RESET, zoneutils::GetCharFromWorld(charid, targid)->GetName());
}
}
else //in party but not leader, cannot invite
{
ShowDebug(CL_CYAN"%s is not party leader, cannot send invite\n" CL_RESET, PChar->GetName());
PChar->pushPacket(new CMessageStandardPacket(PChar, 0, 0, 21));
}
break;
case 5: // alliance - must be unallied party leader or alliance leader of a non-full alliance
if (PChar->PParty && PChar->PParty->GetLeader() == PChar &&
(PChar->PParty->m_PAlliance == nullptr ||
(PChar->PParty->m_PAlliance->getMainParty() == PChar->PParty && PChar->PParty->m_PAlliance->partyCount() < 3)))
{
CCharEntity* PInvitee = nullptr;
if (targid != 0)
{
PInvitee = zoneutils::GetCharFromWorld(charid, targid);
}
if (PInvitee)
{
ShowDebug(CL_CYAN"%s sent party invite to %s\n" CL_RESET, PChar->GetName(), PInvitee->GetName());
//make sure intvitee isn't dead or in jail, they are an unallied party leader and don't already have an invite pending
if (PInvitee->isDead() || jailutils::InPrison(PInvitee) || PInvitee->InvitePending.id != 0 ||
PInvitee->PParty == nullptr || PInvitee->PParty->GetLeader() != PInvitee || PInvitee->PParty->m_PAlliance)
{
ShowDebug(CL_CYAN"%s is dead, in prision, has a pending invite, or is already in a party/alliance\n" CL_RESET, PInvitee->GetName());
PChar->pushPacket(new CMessageStandardPacket(PChar, 0, 0, 23));
break;
}
if (PInvitee->StatusEffectContainer->HasStatusEffect(EFFECT_LEVEL_SYNC))
{
ShowDebug(CL_CYAN"%s has level sync, unable to send invite\n" CL_RESET, PInvitee->GetName());
PChar->pushPacket(new CMessageStandardPacket(PChar, 0, 0, 236));
break;
}
PInvitee->InvitePending.id = PChar->id;
PInvitee->InvitePending.targid = PChar->targid;
PInvitee->pushPacket(new CPartyInvitePacket(charid, targid, PChar, INVITE_ALLIANCE));
ShowDebug(CL_CYAN"Sent party invite packet to %s\n" CL_RESET, PInvitee->GetName());
}
else
{
ShowDebug(CL_CYAN"(Alliance)Building invite packet to send to lobby server for %s\n" CL_RESET, zoneutils::GetCharFromWorld(charid, targid)->GetName());
//on another server (hopefully)
uint8 packetData[12];
WBUFL(packetData, 0) = charid;
WBUFW(packetData, 4) = targid;
WBUFL(packetData, 6) = PChar->id;
WBUFW(packetData, 10) = PChar->targid;
message::send(MSG_PT_INVITE, packetData, sizeof packetData, new CPartyInvitePacket(charid, targid, PChar, INVITE_ALLIANCE));
ShowDebug(CL_CYAN"(Alliance)Sent invite packet to lobby server for %s\n" CL_RESET, zoneutils::GetCharFromWorld(charid, targid)->GetName());
}
}
break;
default:
ShowError(CL_RED"SmallPacket0x06E : unknown byte <%.2X>\n" CL_RESET, RBUFB(data, (0x0A)));
break;
}
return;
}
Here are my config files just in case that could be messing something up =x
Login_darkstar.conf:
Code: Select all
#Darkstar login server conf
#--------------------------------
#login server parametres
#--------------------------------
#Time-stamp format which will be printed before all messages.
#Can at most be 20 characters long.
#Common formats:
# %I:%M:%S %p (hour:minute:second 12 hour, AM/PM format)
# %H:%M:%S (hour:minute:second, 24 hour format)
# %d/%b/%Y (day/Month/year)
#For full format information, consult the strftime() manual.
timestamp_format: [%d/%b %H:%M]
#If redirected output contains escape sequences (color codes)
stdout_with_ansisequence: no
#Makes server output more silent by ommitting certain types of messages:
#Standard = 1
#Status = 2
#Info = 4
#Notice = 8
#Warn = 16
#Debug = 32
#Error = 64
#Fatal Error = 128
#SQL = 256
#Lua = 512
#Example: "console_silent: 7" Hides standard, status and information messages (1+2+4)
console_silent: 0
#--------------------------------
#SQL parameters
#--------------------------------
mysql_host: 127.0.0.1
mysql_port: 3306
mysql_login: root
mysql_password: MYPASSWORD --yes i have my actual password here, just not sharing it.
mysql_database: dspdb
#Search Server Port
search_server_port: 54002
#Expansion Icons - 2 Bytes
#
#Byte 1 - Zilart to A Shantotto Ascension
#00000000 Bit0 - Not Used - Original FFXI bit
#00000010 Bit1 - Enables Rise of Zilart Icon
#00000100 Bit2 - Enables Chains of Promathia Icon
#00001000 Bit3 - Enables Treasures of Aht Urhgan Icon
#00010000 Bit4 - Enables Wings of The Goddess
#00100000 Bit5 - Enables A Crystalline Prophecy Icon
#01000000 Bit6 - Enables A Moogle Kupod'Etat Icon
#10000000 Bit7 - Enables A Shantotto Ascension Icon
#
#Byte 2 - Vision of Abyssea to Seekers of Adoulin
#00000001 Bit0 - Enables Vision of Abyssea
#00000010 Bit1 - Enables Scars of Abyssea
#00000100 Bit2 - Enables Heroes of Abyssea
#00001000 Bit3 - Enables Seekers of Adoulin
#00010000 Bit4 - Not Used - Future expansion
#00100000 Bit5 - Not Used - Future expansion
#01000000 Bit6 - Not Used - Future expansion
#10000000 Bit7 - Not Used - Future expansion
expansions: 6
#Server name (not longer than 15 characters)
servername: KeppersClinic
#Central message server settings (ensure these are the same on both all map servers and the central (lobby) server
msg_server_port: 54230
msg_server_ip: 127.0.0.1
Code: Select all
#Darkstar map server conf
#--------------------------------
#map server parameters
#--------------------------------
#map server port
map_port: 54230
#Time-stamp format which will be printed before all messages.
#Can at most be 20 characters long.
#Common formats:
# %I:%M:%S %p (hour:minute:second 12 hour, AM/PM format)
# %H:%M:%S (hour:minute:second, 24 hour format)
# %d/%b/%Y (day/Month/year)
#For full format information, consult the strftime() manual.
timestamp_format: [%d/%b] [%H:%M:%S]
#If redirected output contains escape sequences (color codes)
stdout_with_ansisequence: no
#Makes server output more silent by ommitting certain types of messages:
#Standard = 1
#Status = 2
#Info = 4
#Notice = 8
#Warn = 16
#Debug = 32
#Error = 64
#Fatal Error = 128
#SQL = 256
#Lua = 512
#Example: "console_silent: 7" Hides standard, status and information messages (1+2+4)
console_silent: 0
#--------------------------------
#SQL parameters
#--------------------------------
mysql_host: 127.0.0.1
mysql_port: 3306
mysql_login: root
mysql_password: MYPASSWORD
mysql_database: dspdb
#--------------------------------
#Packet settings
#--------------------------------
buff_maxsize: 1750
max_time_lastupdate: 60
#--------------------------------
#Game settings
#--------------------------------
#Minimal number of 0x3A packets which uses for detect lightluggage (set 0 for disable)
lightluggage_block: 4
exp_rate: 2.0
exp_loss_rate: 1.0
exp_party_gap_penalties: 1
fov_party_gap_penalties: 1
fov_allow_alliance: 1
vanadiel_time_offset: 0
#Percentage of experience normally lost to keep upon death. 0 means full loss, where 1 means no loss.
exp_retain: 1
#Minimum level at which experience points can be lost
exp_loss_level: 4
#Enable/disable Level Sync
level_sync_enable: 1
#Enable/disable jobs other than BST and RNG having widescan
all_jobs_widescan: 1
#Modifier to apply to player speed. 0 means default speed of 40, where 20 would mean speed 60 or -10 would mean speed 30.
speed_mod: 0
#Modifier to apply to agro'd monster speed. 0 means default speed of 40, where 20 would mean speed 60 or -10 would mean speed 30.
mob_speed_mod: 0
#Allows you to manipulate the constant multiplier in the skill-up rate formulas, having a potent effect on skill-up rates.
skillup_chance_multiplier: 2.5
craft_chance_multiplier: 2.6
#Multiplier for skillup amounts. Using anything above 1 will break the 0.5 cap, the cap will become 0.9 (For maximum, set to 5)
skillup_amount_multiplier: 1
craft_amount_multiplier: 1
#Crafting Factors. DO NOT change defaults without verifiable proof that your change IS how retail does it. Myths need to be optional.
craft_day_matters: 1
craft_moonphase_matters: 0
craft_direction_matters: 0
#Adjust rate of TP gain for mobs and players. Acts as a multiplier, so default is 1.
mob_tp_multiplier: 1.0
player_tp_multiplier: 1.0
#Adjust max HP pool for NMs, regular mobs, players. Acts as a multiplier, so default is 1.
nm_hp_multiplier: 1.0
mob_hp_multiplier: 1.0
player_hp_multiplier: 1.0
#Adjust max MP pool for NMs, regular mobs, and players. Acts as a multiplier, so default is 1.
nm_mp_multiplier: 1.0
mob_mp_multiplier: 1.0
player_mp_multiplier: 1.0
#Sets the fraction of MP a subjob provides to the main job. Retail is half and this acts as a divisor so default is 2
sj_mp_divisor: 2.0
#Adjust base stats (str/vit/etc.) for NMs, regular mobs, and players. Acts as a multiplier, so default is 1.
nm_stat_multiplier: 1.0
mob_stat_multiplier: 1.0
player_stat_multiplier: 1.0
#Adjust mob drop rate. Acts as a multiplier, so default is 1.
drop_rate_multiplier: 1.0
#All mobs drop this much extra gil per mob LV even if they normally drop zero.
all_mobs_gil_bonus: 0
#Maximum total bonus gil that can be dropped. Default 9999 gil.
max_gil_bonus: 9999
#Allows parry, block, and guard to skill up regardless of the action occuring.
# Bin Dec Note
# 0000 0 Classic
# 0001 1 Parry
# 0010 2 Block
# 0100 4 Guard
# 0111 7 Parry, Block, & Guard
newstyle_skillups: 7
#Globally adjusts ALL battlefield level caps by this many levels.
Battle_cap_tweak: 0
#Enable/disable level cap of Chains of Promathia mission battlefields stored in database.
CoP_Battle_cap: 1
#Max allowed merits points players can hold
# 10 classic
# 30 abyssea
max_merit_points: 30
#Minimum time between uses of yell command (in seconds).
yell_cooldown: 1
#Audit[logging] settings
audit_chat: 0
audit_say: 0
audit_shout: 0
audit_tell: 0
audit_yell: 0
audit_linkshell: 0
audit_party: 0
#Central message server settings (ensure these are the same on both all map servers and the central (lobby) server
msg_server_port: 54230
msg_server_ip: 127.0.0.1
Code: Select all
#Darkstar search server config
#--------------------------------
#SQL parameters
#--------------------------------
mysql_host: 127.0.0.1
mysql_port: 3306
mysql_login: root
mysql_password: MYPASSWORD
mysql_database: dspdb
# Enabled = 1, Disabled = 0
expire_auctions: 1
# Expire items older than this number of days
expire_days: 3
# Interval is in seconds, default is one hour
expire_interval: 3600