aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS.txt1
-rw-r--r--OpenSim/Region/Application/OpenSim.cs6
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs8
-rw-r--r--OpenSim/Tools/pCampBot/Bot.cs37
-rw-r--r--OpenSim/Tools/pCampBot/BotManager.cs32
-rwxr-xr-xbin/OpenSim.ini.example5
7 files changed, 58 insertions, 33 deletions
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index 7a25d3f..961ab9f 100644
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -83,6 +83,7 @@ what it is today.
83* Gerhard 83* Gerhard
84* Godfrey 84* Godfrey
85* Grumly57 85* Grumly57
86* GuduleLapointe
86* Ewe Loon 87* Ewe Loon
87* Fly-Man 88* Fly-Man
88* Flyte Xevious 89* Flyte Xevious
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index 60c130f..9fe284f 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -56,6 +56,7 @@ namespace OpenSim
56 protected bool m_gui = false; 56 protected bool m_gui = false;
57 protected string m_consoleType = "local"; 57 protected string m_consoleType = "local";
58 protected uint m_consolePort = 0; 58 protected uint m_consolePort = 0;
59 protected string m_custom_prompt;
59 60
60 private string m_timedScript = "disabled"; 61 private string m_timedScript = "disabled";
61 private Timer m_scriptTimer; 62 private Timer m_scriptTimer;
@@ -85,7 +86,9 @@ namespace OpenSim
85 86
86 if (networkConfig != null) 87 if (networkConfig != null)
87 m_consolePort = (uint)networkConfig.GetInt("console_port", 0); 88 m_consolePort = (uint)networkConfig.GetInt("console_port", 0);
89
88 m_timedScript = startupConfig.GetString("timer_Script", "disabled"); 90 m_timedScript = startupConfig.GetString("timer_Script", "disabled");
91
89 if (m_logFileAppender != null) 92 if (m_logFileAppender != null)
90 { 93 {
91 if (m_logFileAppender is log4net.Appender.FileAppender) 94 if (m_logFileAppender is log4net.Appender.FileAppender)
@@ -108,6 +111,7 @@ namespace OpenSim
108 Util.FireAndForgetMethod = asyncCallMethod; 111 Util.FireAndForgetMethod = asyncCallMethod;
109 112
110 stpMaxThreads = startupConfig.GetInt("MaxPoolThreads", 15); 113 stpMaxThreads = startupConfig.GetInt("MaxPoolThreads", 15);
114 m_custom_prompt = startupConfig.GetString("custom_prompt", "Region");
111 } 115 }
112 116
113 if (Util.FireAndForgetMethod == FireAndForgetMethod.SmartThreadPool) 117 if (Util.FireAndForgetMethod == FireAndForgetMethod.SmartThreadPool)
@@ -831,7 +835,7 @@ namespace OpenSim
831 835
832 string regionName = (m_sceneManager.CurrentScene == null ? "root" : m_sceneManager.CurrentScene.RegionInfo.RegionName); 836 string regionName = (m_sceneManager.CurrentScene == null ? "root" : m_sceneManager.CurrentScene.RegionInfo.RegionName);
833 MainConsole.Instance.Output(String.Format("Currently selected region is {0}", regionName)); 837 MainConsole.Instance.Output(String.Format("Currently selected region is {0}", regionName));
834 m_console.DefaultPrompt = String.Format("Region ({0}) ", regionName); 838 m_console.DefaultPrompt = String.Format("{0} ({1}) ", m_custom_prompt, regionName);
835 m_console.ConsoleScene = m_sceneManager.CurrentScene; 839 m_console.ConsoleScene = m_sceneManager.CurrentScene;
836 } 840 }
837 841
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index f6bfc9b..3fa6bb0 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2899,7 +2899,7 @@ namespace OpenSim.Region.Framework.Scenes
2899 } 2899 }
2900 2900
2901 /// <summary> 2901 /// <summary>
2902 /// Update the entire rotation of the group. 2902 /// Update the rotation of just the root prim of a linkset.
2903 /// </summary> 2903 /// </summary>
2904 /// <param name="rot"></param> 2904 /// <param name="rot"></param>
2905 public void UpdateRootRotation(Quaternion rot) 2905 public void UpdateRootRotation(Quaternion rot)
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 99be46d..fc5141f 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -2013,8 +2013,6 @@ namespace OpenSim.Region.Framework.Scenes
2013 sitOrientation = avSitOrientation; 2013 sitOrientation = avSitOrientation;
2014 autopilot = false; 2014 autopilot = false;
2015 } 2015 }
2016 part.ParentGroup.TriggerScriptChangedEvent(Changed.LINK);
2017
2018 pos = part.AbsolutePosition + offset; 2016 pos = part.AbsolutePosition + offset;
2019 //if (Math.Abs(part.AbsolutePosition.Z - AbsolutePosition.Z) > 1) 2017 //if (Math.Abs(part.AbsolutePosition.Z - AbsolutePosition.Z) > 1)
2020 //{ 2018 //{
@@ -2060,6 +2058,12 @@ namespace OpenSim.Region.Framework.Scenes
2060 m_sitAtAutoTarget = autopilot; 2058 m_sitAtAutoTarget = autopilot;
2061 if (!autopilot) 2059 if (!autopilot)
2062 HandleAgentSit(remoteClient, UUID); 2060 HandleAgentSit(remoteClient, UUID);
2061
2062 // Moved here to avoid a race with default sit anim
2063 // The script event needs to be raised after the default sit anim is set.
2064 if (part != null)
2065 part.ParentGroup.TriggerScriptChangedEvent(Changed.LINK);
2066
2063 } 2067 }
2064 2068
2065 // public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset, string sitAnimation) 2069 // public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset, string sitAnimation)
diff --git a/OpenSim/Tools/pCampBot/Bot.cs b/OpenSim/Tools/pCampBot/Bot.cs
index 1b30766..7f941a4 100644
--- a/OpenSim/Tools/pCampBot/Bot.cs
+++ b/OpenSim/Tools/pCampBot/Bot.cs
@@ -222,7 +222,7 @@ namespace pCampBot
222 } 222 }
223 else 223 else
224 { 224 {
225 MainConsole.Instance.OutputFormat( 225 m_log.ErrorFormat(
226 "{0} {1} cannot login: {2}", FirstName, LastName, Client.Network.LoginMessage); 226 "{0} {1} cannot login: {2}", FirstName, LastName, Client.Network.LoginMessage);
227 227
228 if (OnDisconnected != null) 228 if (OnDisconnected != null)
@@ -266,12 +266,12 @@ namespace pCampBot
266 } 266 }
267 else 267 else
268 { 268 {
269 MainConsole.Instance.Output(String.Format("Failed to decode {0} asset {1}", asset.AssetType, asset.AssetID)); 269 m_log.WarnFormat("Failed to decode {0} asset {1}", asset.AssetType, asset.AssetID);
270 } 270 }
271 } 271 }
272 catch (Exception e) 272 catch (Exception e)
273 { 273 {
274 MainConsole.Instance.Output(String.Format("Exception: {0}",e.ToString())); 274 m_log.ErrorFormat("Exception: {0}{1}", e.Message, e.StackTrace);
275 } 275 }
276 } 276 }
277 } 277 }
@@ -305,7 +305,7 @@ namespace pCampBot
305 if (wear == "yes") 305 if (wear == "yes")
306 { 306 {
307 //TODO: Implement random outfit picking 307 //TODO: Implement random outfit picking
308 MainConsole.Instance.Output("Picks a random outfit. Not yet implemented."); 308 m_log.DebugFormat("Picks a random outfit. Not yet implemented.");
309 } 309 }
310 else if (wear != "save") 310 else if (wear != "save")
311 saveDir = "MyAppearance/" + wear; 311 saveDir = "MyAppearance/" + wear;
@@ -334,7 +334,9 @@ namespace pCampBot
334 listwearables.Add(item); 334 listwearables.Add(item);
335 } 335 }
336 else 336 else
337 MainConsole.Instance.Output(String.Format("Failed to create item {0}",item.Name)); 337 {
338 m_log.WarnFormat("Failed to create item {0}", item.Name);
339 }
338 } 340 }
339 ); 341 );
340 } 342 }
@@ -356,7 +358,9 @@ namespace pCampBot
356 listwearables.Add(item); 358 listwearables.Add(item);
357 } 359 }
358 else 360 else
359 MainConsole.Instance.Output(String.Format("Failed to create item {0}",item.Name)); 361 {
362 m_log.WarnFormat("Failed to create item {0}", item.Name);
363 }
360 } 364 }
361 ); 365 );
362 } 366 }
@@ -364,10 +368,12 @@ namespace pCampBot
364 Thread.Sleep(1000); 368 Thread.Sleep(1000);
365 369
366 if (listwearables == null || listwearables.Count == 0) 370 if (listwearables == null || listwearables.Count == 0)
367 MainConsole.Instance.Output("Nothing to send on this folder!"); 371 {
372 m_log.DebugFormat("Nothing to send on this folder!");
373 }
368 else 374 else
369 { 375 {
370 MainConsole.Instance.Output(String.Format("Sending {0} wearables...",listwearables.Count)); 376 m_log.DebugFormat("Sending {0} wearables...", listwearables.Count);
371 Client.Appearance.WearOutfit(listwearables, false); 377 Client.Appearance.WearOutfit(listwearables, false);
372 } 378 }
373 } 379 }
@@ -447,17 +453,20 @@ namespace pCampBot
447 453
448 for (int i = 0; i < prim.Textures.FaceTextures.Length; i++) 454 for (int i = 0; i < prim.Textures.FaceTextures.Length; i++)
449 { 455 {
450 UUID textureID = prim.Textures.FaceTextures[i].TextureID; 456 Primitive.TextureEntryFace face = prim.Textures.FaceTextures[i];
451 457
452 if (textureID != UUID.Zero) 458 if (face != null)
453 GetTexture(textureID); 459 {
460 UUID textureID = prim.Textures.FaceTextures[i].TextureID;
461
462 if (textureID != UUID.Zero)
463 GetTexture(textureID);
464 }
454 } 465 }
455 } 466 }
456 467
457 if (prim.Sculpt.SculptTexture != UUID.Zero) 468 if (prim.Sculpt != null && prim.Sculpt.SculptTexture != UUID.Zero)
458 {
459 GetTexture(prim.Sculpt.SculptTexture); 469 GetTexture(prim.Sculpt.SculptTexture);
460 }
461 } 470 }
462 } 471 }
463 472
diff --git a/OpenSim/Tools/pCampBot/BotManager.cs b/OpenSim/Tools/pCampBot/BotManager.cs
index 704770a..f5dd5e0 100644
--- a/OpenSim/Tools/pCampBot/BotManager.cs
+++ b/OpenSim/Tools/pCampBot/BotManager.cs
@@ -51,7 +51,6 @@ namespace pCampBot
51 protected CommandConsole m_console; 51 protected CommandConsole m_console;
52 protected List<Bot> m_lBot; 52 protected List<Bot> m_lBot;
53 protected Random somthing = new Random(Environment.TickCount); 53 protected Random somthing = new Random(Environment.TickCount);
54 protected int numbots = 0;
55 public IConfig Config { get; private set; } 54 public IConfig Config { get; private set; }
56 55
57 /// <summary> 56 /// <summary>
@@ -137,7 +136,7 @@ namespace pCampBot
137 if (behaviourSwitches.Contains("g")) 136 if (behaviourSwitches.Contains("g"))
138 behaviours.Add(new GrabbingBehaviour()); 137 behaviours.Add(new GrabbingBehaviour());
139 138
140 startupBot(i, this, behaviours, firstName, lastName, password, loginUri); 139 StartBot(this, behaviours, firstName, lastName, password, loginUri);
141 } 140 }
142 } 141 }
143 142
@@ -157,22 +156,21 @@ namespace pCampBot
157// int newlen = len + botcount; 156// int newlen = len + botcount;
158// for (int i = len; i < newlen; i++) 157// for (int i = len; i < newlen; i++)
159// { 158// {
160// startupBot(i, Config); 159// startupBot(Config);
161// } 160// }
162// } 161// }
163 162
164 /// <summary> 163 /// <summary>
165 /// This starts up the bot and stores the thread for the bot in the thread array 164 /// This starts up the bot and stores the thread for the bot in the thread array
166 /// </summary> 165 /// </summary>
167 /// <param name="pos">The position in the thread array to stick the bot's thread</param>
168 /// <param name="bm"></param> 166 /// <param name="bm"></param>
169 /// <param name="behaviours">Behaviours for this bot to perform.</param> 167 /// <param name="behaviours">Behaviours for this bot to perform.</param>
170 /// <param name="firstName">First name</param> 168 /// <param name="firstName">First name</param>
171 /// <param name="lastName">Last name</param> 169 /// <param name="lastName">Last name</param>
172 /// <param name="password">Password</param> 170 /// <param name="password">Password</param>
173 /// <param name="loginUri">Login URI</param> 171 /// <param name="loginUri">Login URI</param>
174 public void startupBot( 172 public void StartBot(
175 int pos, BotManager bm, List<IBehaviour> behaviours, 173 BotManager bm, List<IBehaviour> behaviours,
176 string firstName, string lastName, string password, string loginUri) 174 string firstName, string lastName, string password, string loginUri)
177 { 175 {
178 Bot pb = new Bot(bm, behaviours, firstName, lastName, password, loginUri); 176 Bot pb = new Bot(bm, behaviours, firstName, lastName, password, loginUri);
@@ -200,16 +198,17 @@ namespace pCampBot
200 { 198 {
201 case EventType.CONNECTED: 199 case EventType.CONNECTED:
202 m_log.Info("[" + callbot.FirstName + " " + callbot.LastName + "]: Connected"); 200 m_log.Info("[" + callbot.FirstName + " " + callbot.LastName + "]: Connected");
203 numbots++;
204// m_log.InfoFormat("NUMBOTS {0}", numbots);
205 break; 201 break;
206 case EventType.DISCONNECTED: 202 case EventType.DISCONNECTED:
207 m_log.Info("[" + callbot.FirstName + " " + callbot.LastName + "]: Disconnected"); 203 m_log.Info("[" + callbot.FirstName + " " + callbot.LastName + "]: Disconnected");
208 numbots--; 204
209// m_log.InfoFormat("NUMBOTS {0}", numbots); 205 lock (m_lBot)
210 if (numbots <= 0) 206 {
211 Environment.Exit(0); 207 if (m_lBot.TrueForAll(b => !b.IsConnected))
212 break; 208 Environment.Exit(0);
209
210 break;
211 }
213 } 212 }
214 } 213 }
215 214
@@ -234,8 +233,11 @@ namespace pCampBot
234 233
235 private void HandleShutdown(string module, string[] cmd) 234 private void HandleShutdown(string module, string[] cmd)
236 { 235 {
237 m_log.Warn("[BOTMANAGER]: Shutting down bots"); 236 Util.FireAndForget(o =>
238 doBotShutdown(); 237 {
238 m_log.Warn("[BOTMANAGER]: Shutting down bots");
239 doBotShutdown();
240 });
239 } 241 }
240 242
241 private void HandleShowStatus(string module, string[] cmd) 243 private void HandleShowStatus(string module, string[] cmd)
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example
index e71fb05..c5205db 100755
--- a/bin/OpenSim.ini.example
+++ b/bin/OpenSim.ini.example
@@ -230,6 +230,11 @@
230 ;; by scripts have changed. 230 ;; by scripts have changed.
231 ; DeleteScriptsOnStartup = true 231 ; DeleteScriptsOnStartup = true
232 232
233 ;; Custom prompt
234 ;; This value replaces the word "Region" in console prompt
235 ;; (usualy "Region (regionName) # "
236 ;; Useful only if you have to monitor serveral servers
237 ; custom_prompt = "MyServer1"
233 238
234[SMTP] 239[SMTP]
235 ;; The SMTP server enabled the email module to send email to external 240 ;; The SMTP server enabled the email module to send email to external