diff --git a/code/ryzom/client/data/gamedev/interfaces_v3/commands.xml b/code/ryzom/client/data/gamedev/interfaces_v3/commands.xml
index 58f41d919..d7aabccae 100644
--- a/code/ryzom/client/data/gamedev/interfaces_v3/commands.xml
+++ b/code/ryzom/client/data/gamedev/interfaces_v3/commands.xml
@@ -50,6 +50,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/code/ryzom/client/src/client_chat_manager.cpp b/code/ryzom/client/src/client_chat_manager.cpp
index 1bf6227d9..3211e764c 100644
--- a/code/ryzom/client/src/client_chat_manager.cpp
+++ b/code/ryzom/client/src/client_chat_manager.cpp
@@ -1375,8 +1375,24 @@ class CHandlerTalk : public IActionHandler
}
else
{
- ChatMngr.setChatMode((CChatGroup::TGroupType)mode);
- ChatMngr.chat(text, mode == CChatGroup::team);
+ if (mode == CChatGroup::dyn_chat)
+ {
+ uint channel;
+ fromString(getParam (sParams, "channel"), channel);
+ if (channel < CChatGroup::MaxDynChanPerPlayer)
+ {
+ PeopleInterraction.talkInDynamicChannel(channel, text);
+ }
+ else
+ {
+ nlwarning("/ah talk: invalid dyn_chat channel %d\n", channel);
+ }
+ }
+ else
+ {
+ ChatMngr.setChatMode((CChatGroup::TGroupType)mode);
+ ChatMngr.chat(text, mode == CChatGroup::team);
+ }
}
}
}
@@ -1391,9 +1407,21 @@ class CHandlerEnterTalk : public IActionHandler
{
// Param
uint mode;
+ uint channel = 0;
+
fromString(getParam (sParams, "mode"), mode);
- ChatMngr.updateChatModeAndButton(mode);
+ if (mode == CChatGroup::dyn_chat)
+ {
+ fromString(getParam(sParams, "channel"), channel);
+
+ if (channel >= CChatGroup::MaxDynChanPerPlayer)
+ {
+ channel = 0;
+ }
+ }
+
+ ChatMngr.updateChatModeAndButton(mode, channel);
}
};
REGISTER_ACTION_HANDLER( CHandlerEnterTalk, "enter_talk");
diff --git a/code/ryzom/client/src/commands.cpp b/code/ryzom/client/src/commands.cpp
index 70cbfc229..44b165c61 100644
--- a/code/ryzom/client/src/commands.cpp
+++ b/code/ryzom/client/src/commands.cpp
@@ -1198,77 +1198,6 @@ NLMISC_COMMAND(db, "Modify Database"," ")
return true;
}
-static bool talkInChan(uint32 nb,std::vectorargs)
-{
- uint32 maxChans = CChatGroup::MaxDynChanPerPlayer;
- if (nb>=maxChans)
- {
- return false;
- }
- if(!args.empty())
- {
- std::string tmp;
- std::vector::const_iterator first(args.begin()),last(args.end());
-
- for(;first!=last;++first)
- {
- tmp = tmp + (*first);
- tmp = tmp+" ";
- }
-
- ucstring uctmp;
- uctmp.fromUtf8(tmp);
- PeopleInterraction.talkInDynamicChannel(nb, uctmp);
- return true;
- }
- else
- {
- ChatMngr.updateChatModeAndButton(CChatGroup::dyn_chat, nb);
- }
- return false;
-}
-
-NLMISC_COMMAND(0,"talk in 0th dynamic chat channel"," ")
-{
- return talkInChan(0,args);
-}
-
-NLMISC_COMMAND(1,"talk in first dynamic chat channel"," ")
-{
- return talkInChan(1,args);
-}
-
-NLMISC_COMMAND(2,"talk in 2nd dynamic chat channel"," ")
-{
- return talkInChan(2,args);
-}
-
-NLMISC_COMMAND(3,"talk in 3rd dynamic chat channel"," ")
-{
- return talkInChan(3,args);
-}
-
-NLMISC_COMMAND(4,"talk in 4th dynamic chat channel"," ")
-{
- return talkInChan(4,args);
-}
-
-NLMISC_COMMAND(5,"talk in 5th dynamic chat channel"," ")
-{
- return talkInChan(5,args);
-}
-
-NLMISC_COMMAND(6,"talk in 6th dynamic chat channel"," ")
-{
- return talkInChan(6,args);
-}
-
-NLMISC_COMMAND(7,"talk in 7th dynamic chat channel"," ")
-{
- return talkInChan(7,args);
-}
-
-
NLMISC_COMMAND(setItemName, "set name of items, sbrick, etc.."," ")
{
if (args.size() < 2) return false;