Log in

View Full Version : Start_Zones Titanium Manual Entry Help


Figback65
02-11-2016, 05:17 AM
Ive read through the forums and on wiki and ive seen several times that the Starting zones for titanium is hardcoded. So I have been working with the code and I got most of it working but I noticed even in the entries already in the code for default bind point does not work. I tested it with good erudites, it has them start in city and when they die they goto Tox, this does not work, they go right to their starting point.

Unedited worlddb.cpp
void WorldDatabase::SetTitaniumDefaultStartZone(PlayerP rofile_Struct* in_pp, CharCreate_Struct* in_cc)
{
switch (in_cc->start_zone)
{
case 0: // Erudin
{
if (in_cc->deity == 203) // Cazic-Thule Erudites go to Paineel
{
in_pp->zone_id = 75; // paineel
in_pp->binds[0].zoneId = 75; // broke
}
else
{
in_pp->zone_id = 24; // erudnext start zone
in_pp->binds[0].zoneId = 38; // tox does not go to tox broke
}
break;
}

Edited worlddb.cpp
case 1: // Qeynos
{
if (in_cc->deity == 201)
{
in_pp->x = -370.89; // works
in_pp->y = 361.61; // works
in_pp->z = -38.22; // works
in_pp->zone_id = 45; // qcat works
in_pp->binds[0].zoneId = 2; // broke
in_pp->binds[0].x = 120; // broke
in_pp->binds[0].y = 406.14; // broke
in_pp->binds[0].z = 1.88; // broke
}
else
{
in_pp->zone_id = 2; // qeynos2
in_pp->binds[0].zoneId = 2; // qeynos2 broke
}
break;
}

My manual set loc for starting X Y Z and zone_id = 45 works. The binds.zoneID, binds.x, binds.y, binds.z does not take hold. I have tried all kinds of variations.

I have deleted my starting_zones entries to make sure it loads defaults, which is the hardcode.

I am on titanium, thus why I am hardcoding it.

Any idea why the binds are not taking hold for the bind points and zone?

Figback65
02-11-2016, 05:54 AM
Well I also found this

client.cpp
/* Will either be the same as home or tutorial */
pp.binds[0].zoneId = pp.zone_id;
pp.binds[0].x = pp.x;
pp.binds[0].y = pp.y;
pp.binds[0].z = pp.z;
pp.binds[0].heading = pp.heading;

So now I am assuming using binds[0] is pulling this and automatically setting the bind zoneid,x,y,z right to the home point that is set manually.

Is there a way to individually set the bind points in worlddb.cpp, I assume my coding is wrong is the problem.

Figback65
02-11-2016, 06:22 AM
Fixed it.

commented out this is client.cpp so it stopped overwriting entries.

client.cpp
/* Will either be the same as home or tutorial */
// pp.binds[0].zoneId = pp.zone_id;
// pp.binds[0].x = pp.x;
// pp.binds[0].y = pp.y;
// pp.binds[0].z = pp.z;
// pp.binds[0].heading = pp.heading;

now this works in worlddb.cpp

worlddb.cpp
case 1: // Qeynos
{
if (in_cc->deity == 201)
{
in_pp->x = -370.89;
in_pp->y = 361.61;
in_pp->z = -38.22;
in_pp->zone_id = 45; // qcat
in_pp->binds[0].zoneId = 2;
in_pp->binds[0].x = 120;
in_pp->binds[0].y = 406.14;
in_pp->binds[0].z = 1.88;
}
else
{
in_pp->zone_id = 2; // qeynos2
in_pp->binds[0].zoneId = 2; // qeynos2
}
break;
}

For anybody that wants to manually enter. This also fixes the issue of in_pp->binds[0].zoneId = 2; and like entries for all the towns, not being able to work because the code in client.cpp was overwriting it.

Of course rebuild

provocating
02-12-2016, 12:41 AM
Yeah it is a pain. Same thing with the character create combinations for titanium, which is also controlled in the source.