//pickup first item under player void cGameServer::doPickup(int id) { //get slot of item at player int itemSlot = topmostItemAt(player[id].map,player[id].x,player[id].y); //return if no items if(itemSlot == -1) return; int invSlot=-1; int qty=ml_items.item[itemSlot].qty; if(getWeight(id) + ml_items.item[itemSlot].weight * abs(qty) > maxWeight(id)) { sendChatMsg(itod(id),"^RIt's too heavy.."); return; } //check if can stack if(ml_items.item[itemSlot].qty>0) { invSlot = firstItem(id,ml_items.item[itemSlot].item_template); if(invSlot!=-1) { //combine and remove ml_items.item[player[id].inventory[invSlot]].qty+=ml_items.item[itemSlot].qty; updateItem(player[id].inventory[invSlot]); removeItem(itemSlot); } } //check for empty space for new item if space not found if(invSlot==-1) invSlot=nextInventorySlot(id); //if past inventory limit then exit if(invSlot==-1) return; //if not combined and removed then move item into inventory from map if(ml_items.item[itemSlot].qty!=0) { ml_items.item[itemSlot].map=-1; ml_items.item[itemSlot].owner=id; ml_items.item[itemSlot].slot=invSlot; ml_items.item[itemSlot].life=10; updateItem(itemSlot); player[id].inventory[invSlot]=itemSlot; } //update clients sendInventoryAdd(itod(id),ml_items.item[player[id].inventory[invSlot]].graphic,ml_items.item[player[id].inventory[invSlot]].name,invSlot,qty); sendRemoveMapItem(player[id].map,player[id].x,player[id].y); }
void node::addItem(Item add){ if (add.mass + getWeightOfSet() <= maxWeight()){ pset.push_back(add); if (add.id == 0) csf += list()[pset.size()-1].value; lowerBound = calcLowerBound(); UpperBound = calcUpperBound(); } else { pset.push_back(add); lowerBound = 9999999; } }
/** * @brief Write the Human data back to a file. */ void Human::writeToFile( QFile &unitFile ) { QTextStream unitStream(&unitFile); unitStream << profession() << "/" << QString("%1").arg(posX(),0,'g',8) << "/" << QString("%1").arg(posY(),0,'g',8) << "/" << QString("%1").arg(posZ(),0,'g',8) << "/" << name() << "/"; unitStream.flush(); unitFile.write(Utils::toBinary(archerLevel())); unitFile.write(Utils::toBinary(blacksmithLevel())); unitFile.write(Utils::toBinary(builderLevel())); unitFile.write(Utils::toBinary(carpenterLevel()).constData()); unitFile.write(Utils::toBinary(engineerLevel()).constData()); unitFile.write(Utils::toBinary(farmerLevel()).constData()); unitFile.write(Utils::toBinary(fishermanLevel()).constData()); unitFile.write(Utils::toBinary(foragerLevel()).constData()); unitFile.write(Utils::toBinary(infantryLevel()).constData()); unitFile.write(Utils::toBinary(minerLevel()).constData()); unitFile.write(Utils::toBinary(stoneMasonLevel()).constData()); unitFile.write(Utils::toBinary(woodChopperLevel()).constData()); unitFile.write(Utils::toBinary(tailorLevel()).constData()); unitFile.write(Utils::toBinary(traderLevel()).constData()); unitFile.write(Utils::toBinary(herderLevel()).constData()); unitFile.write(Utils::toBinary(adventurerLevel()).constData()); unitFile.write(Utils::toBinary(unknown1Level()).constData()); unitFile.write(Utils::toBinary(unknown2Level()).constData()); unitFile.write(Utils::toBinary(unknown3Level()).constData()); unitFile.write(Utils::toBinary(unknown4Level()).constData()); unitStream << "/"; unitStream.flush(); unitFile.write(Utils::toBinary(experience()).constData()); unitStream << "/"; unitStream.flush(); unitStream << QString(autoChop()?"True":"False") << "/" << QString(gatherBerries()?"True":"False") << "/" << QString(huntChicken()?"True":"False") << "/" << QString(huntBoar()?"True":"False") << "/" << QString(showBowRange()?"True":"False") << "/"; unitStream << QString(trainNearTarget()?"True":"False") << "/"; unitStream << QString("%1").arg(rotation(),0,'g',8) << "/"; unitStream.flush(); unitFile.write(Utils::toBinary(equipHand()).constData()); unitStream << "/"; unitStream.flush(); unitFile.write(Utils::toBinary(equipOffhand()).constData()); unitStream << "/"; unitStream.flush(); unitFile.write(Utils::toBinary(equipHead()).constData()); unitStream << "/"; unitStream.flush(); unitFile.write(Utils::toBinary(equipBody()).constData()); unitStream << "/"; unitStream.flush(); unitFile.write(Utils::toBinary(equipFeet()).constData()); unitStream << "/"; unitStream.flush(); unitFile.write(Utils::toBinary(health()).constData()); unitStream << "/"; unitStream.flush(); // Dump some of the options in the file. for (unsigned int i = 0; i<52; i++) { unitStream << QString(option(i)?"True":"False") << "/"; } unitStream << timeToEat() << "/" << morale() << "/" << fatigue() << "/" << hunger() << "/"; // Dump more options in the file. for (unsigned int i = 52; i<52+12; i++) { unitStream << QString(option(i)?"True":"False") << "/"; } // Inventory Preferences for (int i = 0; i<inventoryPreferences()->length(); i++) { unitStream << inventoryPreferences()->at(i) << "/"; } // Inventory Items unitStream << inventoryItems()->length() << "/"; for (int i = 0; i<inventoryItems()->length(); i++) { unitStream << inventoryItems()->at(i) << "/"; } // Spare Inventory unitStream << spareInventory()->length() << "/"; for (int i = 0; i<spareInventory()->length(); i++) { unitStream << spareInventory()->at(i) << "/"; } // Patrol unitStream << patrolSetpoints()->length() << "/"; for (int i = 0; i<patrolSetpoints()->length(); i++) { unitStream << patrolSetpoints()->at(i) << "/"; } unitStream << patrolIndex() << "/"; unitStream << guardedUnit() << "/"; // Profession Experience for (int i = 0; i<professionEXP()->length(); i++) { unitStream << professionEXP()->at(i) << "/"; } unitStream << maxWeight() << "/"; unitStream << endl; unitStream.flush(); }