AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting (https://forums.alliedmods.net/forumdisplay.php?f=107)
-   -   Empires, get player score (https://forums.alliedmods.net/showthread.php?t=64929)

skulk_on_dope 12-27-2007 19:00

Empires, get player score
 
I'm currently trying to get the player scores in the mod empires

I've tried to use the player_score event, but this isn't used in empires.

Also I've tried to get them via GetEntData, m_iScore but this doesn't exist for player entites.

Then I've tried to search the right m_Offset in the server.dll, found m_iRank but this also doesn't exist for the player entites

Does anyone have a idea how I could get the scores ?

pRED* 12-27-2007 19:05

Re: Empires, get player score
 
do you have an entity prop dump available?

if you don't type sm_dump_props <filename> (server console or rcon) and post the file somewhere so I can have a look.

skulk_on_dope 12-27-2007 19:24

Re: Empires, get player score
 
1 Attachment(s)
Im anhang befindet sich der dump.
Der classname für spieler ist CSDKPlayer

und danke für den befehl, kannte den garnicht.
Aber er war sm_dump_netprops du hattest das net vergessen :D

Edit:
Sorry, forgot to write enlish

Attached is the dump from sm_dump_netprops, u've forgotten the net in the cmd :D

skulk_on_dope 12-27-2007 19:35

Re: Empires, get player score
 
Ich glaube ich habe gerade etwas gefunden:
Code:

CPlayerResource:
 Sub-Class Table (1 Deep): DT_PlayerResource
  [... gekürtzt ...]
  Sub-Class Table (2 Deep): m_iScore
  -Member: 000 (offset 0) (type integer) (bits 12)
  -Member: 001 (offset 4) (type integer) (bits 12)
  -Member: 002 (offset 8) (type integer) (bits 12)
  -Member: 003 (offset 12) (type integer) (bits 12)
  -Member: 004 (offset 16) (type integer) (bits 12)
  -Member: 005 (offset 20) (type integer) (bits 12)
  -Member: 006 (offset 24) (type integer) (bits 12)
  -Member: 007 (offset 28) (type integer) (bits 12)
  -Member: 008 (offset 32) (type integer) (bits 12)
  -Member: 009 (offset 36) (type integer) (bits 12)
  -Member: 010 (offset 40) (type integer) (bits 12)
  -Member: 011 (offset 44) (type integer) (bits 12)
  -Member: 012 (offset 48) (type integer) (bits 12)
  -Member: 013 (offset 52) (type integer) (bits 12)
  -Member: 014 (offset 56) (type integer) (bits 12)
  -Member: 015 (offset 60) (type integer) (bits 12)
  -Member: 016 (offset 64) (type integer) (bits 12)
  -Member: 017 (offset 68) (type integer) (bits 12)
  -Member: 018 (offset 72) (type integer) (bits 12)
  -Member: 019 (offset 76) (type integer) (bits 12)
  -Member: 020 (offset 80) (type integer) (bits 12)
  -Member: 021 (offset 84) (type integer) (bits 12)
  -Member: 022 (offset 88) (type integer) (bits 12)
  -Member: 023 (offset 92) (type integer) (bits 12)
  -Member: 024 (offset 96) (type integer) (bits 12)
  -Member: 025 (offset 100) (type integer) (bits 12)
  -Member: 026 (offset 104) (type integer) (bits 12)
  -Member: 027 (offset 108) (type integer) (bits 12)
  -Member: 028 (offset 112) (type integer) (bits 12)
  -Member: 029 (offset 116) (type integer) (bits 12)
  -Member: 030 (offset 120) (type integer) (bits 12)
  -Member: 031 (offset 124) (type integer) (bits 12)
  -Member: 032 (offset 128) (type integer) (bits 12)
  -Member: 033 (offset 132) (type integer) (bits 12)
  -Member: 034 (offset 136) (type integer) (bits 12)
  -Member: 035 (offset 140) (type integer) (bits 12)
  -Member: 036 (offset 144) (type integer) (bits 12)
  -Member: 037 (offset 148) (type integer) (bits 12)
  -Member: 038 (offset 152) (type integer) (bits 12)
  -Member: 039 (offset 156) (type integer) (bits 12)
  -Member: 040 (offset 160) (type integer) (bits 12)
  -Member: 041 (offset 164) (type integer) (bits 12)
  -Member: 042 (offset 168) (type integer) (bits 12)
  -Member: 043 (offset 172) (type integer) (bits 12)
  -Member: 044 (offset 176) (type integer) (bits 12)
  -Member: 045 (offset 180) (type integer) (bits 12)
  -Member: 046 (offset 184) (type integer) (bits 12)
  -Member: 047 (offset 188) (type integer) (bits 12)
  -Member: 048 (offset 192) (type integer) (bits 12)

nur wie genau kann ich dadrauf jetzt zugreifen ?

Edit:
and here I've forgotten it too:

I think that I've found something, but i don't know how to access them
if you could help me with that :)

pRED* 12-27-2007 19:40

Re: Empires, get player score
 
Sorry, I don't speak spanish german.

The 'CPlayerResource' seems to be the only place that records player scores.

You first need to find the ent id of this:

Code:

new maxplayers = GetMaxClients();
new maxents = GetMaxEntities();

new String:classname[64];

for(new i = maxplayers; i <= maxents; i++)
{
        if(IsValidEntity(i))
        {
                GetEntityNetClass(i, classname, sizeof(classname));
                if(StrEqual(classname, "CTFPlayerResource"))
                {
                        ent = i;
                        return;
                }
        }
}

Then you can look up the offset of 'm_iScore'

Code:

new offsetFindSendPropOffs("CTFPlayerResource", "m_iScore")
Then check the offset + the client index * 4 (check the prop dump to see this)

Code:

GetEntData(ent, offset + (client*4), 4);

skulk_on_dope 12-27-2007 20:00

Re: Empires, get player score
 
First of all, thx your my last hope ;)

