Example #1
0
bool TravelMapHandler::findTicket(PlayerObject* player, BString port)
{
    uint32	zoneId = gWorldManager->getZoneId();

    ObjectIDList* invObjects = dynamic_cast<Inventory*>(player->getEquipManager()->getEquippedObject(CreatureEquipSlot_Inventory))->getObjects();
    ObjectIDList::iterator it = invObjects->begin();

    while(it != invObjects->end())
    {
        TravelTicket* ticket = dynamic_cast<TravelTicket*>(gWorldManager->getObjectById((*it)));
        if(ticket)
        {
            BString srcPoint		= (int8*)((ticket->getAttribute<std::string>("travel_departure_point")).c_str());
            uint16 srcPlanetId	= static_cast<uint16>(gWorldManager->getPlanetIdByName((int8*)((ticket->getAttribute<std::string>("travel_departure_planet")).c_str())));

            // see if we got at least 1
            if(srcPlanetId == zoneId && strcmp(srcPoint.getAnsi(),port.getAnsi()) == 0)
            {
                return false;
            }
        }
        ++it;
    }
    return true;;
}
Example #2
0
void TicketCollector::_createTicketSelectMenu(PlayerObject* playerObject)
{
    BStringVector	availableTickets;
    uint32			zoneId = gWorldManager->getZoneId();

    ObjectIDList*			invObjects	= dynamic_cast<Inventory*>(playerObject->getEquipManager()->getEquippedObject(CreatureEquipSlot_Inventory))->getObjects();
    ObjectIDList::iterator	it			= invObjects->begin();

    while(it != invObjects->end())
    {
        if(TravelTicket* ticket = dynamic_cast<TravelTicket*>(gWorldManager->getObjectById((*it))))
        {
            BString srcPoint		= (int8*)((ticket->getAttribute<std::string>("travel_departure_point")).c_str());
            uint16 srcPlanetId	= static_cast<uint16>(gWorldManager->getPlanetIdByName((int8*)((ticket->getAttribute<std::string>("travel_departure_planet")).c_str())));

            if(srcPlanetId == zoneId && strcmp(srcPoint.getAnsi(),mPortDescriptor.getAnsi()) == 0)
            {
                BString dstPoint = (int8*)((ticket->getAttribute<std::string>("travel_arrival_point")).c_str());

                availableTickets.push_back(dstPoint.getAnsi());
            }
        }
        ++it;
    }

    gUIManager->createNewListBox(this,"handleticketselect","select destination","Select destination",availableTickets,playerObject);
}
//======================================================================================================================
//
// Modifies the Admin List
//
void	ObjectController::_handleNameStructure(uint64 targetId,Message* message,ObjectControllerCmdProperties* cmdProperties)

