diff --git a/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp b/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp index 006d45663..f83bd7dea 100644 --- a/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp +++ b/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp @@ -464,6 +464,7 @@ void CLuaIHMRyzom::RegisterRyzomFunctions(NLGUI::CLuaState &ls) ls.registerFunc("getTargetName", getTargetName); ls.registerFunc("getTargetTitleRaw", getTargetTitleRaw); ls.registerFunc("getTargetTitle", getTargetTitle); + ls.registerFunc("moveToTarget", moveToTarget); ls.registerFunc("addSearchPathUser", addSearchPathUser); ls.registerFunc("displaySystemInfo", displaySystemInfo); ls.registerFunc("displayChatMessage", displayChatMessage); @@ -1527,6 +1528,22 @@ int CLuaIHMRyzom::getTargetTitle(CLuaState &ls) return 1; } +// *************************************************************************** +int CLuaIHMRyzom::moveToTarget(CLuaState &ls) +{ + CLuaIHM::checkArgCount(ls, "moveToTarget", 1); + CLuaIHM::checkArgType(ls, "url", 1, LUA_TSTRING); + + const std::string &url = ls.toString(1); + CEntityCL *target = getTargetEntity(); + if (!target) return 0; + + CLuaManager::getInstance().executeLuaScript("ArkTargetUrl = [["+url+"]]", 0); + UserEntity->moveTo(UserEntity->selection(), 1.0, CUserEntity::OpenArkUrl); + return 0; +} + + // *************************************************************************** int CLuaIHMRyzom::addSearchPathUser(CLuaState &ls) { diff --git a/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.h b/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.h index 529ef8724..78b5a2a00 100644 --- a/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.h +++ b/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.h @@ -92,6 +92,7 @@ private: static int getTargetName(CLuaState &ls); static int getTargetTitleRaw(CLuaState &ls); static int getTargetTitle(CLuaState &ls); + static int moveToTarget(CLuaState &ls); static int addSearchPathUser(CLuaState &ls); static int getClientCfgVar(CLuaState &ls); static int isPlayerFreeTrial(CLuaState &ls); diff --git a/code/ryzom/client/src/user_entity.cpp b/code/ryzom/client/src/user_entity.cpp index fd1670da0..67a31770f 100644 --- a/code/ryzom/client/src/user_entity.cpp +++ b/code/ryzom/client/src/user_entity.cpp @@ -1682,10 +1682,14 @@ void CUserEntity::moveToAction(CEntityCL *ent) case CUserEntity::Outpost: CLuaManager::getInstance().executeLuaScript("game:outpostBCOpenStateWindow()", 0); break; - // BuildTotem + // BuildTotem case CUserEntity::BuildTotem: buildTotem(); break; + // openArkUrl + case CUserEntity::OpenArkUrl: + CLuaManager::getInstance().executeLuaScript("getUI('ui:interface:web_transactions'):find('html'):browse(ArkTargetUrl)", 0); + break; default: break; } diff --git a/code/ryzom/client/src/user_entity.h b/code/ryzom/client/src/user_entity.h index e240622c9..194ba931f 100644 --- a/code/ryzom/client/src/user_entity.h +++ b/code/ryzom/client/src/user_entity.h @@ -95,6 +95,7 @@ public: Outpost, BuildTotem, MissionRing, + OpenArkUrl, }; public: