summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/script_commands.txt6
-rw-r--r--src/map/script.c22
2 files changed, 18 insertions, 10 deletions
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index 15026cd7c..c9bdce7c5 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -3364,10 +3364,10 @@ Return true if successful, otherwise it will return false.
---------------------------------------
-*getgroupid()
+*getgroupid({<account id>})
-This function will return the id of player group the account to which the
-invoking player belongs.
+This command returns the id of the group of the attached or specified player.
+If the player is not found, returns -1.
---------------------------------------
diff --git a/src/map/script.c b/src/map/script.c
index 8ddb056bd..533e421d8 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -9967,14 +9967,22 @@ BUILDIN(setgroupid) {
/// Returns the group ID of the player.
///
-/// getgroupid() -> <int>
-BUILDIN(getgroupid)
-{
- struct map_session_data *sd = script->rid2sd(st);
- if (sd == NULL)
+/// getgroupid({<account id>}) -> <int>
+BUILDIN(getgroupid) {
+ struct map_session_data *sd = NULL;
+
+ if (script_hasdata(st, 2)) {
+ sd = map->id2sd(script_getnum(st, 2));
+ } else {
+ sd = script->rid2sd(st);
+ }
+
+ if (sd == NULL) {
+ script_pushint(st, -1);
return true; // no player attached, report source
- script_pushint(st, pc_get_group_id(sd));
+ }
+ script_pushint(st, pc_get_group_id(sd));
return true;
}
@@ -23861,7 +23869,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(basicskillcheck,""),
BUILDIN_DEF(getgmlevel,""),
BUILDIN_DEF(setgroupid, "i?"),
- BUILDIN_DEF(getgroupid,""),
+ BUILDIN_DEF(getgroupid,"?"),
BUILDIN_DEF(end,""),
BUILDIN_DEF(checkoption,"i?"),
BUILDIN_DEF(setoption,"i??"),