{
    // requirement we have the structure targeted AND give the name of the recipient on the commandline
    // OR we have the recipient targeted and stand NEXT to the structure were about to transfer

    //do we have a valid donor ?
    CreatureObject* creature  = dynamic_cast<CreatureObject*>(mObject); PlayerObject* player = creature->GetGhost();

    if(!player)
    {
        return;
    }

    //do we have a valid structure ??? check our target first
    uint64 id = player->GetCreature()->getTargetId();
    Object* object = gWorldManager->getObjectById(id);
    PlayerStructure* structure = dynamic_cast<PlayerStructure*>(object);

    if(!structure)
    {
        gMessageLib->SendSystemMessage(::common::OutOfBand("player_structure", "command_no_building"), player);
        return;
    }

    //is the structure in Range???
    float fTransferDistance = gWorldConfig->getConfiguration<float>("Player_Structure_Operate_Distance",(float)10.0);
    if(glm::distance(player->GetCreature()->mPosition, structure->mPosition) > fTransferDistance)
    {
        gMessageLib->SendSystemMessage(::common::OutOfBand("player_structure", "command_no_building"), player);
        return;
    }

    //find out where our structure is
    BString dataStr;
    message->getStringUnicode16(dataStr);

    BString nameStr;

    dataStr.convert(BSTRType_ANSI);

    sscanf(dataStr.getAnsi(),"%s",nameStr.getAnsi());

    if(nameStr.getLength() > 68)
    {
        gMessageLib->SendSystemMessage(::common::OutOfBand("player_structure", "not_valid_name"), player);
        return;
    }

    StructureAsyncCommand command;
    command.Command = Structure_Command_RenameStructure;
    command.PlayerId = player->getId();
    command.StructureId = structure->getId();

    gStructureManager->checkNameOnPermissionList(structure->getId(),player->getId(),player->GetCreature()->getFirstName(),"ADMIN",command);

}
Example #4
0
BString ObjectController::handleShutdownGalaxy(BString message) const
{
    int8 replyData[128];

    if (AdminManager::Instance()->shutdownPending())
    {
        sprintf(replyData,"Shutdown already in progress");
    }
    else
    {
        sprintf(replyData,"OK");
        // Get time for shutdown
        //
        int32 minutesToShutdown;
        int32 elementCount = sscanf(message.getAnsi(), "%3d", &minutesToShutdown);
        // string planet(rawData);
        if (elementCount > 0)
        {
            // We have no idea of how much white space are inserted in string...
            BString ansiData;
            int32 index = indexOfNextField(message);
            if (index < 0)
            {
                // We may not have any "next field", it's optional here.
                index = 0;
                ansiData = "";
            }
            else
            {
                // Now we can get the broadcaste from the message.
                // Remove first field from message.
                ansiData.setLength(message.getLength());
                message.substring(ansiData, static_cast<uint16>(index), message.getLength());
            }

            // Validate the timeout.
            if (minutesToShutdown >= 0)
            {
                // Any valid message?
                int8 rawData[128];
                elementCount = sscanf(ansiData.getAnsi(), "%80s", rawData);
                // Send request to all zones, via chatserver.
                this->scheduleShutdown(minutesToShutdown*60, ansiData);
            }
            else
            {
                sprintf(replyData,"%d is not valid shutdown time", minutesToShutdown);
            }
        }
        else
        {
            sprintf(replyData,"No shutdown time supplied");
        }
    }
    return replyData;
}
Example #5
0
uint32 Medicine::getHealWound(BString attribute)
{
    //this should return us the attribute type we are trying to heal
    //TODO replace with std::string after bstring is removed...
    BString examine = "examine_heal_wound_";
    std::string tmp = examine.getAnsi();
    tmp.append(attribute.getAnsi());
    BString attr = tmp.c_str();
    return (uint32)this->getAttribute<float>(attr);
}
Example #6
0
void TravelMapHandler::getTicketInformation(BStringVector vQuery,TicketProperties* ticketProperties)
{
    ticketProperties->srcPlanetId = 0;
    while((strcmp(vQuery[0].getAnsi(),gWorldManager->getPlanetNameById(static_cast<uint8>(ticketProperties->srcPlanetId))) != 0))
        ticketProperties->srcPlanetId++;

    ticketProperties->dstPlanetId = 0;
    while((strcmp(vQuery[2].getAnsi(),gWorldManager->getPlanetNameById(static_cast<uint8>(ticketProperties->dstPlanetId))) != 0))
        ticketProperties->dstPlanetId++;

    TravelRoutes::iterator it = mTravelRoutes[ticketProperties->srcPlanetId].begin();
    while(it != mTravelRoutes[ticketProperties->srcPlanetId].end())
    {
        if((*it).first == ticketProperties->dstPlanetId)
        {
            ticketProperties->price = (*it).second;
            break;
        }
        ++it;
    }

    TravelPointList::iterator tpIt = mTravelPoints[ticketProperties->srcPlanetId].begin();
    while(tpIt != mTravelPoints[ticketProperties->srcPlanetId].end())
    {
        TravelPoint* tp = (*tpIt);
        BString desc = tp->descriptor;

        if(strcmp(strRep(std::string(vQuery[1].getAnsi()),"_"," ").c_str(),desc.getAnsi()) == 0)
        {
            ticketProperties->srcPoint = tp;
            break;
        }

        ++tpIt;
    }

    ticketProperties->dstPoint = NULL;

    tpIt = mTravelPoints[ticketProperties->dstPlanetId].begin();
    while(tpIt != mTravelPoints[ticketProperties->dstPlanetId].end())
    {
        //tp = (*tpIt);

        BString desc = (*tpIt)->descriptor;

        if(strcmp(strRep(std::string(vQuery[3].getAnsi()),"_"," ").c_str(),desc.getAnsi()) == 0)
        {
            ticketProperties->dstPoint = (*tpIt);
            ticketProperties->price += (*tpIt)->taxes;

            break;
        }
        ++tpIt;
    }
}
//======================================================================================================================
void UIManager::createNewDiagnoseListBox(UICallback* callback,PlayerObject* Medic, PlayerObject* Patient)
{
	BStringVector attributesMenu;

	BString FirstName = Patient->getFirstName(); FirstName.toUpper();
	BString LastName = Patient->getLastName(); LastName.toUpper();

	int8 title[64];
	sprintf(title,"PATIENT %s %s'S WOUNDS",FirstName.getAnsi(), LastName.getAnsi());

	int8 desc[512];
	sprintf(desc, "Below is a listing of the Wound and Battle Fatigue levels of %s %s. Wounds are healed through /tendWound or use of Wound Medpacks. High levels of Battle Fatigue can inhibit the healing process, and Battle Fatigue can only be healed by the patient choosing to watch performing entertainers",Patient->getFirstName().getAnsi(), Patient->getLastName().getAnsi());

	int8 Health[32];
	sprintf(Health,"Health -- %i",Patient->getHam()->mHealth.getWounds());
	attributesMenu.push_back(Health);

	int8 Strength[32];
	sprintf(Strength,"Strength -- %i",Patient->getHam()->mStrength.getWounds());
	attributesMenu.push_back(Strength);
	
	int8 Constitution[32];
	sprintf(Constitution,"Constitution -- %i",Patient->getHam()->mConstitution.getWounds());
	attributesMenu.push_back(Constitution);
	
	int8 Action[32];
	sprintf(Action,"Action -- %i",Patient->getHam()->mAction.getWounds());
	attributesMenu.push_back(Action);

	int8 Quickness[32];
	sprintf(Quickness,"Quickness -- %i",Patient->getHam()->mQuickness.getWounds());
	attributesMenu.push_back(Quickness);

	int8 Stamina[32];
	sprintf(Stamina,"Stamina -- %i",Patient->getHam()->mStamina.getWounds());
	attributesMenu.push_back(Stamina);

	int8 Mind[32];
	sprintf(Mind,"Mind -- %i",Patient->getHam()->mMind.getWounds());
	attributesMenu.push_back(Mind);

	int8 Focus[32];
	sprintf(Focus,"Focus -- %i",Patient->getHam()->mFocus.getWounds());
	attributesMenu.push_back(Focus);

	int8 Willpower[32];
	sprintf(Willpower,"Willpower -- %i",Patient->getHam()->mWillpower.getWounds());
	attributesMenu.push_back(Willpower);

	int8 BattleFatigue[32];
	sprintf(BattleFatigue,"Battle Fatigue -- %i",Patient->getHam()->getBattleFatigue());
	attributesMenu.push_back(BattleFatigue);

	createNewListBox(callback,"handleDiagnoseMenu",title, desc, attributesMenu, Medic, SUI_Window_ListBox,SUI_LB_OK,Patient->getId());
}
Example #8
0
void CurrentResource::buildDistributionMap()
{
    noise::utils::NoiseMapBuilderPlane	mapBuilder;
    noise::module::ScaleBias			flattenModule;

    flattenModule.SetSourceModule(0,mNoiseModule);
    flattenModule.SetScale(mNoiseMapScale);
    flattenModule.SetBias(mNoiseMapBias);

    _verifyNoiseSettings();

    mNoiseModule.SetPersistence(mNoiseMapPersistence);
    mNoiseModule.SetOctaveCount(mNoiseMapOctaves);
    mNoiseModule.SetFrequency(mNoiseMapFrequency);

    mapBuilder.SetSourceModule(flattenModule);
    mapBuilder.SetDestNoiseMap(mResourceDistributionMap);

    // translates to 1:32
    mapBuilder.SetDestSize(512,512);
    mapBuilder.SetBounds(mNoiseMapBoundsX1,mNoiseMapBoundsX2,mNoiseMapBoundsY1,mNoiseMapBoundsY2);

    LOG(info) << "Building DistributionMap for " << mName.getAnsi() << " " << mType->getName().getAnsi();
    mapBuilder.Build();

    if(mWriteResourceMaps)
    {
        BString fileName = (int8*)(mZoneName).c_str();
        fileName << "_" << mName.getAnsi() << ".bmp";

        LOG(info) << "Writing File " << fileName.getAnsi();

        noise::utils::RendererImage renderer;
        noise::utils::Image image;
        renderer.SetSourceNoiseMap(mResourceDistributionMap);
        renderer.SetDestImage(image);

        renderer.ClearGradient();
        renderer.AddGradientPoint(-1.0000,noise::utils::Color(0,0,0,255));
        renderer.AddGradientPoint(-0.9999,noise::utils::Color(0,0,0,255));
        renderer.AddGradientPoint(0.0000,noise::utils::Color(255,255,0,255));
        renderer.AddGradientPoint(1.0000,noise::utils::Color(255,0,0,255));

        renderer.EnableLight();
        renderer.SetLightContrast(1.5);
        renderer.SetLightBrightness(2.0);
        renderer.Render();

        noise::utils::WriterBMP writer;
        writer.SetSourceImage(image);
        writer.SetDestFilename(fileName.getAnsi());
        writer.WriteDestFile();
    }
}
Example #9
0
BString ObjectController::handleBroadcastPlanet(BString message) const
{
    // Get planet name
    int8 rawData[128];
    rawData[0] = 0;

    int32 elementCount = sscanf(message.getAnsi(), "%80s", rawData);
    BString planet(rawData);
    if (elementCount > 0)
    {
        // Yes. Validate the planet name.
        int32 planetId = gWorldManager->getPlanetIdByNameLike(planet);
        if (planetId >= 0)
        {
            // We have no idea of how much white space are inserted in string...
            int32 index = indexOfNextField(message);
            if (index > 0)
            {
                // Now we can get the broadcaste from the message.
                // Remove planet name from message.
                BString ansiData;
                ansiData.setLength(message.getLength());
                message.substring(ansiData, static_cast<uint16>(index), message.getLength());

                // Any valid message?
                elementCount = sscanf(ansiData.getAnsi(), "%80s", rawData);
                if (elementCount > 0)
                {
                    // string planetName(gWorldManager->getPlanetNameById(planetId));

                    this->broadcastGalaxyMessage(ansiData, planetId);
                    sprintf(rawData,"OK");
                }
                else
                {
                    sprintf(rawData,"No broadcast supplied");
                }
            }
            else
            {
                sprintf(rawData,"No valid broadcast supplied");
            }
        }
        else
        {
            sprintf(rawData,"%s is not valid planet name", planet.getAnsi());
        }
    }
    else
    {
        sprintf(rawData,"Missing planet name");
    }
    return rawData;
}
Example #10
0
//========================================================================================
//used by the factoryfactory to update hoppercontent when looking at a hopper
//
void FactoryCrate::upDateFactoryVolume(BString amount)
{
    if(!this->hasAttribute("factory_count"))
    {
        return;
    }

    std::string v = this->getAttribute<std::string>("factory_count");
    BString value = v.c_str();

    if(value.getCrc() == amount.getCrc())
    {
        return;
    }
    this->setAttribute("factory_count",amount.getAnsi());

    PlayerObjectSet*			knownPlayers	= this->getKnownPlayers();
    PlayerObjectSet::iterator	playerIt		= knownPlayers->begin();

    while(playerIt != knownPlayers->end())
    {
        PlayerObject* player = (*playerIt);
        if(player)
            gMessageLib->sendUpdateCrateContent(this,player);

        playerIt++;
    }

}
Example #11
0
void ObjectController::sendAdminFeedback(BString reply) const
{
    PlayerObject* player = dynamic_cast<PlayerObject*>(mObject);
    if ((player) && (player->isConnected()))
    {
        if (reply.getLength())
        {
            reply.convert(BSTRType_Unicode16);
            gMessageLib->SendSystemMessage(reply.getUnicode16(), player, true);
        }
        else
        {
            DLOG(info) << "Admin :" << player->getFirstName().getAnsi();
        }
    }
    else
    {
        if (reply.getDataLength())
        {
            DLOG(info) << "Admin (anon): " << reply.getAnsi();
        }
        else
        {
        }
    }
}
Example #12
0
void TreasuryManager::bankTipOffline(int32 amount,PlayerObject* playerObject,BString targetName)
{

    //============================================
    //check whether we have sufficient funds
    //dont forget the surcharge
    Bank* bank = dynamic_cast<Bank*>(playerObject->getEquipManager()->getEquippedObject(CreatureEquipSlot_Bank));
    int32 credits = bank->getCredits();

    int32 surcharge = (int32)((amount/100)*5);

    if((amount + surcharge) > credits)
    {
        BString uniName = targetName;
        uniName.convert(BSTRType_Unicode16);

        gMessageLib->SendSystemMessage(::common::OutOfBand("base_player", "prose_tip_nsf_bank", L"", L"", uniName.getUnicode16(), amount), playerObject);
        return;
    }
    //now get the player
    int8 name[50];
    mDatabase->Escape_String(name,targetName.getAnsi(),targetName.getLength());

    int8 sql[256];
    sprintf(sql,"SELECT id FROM characters WHERE firstname like '%s'",name);

    TreasuryManagerAsyncContainer* asyncContainer;
    asyncContainer = new TreasuryManagerAsyncContainer(TREMQuery_BankTipgetId,playerObject->getClient());
    asyncContainer->amount = amount;
    asyncContainer->surcharge = surcharge;
    asyncContainer->targetName = targetName;
    asyncContainer->player = playerObject;

    mDatabase->ExecuteSqlAsync(this,asyncContainer,sql);
}
Example #13
0
BString ObjectController::handleBroadcast(BString message) const
{
    int8 rawData[128];

    int8* replyStr = "OK";
    if (message.getLength())
    {
        // Any valid message?
        int32 elementCount = sscanf(message.getAnsi(), "%80s", rawData);
        if (elementCount > 0)
        {
            message.convert(BSTRType_Unicode16);

            PlayerAccMap::const_iterator it = gWorldManager->getPlayerAccMap()->begin();
            while(it != gWorldManager->getPlayerAccMap()->end())
            {
                const PlayerObject* const player = (*it).second;
                if (player->isConnected())
                {
                    gMessageLib->SendSystemMessage(message.getUnicode16(), player);
                }
                ++it;
            }
        }
        else
        {
            replyStr = "No broadcast supplied";
        }
    }
    else
    {
        replyStr = "No broadcast supplied";
    }
    return replyStr;
}
Example #14
0
void MessageFactory::addString(const BString& data)
{
    // Make sure we've called StartMessage()
    assert(mCurrentMessage && "Must call StartMessage before adding data");

    // Adjust start bounds if necessary.
    _adjustHeapStartBounds(data.getDataLength());

    // Insert our data and move our end pointer.
    switch(data.getType())
    {
    case BSTRType_UTF8:
    case BSTRType_ANSI:
    {
        // First insert the string length
        *((uint16*)mCurrentMessageEnd) = data.getLength();
        mCurrentMessageEnd += 2;

        memcpy(mCurrentMessageEnd, data.getAnsi(), data.getLength());
        mCurrentMessageEnd += data.getLength();
    }
    break;

    case BSTRType_Unicode16:
    {
        // First insert the string length
        *((uint32*)mCurrentMessageEnd) = data.getLength();
        mCurrentMessageEnd += 4;

        memcpy(mCurrentMessageEnd, data.getUnicode16(), data.getLength() * 2);
        mCurrentMessageEnd += data.getLength() * 2;
    }
    break;
    }
}
Example #15
0
void ObjectController::_handleSetWaypointName(uint64 targetId,Message* message,ObjectControllerCmdProperties* cmdProperties)
{
    PlayerObject*	player		= dynamic_cast<PlayerObject*>(mObject);
    BString			name;
    Datapad* datapad			= player->getDataPad();
    WaypointObject*	waypoint	= datapad->getWaypointById(targetId);
    int8			sql[1024],restStr[64],*sqlPointer;

    if(waypoint == NULL)
    {
        DLOG(info) << "ObjController::handlesetwaypointname: could not find waypoint "<< targetId;
        return;
    }

    message->getStringUnicode16(name);

    if(!(name.getLength()))
        return;

    waypoint->setName(name);

    name.convert(BSTRType_ANSI);

    sprintf(sql,"UPDATE %s.waypoints SET name='",mDatabase->galaxy());
    sqlPointer = sql + strlen(sql);
    sqlPointer += mDatabase->escapeString(sqlPointer,name.getAnsi(),name.getLength());
    sprintf(restStr,"' WHERE waypoint_id=%" PRIu64 "",targetId);
    strcat(sql,restStr);

    mDatabase->executeSqlAsync(NULL,NULL,sql);


    gMessageLib->sendUpdateWaypoint(waypoint,ObjectUpdateChange,player);
}
Example #16
0
void ObjectController::sendAdminFeedback(BString reply) const
{
    PlayerObject* player = dynamic_cast<PlayerObject*>(mObject);
    if ((player) && (player->isConnected()))
    {
        if (reply.getLength())
        {
            gLogger->log(LogManager::NOTICE,"Admin (%s): %s", player->getFirstName().getAnsi(), reply.getAnsi());
            reply.convert(BSTRType_Unicode16);
            gMessageLib->SendSystemMessage(reply.getUnicode16(), player, true);
        }
        else
        {
            gLogger->log(LogManager::NOTICE,"Admin (%s):", player->getFirstName().getAnsi());
        }
    }
    else
    {
        if (reply.getDataLength())
        {
            gLogger->log(LogManager::NOTICE,"Admin (anon): %s", reply.getAnsi());
        }
        else
        {
            gLogger->log(LogManager::NOTICE,"Admin (anon):");
        }
    }
}
std::string MedicHandlerHelpers::handleMessage(Message* message, std::string regexPattern)
{
    // Read the message out of the packet.
    BString tmp;
    message->getStringUnicode16(tmp);

    // If the string has no length the message is ill-formatted, send the
    // proper format to the client.
    if (!tmp.getLength())
        return "";

    // Convert the string to an ansi string for ease with the regex.
    tmp.convert(BSTRType_ANSI);
    std::string input_string(tmp.getAnsi());

    static const regex pattern(regexPattern);
    smatch result;

    regex_search(input_string, result, pattern);

    // Gather the results of the pattern for validation and use.
    std::string messageType(result[1]);
    if (messageType.length() > 0)
    {
        return messageType;
    }
    return "";
}
Example #18
0
BString ObjectController::handleBroadcastGalaxy(BString message) const
{
    int8* replyStr = "OK";

    int8 rawData[128];
    // We have no idea of how much white space are inserted in string...
    int32 index = indexOfFirstField(message);
    if (index >= 0)
    {
        // Now we can get the broadcast from the message.

        // Remove white space from start of message.
        BString ansiData;
        ansiData.setLength(message.getLength());
        message.substring(ansiData, static_cast<uint16>(index), message.getLength());

        // Any valid message?
        int32 elementCount = sscanf(ansiData.getAnsi(), "%80s", rawData);
        if (elementCount > 0)
        {
            this->broadcastGalaxyMessage(ansiData, -1);
        }
        else
        {
            replyStr = "No broadcast supplied";
        }
    }
    else
    {
        replyStr = "No valid broadcast supplied";
    }
    return replyStr;
}
Example #19
0
void WorldConfig::removeConfiguration(BString key)
{
    ConfigurationMap::iterator it = mConfigurationMap.find(key.getCrc());

    if(it != mConfigurationMap.end())
        mConfigurationMap.erase(it);
    else
        LOG(WARNING) << "Could not find configuration setting with key [" << key.getAnsi() << "]";
}
Example #20
0
void Object::removeInternalAttribute(BString key)
{
    AttributeMap::iterator it = mInternalAttributeMap.find(key.getCrc());

    if(it != mInternalAttributeMap.end())
        mInternalAttributeMap.erase(it);
    else
        DLOG(info) << "Object::removeInternalAttribute: could not find " << key.getAnsi();
}
Example #21
0
void Tutorial::tutorialResponse(BString tutorialEventString)
{
    if (strcmp(tutorialEventString.getAnsi(), "zoomCamera") == 0)
    {
        mZoomCamera = true;
    }
    else if (strcmp(tutorialEventString.getAnsi(), "chatActive") == 0)
    {
        mChatBox = true;
    }
    else if (strcmp(tutorialEventString.getAnsi(), "foodSelected") == 0)
    {
        mFoodSelected = true;
    }
    else if (strcmp(tutorialEventString.getAnsi(), "foodUsed") == 0)
    {
        mFoodUsed = true;
    }
    else if (strcmp(tutorialEventString.getAnsi(), "cloneDataSaved") == 0)
    {
        mCloneDataSaved = true;
    }
    else if (strcmp(tutorialEventString.getAnsi(), "insureItemsDone") == 0)
    {
        mItemsInsured = true;
    }
    else if (strcmp(tutorialEventString.getAnsi(), "closeHolocron") == 0)
    {
        mCloseHolocron = true;
    }
    else if (strcmp(tutorialEventString.getAnsi(), "changeLookAtTarget") == 0)
    {
        mChangeLookAtTarget = true;
    }
    else if (strcmp(tutorialEventString.getAnsi(), "openInventory") == 0)
    {
        mOpenInventory = true;
    }
    else if (strcmp(tutorialEventString.getAnsi(), "closeInventory") == 0)
    {
        mCloseInventory = true;
    }
}
Example #22
0
void Object::sendAttributes(PlayerObject* playerObject)
{
    if(playerObject->getConnectionState() != PlayerConnState_Connected)
        return;

    if(!mAttributeMap.size() || mAttributeMap.size() != mAttributeOrderList.size())
        return;

    Message*	newMessage;
    BString		value;

    gMessageFactory->StartMessage();
    gMessageFactory->addUint32(opAttributeListMessage);
    gMessageFactory->addUint64(mId);

    gMessageFactory->addUint32(mAttributeMap.size());

    AttributeMap::iterator			mapIt;
    AttributeOrderList::iterator	orderIt = mAttributeOrderList.begin();

    while(orderIt != mAttributeOrderList.end())
    {
        mapIt = mAttributeMap.find(*orderIt);
        //see if we have to format it properly

        gMessageFactory->addString(gWorldManager->getAttributeKey((*mapIt).first));
        value = (*mapIt).second.c_str();
        if(gWorldManager->getAttributeKey((*mapIt).first).getCrc() == BString("duration").getCrc())
        {
            uint32 time;
            sscanf(value.getAnsi(),"%u",&time);
            //uint32 hour = (uint32)time/3600;
            //time = time - hour*3600;
            uint32 minutes = (uint32)time/60;
            uint32 seconds = time - minutes*60;
            int8 valueInt[64];
            sprintf(valueInt,"%um %us",minutes,seconds);
            value = valueInt;

        }

        value.convert(BSTRType_Unicode16);
        gMessageFactory->addString(value);

        ++orderIt;
    }

    //these should not be necessary in precu they start appearing in cu!!!
    //gMessageFactory->addUint32(0xffffffff);

    newMessage = gMessageFactory->EndMessage();

    //must in fact be send as unreliable for attributes to show during the crafting process!!!
    (playerObject->getClient())->SendChannelAUnreliable(newMessage, playerObject->getAccountId(),CR_Client,9);
}
Example #23
0
int32 ObjectController::getAdminCommandFunction(BString command) const
{
    for (int i = 0; i < noOfAdminCommands; i++)
    {
        if(Anh_Utils::cmpnistr(command.getAnsi(),adminCommands[i].command.getAnsi(), adminCommands[i].testLength) == 0)
        {
            return i;
        }
    }
    return -1;
}
Example #24
0
void WorldConfig::setConfiguration(BString key,std::string value)
{
    ConfigurationMap::iterator it = mConfigurationMap.find(key.getCrc());

    if(it == mConfigurationMap.end())
    {
        LOG(WARNING) << "Could not find configuration setting with key [" << key.getAnsi() << "]";
        return;
    }

    (*it).second = value;
}
Example #25
0
void	Object::setInternalAttribute(BString key,std::string value)
{
    AttributeMap::iterator it = mInternalAttributeMap.find(key.getCrc());

    if(it == mInternalAttributeMap.end())
    {
        DLOG(info) << "Object::setInternalAttribute: could not find " << key.getAnsi();
        return;
    }

    (*it).second = value;
}
void ObjectController::_handleSetSpokenLanguage(uint64 targetId,Message* message,ObjectControllerCmdProperties* cmdProperties)
{
    PlayerObject*	playerObject	= dynamic_cast<PlayerObject*>(mObject);
    BString			tmpStr;

    message->getStringUnicode16(tmpStr);
    tmpStr.convert(BSTRType_ANSI);

    uint32 languageId = boost::lexical_cast<uint32>(tmpStr.getAnsi());
    playerObject->setLanguage(languageId);
    gMessageLib->sendLanguagePlay9(playerObject);
}
Example #27
0
void Tutorial::tutorialResponseReset(BString tutorialEventString)
{
    if (strcmp(tutorialEventString.getAnsi(), "zoomCamera") == 0)
    {
        mZoomCamera = false;
    }
    else if (strcmp(tutorialEventString.getAnsi(), "chatActive") == 0)
    {
        mChatBox = false;
    }
    else if (strcmp(tutorialEventString.getAnsi(), "closeHolocron") == 0)
    {
        mCloseHolocron = false;
    }
    else if (strcmp(tutorialEventString.getAnsi(), "changeLookAtTarget") == 0)
    {
        mChangeLookAtTarget = false;
    }
    else if (strcmp(tutorialEventString.getAnsi(), "openInventory") == 0)
    {
        mOpenInventory = false;
    }
    else if (strcmp(tutorialEventString.getAnsi(), "closeInventory") == 0)
    {
        mCloseInventory = false;
    }

}
Example #28
0
void FireworkShow::handleUIEvent(BString strAvailable, BString strDelay, UIWindow* window)
{
    if(window == NULL)
    {
        return;
    }
    //uint32 delay = atoi(strDelay.getAnsi());
    strDelay.convert(BSTRType_ANSI);
    int32 delay = atoi(strDelay.getAnsi());
    gLogger->log(LogManager::DEBUG,"strDealay atoi = %i",delay);
    fireworkShowList.at(this->fireworkShowListModify).delay = delay;

}
Example #29
0
void Tutorial::sendStartingMails(void)
{
    BString startingProfession = mStartingProfession;
    BString subject = "@newbie_tutorial/newbie_mail:welcome_subject";
    BString bodyDir = "newbie_tutorial/newbie_mail";
    BString bodyStr = "welcome_body";

    //sends the starting email
    SendSystemMailMessage* message = new SendSystemMailMessage();
    message->SendNewbieMailMessage(mPlayerObject, subject, bodyDir, bodyStr);

    if (strcmp(startingProfession.getAnsi(), "crafting_artisan") == 0)
    {
        subject = "@newbie_tutorial/newbie_mail:crafting_artisan_subject";
        bodyDir = "newbie_tutorial/newbie_mail";
        bodyStr = "crafting_artisan_body";
    }
    else if (strcmp(startingProfession.getAnsi(), "combat_brawler") == 0)
    {
        subject = "@newbie_tutorial/newbie_mail:combat_brawler_subject";
        bodyDir = "newbie_tutorial/newbie_mail";
        bodyStr = "combat_brawler_body";
    }
    else if (strcmp(startingProfession.getAnsi(), "social_entertainer") == 0)
    {
        subject = "@newbie_tutorial/newbie_mail:social_entertainer_subject";
        bodyDir = "newbie_tutorial/newbie_mail";
        bodyStr = "social_entertainer_body";
    }
    else if (strcmp(startingProfession.getAnsi(), "combat_marksman") == 0)
    {
        subject = "@newbie_tutorial/newbie_mail:combat_marksman_subject";
        bodyDir = "newbie_tutorial/newbie_mail";
        bodyStr = "combat_marksman_body";

    }
    else if (strcmp(startingProfession.getAnsi(), "science_medic") == 0)
    {
        subject = "@newbie_tutorial/newbie_mail:science_medic_subject";
        bodyDir = "newbie_tutorial/newbie_mail";
        bodyStr = "science_medic_body";
    }
    else if (strcmp(startingProfession.getAnsi(), "outdoors_scout") == 0)
    {
        subject = "@newbie_tutorial/newbie_mail:outdoors_scout_subject";
        bodyDir = "newbie_tutorial/newbie_mail";
        bodyStr = "outdoors_scout_body";
    }
    else
    {
        subject = "";
        bodyDir = "";
        bodyStr = "";
    }
    //sends the starting profession email
    message->SendNewbieMailMessage(mPlayerObject, subject, bodyDir, bodyStr);
    message = NULL;
    delete message;
}
Example #30
0
void BankTerminal::handleUIEvent(BString strInventoryCash, BString strBankCash, UIWindow* window)
{

    if(window == NULL)
    {
        return;
    }

    PlayerObject* playerObject = window->getOwner(); // window owner

    if(playerObject == NULL || !playerObject->isConnected() || playerObject->getSamplingState() || playerObject->isIncapacitated() || playerObject->isDead() || playerObject->checkState(CreatureState_Combat))
    {
        return;
    }

    // two money movement deltas stands for credits
    // variations into bank & inventory.
    // casting as signed cause one will be negative.
    // when inventoryDelta + bankDelta is not equal to zero,
    // that means player treasury has changed since
    // the transfer window opened.

    // we get the money deltas by parsing the string returned
    // by the SUI window

    strInventoryCash.convert(BSTRType_ANSI);
    strBankCash.convert(BSTRType_ANSI);

    int32 inventoryMoneyDelta = atoi(strInventoryCash.getAnsi()) - dynamic_cast<Inventory*>(playerObject->getEquipManager()->getEquippedObject(CreatureEquipSlot_Inventory))->getCredits();
    int32 bankMoneyDelta = atoi(strBankCash.getAnsi()) - dynamic_cast<Bank*>(playerObject->getEquipManager()->getEquippedObject(CreatureEquipSlot_Bank))->getCredits();

    // the amount transfered must be greater than zero
    if(bankMoneyDelta == 0 || inventoryMoneyDelta == 0)
    {
        return;
    }

    gTreasuryManager->bankTransfer(inventoryMoneyDelta, bankMoneyDelta, playerObject);
}