View previous topic :: View next topic |
Author |
Message |
DogShxtTaco CH Administrator
Joined: 19 Apr 2004 Posts: 8201 Location: Cary, NC
|
Posted: Fri Apr 28, 2006 8:48 am Post subject: |
|
I think that all of that is possible, and currently being done by chunks of the dc_ass.py code. I have to head to work, but one of us can walk you through that. I'm fairly sure that restrictions in the python modules that bf2 uses prevent us from being able to execute OS files, but there are way around that, if I remember correctly.
Here's the code:
http://dontcamp.com/code/?file=dc_ass.py |
|
|
Butter CH Administrator
Joined: 18 Apr 2004 Posts: 7520 Location: New York, NY
|
Posted: Fri Apr 28, 2006 10:14 am Post subject: |
|
This is dc_irs.py with an added !report command that will log the chatline and the playername of the person that said it to 'logfile' in the bf2 directory. Dst is right that there is not enough standard python library support in BF2 to spawn a new process. The only work around we've used was to manually create an HTTP request using the socket module so we can call a PHP script. Kinda awkward...
You can see the addition I made in that if, elif, else section near the bottom. That's where I add whatever commands this script will be handling.
Code: | import bf2
import host
import re
from dc_debug import decho
# for the time command
import time
def init():
decho('dc_irs: initializing DontCamp.com In-game Report System', 2)
host.registerHandler('ChatMessage', onChatMessage, 1)
def onChatMessage(player_id, text, channel, flags):
# pull the potential prefix off the text line
text = text.replace("HUD_TEXT_CHAT_TEAM", "")
text = text.replace("HUD_TEXT_CHAT_SQUAD", "")
text = text.replace("*\xA71DEAD\xA70*", "")
# unless the first character is ! don't do anything
if text[0:1] == "!":
decho("dc_irs: the first character of %s was !" % text, 5)
# grab the parts of the chatline I need with a REGEX
pattern = re.compile(r'!(\w*) ?(.*)')
matches = pattern.findall(text)
command = matches[0][0]
decho("dc_irs: command = %s" % command, 5)
# grab a parameter, if any
if matches[0][1] != "":
parameter = matches[0][1]
decho("dc_irs: parameter = %s" % parameter, 5)
else:
parameter = None
decho("dc_irs: no parameter given", 5)
# this is where you would setup each command
if command == "nextmap":
decho('The next map is %s' % host.rcon_invoke('maplist.list').splitlines()[int(host.rcon_invoke('admin.nextLevel').strip())].split()[1].strip('"').replace('_', ' ').title(), 1)
elif command == "time":
decho('The time is: %s' % time.strftime('%H:%M %p %Z'), 1)
elif command == "report":
try:
fh = open('logfile', 'a')
fh.write('%s: %s\n' % (bf2.PlayerManager.Player(player_id).getName(), parameter))
fh.close()
decho('dc_irs: logfile augmented', 1)
# it would be nice to handle the open() failure and parameter = None exceptions separately, but I'd have to go look up how
except:
decho('dc_irs: There was an error writing to the logfile', 1)
else:
decho('ERROR: invalid command', 1) |
_________________ EDT sucks. |
|
|
Gramps
Joined: 27 Apr 2006 Posts: 3
|
Posted: Tue May 02, 2006 8:24 am Post subject: |
|
Thx for the help guys!
But i haven't been able to make it work.
I guess that __init__.py should contain:
import dc_irs
dc_irs.init()
Hmm...
What if i run modmanager and bf2cc?
Is there another way i should implemnt it then?
Or is it not even doable then?
Or am i just stupid?
|
|
|
Butter CH Administrator
Joined: 18 Apr 2004 Posts: 7520 Location: New York, NY
|
Posted: Tue May 02, 2006 8:28 am Post subject: |
|
We've not ever tried to get our stuff to work with MM and BF2CC. Do you have dc_debug installed as well? Most our scrtips require it. And you'll definitely need to have those lines you mentioned in the __init__.py file. _________________ EDT sucks. |
|
|
Gramps
Joined: 27 Apr 2006 Posts: 3
|
Posted: Tue May 02, 2006 9:13 am Post subject: |
|
I do get the feeling that you think Bf2cc *ux Bigtime...
I installed the dc_debug.
I also put a # in front of Deco since i didn't need that code atm anyway.
Still didn't work.
I checked around a little and it seems like you have to "convert" the code to "modmanagerstyle".
Well, thanks a lot guys! Now you gave me some trouble i Have to solve!!
Grr.
Actually, you been a great help trying to help me out.
Thx |
|
|
Butter CH Administrator
Joined: 18 Apr 2004 Posts: 7520 Location: New York, NY
|
Posted: Tue May 02, 2006 9:21 am Post subject: |
|
You're welcome. I do think MM sucks because our code works without it, and their code breaks our code. That's just their code being a jerk ass. I've not used BF2CC in a long time, but the last time I did, I was dissatified. We run a linux server and I don't like running .NET daemons in linux. _________________ EDT sucks. |
|
|
Butter CH Administrator
Joined: 18 Apr 2004 Posts: 7520 Location: New York, NY
|
Posted: Fri Jan 02, 2015 7:17 pm Post subject: |
|
All our released code has been moved to this github repo: https://github.com/jpwoodbu/dontcamp_bf2
Since this code is rather old and only applies to BF2, I'm going to edit this thread to no longer be an announcement. _________________ EDT sucks. |
|
|
DogShxtTaco CH Administrator
Joined: 19 Apr 2004 Posts: 8201 Location: Cary, NC
|
|
|
|