Page MenuHomePhabricator

[Request] getPlayerGUID / getPlayerIP Scripting Commands
New, NormalPublic

Description

Simple enough. I'm capable of using server-specific logging to track actions performed in-game (based on client-executed scripts writing logs to database), but short of using BattlEye to update the GUID based on playername (which can result in conflicts when more than one player using the same name is on the server), there's no way to pass a BattlEye-ready variable from a client to an outside program/log.

I'd like to be able to write a GUID/IP based on an engine command to be automatically parsed and sent to BattlEye.

For Example:
format["%1 violated rule #(x). Writing log to ban. : %1|%2|%3",name player, getPlayerGUID player, getPlayerIP player]

This could then be read by a program on the server machine to pass "PlayerName [bantime] GUID" and/or "PlayerName [bantime] "IP" to BattleEye and automatically ban the player for whatever parameters are defined.

It's a bit of an odd request I'm sure, and I would imagine the IP command isn't desirable for security reasons. But I can still ask.

Details

Severity
Feature
Resolution
Open
Reproducibility
N/A
Operating System
Windows 7
Category
Scripting

Event Timeline

Gnashes created this task.Jun 12 2017, 3:43 PM
Gnashes updated the task description. (Show Details)Jun 12 2017, 4:03 PM

Great idea please consider implementing this +1 thank you.

Gnashes updated the task description. (Show Details)Jul 7 2017, 8:40 PM

Specific uses would be for something such as a function to add experience (fn_addXP). If malicious players utilizing some BE bypass method were executing this to script-inject themselves experience.

I could change my *actual* function to fn_addEXP, and have fn_addXP cause the player to write a log to the database with something to the extent of "I'm using cheats to access an outdated function, ban me!"

dedmen added a subscriber: dedmen.Sep 11 2017, 1:11 PM

https://community.bistudio.com/wiki/getPlayerUID returns the SteamID. That might be useful.

@dedmen I'm specifically looking for a client command that returns the calculated GUID and not the Steam PlayerID.

dedmen added a comment.EditedSep 12 2017, 12:44 PM

http://www.legiongaminghq.org/converter
https://converter.multivitamin.wtf/
https://converter.multivitamin.wtf/76561197960667971
https://native-network.net/forum/thread/2412-guid-zu-uid-arma3/
PHP script

function s64toGuid($int) {
 $temp = '';
 for ($i = 0; $i < 8; $i++) {
 $temp .= chr($int & 0xFF);
 $int >>= 8;
 }
 $guid = md5('BE' . $temp);
 return $guid;
 }

Getting MD5 in SQF would probably be the hardest part. But if you only need that Serverside you can just make your own extension to do it for you