Bscript::BObjectImp* UOExecutorModule::mf_PromptInput() { Mobile::Character* chr; Items::Item* item; const Bscript::String* prompt; if ( !getCharacterParam( exec, 0, chr ) || !getItemParam( exec, 1, item ) || !exec.getStringParam( 2, prompt ) ) { return new Bscript::BError( "Invalid parameter" ); } if ( chr->client == nullptr ) { return new Bscript::BError( "No client attached" ); } if ( chr->has_active_prompt() != false ) { return new Bscript::BError( "Another script has an active prompt" ); } if ( !uoexec.suspend() ) { DEBUGLOG << "Script Error in '" << scriptname() << "' PC=" << exec.PC << ": \n" << "\tCall to function UO::RequestInput():\n" << "\tThe execution of this script can't be blocked!\n"; return new Bscript::BError( "Script can't be blocked" ); } Core::send_sysmessage( chr->client, prompt->data() ); chr->client->gd->prompt_uoemod = this; prompt_chr = chr; Core::send_prompt( chr->client, ctBEu32( item->serial ) ); return new Bscript::BLong( 0 ); }
BObjectImp* EGuildRefObjImp::call_method_id( const int id, Executor& ex, bool forcebuiltin ) { if (obj_->_disbanded) return new BError( "Guild has disbanded" ); Guild* enemyguild; Guild* allyguild; BError* err; Character* chr; switch(id) { case MTH_ISMEMBER: if (!ex.hasParams(1)) return new BError( "Not enough parameters" ); if (!getCharacterParam( ex, 0, chr )) return new BError( "Invalid parameter type" ); return new BLong(obj_->_member_serials.count( chr->serial )); case MTH_ISALLYGUILD: if (!ex.hasParams(1)) return new BError( "Not enough parameters" ); if (getGuildParam( ex, 0, allyguild, err )) { return new BLong( obj_->_allyguild_serials.count(allyguild->guildid()) ); } else { return err; } case MTH_ISENEMYGUILD: if (!ex.hasParams(1)) return new BError( "Not enough parameters" ); if (getGuildParam( ex, 0, enemyguild, err )) { return new BLong( obj_->_enemyguild_serials.count(enemyguild->guildid()) ); } else { return err; } case MTH_ADDMEMBER: if (!ex.hasParams( 1 )) return new BError( "Not enough parameters" ); if (!getCharacterParam( ex, 0, chr )) return new BError( "Invalid parameter type" ); if (chr->guildid()) return new BError( "Character already belongs to a guild" ); chr->guild( obj_.get() ); obj_->_member_serials.insert( chr->serial ); // MuadDib Added to update online members when status changes. obj_->update_online_members(); return new BLong(1); case MTH_ADDALLYGUILD: if (!ex.hasParams(1)) return new BError( "Not enough parameters" ); if (getGuildParam( ex, 0, allyguild, err )) { if (obj_->_enemyguild_serials.count(allyguild->guildid())) return new BError( "That is an enemy guild" ); if (allyguild->guildid() == obj_->guildid()) return new BError( "Passed self as new ally guild" ); obj_->_allyguild_serials.insert( allyguild->guildid() ); allyguild->_allyguild_serials.insert( obj_->_guildid ); // MuadDib Added to update online members when status changes. obj_->update_online_members(); allyguild->update_online_members(); return new BLong(1); } else { return err; } case MTH_ADDENEMYGUILD: if (!ex.hasParams(1)) return new BError( "Not enough parameters" ); if (getGuildParam( ex, 0, enemyguild, err )) { if (obj_->_allyguild_serials.count(enemyguild->guildid())) return new BError( "That is an ally guild" ); if (enemyguild->guildid() == obj_->guildid()) return new BError( "Passed self as new enemy guild" ); obj_->_enemyguild_serials.insert( enemyguild->guildid() ); enemyguild->_enemyguild_serials.insert( obj_->_guildid ); // MuadDib Added to update online members when status changes. obj_->update_online_members(); enemyguild->update_online_members(); return new BLong(1); } else { return err; } case MTH_REMOVEMEMBER: if (!ex.hasParams( 1 )) return new BError( "Not enough parameters" ); if (!getCharacterParam( ex, 0, chr )) return new BError( "Invalid parameter type" ); if (chr->guildid() != obj_->_guildid) return new BError( "Character does not belong to this guild" ); chr->guild( NULL ); obj_->_member_serials.erase( chr->serial ); // MuadDib Added to update online members when status changes. obj_->update_online_members_remove( chr ); return new BLong(1); case MTH_REMOVEALLYGUILD: if (!ex.hasParams(1)) return new BError( "Not enough parameters" ); if (getGuildParam( ex, 0, allyguild, err )) { if (!obj_->_allyguild_serials.count(allyguild->guildid())) return new BError( "That is not an ally guild" ); obj_->_allyguild_serials.erase( allyguild->guildid() ); allyguild->_allyguild_serials.erase( obj_->_guildid ); // MuadDib Added to update online members when status changes. obj_->update_online_members(); allyguild->update_online_members(); return new BLong(1); } else { return err; } case MTH_REMOVEENEMYGUILD: if (!ex.hasParams(1)) return new BError( "Not enough parameters" ); if (getGuildParam( ex, 0, enemyguild, err )) { if (!obj_->_enemyguild_serials.count(enemyguild->guildid())) return new BError( "That is not an enemy guild" ); obj_->_enemyguild_serials.erase( enemyguild->guildid() ); enemyguild->_enemyguild_serials.erase( obj_->_guildid ); // MuadDib Added to update online members when status changes. obj_->update_online_members(); enemyguild->update_online_members(); return new BLong(1); } else { return err; } default: bool changed = false; return CallPropertyListMethod_id( obj_->_proplist, id, ex, changed ); } }