From: Andrew C. <ac...@us...> - 2004-11-27 02:50:10
|
Update of /cvsroot/planeshift/planeshift/src/server In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14657/src/server Modified Files: psserverchar.cpp workmanager.cpp Log Message: Fixed some ownership issues. Fixed workmanager to continue search ( instead of failing ) if item quantity does not match. Index: psserverchar.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/psserverchar.cpp,v retrieving revision 1.218 retrieving revision 1.219 diff -C2 -d -r1.218 -r1.219 *** psserverchar.cpp 26 Nov 2004 03:25:31 -0000 1.218 --- psserverchar.cpp 27 Nov 2004 02:19:25 -0000 1.219 *************** *** 1620,1626 **** if ( holdingItem == NULL ) return; ! // If you are holding it you own it holdingItem->SetOwningCharacter(charData); PlaceHoldingItem(mesg); --- 1620,1627 ---- if ( holdingItem == NULL ) return; ! // If you are holding it you own it holdingItem->SetOwningCharacter(charData); + PlaceHoldingItem(mesg); *************** *** 1662,1666 **** if ( holdingContainer ) { ! holdingContainer->PutItemsInContainer( holdingSlotID, holdingItem ); psserver->GetCharManager()->SendItemContents( fromClient, holdingContainer ); } --- 1663,1667 ---- if ( holdingContainer ) { ! holdingContainer->PutItemsInContainer( holdingSlotID, holdingItem, charData ); psserver->GetCharManager()->SendItemContents( fromClient, holdingContainer ); } *************** *** 1878,1881 **** --- 1879,1883 ---- void SlotManager::PlaceHoldingItem( psSlotMovementMsg& mesg ) { + if ( mesg.fromContainer == CONTAINER_INVENTORY_EQUIPMENT) { *************** *** 1906,1914 **** if ( mesg.toParentContainer == CONTAINER_INVENTORY_BULK ) ! { psItem* container = FindContainer( fromClient, mesg.toContainer, mesg.toParentContainer ); if ( container ) ! { ! if (container->PutItemsInContainer( mesg.toSlot, holdingItem )) psserver->GetCharManager()->SendItemContents( fromClient, container, true, mesg.toContainer ); else --- 1908,1916 ---- if ( mesg.toParentContainer == CONTAINER_INVENTORY_BULK ) ! { psItem* container = FindContainer( fromClient, mesg.toContainer, mesg.toParentContainer ); if ( container ) ! { ! if (container->PutItemsInContainer( mesg.toSlot, holdingItem, charData)) psserver->GetCharManager()->SendItemContents( fromClient, container, true, mesg.toContainer ); else *************** *** 2030,2034 **** case CONTAINER_INVENTORY_BULK: ! { if ( !charData->PutItemInBulk( mesg.toSlot, holdingItem ) ) { --- 2032,2036 ---- case CONTAINER_INVENTORY_BULK: ! { if ( !charData->PutItemInBulk( mesg.toSlot, holdingItem ) ) { *************** *** 2114,2118 **** { // Update the container and resend contents to player. ! if ( toContainer->PutItemsInContainer( mesg.toSlot, holdingItem ) ) { psserver->GetCharManager()->SendItemContents( fromClient, toContainer ); --- 2116,2120 ---- { // Update the container and resend contents to player. ! if ( toContainer->PutItemsInContainer( mesg.toSlot, holdingItem, charData ) ) { psserver->GetCharManager()->SendItemContents( fromClient, toContainer ); Index: workmanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/workmanager.cpp,v retrieving revision 1.71 retrieving revision 1.72 diff -C2 -d -r1.71 -r1.72 *** workmanager.cpp 19 Nov 2004 03:47:04 -0000 1.71 --- workmanager.cpp 27 Nov 2004 02:19:26 -0000 1.72 *************** *** 438,442 **** // Check if there is a target and it's a container ! if ( workItem && workItem->GetIsContainer()) { // Check for conainter combinations --- 438,442 ---- // Check if there is a target and it's a container ! if ( workItem && workItem->GetCanTransform() && workItem->GetIsContainer()) { // Check for conainter combinations *************** *** 676,681 **** delete it; // Only one item from container can be transformed at once ! if (itemArray.Length() != 1) { // Tell the player they are missing equipment --- 676,686 ---- delete it; + if (itemArray.Length() == 0) + { + return false; + } + // Only one item from container can be transformed at once ! if (itemArray.Length() > 1 ) { // Tell the player they are missing equipment *************** *** 896,904 **** } psItemStats* workStats = workItem->GetCurrentStats(); for (size_t i=0; i<transArray->Length(); i++) { // Only get those with correct target item and container psTradeTransformations* trans = transArray->Get(i); ! #ifdef DEBUG_WORKMANAGER int a = trans->GetItemId(), b = targetId, c = trans->GetWorkItemId(), d = workStats->GetUID(); --- 901,910 ---- } psItemStats* workStats = workItem->GetCurrentStats(); + for (size_t i=0; i<transArray->Length(); i++) { // Only get those with correct target item and container psTradeTransformations* trans = transArray->Get(i); ! #ifdef DEBUG_WORKMANAGER int a = trans->GetItemId(), b = targetId, c = trans->GetWorkItemId(), d = workStats->GetUID(); *************** *** 911,921 **** long equipmentId = trans->GetEquipementId(); if ( equipmentId != 0 ) ! { // Check if required equipment is on hand or already in the container if ( !IsOnHand( equipmentId ) && !IsInContainer( equipmentId )) { ! continue; ! } } // Check if the player has the sufficient training --- 917,928 ---- long equipmentId = trans->GetEquipementId(); if ( equipmentId != 0 ) ! { // Check if required equipment is on hand or already in the container if ( !IsOnHand( equipmentId ) && !IsInContainer( equipmentId )) { ! continue; ! } } + // Check if the player has the sufficient training *************** *** 927,931 **** return false; } ! // Check if the player has the correct skills if ( !ValidateSkills( trans ) ) --- 934,938 ---- return false; } ! // Check if the player has the correct skills if ( !ValidateSkills( trans ) ) *************** *** 936,940 **** return false; } ! // Check if the transformation constraint is meet if ( !ValidateConstraints( trans ) ) --- 943,947 ---- return false; } ! // Check if the transformation constraint is meet if ( !ValidateConstraints( trans ) ) *************** *** 943,947 **** return false; } ! int itemQty = trans->GetItemQty(); --- 950,954 ---- return false; } ! int itemQty = trans->GetItemQty(); *************** *** 950,957 **** { // Tell the player they are missing quantity ! psItemStats* itemStat = ! psServer::cachemanager.GetBasicItemStatsByID( targetId ); ! psserver->SendSystemInfo(clientNum,"You have the wrong quantity of %s.", itemStat->GetName() ); ! return false; } --- 957,965 ---- { // Tell the player they are missing quantity ! //psItemStats* itemStat = ! // psServer::cachemanager.GetBasicItemStatsByID( targetId ); ! //psserver->SendSystemInfo(clientNum,"You have the wrong quantity of %s.", itemStat->GetName() ); ! //return false; ! continue; } *************** *** 1179,1183 **** { if ( equipId == rhand->GetCurrentStats()->GetUID() ) ! { return true; } --- 1187,1191 ---- { if ( equipId == rhand->GetCurrentStats()->GetUID() ) ! { return true; } |