aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Environment/Scenes/ScenePresence.cs39
-rw-r--r--bin/excuses463
-rw-r--r--pCampBot/BotManager.cs254
-rw-r--r--pCampBot/PhysicsBot.cs208
-rw-r--r--pCampBot/PhysicsCamperBotREADME.txt21
-rw-r--r--pCampBot/pCampBot.cs80
-rw-r--r--pCampBot/pCampBot.csproj102
-rw-r--r--pCampBot/prebuild.xml63
-rw-r--r--pCampBot/runprebuild.bat2
-rw-r--r--pCampBot/runprebuild.sh4
10 files changed, 1230 insertions, 6 deletions
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index 75ccf1a..659a1f5 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -1088,17 +1088,33 @@ namespace OpenSim.Region.Environment.Scenes
1088 (m_movementflag & (uint) AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0) 1088 (m_movementflag & (uint) AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0)
1089 { 1089 {
1090 // Client is moving, and colliding and pressing the page up button but isn't flying 1090 // Client is moving, and colliding and pressing the page up button but isn't flying
1091 SetMovementAnimation(Animations.AnimsLLUUID["JUMP"], 1); 1091 try
1092 {
1093 SetMovementAnimation(Animations.AnimsLLUUID["JUMP"], 1);
1094 }
1095 catch (KeyNotFoundException)
1096 { }
1092 } 1097 }
1093 else if (m_setAlwaysRun) 1098 else if (m_setAlwaysRun)
1094 { 1099 {
1095 // We are running 1100 // We are running
1096 SetMovementAnimation(Animations.AnimsLLUUID["RUN"], 1); 1101 try
1102 {
1103 SetMovementAnimation(Animations.AnimsLLUUID["RUN"], 1);
1104 }
1105 catch (KeyNotFoundException)
1106 { }
1097 } 1107 }
1098 else 1108 else
1099 { 1109 {
1100 // We're moving, but we're not doing anything else.. so play the stand animation 1110 // We're moving, but we're not doing anything else.. so play the stand animation
1101 SetMovementAnimation(Animations.AnimsLLUUID["WALK"], 1); 1111 try
1112 {
1113 SetMovementAnimation(Animations.AnimsLLUUID["WALK"], 1);
1114 }
1115 catch (KeyNotFoundException)
1116 { }
1117
1102 } 1118 }
1103 } 1119 }
1104 else 1120 else
@@ -1130,7 +1146,13 @@ namespace OpenSim.Region.Environment.Scenes
1130 else 1146 else
1131 { 1147 {
1132 // We're not moving.. and we're not doing anything.. so play the stand animation 1148 // We're not moving.. and we're not doing anything.. so play the stand animation
1133 SetMovementAnimation(Animations.AnimsLLUUID["STAND"], 1); 1149 try
1150 {
1151
1152 SetMovementAnimation(Animations.AnimsLLUUID["STAND"], 1);
1153 }
1154 catch (KeyNotFoundException)
1155 { }
1134 } 1156 }
1135 } 1157 }
1136 } 1158 }
@@ -1181,8 +1203,13 @@ namespace OpenSim.Region.Environment.Scenes
1181 direc.z *= 3; 1203 direc.z *= 3;
1182 //System.Console.WriteLine("Jump"); 1204 //System.Console.WriteLine("Jump");
1183 // PreJump and jump happen too quickly. Many times prejump gets ignored. 1205 // PreJump and jump happen too quickly. Many times prejump gets ignored.
1184 SetMovementAnimation(Animations.AnimsLLUUID["PREJUMP"], 1); 1206 try
1185 SetMovementAnimation(Animations.AnimsLLUUID["JUMP"], 1); 1207 {
1208 SetMovementAnimation(Animations.AnimsLLUUID["PREJUMP"], 1);
1209 SetMovementAnimation(Animations.AnimsLLUUID["JUMP"], 1);
1210 }
1211 catch (KeyNotFoundException)
1212 { }
1186 } 1213 }
1187 } 1214 }
1188 } 1215 }
diff --git a/bin/excuses b/bin/excuses
new file mode 100644
index 0000000..30023bf
--- /dev/null
+++ b/bin/excuses
@@ -0,0 +1,463 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<HTML><HEAD>
3<META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD>
4<BODY><PRE>clock speed
5solar flares
6electromagnetic radiation from satellite debris
7static from nylon underwear
8static from plastic slide rules
9global warming
10poor power conditioning
11static buildup
12doppler effect
13hardware stress fractures
14magnetic interference from money/credit cards
15dry joints on cable plug
16we're waiting for [the phone company] to fix that line
17sounds like a Windows problem, try calling Microsoft support
18temporary routing anomaly
19somebody was calculating pi on the server
20fat electrons in the lines
21excess surge protection
22floating point processor overflow
23divide-by-zero error
24POSIX compliance problem
25monitor resolution too high
26improperly oriented keyboard
27network packets travelling uphill (use a carrier pigeon)
28Decreasing electron flux
29first Saturday after first full moon in Winter
30radiosity depletion
31CPU radiator broken
32It works the way the Wang did, what's the problem
33positron router malfunction
34cellular telephone interference
35techtonic stress
36piezo-electric interference
37(l)user error
38working as designed
39dynamic software linking table corrupted
40heavy gravity fluctuation, move computer to floor rapidly
41secretary plugged hairdryer into UPS
42terrorist activities
43not enough memory, go get system upgrade
44interrupt configuration error
45spaghetti cable cause packet failure
46boss forgot system password
47bank holiday - system operating credits not recharged
48virus attack, luser responsible
49waste water tank overflowed onto computer
50Complete Transient Lockout
51bad ether in the cables
52Bogon emissions
53Change in Earth's rotational speed
54Cosmic ray particles crashed through the hard disk platter
55Smell from unhygienic janitorial staff wrecked the tape heads
56Little hamster in running wheel had coronary; waiting for replacement to be Fedexed from Wyoming
57Evil dogs hypnotised the night shift
58Plumber mistook routing panel for decorative wall fixture
59Electricians made popcorn in the power supply
60Groundskeepers stole the root password
61high pressure system failure
62failed trials, system needs redesigned
63system has been recalled
64not approved by the FCC
65need to wrap system in aluminum foil to fix problem
66not properly grounded, please bury computer
67CPU needs recalibration
68system needs to be rebooted
69bit bucket overflow
70descramble code needed from software company
71only available on a need to know basis
72knot in cables caused data stream to become twisted and kinked
73nesting roaches shorted out the ether cable
74The file system is full of it
75Satan did it
76Daemons did it
77You're out of memory
78There isn't any problem
79Unoptimized hard drive
80Typo in the code
81Yes, yes, its called a design limitation
82Look, buddy: Windows 3.1 IS A General Protection Fault.
83That's a great computer you have there; have you considered how it would work as a BSD machine?
84Please excuse me, I have to circuit an AC line through my head to get this database working.
85Yeah, yo mama dresses you funny and you need a mouse to delete files.
86Support staff hung over, send aspirin and come back LATER.
87Someone is standing on the ethernet cable, causing a kink in the cable
88Windows 95 undocumented "feature"
89Runt packets
90Password is too complex to decrypt
91Boss' kid fucked up the machine
92Electromagnetic energy loss
93Budget cuts
94Mouse chewed through power cable
95Stale file handle (next time use Tupperware(tm)!)
96Feature not yet implemented
97Internet outage
98Pentium FDIV bug
99Vendor no longer supports the product
100Small animal kamikaze attack on power supplies
101The vendor put the bug there.
102SIMM crosstalk.
103IRQ dropout
104Collapsed Backbone
105Power company testing new voltage spike (creation) equipment
106operators on strike due to broken coffee machine
107backup tape overwritten with copy of system manager's favourite CD
108UPS interrupted the server's power
109The electrician didn't know what the yellow cable was so he yanked the ethernet out.
110The keyboard isn't plugged in
111The air conditioning water supply pipe ruptured over the machine room
112The electricity substation in the car park blew up.
113The rolling stones concert down the road caused a brown out
114The salesman drove over the CPU board.
115The monitor is plugged into the serial port
116Root nameservers are out of sync
117electro-magnetic pulses from French above ground nuke testing.
118your keyboard's space bar is generating spurious keycodes.
119the real ttys became pseudo ttys and vice-versa.
120the printer thinks its a router.
121the router thinks its a printer.
122evil hackers from Serbia.
123we just switched to FDDI.
124halon system went off and killed the operators.
125because Bill Gates is a Jehovah's witness and so nothing can work on St. Swithin's day.
126user to computer ratio too high.
127user to computer ration too low.
128we just switched to Sprint.
129it has Intel Inside
130Sticky bits on disk.
131Power Company having EMP problems with their reactor
132The ring needs another token
133new management
134telnet: Unable to connect to remote host: Connection refused
135SCSI Chain overterminated
136It's not plugged in.
137because of network lag due to too many people playing deathmatch
138You put the disk in upside down.
139Daemons loose in system.
140User was distributing pornography on server; system seized by FBI.
141BNC (brain not connected)
142UBNC (user brain not connected)
143LBNC (luser brain not connected)
144disks spinning backwards - toggle the hemisphere jumper.
145new guy cross-connected phone lines with ac power bus.
146had to use hammer to free stuck disk drive heads.
147Too few computrons available.
148Flat tire on station wagon with tapes. ("Never underestimate the bandwidth of a station wagon full of tapes hurling down the highway" Andrew S. Tannenbaum)
149Communications satellite used by the military for star wars.
150Party-bug in the Aloha protocol.
151Insert coin for new game
152Dew on the telephone lines.
153Arcserve crashed the server again.
154Some one needed the powerstrip, so they pulled the switch plug.
155My pony-tail hit the on/off switch on the power strip.
156Big to little endian conversion error
157You can tune a file system, but you can't tune a fish (from most tunefs man pages)
158Dumb terminal
159Zombie processes haunting the computer
160Incorrect time synchronization
161Defunct processes
162Stubborn processes
163non-redundant fan failure
164monitor VLF leakage
165bugs in the RAID
166no "any" key on keyboard
167root rot
168Backbone Scoliosis
169/pub/lunch
170excessive collisions &amp; not enough packet ambulances
171le0: no carrier: transceiver cable problem?
172broadcast packets on wrong frequency
173popper unable to process jumbo kernel
174NOTICE: alloc: /dev/null: filesystem full
175pseudo-user on a pseudo-terminal
176Recursive traversal of loopback mount points
177Backbone adjustment
178OS swapped to disk
179vapors from evaporating sticky-note adhesives
180sticktion
181short leg on process table
182multicasts on broken packets
183ether leak
184Atilla the Hub
185endothermal recalibration
186filesystem not big enough for Jumbo Kernel Patch
187loop found in loop in redundant loopback
188system consumed all the paper for paging
189permission denied
190Reformatting Page. Wait...
191..disk or the processor is on fire.
192SCSI's too wide.
193Proprietary Information.
194Just type 'mv * /dev/null'.
195runaway cat on system.
196Did you pay the new Support Fee?
197We only support a 1200 bps connection.
198We only support a 28000 bps connection.
199Me no internet, only janitor, me just wax floors.
200I'm sorry a pentium won't do, you need an SGI to connect with us.
201Post-it Note Sludge leaked into the monitor.
202the curls in your keyboard cord are losing electricity.
203The monitor needs another box of pixels.
204RPC_PMAP_FAILURE
205kernel panic: write-only-memory (/dev/wom0) capacity exceeded.
206Write-only-memory subsystem too slow for this machine. Contact your local dealer.
207Just pick up the phone and give modem connect sounds. "Well you said we should get more lines so we don't have voice lines."
208Quantum dynamics are affecting the transistors
209Police are examining all internet packets in the search for a narco-net-trafficker
210We are currently trying a new concept of using a live mouse. Unfortunately, one has yet to survive being hooked up to the computer.....please bear with us.
211Your mail is being routed through Germany ... and they're censoring us.
212Only people with names beginning with 'A' are getting mail this week (a la Microsoft)
213We didn't pay the Internet bill and it's been cut off.
214Lightning strikes.
215Of course it doesn't work. We've performed a software upgrade.
216Change your language to Finnish.
217Fluorescent lights are generating negative ions. If turning them off doesn't work, take them out and put tin foil on the ends.
218High nuclear activity in your area.
219What office are you in? Oh, that one. Did you know that your building was built over the universities first nuclear research site? And wow, aren't you the lucky one, your office is right over where the core is buried!
220The MGs ran out of gas.
221The UPS doesn't have a battery backup.
222Recursivity. Call back if it happens again.
223Someone thought The Big Red Button was a light switch.
224The mainframe needs to rest. It's getting old, you know.
225I'm not sure. Try calling the Internet's head office -- it's in the book.
226The lines are all busy (busied out, that is -- why let them in to begin with?).
227Jan 9 16:41:27 huber su: 'su root' succeeded for .... on /dev/pts/1
228It's those computer people in X {city of world}. They keep stuffing things up.
229A star wars satellite accidently blew up the WAN.
230Fatal error right in front of screen
231That function is not currently supported, but Bill Gates assures us it will be featured in the next upgrade.
232wrong polarity of neutron flow
233Lusers learning curve appears to be fractal
234We had to turn off that service to comply with the CDA Bill.
235Ionization from the air-conditioning
236TCP/IP UDP alarm threshold is set too low.
237Someone is broadcasting pygmy packets and the router doesn't know how to deal with them.
238The new frame relay network hasn't bedded down the software loop transmitter yet.
239Fanout dropping voltage too much, try cutting some of those little traces
240Plate voltage too low on demodulator tube
241You did wha... oh _dear_....
242CPU needs bearings repacked
243Too many little pins on CPU confusing it, bend back and forth until 10-20% are neatly removed. Do _not_ leave metal bits visible!
244_Rosin_ core solder? But...
245Software uses US measurements, but the OS is in metric...
246The computer fleetly, mouse and all.
247Your cat tried to eat the mouse.
248The Borg tried to assimilate your system. Resistance is futile.
249It must have been the lightning storm we had (yesterday) (last week) (last month)
250Due to Federal Budget problems we have been forced to cut back on the number of users able to access the system at one time. (namely none allowed....)
251Too much radiation coming from the soil.
252Unfortunately we have run out of bits/bytes/whatever. Don't worry, the next supply will be coming next week.
253Program load too heavy for processor to lift.
254Processes running slowly due to weak power supply
255Our ISP is having {switching,routing,SMDS,frame relay} problems
256We've run out of licenses
257Interference from lunar radiation
258Standing room only on the bus.
259You need to install an RTFM interface.
260That would be because the software doesn't work.
261That's easy to fix, but I can't be bothered.
262Someone's tie is caught in the printer, and if anything else gets printed, he'll be in it too.
263We're upgrading /dev/null
264The Usenet news is out of date
265Our POP server was kidnapped by a weasel.
266It's stuck in the Web.
267Your modem doesn't speak English.
268The mouse escaped.
269All of the packets are empty.
270The UPS is on strike.
271Neutrino overload on the nameserver
272Melting hard drives
273Someone has messed up the kernel pointers
274The kernel license has expired
275Netscape has crashed
276The cord jumped over and hit the power switch.
277It was OK before you touched it.
278Bit rot
279U.S. Postal Service
280Your Flux Capacitor has gone bad.
281The Dilithium Crystals need to be rotated.
282The static electricity routing is acting up...
283Traceroute says that there is a routing problem in the backbone. It's not our problem.
284The co-locator cannot verify the frame-relay gateway to the ISDN server.
285High altitude condensation from U.S.A.F prototype aircraft has contaminated the primary subnet mask. Turn off your computer for 9 days to avoid damaging it.
286Lawn mower blade in your fan need sharpening
287Electrons on a bender
288Telecommunications is upgrading.
289Telecommunications is downgrading.
290Telecommunications is downshifting.
291Hard drive sleeping. Let it wake up on it's own...
292Interference between the keyboard and the chair.
293The CPU has shifted, and become decentralized.
294Due to the CDA, we no longer have a root account.
295We ran out of dial tone and we're and waiting for the phone company to deliver another bottle.
296You must've hit the wrong any key.
297PCMCIA slave driver
298The Token fell out of the ring. Call us when you find it.
299The hardware bus needs a new token.
300Too many interrupts
301Not enough interrupts
302The data on your hard drive is out of balance.
303Digital Manipulator exceeding velocity parameters
304appears to be a Slow/Narrow SCSI-0 Interface problem
305microelectronic Riemannian curved-space fault in write-only file system
306fractal radiation jamming the backbone
307routing problems on the neural net
308IRQ-problems with the Un-Interruptible-Power-Supply
309CPU-angle has to be adjusted because of vibrations coming from the nearby road
310emissions from GSM-phones
311CD-ROM server needs recalibration
312firewall needs cooling
313asynchronous inode failure
314transient bus protocol violation
315incompatible bit-registration operators
316your process is not ISO 9000 compliant
317You need to upgrade your VESA local bus to a MasterCard local bus.
318The recent proliferation of Nuclear Testing
319Elves on strike. (Why do they call EMAG Elf Magic)
320Internet exceeded Luser level, please wait until a luser logs off before attempting to log back on.
321Your EMAIL is now being delivered by the USPS.
322Your computer hasn't been returning all the bits it gets from the Internet.
323You've been infected by the Telescoping Hubble virus.
324Scheduled global CPU outage
325Your Pentium has a heating problem - try cooling it with ice cold water.(Do not turn off your computer, you do not want to cool down the Pentium Chip while he isn't working, do you?)
326Your processor has processed too many instructions. Turn it off immediately, do not type any commands!!
327Your packets were eaten by the terminator
328Your processor does not develop enough heat.
329We need a licensed electrician to replace the light bulbs in the computer room.
330The POP server is out of Coke
331Fiber optics caused gas main leak
332Server depressed, needs Prozac
333quantum decoherence
334those damn raccoons!
335suboptimal routing experience
336A plumber is needed, the network drain is clogged
33750% of the manual is in .pdf readme files
338the AA battery in the wallclock sends magnetic interference
339the xy axis in the trackball is coordinated with the summer solstice
340the butane lighter causes the pincushioning
341old inkjet cartridges emanate barium-based fumes
342manager in the cable duct
343We'll fix that in the next (upgrade, update, patch release, service pack).
344HTTPD Error 666 : BOFH was here
345HTTPD Error 4004 : very old Intel cpu - insufficient processing power
346The ATM board has run out of 10 pound notes. We are having a whip round to refill it, care to contribute ?
347Network failure - call NBC
348Having to manually track the satellite.
349Your/our computer(s) had suffered a memory leak, and we are waiting for them to be topped up.
350The rubber band broke
351We're on Token Ring, and it looks like the token got loose.
352Stray Alpha Particles from memory packaging caused Hard Memory Error on Server.
353paradigm shift...without a clutch
354PEBKAC (Problem Exists Between Keyboard And Chair)
355The cables are not the same length.
356Second-system effect.
357Chewing gum on /dev/sd3c
358Boredom in the Kernel.
359the daemons! the daemons! the terrible daemons!
360I'd love to help you -- it's just that the Boss won't let me near the computer.
361struck by the Good Times virus
362YOU HAVE AN I/O ERROR -&gt; Incompetent Operator error
363Your parity check is overdrawn and you're out of cache.
364Communist revolutionaries taking over the server room and demanding all the computers in the building or they shoot the sysadmin. Poor misguided fools.
365Plasma conduit breach
366Out of cards on drive D:
367Sand fleas eating the Internet cables
368parallel processors running perpendicular today
369ATM cell has no roaming feature turned on, notebooks can't connect
370Webmasters kidnapped by evil cult.
371Failure to adjust for daylight savings time.
372Virus transmitted from computer to sysadmins.
373Virus due to computers having unsafe sex.
374Incorrectly configured static routes on the corerouters.
375Forced to support NT servers; sysadmins quit.
376Suspicious pointer corrupted virtual machine
377It's the InterNIC's fault.
378Root name servers corrupted.
379Budget cuts forced us to sell all the power cords for the servers.
380Someone hooked the twisted pair wires into the answering machine.
381Operators killed by year 2000 bug bite.
382We've picked COBOL as the language of choice.
383Operators killed when huge stack of backup tapes fell over.
384Robotic tape changer mistook operator's tie for a backup tape.
385Someone was smoking in the computer room and set off the halon systems.
386Your processor has taken a ride to Heaven's Gate on the UFO behind Hale-Bopp's comet.
387it's an ID-10-T error
388Dyslexics retyping hosts file on servers
389The Internet is being scanned for viruses.
390Your computer's union contract is set to expire at midnight.
391Bad user karma.
392/dev/clue was linked to /dev/null
393Increased sunspot activity.
394We already sent around a notice about that.
395It's union rules. There's nothing we can do about it. Sorry.
396Interference from the Van Allen Belt.
397Jupiter is aligned with Mars.
398Redundant ACLs.
399Mail server hit by UniSpammer.
400T-1's congested due to porn traffic to the news server.
401Data for intranet got routed through the extranet and landed on the internet.
402We are a 100% Microsoft Shop.
403We are Microsoft. What you are experiencing is not a problem; it is an undocumented feature.
404Sales staff sold a product we don't offer.
405Secretary sent chain letter to all 5000 employees.
406Sysadmin didn't hear pager go off due to loud music from bar-room speakers.
407Sysadmin accidentally destroyed pager with a large hammer.
408Sysadmins unavailable because they are in a meeting talking about why they are unavailable so much.
409Bad cafeteria food landed all the sysadmins in the hospital.
410Route flapping at the NAP.
411Computers under water due to SYN flooding.
412The vulcan-death-grip ping has been applied.
413Electrical conduits in machine room are melting.
414Traffic jam on the Information Superhighway.
415Radial Telemetry Infiltration
416Cow-tippers tipped a cow onto the server.
417tachyon emissions overloading the system
418Maintenance window broken
419We're out of slots on the server
420Computer room being moved. Our systems are down for the weekend.
421Sysadmins busy fighting SPAM.
422Repeated reboots of the system failed to solve problem
423Feature was not beta tested
424Domain controller not responding
425Someone else stole your IP address, call the Internet detectives!
426It's not RFC-822 compliant.
427operation failed because: there is no message for this error (#1014)
428stop bit received
429internet is needed to catch the etherbunny
430network down, IP packets delivered via UPS
431Firmware update in the coffee machine
432Temporal anomaly
433Mouse has out-of-cheese-error
434Borg implants are failing
435Borg nanites have infested the server
436error: one bad user found in front of screen
437Please state the nature of the technical emergency
438Internet shut down due to maintenance
439Daemon escaped from pentagram
440crop circles in the corn shell
441sticky bit has come loose
442Hot Java has gone cold
443Cache miss - please take better aim next time
444Hash table has woodworm
445Trojan horse ran out of hay
446Zombie processes detected, machine is haunted.
447overflow error in /dev/null
448Browser's cookie is corrupted -- someone's been nibbling on it.
449Mailer-daemon is busy burning your message in hell.
450According to Microsoft, it's by design
451vi needs to be upgraded to vii
452greenpeace free'd the mallocs
453Terrorists crashed an airplane into the server room, have to remove /bin/laden. (rm -rf /bin/laden)
454astropneumatic oscillations in the water-cooling
455Somebody ran the operating system through a spelling checker.
456Rhythmic variations in the voltage reaching the power supply.
457Keyboard Actuator Failure. Order and Replace.
458Packet held up at customs.
459Propagation delay.
460High line impedance.
461Someone set us up the bomb.
462Power surges on the Underground.
463</PRE></BODY></HTML>
diff --git a/pCampBot/BotManager.cs b/pCampBot/BotManager.cs
new file mode 100644
index 0000000..a9cd643
--- /dev/null
+++ b/pCampBot/BotManager.cs
@@ -0,0 +1,254 @@
1/*
2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.Collections.Generic;
31using System.Text;
32using System.IO;
33using libsecondlife;
34using libsecondlife.Packets;
35using Nini.Config;
36using System.Threading;
37using OpenSim.Framework;
38using OpenSim.Framework.Console;
39
40namespace pCampBot
41{
42 /// <summary>
43 /// Thread/Bot manager for the application
44 /// </summary>
45 public class BotManager : conscmd_callback
46 {
47 protected LogBase m_log;
48 protected List<PhysicsBot> m_lBot;
49 protected Thread[] m_td;
50 protected string m_logFilename = "botlog.log";
51 protected bool m_verbose = true;
52 protected Random somthing = new Random(System.Environment.TickCount);
53 protected int numbots = 0;
54 protected IConfig Previous_config;
55
56 /// <summary>
57 /// Constructor Creates Mainlog.Instance to take commands and provide the place to write data
58 /// </summary>
59 public BotManager()
60 {
61
62 m_log = CreateLog();
63 MainLog.Instance = m_log;
64 m_lBot = new List<PhysicsBot>();
65
66 }
67
68 /// <summary>
69 /// Startup number of bots specified in the starting arguments
70 /// </summary>
71 /// <param name="botcount">How many bots to start up</param>
72 /// <param name="cs">The configuration for the bots to use</param>
73 public void dobotStartup(int botcount, IConfig cs)
74 {
75 Previous_config = cs;
76 m_td = new Thread[botcount];
77 for (int i = 0; i < botcount; i++)
78 {
79 startupBot(i, cs);
80
81
82 }
83
84 }
85 /// <summary>
86 /// Add additional bots (and threads) to our bot pool
87 /// </summary>
88 /// <param name="botcount">How Many of them to add</param>
89 public void addbots(int botcount)
90 {
91 int len = m_td.Length;
92 Thread[] m_td2 = new Thread[len + botcount];
93 int i;
94 for (i = 0; i < len; i++)
95 {
96 m_td2[i] = m_td[i];
97 }
98 m_td = m_td2;
99 int newlen = len + botcount;
100 for (i = i; i < newlen; i++)
101 {
102 startupBot(i, Previous_config);
103 }
104
105 }
106
107 /// <summary>
108 /// This starts up the bot and stores the thread for the bot in the thread array
109 /// </summary>
110 /// <param name="pos">The position in the thread array to stick the bot's thread</param>
111 /// <param name="cs">Configuration of the bot</param>
112 public void startupBot(int pos, IConfig cs)
113 {
114 PhysicsBot pb = new PhysicsBot(cs);
115
116 pb.OnConnected += handlebotEvent;
117 pb.OnDisconnected += handlebotEvent;
118 if (cs.GetString("firstname", "random") == "random") pb.firstname = CreateRandomName();
119 if (cs.GetString("lastname", "random") == "random") pb.lastname = CreateRandomName();
120
121 m_td[pos] = new Thread(pb.startup);
122 m_td[pos].Start();
123 m_lBot.Add(pb);
124
125 }
126
127 /// <summary>
128 /// Creates a random name for the bot
129 /// </summary>
130 /// <returns></returns>
131 private string CreateRandomName()
132 {
133 string returnstring = "";
134 string chars = "abcdefghijklmnopqrstuvwxyz0123456789";
135
136 for (int i = 0; i < 7; i++)
137 {
138 returnstring += chars.Substring(somthing.Next(chars.Length),1);
139 }
140 return returnstring;
141
142 }
143
144 /// <summary>
145 /// High level connnected/disconnected events so we can keep track of our threads by proxy
146 /// </summary>
147 /// <param name="callbot"></param>
148 /// <param name="eventt"></param>
149 public void handlebotEvent(PhysicsBot callbot, EventType eventt)
150 {
151 switch (eventt)
152 {
153 case EventType.CONNECTED:
154 MainLog.Instance.Verbose(" " + callbot.firstname + " " + callbot.lastname, "Connected");
155 numbots++;
156 break;
157 case EventType.DISCONNECTED:
158 MainLog.Instance.Verbose(" " + callbot.firstname + " " + callbot.lastname, "Disconnected");
159 m_td[m_lBot.IndexOf(callbot)].Abort();
160 numbots--;
161 if (numbots >1)
162 Environment.Exit(0);
163 break;
164
165 }
166 }
167 /// <summary>
168 /// Shutting down all bots
169 /// </summary>
170 public void doBotShutdown()
171 {
172 foreach (PhysicsBot pb in m_lBot)
173 {
174 pb.shutdown();
175 }
176
177
178
179 }
180
181 /// <summary>
182 /// Standard Creatlog routine
183 /// </summary>
184 /// <returns></returns>
185 protected LogBase CreateLog()
186 {
187 if (!Directory.Exists(Util.logDir()))
188 {
189 Directory.CreateDirectory(Util.logDir());
190 }
191
192 return new LogBase((Path.Combine(Util.logDir(), m_logFilename)), "Region", this, m_verbose);
193 }
194
195 /// <summary>
196 /// I don't think the bots use this..
197 /// </summary>
198 /// <param name="commandParams"></param>
199 /// <param name="pos"></param>
200 /// <returns></returns>
201 private string CombineParams(string[] commandParams, int pos)
202 {
203 string result = String.Empty;
204 for (int i = pos; i < commandParams.Length; i++)
205 {
206 result += commandParams[i] + " ";
207 }
208 result = result.TrimEnd(' ');
209 return result;
210 }
211
212 /// <summary>
213 /// Command runnint tool.. Currently use it to add bots, shutdown and (dangerous)Forcequit
214 /// </summary>
215 /// <param name="command"></param>
216 /// <param name="cmdparams"></param>
217 public void RunCmd(string command, string[] cmdparams)
218 {
219 switch (command)
220 {
221 case "shutdown":
222 MainLog.Instance.Warn("BOTMANAGER", "Shutting down bots");
223 doBotShutdown();
224 break;
225 case "quit":
226 MainLog.Instance.Warn("DANGER", "This should only be used to quit the program if you've already used the shutdown command and the program hasn't quit");
227 Environment.Exit(0);
228 break;
229 case "addbots":
230 int newbots = 0;
231 Helpers.TryParse(cmdparams[0], out newbots);
232
233 if (newbots > 0)
234 addbots(newbots);
235 break;
236 case "help":
237 MainLog.Instance.Notice("HELP", "\nshutdown - graceful shutdown\naddbots <n> - adds n bots to the test\nquit - forcequits, dangerous if you have not already run shutdown");
238 break;
239
240
241 }
242 }
243
244 /// <summary>
245 /// Required method to implement the conscmd_callback interface
246 /// </summary>
247 /// <param name="ShowWhat"></param>
248 public void Show(string ShowWhat)
249 {
250
251 }
252 }
253
254}
diff --git a/pCampBot/PhysicsBot.cs b/pCampBot/PhysicsBot.cs
new file mode 100644
index 0000000..53a774a
--- /dev/null
+++ b/pCampBot/PhysicsBot.cs
@@ -0,0 +1,208 @@
1/*
2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.Collections.Generic;
31using System.IO;
32using System.Text;
33using libsecondlife;
34using libsecondlife.Packets;
35using Nini.Config;
36using System.Threading;
37using OpenSim.Framework;
38using OpenSim.Framework.Console;
39using Timer=System.Timers.Timer;
40
41
42
43namespace pCampBot
44{
45 public class PhysicsBot
46 {
47 public delegate void AnEvent(PhysicsBot callbot, EventType someevent); // event delegate for bot events
48 public IConfig startupConfig; // bot config, passed from BotManager
49
50 public string firstname;
51 public string lastname;
52 public string password;
53 public string loginURI;
54
55 public event AnEvent OnConnected;
56 public event AnEvent OnDisconnected;
57
58 protected Timer m_action; // Action Timer
59
60 protected Random somthing = new Random(System.Environment.TickCount);// We do stuff randomly here
61
62 //New instance of a SecondLife client
63 public SecondLife client = new SecondLife();
64
65 protected string[] talkarray;
66 /// <summary>
67 ///
68 /// </summary>
69 /// <param name="bsconfig">nini config for the bot</param>
70 public PhysicsBot(IConfig bsconfig)
71 {
72 startupConfig = bsconfig;
73 readconfig();
74 talkarray = readexcuses();
75 }
76
77 //We do our actions here. This is where one would
78 //add additional steps and/or things the bot should do
79
80 void m_action_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
81 {
82 //client.Throttle.Task = 500000f;
83 //client.Throttle.Set();
84
85 client.Self.Movement.AlwaysRun = true;
86 LLVector3 pos = client.Self.SimPosition;
87 LLVector3 newpos = new LLVector3(somthing.Next(255),somthing.Next(255),somthing.Next(255));
88
89
90 client.Self.Movement.TurnToward(newpos);
91 for (int i = 0; i < 2000; i++)
92 {
93 client.Self.Movement.AtPos = true;
94 }
95 client.Self.Jump();
96 string randomf = talkarray[somthing.Next(talkarray.Length)];
97 if (talkarray.Length > 1 && randomf.Length > 1)
98 client.Self.Chat("Can't do it, " + randomf, 0, ChatType.Normal);
99
100 Thread.Sleep(somthing.Next(1,20));
101
102 }
103
104 /// <summary>
105 /// Read the Nini config and initialize
106 /// </summary>
107 public void readconfig()
108 {
109 firstname = startupConfig.GetString("firstname", "random");
110 lastname = startupConfig.GetString("lastname", "random");
111 password = startupConfig.GetString("password", "12345");
112 loginURI = startupConfig.GetString("loginuri", "http://10.1.1.5:9000");
113
114
115
116 }
117
118 /// <summary>
119 /// Tells LibSecondLife to logout and disconnect. Raises the disconnect events once it finishes.
120 /// </summary>
121 public void shutdown()
122 {
123 client.Network.Logout();
124 }
125 /// <summary>
126 /// This is the bot startup loop.
127 /// </summary>
128 public void startup()
129 {
130
131 client.Settings.LOGIN_SERVER = loginURI;
132 client.Network.OnConnected += new NetworkManager.ConnectedCallback(this.Network_OnConnected);
133 client.Network.OnSimConnected += new NetworkManager.SimConnectedCallback(this.Network_OnConnected);
134 client.Network.OnDisconnected += new NetworkManager.DisconnectedCallback(this.Network_OnDisconnected);
135 if (client.Network.Login(firstname, lastname, password, "pCampBot", "Your name"))
136 {
137
138 if (OnConnected != null)
139 {
140 m_action = new Timer(somthing.Next(1000, 10000));
141 m_action.Elapsed += new System.Timers.ElapsedEventHandler(m_action_Elapsed);
142 m_action.Start();
143 OnConnected(this, EventType.CONNECTED);
144 client.Self.Jump();
145
146 }
147 }
148 else
149 {
150
151 MainLog.Instance.Error(firstname + " " + lastname,"Can't Log in: " + client.Network.LoginMessage);
152 if (OnDisconnected != null)
153 {
154 OnDisconnected(this, EventType.DISCONNECTED);
155 }
156 }
157
158 }
159
160 public void Network_OnConnected(object sender)
161 {
162 if (OnConnected != null)
163 {
164 OnConnected(this, EventType.CONNECTED);
165 }
166
167 }
168 public void Simulator_Connected(object sender)
169 {
170
171
172 }
173
174 public void Network_OnDisconnected(NetworkManager.DisconnectType reason, string message)
175 {
176 if (OnDisconnected != null)
177 {
178 OnDisconnected(this,EventType.DISCONNECTED);
179 }
180
181
182 }
183 public string[] readexcuses()
184 {
185
186
187
188 string allexcuses = "";
189
190
191 string file = Path.Combine(Util.configDir(), "excuses");
192 if (File.Exists(file))
193 {
194 StreamReader csr = File.OpenText(file);
195 allexcuses = csr.ReadToEnd();
196 csr.Close();
197 }
198
199
200 return allexcuses.Split(Environment.NewLine.ToCharArray());
201
202 }
203
204
205 }
206
207
208}
diff --git a/pCampBot/PhysicsCamperBotREADME.txt b/pCampBot/PhysicsCamperBotREADME.txt
new file mode 100644
index 0000000..988f589
--- /dev/null
+++ b/pCampBot/PhysicsCamperBotREADME.txt
@@ -0,0 +1,21 @@
1This is the PhysicsCamperbot libslBot tester.
2
3This is designed to be run in standalone mode with authorize accounts turned off as a way to stress test the simulator.
4It creates <N> clients that log in, randomly jump/walk around, and say excuses from the BOFH
5
6**Warning:** Using this bot on a public grid could get you banned perminantly, so just say No! to greifing!
7
8-----Setup -----
9Run the prebuilds for it IN THIS FOLDER and then open the created solution and compile it. It will end up in the regular opensim bin folder.
10
11-----Running the bot----
12
13windows: pCampBot.exe -botcount <N> -loginuri <URI>
14*nix: mono pCampBot.exe -botcount <N> -loginuri <URI>
15
16The names it produces are random by default, however, you can specify either a firstname or a lastname in the command line also.
17ex: pCampBot.exe -botcount <N> -loginuri <URI> -lastname <lastname>
18
19If you specify both a firstname *and* a lastname, you'll likely run into trouble unless you're only running a single bot. In that case, there's also a password option.
20
21pCampBot.exe -botcount 1 -loginuri http://somegrid.com:8002 -firstname SomeDude -lastname SomeDude -password GobbleDeGook
diff --git a/pCampBot/pCampBot.cs b/pCampBot/pCampBot.cs
new file mode 100644
index 0000000..983eaf0
--- /dev/null
+++ b/pCampBot/pCampBot.cs
@@ -0,0 +1,80 @@
1/*
2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28
29using System;
30using System.Collections.Generic;
31using System.Text;
32using libsecondlife;
33using libsecondlife.Packets;
34using Nini.Config;
35using System.Threading;
36using OpenSim.Framework.Console;
37
38
39namespace pCampBot
40{
41 /// <summary>
42 /// Event Types from the BOT. Add new events here
43 /// </summary>
44 public enum EventType:int
45 {
46 NONE = 0,
47 CONNECTED = 1,
48 DISCONNECTED = 2
49 }
50 public class pCampBot
51 {
52
53
54 [STAThread]
55 public static void Main(string[] args)
56 {
57 //Set up our nifty config.. thanks to nini
58 ArgvConfigSource cs = new ArgvConfigSource(args);
59
60 cs.AddSwitch("Startup", "botcount");
61 cs.AddSwitch("Startup", "loginuri");
62 cs.AddSwitch("Startup", "firstname");
63 cs.AddSwitch("Startup", "lastname");
64 cs.AddSwitch("Startup", "password");
65
66
67 IConfig ol = cs.Configs["Startup"];
68 int botcount = ol.GetInt("botcount", 1);
69 BotManager bm = new BotManager();
70
71 //startup specified number of bots. 1 is the default
72 bm.dobotStartup(botcount, ol);
73 while (true)
74 {
75 MainLog.Instance.MainLogPrompt();
76 }
77
78 }
79 }
80}
diff --git a/pCampBot/pCampBot.csproj b/pCampBot/pCampBot.csproj
new file mode 100644
index 0000000..04b044c
--- /dev/null
+++ b/pCampBot/pCampBot.csproj
@@ -0,0 +1,102 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup>
3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion>
5 <SchemaVersion>2.0</SchemaVersion>
6 <ProjectGuid>{7F3A2F5C-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon></ApplicationIcon>
10 <AssemblyKeyContainerName>
11 </AssemblyKeyContainerName>
12 <AssemblyName>pCampBot</AssemblyName>
13 <DefaultClientScript>JScript</DefaultClientScript>
14 <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
16 <DelaySign>false</DelaySign>
17 <OutputType>Exe</OutputType>
18 <AppDesignerFolder></AppDesignerFolder>
19 <RootNamespace>pCampBot</RootNamespace>
20 <StartupObject></StartupObject>
21 <FileUpgradeFlags>
22 </FileUpgradeFlags>
23 </PropertyGroup>
24 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
25 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
26 <BaseAddress>285212672</BaseAddress>
27 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
28 <ConfigurationOverrideFile>
29 </ConfigurationOverrideFile>
30 <DefineConstants>TRACE;DEBUG</DefineConstants>
31 <DocumentationFile></DocumentationFile>
32 <DebugSymbols>True</DebugSymbols>
33 <FileAlignment>4096</FileAlignment>
34 <Optimize>False</Optimize>
35 <OutputPath>..\bin\</OutputPath>
36 <RegisterForComInterop>False</RegisterForComInterop>
37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
39 <WarningLevel>4</WarningLevel>
40 <NoWarn></NoWarn>
41 </PropertyGroup>
42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
44 <BaseAddress>285212672</BaseAddress>
45 <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
46 <ConfigurationOverrideFile>
47 </ConfigurationOverrideFile>
48 <DefineConstants>TRACE</DefineConstants>
49 <DocumentationFile></DocumentationFile>
50 <DebugSymbols>False</DebugSymbols>
51 <FileAlignment>4096</FileAlignment>
52 <Optimize>True</Optimize>
53 <OutputPath>..\bin\</OutputPath>
54 <RegisterForComInterop>False</RegisterForComInterop>
55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
57 <WarningLevel>4</WarningLevel>
58 <NoWarn></NoWarn>
59 </PropertyGroup>
60 <ItemGroup>
61 <Reference Include="libsecondlife.dll" >
62 <HintPath>..\bin\libsecondlife.dll</HintPath>
63 <Private>False</Private>
64 </Reference>
65 <Reference Include="Nini.dll" >
66 <HintPath>..\bin\Nini.dll</HintPath>
67 <Private>False</Private>
68 </Reference>
69 <Reference Include="OpenSim.Framework.Console.dll" >
70 <HintPath>..\bin\OpenSim.Framework.Console.dll</HintPath>
71 <Private>False</Private>
72 </Reference>
73 <Reference Include="OpenSim.Framework.dll" >
74 <HintPath>..\bin\OpenSim.Framework.dll</HintPath>
75 <Private>False</Private>
76 </Reference>
77 <Reference Include="System" >
78 <HintPath>System.dll</HintPath>
79 <Private>False</Private>
80 </Reference>
81 </ItemGroup>
82 <ItemGroup>
83 </ItemGroup>
84 <ItemGroup>
85 <Compile Include="BotManager.cs">
86 <SubType>Code</SubType>
87 </Compile>
88 <Compile Include="pCampBot.cs">
89 <SubType>Code</SubType>
90 </Compile>
91 <Compile Include="PhysicsBot.cs">
92 <SubType>Code</SubType>
93 </Compile>
94 </ItemGroup>
95 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
96 <PropertyGroup>
97 <PreBuildEvent>
98 </PreBuildEvent>
99 <PostBuildEvent>
100 </PostBuildEvent>
101 </PropertyGroup>
102</Project>
diff --git a/pCampBot/prebuild.xml b/pCampBot/prebuild.xml
new file mode 100644
index 0000000..25219fd
--- /dev/null
+++ b/pCampBot/prebuild.xml
@@ -0,0 +1,63 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<Prebuild xmlns="http://dnpb.sourceforge.net/schemas/prebuild-1.7.xsd" version="1.7">
3 <Solution name="pCampBot" activeConfig="Debug" path="./" version="0.4.0-svn">
4 <Configuration name="Debug">
5 <Options>
6 <CompilerDefines>TRACE;DEBUG</CompilerDefines>
7 <OptimizeCode>false</OptimizeCode>
8 <CheckUnderflowOverflow>false</CheckUnderflowOverflow>
9 <AllowUnsafe>false</AllowUnsafe>
10 <WarningLevel>4</WarningLevel>
11 <WarningsAsErrors>false</WarningsAsErrors>
12 <SuppressWarnings></SuppressWarnings>
13 <OutputPath>../bin</OutputPath>
14 <DebugInformation>true</DebugInformation>
15 <IncrementalBuild>true</IncrementalBuild>
16 <NoStdLib>false</NoStdLib>
17 </Options>
18 </Configuration>
19 <Configuration name="Release">
20 <Options>
21 <CompilerDefines>TRACE</CompilerDefines>
22 <OptimizeCode>true</OptimizeCode>
23 <CheckUnderflowOverflow>false</CheckUnderflowOverflow>
24 <AllowUnsafe>false</AllowUnsafe>
25 <WarningLevel>4</WarningLevel>
26 <WarningsAsErrors>false</WarningsAsErrors>
27 <SuppressWarnings></SuppressWarnings>
28 <OutputPath>../bin</OutputPath>
29 <DebugInformation>false</DebugInformation>
30 <IncrementalBuild>true</IncrementalBuild>
31 <NoStdLib>false</NoStdLib>
32 </Options>
33 </Configuration>
34
35 <!-- Core OpenSim Projects -->
36
37 <Project name="pCampBot" path="./" type="Exe">
38 <Configuration name="Debug">
39 <Options>
40 <OutputPath>../bin/</OutputPath>
41 </Options>
42 </Configuration>
43 <Configuration name="Release">
44 <Options>
45 <OutputPath>../bin/</OutputPath>
46 </Options>
47 </Configuration>
48
49 <ReferencePath>../bin/</ReferencePath>
50 <Reference name="System" localCopy="false"/>
51 <Reference name="libsecondlife.dll"/>
52 <Reference name="OpenSim.Framework.dll"/>
53 <Reference name="OpenSim.Framework.Console.dll"/>
54 <Reference name="Nini.dll" />
55
56
57 <Files>
58 <Match pattern="*.cs" recurse="true"/>
59 </Files>
60 </Project>
61
62 </Solution>
63</Prebuild>
diff --git a/pCampBot/runprebuild.bat b/pCampBot/runprebuild.bat
new file mode 100644
index 0000000..05dfe16
--- /dev/null
+++ b/pCampBot/runprebuild.bat
@@ -0,0 +1,2 @@
1..\bin\Prebuild.exe /target nant
2..\bin\Prebuild.exe /target vs2005 \ No newline at end of file
diff --git a/pCampBot/runprebuild.sh b/pCampBot/runprebuild.sh
new file mode 100644
index 0000000..23fbfef
--- /dev/null
+++ b/pCampBot/runprebuild.sh
@@ -0,0 +1,4 @@
1#!/bin/sh
2
3mono ../bin/Prebuild.exe /target nant
4mono ../bin/Prebuild.exe /target vs2005