Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Warhammer Online Emulator + Src

Initiate Mage
Joined
Feb 26, 2011
Messages
18
Reaction score
2
no problem :) thanks anyway :)


EDIT: No need for 1.3.1 currently, as my own PrivateServer Project is terminated :) I will concentrate on helping the community now... still looking for f_dump_statics
 
Last edited:
Initiate Mage
Joined
Feb 26, 2011
Messages
18
Reaction score
2
As I also wrote in a PM in the Wrath of Reckoning Forum, I would be honored to help :) I am not a c++ coder but able to learn into problems and have experience with the management of WoW and Aion Emus :)

I would be really glad to join the WOR team and help wherever I am able to :)

---------- Post added at 09:30 AM ---------- Previous post was at 09:24 AM ----------

Leo...how did you get the offset of the zones that are alredy fixed? (F_DUMP_Statics just seems to be a client_com that goes with a certain on_dump_statics, that kind of "changes" the offsets" - but I have no clue how to reach that via client

Code:
typedef void (ClientCom::*ClientHandler)();
static ClientHandler Handlers[0xFF+1] = {

....

&ClientCom::onDumpStatics , // "F_DUMP_STATICS"

Code:
void ClientCom::onDumpStatics() // Changing Offset
{
    uint32 unk1;
    uint16 unk2, unk3, offsetX, offsetY;
    m_readBuffer >> unk1 >> unk2 >> offsetX >> unk3 >> offsetY;

	if(m_Plr && ( m_Plr->GetOffX() != offsetX || m_Plr->GetOffY() != offsetY) )
		m_Plr->onPlayerMovementOffset(offsetX,offsetY);

}

Code:
void Player::onPlayerMovementOffset(uint16 offsetX,uint16 offsetY)
{
	if(offsetX > 998)
		offsetX = 998;
	if(offsetY > 998)
		offsetY = 998;

	m_OffSetX = offsetX;
	m_OffSetY = offsetY;

    m_zone_x = m_OffSetX << 12;
    m_zone_y = m_OffSetY << 12;

	ConvertWorldPos();


)...if it's just work of trying out, I can do that with some areas if you want :)


EDIT: hmmm, mayby we can get any log of that clientcom, then we propably would just have to take the two offset variables

UPDATE: At least I found the reason, why there WAS the cloth bug fixed but it isn't anymore... will still be difficult to integrate that into the current src, but at least an approach

---------- Post added at 11:02 AM ---------- Previous post was at 10:23 AM ----------

difficult, or even undoable. In the older revisions, there were still "eqipped_" slots in the character database and they were directly accessed by the server, now the howle process is a lot more complicate and at the moment I have no clue how to integrate these slots in this complicate process....
 
Last edited:
Initiate Mage
Joined
Feb 26, 2011
Messages
18
Reaction score
2
I didn't get that far, as I am no real coder :( I just noticed, that - in the old emus where the bug didn't exist - the equipment directly was read and written in/from the player database. In the old src, it is really easy to find the lines, where the server reads or writes them. Those squerys don't exist anymore, the howle code is much mure complicate at this point and I can't really follow the process of the player eq

---------- Post added at 02:05 PM ---------- Previous post was at 02:04 PM ----------

Are you sure, that the problem is only located in player.h ? That would make it more easy
 
Initiate Mage
Joined
Feb 26, 2011
Messages
18
Reaction score
2
As I wrote, I was not able to answer your PM, but if you want, you can write me a PM with your msn contact and I will contact you there :)
 
Experienced Elementalist
Joined
Apr 17, 2006
Messages
217
Reaction score
36
This code need to be converted from old emu to new

First is for Players Delete Item ->
Code:
void Item::Delete()
{
	Query* q = StatusDatabase::createQuery();
	std::stringstream ssSQL;
	ssSQL << "DELETE FROM player_items WHERE guid=";
	ssSQL << GetGuid() << ")";
    q->setQueryText(ssSQL.str());
    StatusDatabase::executeSynchronousQuery(q);
	delete q;
	delete this;
}

From here begin clothes to show for other players -> ->

player.cpp (need to be convert .. alot errors )

	bool del=false;
    for (int i=0; i<DorConstants::NumberOfEquipSlots; i++)
	{
        equippedItems[i]=q->getUint32();
		if( equippedItems[i] )
		{
			ItemProto * item = sStorage->GetItemByEntry( equippedItems[i] );
			if( Convert[i] && item)
			{
				stringstream zz;
				zz << "INSERT INTO `player_items` (guid,playerid,entry,slot_id,counts) VALUES(";
				zz << sStorage->GenerateGuid( TYPEID_ITEM ) << ",";
				zz << GetPlayerID() << ",";
				zz << item->entry << ",";
				zz << Convert[i] << ",";
				zz << "1" << ")";

				Query* d = StatusDatabase::createQuery();
				d->setQueryText(zz.str());
				StatusDatabase::executeSynchronousQuery(d);
			}
			del=true;
			equippedItems[i]=0;
		}
	}
    delete q;

	if(del)
	{
		Query* c = StatusDatabase::createQuery();
		stringstream zz;
		zz << "UPDATE `character` SET equipped_1=0,equipped_2=0,equipped_3=0,equipped_4=0,equipped_5=0,equipped_6=0,equipped_7=0,equipped_8=0,equipped_9=0,equipped_10=0,equipped_11=0,equipped_12=0,equipped_13=0,equipped_14=0,equipped_15=0,equipped_16=0,equipped_17=0,equipped_18=0,equipped_19=0,equipped_20=0 WHERE character_id="<<m_playerID;
		c->setQueryText(zz.str());
		StatusDatabase::executeSynchronousQuery(c);
	}
	m_ItemInterface = new ItemInterface(this);
	m_ItemInterface->Load();

player.h - added 

-> 	ItemInterface * m_ItemInterface;       // this is in enw emu
	std::map<uint16,Player*> m_inrange;  // neet to be added - no give errors when build client


WorldStatsDatabase.cpp ->

std::vector<CharacterInfo*>* StatusDatabase::loginCharList(uint32 accountID)
{
    Query* q = GLOBAL_STATUS_DB->createQuery();

    std::stringstream ssSQL;
    ssSQL << "SELECT character_id, name, model, zone, equipped_1, level, career, realm, heldleft, race, last_time_played FROM `character` WHERE account_id=" << accountID;
	q->setQueryText(ssSQL.str());

    GLOBAL_STATUS_DB->executeSynchronousQuery(q); ///- this query can be executed synchronously as time isn't critical
	// q->fetchRow();

    std::vector<CharacterInfo*>* v = new std::vector<CharacterInfo*>();
    while (q->fetchRow())
    {
		
        CharacterInfo* ci = new CharacterInfo;
        ci->ID = q->getUint32();

        std::ostringstream oss;

        oss << "<SummaryData version=\"9\" blockTypeId=\"1\">";
        oss << "<Name>";
        oss << q->getString();
        oss << "</Name>";
        oss << "<Imagenum>";
        oss << q->getUint32();
        oss << "</Imagenum>";
        oss << "<Region>";
        oss << q->getUint32();
        oss << "</Region>";
        oss << "<WornList capacity=\"1\">"; //: note voluntarily cut. Goes to 15 on commercial server
        oss << "<Worn index=\"1\">" << q->getUint32() << "</Worn>";
        oss << "</WornList>";
        oss << "<ReadiedList capacity=\"5\">";
        oss << "<Readied index=\"0\">1916</Readied>"; //we still need to figure out what is readied.
        oss << "</ReadiedList>";
        oss << "<Level>";
        oss << q->getUint32();
        oss << "</Level>";
        oss << "<CharClass>";
        oss << q->getUint32();
        oss << "</CharClass>";
        oss << "<Realm>";
        oss << q->getUint32();
        oss << "</Realm>";
        oss << "<HeldLeft>";
        oss << q->getUint32();
        oss << "</HeldLeft>";
        oss << "<Race>";
        oss << q->getUint32();
        oss << "</Race>";
        oss << "<FeatureHigh>2147483648</FeatureHigh>"; //??
        oss << "<FeatureLow>1495468152</FeatureLow>";
        oss << "<RevisionId>97769940</RevisionId>";
        oss << "</SummaryData>";

        ci->xmlDesc.assign(oss.str()); 
        ci->lastTimePlayed = q->getUint32();

        v->push_back(ci);
    }


    delete q;
    return v;
}

ADDED NEW Charcaters SQL :
 
Last edited:
Initiate Mage
Joined
Feb 26, 2011
Messages
18
Reaction score
2
Cool, this approches us alot to our aim :) ....but still needs code knowlege
 
Last edited:
Initiate Mage
Joined
Apr 23, 2008
Messages
47
Reaction score
1
did u guys check the old source i gave you is the cloths bug fixed there?
 
Initiate Mage
Joined
Feb 26, 2011
Messages
18
Reaction score
2
Yes, this seems to be the best way here.

Zena what exactly did you mean by "joining your community"?
 
Initiate Mage
Joined
Apr 23, 2008
Messages
47
Reaction score
1
i didnt mean to be a staff member but if you wanna help the community of our server then please its your choice you look very helpful tho i might put you as a moderator for the forum =] i really like your english vocab let me gues your stompaorkz from wrath?
 
Initiate Mage
Joined
Feb 26, 2011
Messages
18
Reaction score
2
That would be great!! I would really love to help however I can! Actually, I am just Savadroo in the WOR-forum :)
 
Initiate Mage
Joined
Aug 30, 2007
Messages
29
Reaction score
0
so is anyone/team working on the source and making it public or keeping for them selfs?
 
Initiate Mage
Joined
Apr 23, 2008
Messages
47
Reaction score
1
right here lol me and my friend leo started 8 months ago still working tryin to fix these main bugs
 
Back
Top