Code:

    new maxplayers = GetMaxClients();
    new maxents = GetMaxEntities();
    new ent;
   
    new String:classname[64];
   
    for(new i = maxplayers; i <= maxents; i++)
    {
        if(IsValidEntity(i))
        {
            GetEntityNetClass(i, classname, sizeof(classname));
            if(StrEqual(classname, "CTFPlayerResource"))
            {
                ent = i;
                return;
            }
        }
    }
   
    new offset = FindSendPropOffs("CTFPlayerResource", "m_iScore")
   
    for(new i=1; i<=maxplayers; i++)
    {
        if(!IsClientInGame(i)) continue
        PrintToServer("%d: %d", i, GetEntData(ent, offset + (i*4), 4));
    }

^^ that isnt working how it should, it say's that I've got 34 but i dont have any so it should return 0....

Edit:
even when I use the right Classname (CPlayerResource) its not working.
There Ive got a very very high numer...

Edit2:
ups i'm a real fool...
gimme a sec

pRED* 12-27-2007 20:20

Re: Empires, get player score
 
change the 'return;' to 'break;'

Change both CTFPlayerResource -> CPlayerResource

skulk_on_dope 12-27-2007 20:29

Re: Empires, get player score
 
Ok, now I got it working.
You are the best :)

Code:

    new maxplayers = GetMaxClients();
    new maxents = GetMaxEntities();
    new ent;
   
    decl String:classname[64];
   
    for(new i = maxplayers; i <= maxents; i++)
    {
        if(IsValidEntity(i))
        {
            GetEntityNetClass(i, classname, sizeof(classname));
            if(StrEqual(classname, "CPlayerResource"))
            {
                ent = i;
                break;
            }
        }
    }
   
    new offset = FindSendPropOffs("CPlayerResource", "m_iScore")
   
    if(ent == 0 || offset == -1)
    {
        PrintToServer("Can not find CPlayerResource!");
        return;
    }
   
    for(new i=1; i<=maxplayers; i++)
    {
        if(!IsClientInGame(i)) continue
        PrintToServer("%d: %d", i, GetEntData(ent, offset + (i*4), 4));
    }



All times are GMT -4. The time now is 19:36.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.