viewing paste getmapusersid | Text

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
BUILDIN(getmapusersid) // Returns array
{
    struct map_session_data *pl_sd = NULL;
    struct s_mapiterator *iter = NULL;
    char map_name[MAP_NAME_LENGTH_EXT] = "";
    int16 m = -1;
    int i = 0;
    
    if (script_hasdata(st, 2)) { // Retrieving and validating input
        if (script_isstringtype(st, 2)) { // Data string must be a map name
            const char *mymap = script_getstr(st,4);
            safestrncpy(map_name,mymap,MAP_NAME_LENGTH_EXT);
            m = (map_id = map->mapname2mapid(map_name));
            if ( m < 0 ) {
                ShowWarning("getmapusersid: Invalid map specified.\n");
                script_pushint(st, 0); // There are no users in an invalid map
            }
        }
        else {
            ShowWarning("getmapusersid: retrieved argument was not string type. Defaulting to all maps.\n");
            script_pushint(st, 0); // There are no users in an invalid map
        }
    }
    
    iter = mapit_getallusers(); // Get all users and filter for maps
    for (pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter))  {
        if ( m >= 0 && pl_sd->bl.m != map_id ) {
            continue;
        }
        
        mapreg->setreg(reference_uid(script->add_str(".@user_ids"), i),pl_sd->bl.id);
        i++;
    }
    
    script_pushint(st, i);
}
 
BUILDIN_DEF(getmapusersid,"?"),
Viewed 1153 times, submitted by jaBote.