Retrieving NexGen player's account type
-
- Godlike
- Posts: 2545
- Joined: Fri Sep 25, 2015 9:01 pm
- Location: moved without proper hashing
Retrieving NexGen player's account type
How can I retrieve NexGen player's account type? Like "Level 4 Admin" in screenshot.
You do not have the required permissions to view the files attached to this post.
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
-
- Skilled
- Posts: 217
- Joined: Tue Feb 28, 2012 7:47 pm
- Personal rank: <[MHA]> /UK Admin
- Location: suisse
Re: Retrieving NexGen player's account type
the default setting in Nexgen112N
you can creat 30 acountype in this version
atTypeName[0]=<Default>
atTypeName[1]=VIP
atTypeName[2]=Level 3 Admin
atTypeName[3]=Level 4 Admin
atTypeName[4]=Level 5 Admin
atTypeName[5]=Level 6 Admin
atTypeName[6]=Level 7 Admin
atTypeName[7]=Level 8 Admin
atTypeName[8]=Hidden Admin
atTypeName[9]=
atTypeName[10]=
atTypeName[11]=
atTypeName[12]=
atTypeName[13]=
atTypeName[14]=
atTypeName[15]=
atTypeName[16]=
atTypeName[17]=
atTypeName[18]=
atTypeName[19]=
atTypeName[20]=
atTypeName[21]=
atTypeName[22]=
atTypeName[23]=
atTypeName[24]=
atTypeName[25]=
atTypeName[26]=
atTypeName[27]=
atTypeName[28]=
atTypeName[29]=
atRights[0]=A
atRights[1]=A,B
atRights[2]=A,B,C,D,F
atRights[3]=A,B,C,D,F,G
atRights[4]=A,B,C,D,E,F,G,H,K
atRights[5]=A,B,C,D,E,F,G,H,I,K,M
atRights[6]=A,B,C,D,E,F,G,H,I,J,K,M
atRights[7]=A,B,C,D,E,F,G,H,I,J,K,L,M
atRights[8]=A,B,C,D,E,F,G,H,K,N
atRights[9]=
atRights[10]=
atRights[11]=
atRights[12]=
atRights[13]=
atRights[14]=
atRights[15]=
atRights[16]=
atRights[17]=
atRights[18]=
atRights[19]=
atRights[20]=
atRights[21]=
atRights[22]=
atRights[23]=
atRights[24]=
atRights[25]=
atRights[26]=
atRights[27]=
atRights[28]=
atRights[29]=
atTitle[0]=Player
atTitle[1]=
atTitle[2]=L3 Admin
atTitle[3]=L4 Admin
atTitle[4]=L5 Admin
atTitle[5]=L6 Admin
atTitle[6]=L7 Admin
atTitle[7]=L8 Admin
atTitle[8]=
atTitle[9]=
atTitle[10]=
atTitle[11]=
atTitle[12]=
atTitle[13]=
atTitle[14]=
atTitle[15]=
atTitle[16]=
atTitle[17]=
atTitle[18]=
atTitle[19]=
atTitle[20]=
atTitle[21]=
atTitle[22]=
atTitle[23]=
atTitle[24]=
atTitle[25]=
atTitle[26]=
atTitle[27]=
atTitle[28]=
atTitle[29]=
you can creat 30 acountype in this version
atTypeName[0]=<Default>
atTypeName[1]=VIP
atTypeName[2]=Level 3 Admin
atTypeName[3]=Level 4 Admin
atTypeName[4]=Level 5 Admin
atTypeName[5]=Level 6 Admin
atTypeName[6]=Level 7 Admin
atTypeName[7]=Level 8 Admin
atTypeName[8]=Hidden Admin
atTypeName[9]=
atTypeName[10]=
atTypeName[11]=
atTypeName[12]=
atTypeName[13]=
atTypeName[14]=
atTypeName[15]=
atTypeName[16]=
atTypeName[17]=
atTypeName[18]=
atTypeName[19]=
atTypeName[20]=
atTypeName[21]=
atTypeName[22]=
atTypeName[23]=
atTypeName[24]=
atTypeName[25]=
atTypeName[26]=
atTypeName[27]=
atTypeName[28]=
atTypeName[29]=
atRights[0]=A
atRights[1]=A,B
atRights[2]=A,B,C,D,F
atRights[3]=A,B,C,D,F,G
atRights[4]=A,B,C,D,E,F,G,H,K
atRights[5]=A,B,C,D,E,F,G,H,I,K,M
atRights[6]=A,B,C,D,E,F,G,H,I,J,K,M
atRights[7]=A,B,C,D,E,F,G,H,I,J,K,L,M
atRights[8]=A,B,C,D,E,F,G,H,K,N
atRights[9]=
atRights[10]=
atRights[11]=
atRights[12]=
atRights[13]=
atRights[14]=
atRights[15]=
atRights[16]=
atRights[17]=
atRights[18]=
atRights[19]=
atRights[20]=
atRights[21]=
atRights[22]=
atRights[23]=
atRights[24]=
atRights[25]=
atRights[26]=
atRights[27]=
atRights[28]=
atRights[29]=
atTitle[0]=Player
atTitle[1]=
atTitle[2]=L3 Admin
atTitle[3]=L4 Admin
atTitle[4]=L5 Admin
atTitle[5]=L6 Admin
atTitle[6]=L7 Admin
atTitle[7]=L8 Admin
atTitle[8]=
atTitle[9]=
atTitle[10]=
atTitle[11]=
atTitle[12]=
atTitle[13]=
atTitle[14]=
atTitle[15]=
atTitle[16]=
atTitle[17]=
atTitle[18]=
atTitle[19]=
atTitle[20]=
atTitle[21]=
atTitle[22]=
atTitle[23]=
atTitle[24]=
atTitle[25]=
atTitle[26]=
atTitle[27]=
atTitle[28]=
atTitle[29]=
-
- Godlike
- Posts: 2545
- Joined: Fri Sep 25, 2015 9:01 pm
- Location: moved without proper hashing
Re: Retrieving NexGen player's account type
Took some time but topic is still hot.
What I meant: How can I get nexgen player's information by code? For player's indent string (that UUID) I tried something like this:
What I meant: How can I get nexgen player's information by code? For player's indent string (that UUID) I tried something like this:
Code: Select all
static function string GetPlayerIdent(Tournamentplayer P, bool bDebug) {
//local string result;
return P.PlayerReplicationInfo.Playername;
// NexgenClient does not exist at the time when ModifyPlayer() is executed
/*
if (NexgenClient_PlayerIDFind(P, result))
{
if (bDebug)
P.log(CSelfname $ ".GetPlayerIdent() returns" @ result);
return result;
}
else
{
if (bDebug)
P.log(CSelfname $ ".GetPlayerIdent() returns the Playername:" @ P.PlayerReplicationInfo.Playername);
return P.PlayerReplicationInfo.Playername;
}
*/
}
Code: Select all
static function bool NexgenClient_PlayerIDFind(Tournamentplayer P, out string NexgenPlayerID) {
local Info NexgenClient;
// if PlayerReplicationInfoSB(P.PlayerReplicationInfo).NexgenClient != None)
ForEach P.AllActors(class'Info', NexgenClient)
if (NexgenClient.Class.Name == 'NexgenClient') // NexgenClient.Tag is NONE, so not usable
{
if (string(P.PlayerReplicationInfo.PlayerID) == NexgenClient.GetPropertyText("playerNum"))
{
NexgenPlayerID = NexgenClient.GetPropertyText("playerID");
return NexgenPlayerID != "";
}
}
return false;
}
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
-
- Godlike
- Posts: 1994
- Joined: Sat Mar 21, 2020 5:32 am
Re: Retrieving NexGen player's account type
What exactly "nexgen player's information" you need?
Automatically merged
Code: Select all
//=============================================================================
// MyMutator.
//=============================================================================
class MyMutator expands Mutator;
function PostBeginPlay() {
Super.PostBeginPlay();
Level.Game.BaseMutator.AddMutator(self);
}
function Mutate(string MutateString, PlayerPawn Sender) {
local Info NexgenClient;
Super.Mutate(MutateString, Sender);
if (MutateString ~= "NI") {
NexgenClient = GetNexgenClient(Sender);
if (NexgenClient == None)
Sender.ClientMessage("NexgenClient not found for" @ Sender.GetHumanName());
else {
Sender.ClientMessage("For" @ Sender.GetHumanName() @ "found" @ NexgenClient.Name);
// for full set of options look at
// https://github.com/dscheerens/nexgen/blob/master/Nexgen/Classes/NexgenClient.uc
Sender.ClientMessage("bNetLogin:" @ NexgenClient.GetPropertyText("bNetLogin"));
Sender.ClientMessage("bNetWait:" @ NexgenClient.GetPropertyText("bNetWait"));
Sender.ClientMessage("loginComplete:" @ NexgenClient.GetPropertyText("loginComplete"));
Sender.ClientMessage("ipAddress:" @ NexgenClient.GetPropertyText("ipAddress"));
Sender.ClientMessage("playerID:" @ NexgenClient.GetPropertyText("playerID"));
Sender.ClientMessage("playerNum:" @ NexgenClient.GetPropertyText("playerNum"));
Sender.ClientMessage("bHasAccount:" @ NexgenClient.GetPropertyText("bHasAccount"));
Sender.ClientMessage("loginOptions:" @ NexgenClient.GetPropertyText("loginOptions"));
Sender.ClientMessage("playerName:" @ NexgenClient.GetPropertyText("playerName"));
Sender.ClientMessage("team:" @ NexgenClient.GetPropertyText("team"));
Sender.ClientMessage("rights:" @ NexgenClient.GetPropertyText("rights"));
Sender.ClientMessage("title:" @ NexgenClient.GetPropertyText("title"));
Sender.ClientMessage("country:" @ NexgenClient.GetPropertyText("country"));
Sender.ClientMessage("bSpectator:" @ NexgenClient.GetPropertyText("bSpectator"));
Sender.ClientMessage("bFirePressed:" @ NexgenClient.GetPropertyText("bFirePressed"));
Sender.ClientMessage("bInitialized:" @ NexgenClient.GetPropertyText("bInitialized"));
Sender.ClientMessage("badConnectionSince:" @ NexgenClient.GetPropertyText("badConnectionSince"));
Sender.ClientMessage("bBadConnectionDetected:" @ NexgenClient.GetPropertyText("bBadConnectionDetected"));
Sender.ClientMessage("bMuted:" @ NexgenClient.GetPropertyText("bMuted"));
Sender.ClientMessage("bNoTeamSwitch:" @ NexgenClient.GetPropertyText("bNoTeamSwitch"));
Sender.ClientMessage("lastRespawnTime:" @ NexgenClient.GetPropertyText("lastRespawnTime"));
Sender.ClientMessage("spawnProtectionTimeX:" @ NexgenClient.GetPropertyText("spawnProtectionTimeX"));
Sender.ClientMessage("idleTime:" @ NexgenClient.GetPropertyText("idleTime"));
Sender.ClientMessage("idleTimeCP:" @ NexgenClient.GetPropertyText("idleTimeCP"));
Sender.ClientMessage("idleTimeRemaining:" @ NexgenClient.GetPropertyText("idleTimeRemaining"));
Sender.ClientMessage("bUseNexgenMessageHUD:" @ NexgenClient.GetPropertyText("bUseNexgenMessageHUD"));
Sender.ClientMessage("bIsReadyToPlay:" @ NexgenClient.GetPropertyText("bIsReadyToPlay"));
Sender.ClientMessage("lastAliveCheck:" @ NexgenClient.GetPropertyText("lastAliveCheck"));
Sender.ClientMessage("spawnProtectionTimeX:" @ NexgenClient.GetPropertyText("spawnProtectionTimeX"));
}
}
}
static function Info GetNexgenClient(PlayerPawn P) {
local Info NexgenClient;
ForEach P.AllActors(class'Info', NexgenClient) {
if (NexgenClient.Class.Name == 'NexgenClient')
if (string(P.PlayerReplicationInfo.PlayerID) == NexgenClient.GetPropertyText("playerNum"))
return NexgenClient;
}
return None;
}
Code: Select all
> mutate ni
For Buggie found NexgenClient1
bNetLogin: False
bNetWait: False
loginComplete: True
ipAddress: 192.168.1.0
playerID: 68A33A864C91B20DAE42A391F9D65CA5
playerNum: 1
bHasAccount: True
loginOptions: ClientKey=Q3R8Y-MP9KD-3M6KB-383YB-7PK9Q
playerName: Buggie
team: 0
rights: A,B,C,D,E,F,G,H,I,J,K,L,M
title: Root Admin
country:
bSpectator: False
bFirePressed: False
bInitialized: True
badConnectionSince: 0.000000
bBadConnectionDetected: False
bMuted: False
bNoTeamSwitch: False
lastRespawnTime: 0.000000
spawnProtectionTimeX: 0.000000
idleTime: 0.000000
idleTimeCP: 0.000000
idleTimeRemaining: 0
bUseNexgenMessageHUD: False
bIsReadyToPlay: False
lastAliveCheck: 0.000000
spawnProtectionTimeX: 0.000000
You do not have the required permissions to view the files attached to this post.
-
- Godlike
- Posts: 2545
- Joined: Fri Sep 25, 2015 9:01 pm
- Location: moved without proper hashing
Re: Retrieving NexGen player's account type
1) That thing that identifies a player. IMO it is "ClientKey" or " ClientID" in USER.INI, section [NexgenCC.GeneralConfig].
2) Nice to have would be the following:
Code: Select all
function bool PlayerIsNexgenAdmin(Pawn P) {
// something like InStr(Caps(atTypeName[i]), "ADMIN") would be enough, no check for given rights needed
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
-
- Godlike
- Posts: 1994
- Joined: Sat Mar 21, 2020 5:32 am
Re: Retrieving NexGen player's account type
Also
So you can check rights via:
Sender.ClientMessage("playerID:" @ NexgenClient.GetPropertyText("playerID"));
playerID: 68A33A864C91B20DAE42A391F9D65CA5
Sender.ClientMessage("title:" @ NexgenClient.GetPropertyText("title"));
title: Root Admin
But this not really useful if used custom player titles (or hidden admin). Better use check again rights, as I show above.
Code: Select all
// Add default right definitions.
addRightDefiniton("A", control.lng.allowedToPlayRightDesc);
addRightDefiniton("B", control.lng.vipSlotAccessRightDesc);
addRightDefiniton("C", control.lng.adminSlotAccessRightDesc);
addRightDefiniton("D", control.lng.needsNoPWRightDesc);
addRightDefiniton("E", control.lng.canBeIdleRightDesc);
addRightDefiniton("F", control.lng.matchAdminRightDesc);
addRightDefiniton("G", control.lng.moderatorRightDesc);
addRightDefiniton("K", control.lng.matchSetRightDesc);
addRightDefiniton("H", control.lng.banOpRightDesc);
addRightDefiniton("I", control.lng.accountMngrRightDesc);
addRightDefiniton("J", control.lng.serverAdminRightDesc);
addRightDefiniton("L", control.lng.canBanAccountsRightDesc);
addRightDefiniton("M", control.lng.hiddenAdminRightDesc, true);
Code: Select all
if (InStr("," $ NexgenClient.GetPropertyText("rights") $ ",", ",J,") != -1)
// do some stuff which allowed only for serverAdminRight priveledge.
Automatically merged
In code above:
Sender.ClientMessage("playerID:" @ NexgenClient.GetPropertyText("playerID"));
playerID: 68A33A864C91B20DAE42A391F9D65CA5
In code above:Barbie wrote: ↑Mon May 16, 2022 10:24 am 2) Nice to have would be the following:(atTypeName is defined in Nexgen.ini, section [Nexgen112N.NexgenConfigExt])Code: Select all
function bool PlayerIsNexgenAdmin(Pawn P) { // something like InStr(Caps(atTypeName[i]), "ADMIN") would be enough, no check for given rights needed
Sender.ClientMessage("title:" @ NexgenClient.GetPropertyText("title"));
title: Root Admin
But this not really useful if used custom player titles (or hidden admin). Better use check again rights, as I show above.
-
- Godlike
- Posts: 1994
- Joined: Sat Mar 21, 2020 5:32 am
Re: Retrieving NexGen player's account type
Proper code for get NextgenClient:
As I suspect long time, PlayerReplicationInfo.PlayerID is not same as NexgenClient.playerNum. Possible it match in some cases (usually when test and run server for it), but in general it is not same.
Code: Select all
var PlayerPawn TempPlayer;
function Info GetNexgenClient(PlayerPawn P) {
local Info NexgenClient;
local string TempStr;
TempPlayer = P;
TempStr = GetPropertyText("TempPlayer");
ForEach P.AllActors(class'Info', NexgenClient) {
if (NexgenClient.Class.Name == 'NexgenClient')
if (TempStr == NexgenClient.GetPropertyText("player"))
return NexgenClient;
}
return None;
}
-
- Godlike
- Posts: 2545
- Joined: Fri Sep 25, 2015 9:01 pm
- Location: moved without proper hashing
Re: Retrieving NexGen player's account type
This is also possible:
Code: Select all
static function bool NexgenClient_Find(PlayerReplicationInfo PRI, out Info NexgenClient) {
/******************************************************************************
Returns TRUE if a NexgenClient was found.
string(PRI.Owner) is something like
MH-UM-Curse-Of-Pharao1.TFemale0
An instance of class'NexgenClient' returns something like
TFemale1'MH-UM-Curse-Of-Pharao1.TFemale0'
with GetPropertyText("player").
So the right side of that string (without the ') must be equal to
string(PRI.Owner).
******************************************************************************/
local Info I;
local byte OwnerStrLen;
if (PRI != None && PRI.Owner != None)
{
OwnerStrLen = len(PRI.Owner);
ForEach PRI.Owner.AllActors(class'Info', I)
if (I.Class.Name == 'NexgenClient') // NexgenClient.Tag is NONE, so not usable
if (string(PRI.Owner) == left(right(I.GetPropertyText("player"), OwnerStrLen + 1), OwnerStrLen))
{
NexgenClient = I;
return true;
}
}
return false;
}
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett