From f9738713a7848c4db5568def0d74e4bcf0f965e2 Mon Sep 17 00:00:00 2001 From: Ulukyn Date: Thu, 30 Jan 2020 22:59:02 +0100 Subject: [PATCH 1/2] Changed: replace PrintfCommands by loadingTexts in cff to prevent overwrite of default values in user client.cfg --- code/ryzom/client/client_default.cfg | 8 +----- code/ryzom/client/src/client_cfg.cpp | 42 +++++++++++----------------- code/ryzom/client/src/client_cfg.h | 4 +-- code/ryzom/client/src/progress.cpp | 7 ++--- 4 files changed, 22 insertions(+), 39 deletions(-) diff --git a/code/ryzom/client/client_default.cfg b/code/ryzom/client/client_default.cfg index 66c260273..444f8d20a 100644 --- a/code/ryzom/client/client_default.cfg +++ b/code/ryzom/client/client_default.cfg @@ -415,13 +415,7 @@ SystemInfoColors = "R2_INVITE","0 255 0 255 around", // Ring invitation }; -PrintfCommands = { - "0", "132", "30 144 255 255", "18", "uiS2", - "0", "105", "255 188 0 255", "14", "uiS2E0", - "0", "65", "255 255 255 255", "12", "NEWS" -}; - -PrintfCommandsFreeTrial = { +loadingTexts = { "0", "132", "30 144 255 255", "18", "uiS2", "0", "105", "255 188 0 255", "14", "uiS2E0", "0", "65", "255 255 255 255", "12", "NEWS" diff --git a/code/ryzom/client/src/client_cfg.cpp b/code/ryzom/client/src/client_cfg.cpp index 7f0222088..bcb6384de 100644 --- a/code/ryzom/client/src/client_cfg.cpp +++ b/code/ryzom/client/src/client_cfg.cpp @@ -1413,36 +1413,28 @@ void CClientConfig::setValues() #ifndef RZ_NO_CLIENT // printf commands in loading screens - ClientCfg.PrintfCommands.clear(); - ClientCfg.PrintfCommandsFreeTrial.clear(); - std::vector< std::string > printfCommands(2); - printfCommands[0] = "PrintfCommands"; - printfCommands[1] = "PrintfCommandsFreeTrial"; - for(uint p=0; p<2; p++) + ClientCfg.loadingTexts.clear(); + CConfigFile::CVar *pc = ClientCfg.ConfigFile.getVarPtr("loadingTexts"); + if (pc) { - CConfigFile::CVar *pc = ClientCfg.ConfigFile.getVarPtr(printfCommands[p].c_str()); - if (pc) + if( pc->size()%5 == 0 && pc->size() >= 5) { - if( pc->size()%5 == 0 && pc->size() >= 5) + for (uint i = 0; i < pc->size(); i+=5) { - for (uint i = 0; i < pc->size(); i+=5) - { - SPrintfCommand pcom; - pcom.X = pc->asInt(i); - pcom.Y = pc->asInt(i+1); - pcom.Color = CRGBA::stringToRGBA( pc->asString(i+2).c_str() ); - pcom.FontSize = pc->asInt(i+3); - pcom.Text = pc->asString(i+4); - - if(p==0) ClientCfg.PrintfCommands.push_back( pcom ); - else ClientCfg.PrintfCommandsFreeTrial.push_back( pcom ); - } - } - else - { - cfgWarning(("Missing or too many parameters in " + printfCommands[p]).c_str()); + SPrintfCommand pcom; + pcom.X = pc->asInt(i); + pcom.Y = pc->asInt(i+1); + pcom.Color = CRGBA::stringToRGBA( pc->asString(i+2).c_str() ); + pcom.FontSize = pc->asInt(i+3); + pcom.Text = pc->asString(i+4); + + ClientCfg.loadingTexts.push_back( pcom ); } } + else + { + cfgWarning("Missing or too many parameters in loadingTexts"); + } } #endif diff --git a/code/ryzom/client/src/client_cfg.h b/code/ryzom/client/src/client_cfg.h index 7c1fa2ad6..896d0bffd 100644 --- a/code/ryzom/client/src/client_cfg.h +++ b/code/ryzom/client/src/client_cfg.h @@ -699,9 +699,7 @@ struct CClientConfig uint FontSize; std::string Text; }; - std::vector PrintfCommands; - - std::vector PrintfCommandsFreeTrial; + std::vector loadingTexts; // funny loading messages count uint16 LoadingStringCount; diff --git a/code/ryzom/client/src/progress.cpp b/code/ryzom/client/src/progress.cpp index fd46c8183..8847a87a9 100644 --- a/code/ryzom/client/src/progress.cpp +++ b/code/ryzom/client/src/progress.cpp @@ -367,15 +367,14 @@ void CProgress::internalProgress (float value) // apply text commands if( ApplyTextCommands ) { - std::vector printfCommands = ClientCfg.PrintfCommands; - if(FreeTrial) printfCommands = ClientCfg.PrintfCommandsFreeTrial; + std::vector loadingTexts = ClientCfg.loadingTexts; - if( !printfCommands.empty() ) + if( !loadingTexts.empty() ) { TextContext->setHotSpot(UTextContext::MiddleBottom); vector::iterator itpc; - for( itpc = printfCommands.begin(); itpc != printfCommands.end(); ++itpc ) + for( itpc = loadingTexts.begin(); itpc != loadingTexts.end(); ++itpc ) { float x = 0.5f;//((*itpc).X / 1024.f); float y = ((*itpc).Y / 768.f); From 15ce2cd39c1cd0ac446654c41d253901c0955b36 Mon Sep 17 00:00:00 2001 From: Ulukyn Date: Thu, 30 Jan 2020 23:00:23 +0100 Subject: [PATCH 2/2] Added: new option to chat with npc when fame are < -30. Finish fast and temporary hack for who_am_i hide --- code/ryzom/client/src/game_context_menu.cpp | 39 +++++++++++++++++++-- code/ryzom/client/src/game_context_menu.h | 1 + 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/code/ryzom/client/src/game_context_menu.cpp b/code/ryzom/client/src/game_context_menu.cpp index cc6ccffc8..e685f9638 100644 --- a/code/ryzom/client/src/game_context_menu.cpp +++ b/code/ryzom/client/src/game_context_menu.cpp @@ -30,6 +30,7 @@ #include "interface_v3/bot_chat_manager.h" #include "interface_v3/guild_manager.h" #include "interface_v3/people_interraction.h" +#include "continent_manager.h" #include "main_loop.h" #include "interface_v3/inventory_manager.h" #include "motion/user_controls.h" @@ -48,6 +49,7 @@ using namespace NLMISC; using namespace std; +extern CContinentManager ContinentMngr; // filter available programs depending on R2 mode static uint32 filterAvailablePrograms(uint32 src) @@ -165,6 +167,7 @@ void CGameContextMenu::init(const std::string &srcMenuId) // BotChat menus _TextNews = "ui:interface:" + menuId + ":news"; + _TextNewsAgressive = "ui:interface:" + menuId + ":news_aggressive"; _TextTradeItem = "ui:interface:" + menuId + ":trade_item"; _TextTradeTeleport = "ui:interface:" + menuId + ":trade_teleport"; _TextTradeFaction = "ui:interface:" + menuId + ":trade_faction"; @@ -431,9 +434,35 @@ void CGameContextMenu::update() if (_TextAttack) _TextAttack->setActive(canAttack()); + + // get current continent to check fame + string continent = ContinentMngr.cur()->SheetName; + sint8 fameValue = 0; + uint fameIndex; + nlinfo("continent = %s", continent.c_str()); + if (continent == "matis.continent") + fameIndex = CStaticFames::getInstance().getFactionIndex("matis"); + else if (continent == "fyros.continent") + fameIndex = CStaticFames::getInstance().getFactionIndex("fyros"); + else if (continent == "tryker.continent") + fameIndex = CStaticFames::getInstance().getFactionIndex("tryker"); + else if (continent == "zorai.continent") + fameIndex = CStaticFames::getInstance().getFactionIndex("zorai"); + + if (fameIndex != CStaticFames::INVALID_FACTION_INDEX) + { + CCDBNodeLeaf *pLeafFame = NLGUI::CDBManager::getInstance()->getDbProp(toString("SERVER:FAME:PLAYER%d:VALUE", fameIndex), false); + if (pLeafFame != NULL) + fameValue = pLeafFame->getValue8(); + } + nlinfo("fame = %d", fameValue); if (_TextNews) - _TextNews->setActive(selection && !canAttack()); - + _TextNews->setActive(selection && !canAttack() && !selection->isForageSource() && fameValue >= -30); + + if (_TextNewsAgressive) + _TextNewsAgressive->setActive(selection && !canAttack() && !selection->isForageSource() && fameValue < -30); + + if (_TextDuel && _TextUnDuel) { if ((!UserEntity->isRiding()) && (_ServerInDuel->getValue8() != 0)) @@ -735,7 +764,11 @@ void CGameContextMenu::updateContextMenuMissionsOptions( bool forceHide ) { result = NLMISC::CI18N::get("uiMissionOptionNotReceived"); } - if (result == ucstring("Qui etes-vous ?")) + if (result == ucstring("Qui etes-vous ?") + || result == ucstring("Wer bist Du?") + || result == ucstring("Who are you?") + || result == ucstring("Quién eres tú?") + || result == ucstring("Кто ты?")) { pVTM->setActive(false); } diff --git a/code/ryzom/client/src/game_context_menu.h b/code/ryzom/client/src/game_context_menu.h index 315326417..6ddc2200d 100644 --- a/code/ryzom/client/src/game_context_menu.h +++ b/code/ryzom/client/src/game_context_menu.h @@ -132,6 +132,7 @@ private: // BotChat and player talk CViewTextMenuPtr _TextNews; + CViewTextMenuPtr _TextNewsAgressive; CViewTextMenuPtr _TextTradeItem; CViewTextMenuPtr _TextTradeTeleport; CViewTextMenuPtr _TextTradeFaction;