This is a thread towards nukem, so if you got no idea where this is about then please GTFO
These are the log events B3 needs to run properly
Also some new plugin events that i desperatly need (especially onKill and onJoined)
Log events
First of all each log event MUST provide
- XUID
- CID
- Team
- Name
In this format if possible:
This format is not required, but would be the easiest way to go
It does not need to have all of them but at least
- Kill (WITH WEAPON, victim and attacker!)
- Say (a player chats)
- Join team
- User Join server
- User Disconnect server (also defined as quit)
Code events
onJoined(ServerClient *z)
onDisconnect(ServerClient *z)
onKilled(ServerClient *victim, ServerClient *attacker, PCHAR weapon)
onGameEnd
onGameStart
This is basically how B3 parses it
These are the log events B3 needs to run properly
Also some new plugin events that i desperatly need (especially onKill and onJoined)
Log events
First of all each log event MUST provide
- XUID
- CID
- Team
- Name
In this format if possible:
b3 doc Wrote:Join: J;160913;10;PlayerName
Quit: Q;160913;10;PlayerName
Damage by world: D;160913;14;axis;PlayerName;;-1;world;;none;6;MOD_FALLING;none
Damage by opponent: D;160913;19;allies;PlayerName;248102;10;axis;OpponentName;mp44_mp;27;MOD_PISTOL_BULLET;right_foot
Kill: K;160913;4;axis;PlayerName;578287;0;axis;OpponentName;kar98k_mp;180;MOD_HEAD_SHOT;head
Weapon/ammo pickup: Weapon;160913;8;PlayerName;m1garand_mp
Action: A;160913;16;axis;PlayerName;htf_scored
Say to All: say;160913;8;PlayerName;^Ubye
Say to Team: sayteam;160913;8;PlayerName;^Ulol
Private message: tell;160913;12;PlayerName1;1322833;8;PlayerName2;what message?
Winners: W;axis;160913;PlayerName1;258015;PlayerName2
Losers: L;allies;160913;PlayerName1;763816;PlayerName2
This format is not required, but would be the easiest way to go
It does not need to have all of them but at least
- Kill (WITH WEAPON, victim and attacker!)
- Say (a player chats)
- Join team
- User Join server
- User Disconnect server (also defined as quit)
Code events
onJoined(ServerClient *z)
onDisconnect(ServerClient *z)
onKilled(ServerClient *victim, ServerClient *attacker, PCHAR weapon)
onGameEnd
onGameStart
This is basically how B3 parses it
b3 code Wrote:# server events
re.compile(r'^(?P<action>[a-z]+):\s?(?P<data>.*)$', re.IGNORECASE),
# world kills
re.compile(r'^(?P<action>[A-Z]);(?P<data>(?P<guid>[^;]+);(?P<cid>[0-9-]{1,2});(?P<team>[a-z]+);(?P<name>[^;]+);(?P<aguid>[^;]*);(?P<acid>-1);(?P<ateam>world);(?P<aname>[^;]*);(?P<aweap>[a-z0-9_-]+);(?P<damage>[0-9.]+);(?P<dtype>[A-Z_]+);(?P<dlocation>[a-z_]+))$', re.IGNORECASE),
# player kills/damage
re.compile(r'^(?P<action>[A-Z]);(?P<data>(?P<guid>[^;]+);(?P<cid>[0-9]{1,2});(?P<team>[a-z]*);(?P<name>[^;]+);(?P<aguid>[^;]+);(?P<acid>[0-9]{1,2});(?P<ateam>[a-z]*);(?P<aname>[^;]+);(?P<aweap>[a-z0-9_-]+);(?P<damage>[0-9.]+);(?P<dtype>[A-Z_]+);(?P<dlocation>[a-z_]+))$', re.IGNORECASE),
# suicides (cod4/cod5)
re.compile(r'^(?P<action>[A-Z]);(?P<data>(?P<guid>[^;]+);(?P<cid>[0-9]{1,2});(?P<team>[a-z]*);(?P<name>[^;]+);(?P<aguid>[^;]*);(?P<acid>-1);(?P<ateam>[a-z]*);(?P<aname>[^;]+);(?P<aweap>[a-z0-9_-]+);(?P<damage>[0-9.]+);(?P<dtype>[A-Z_]+);(?P<dlocation>[a-z_]+))$', re.IGNORECASE),
# suicides (cod7)
re.compile(r'^(?P<action>[A-Z]);(?P<data>(?P<guid>[^;]+);(?P<cid>[0-9]{1,2});(?P<team>[a-z]*);(?P<name>[^;]+);(?P<aguid>[^;]*);(?P<acid>[0-9]{1,2});(?P<ateam>[a-z]*);(?P<aname>[^;]+);(?P<aweap>[a-z0-9_-]+);(?P<damage>[0-9.]+);(?P<dtype>[A-Z_]+);(?P<dlocation>[a-z_]+))$', re.IGNORECASE),
#team actions
re.compile(r'^(?P<action>[A-Z]);(?P<data>(?P<guid>[^;]+);(?P<cid>[0-9]{1,2});(?P<team>[a-z]+);(?P<name>[^;]+);(?P<type>[a-z_]+))$', re.IGNORECASE),
# Join Team (cod5)
re.compile(r'^(?P<action>JT);(?P<data>(?P<guid>[^;]+);(?P<cid>[0-9]{1,2});(?P<team>[a-z]+);(?P<name>[^;]+)$', re.IGNORECASE),
# tell like events
re.compile(r'^(?P<action>[a-z]+);(?P<data>(?P<guid>[^;]+);(?P<cid>[0-9]{1,2});(?P<name>[^;]+);(?P<aguid>[^;]+);(?P<acid>[0-9]{1,2});(?P<aname>[^;]+);(?P<text>.*))$', re.IGNORECASE),
# say like events
re.compile(r'^(?P<action>[a-z]+);(?P<data>(?P<guid>[^;]+);(?P<cid>[0-9]{1,2});(?P<name>[^;]+);(?P<text>.*))$', re.IGNORECASE),
# all other events
re.compile(r'^(?P<action>[A-Z]);(?P<data>(?P<guid>[^;]+);(?P<cid>[0-9]{1,2});(?P<name>[^;]+))$', re.IGNORECASE)