GetReputation()
===============

FUNKTION
--------
::

     public int GetReputation(string repid)

DEFINIERT IN
------------
::

     /std/player/reputation.c

ARGUMENTE
---------
::

     repid
       Eindeutige ID der angefragten Reputation.

BESCHREIBUNG
------------
::

     Liefert den aktuellen Wert der angegebenen Reputation <repid> zurueck.

RUeCKGABEWERT
-------------
::

     Zahlenwert, Integer.

BEISPIELE
---------
::

     s. reputation

SIEHE AUCH
----------
::

     reputation
     ChangeReputation(), GetReputations()

ZULETZT GEAeNDERT
-----------------
::

06.04.2009, Zesstra

