ngek202 Posted January 21, 2012 Group: Members Topic Count: 40 Topics Per Day: 0.01 Content Count: 530 Reputation: 33 Joined: 01/17/12 Last Seen: August 16, 2017 Share Posted January 21, 2012 (edited) looking for @itemmap command if anyone still has it this is a very good command to have. Thanks in advance. Edited January 23, 2012 by ngek202 Quote Link to comment Share on other sites More sharing options...
Arcenciel Posted January 21, 2012 Group: Members Topic Count: 69 Topics Per Day: 0.01 Content Count: 1315 Reputation: 372 Joined: 12/10/11 Last Seen: August 31, 2013 Share Posted January 21, 2012 If you can explain what it does, maybe someone can make it for you. Quote Link to comment Share on other sites More sharing options...
ngek202 Posted January 22, 2012 Group: Members Topic Count: 40 Topics Per Day: 0.01 Content Count: 530 Reputation: 33 Joined: 01/17/12 Last Seen: August 16, 2017 Author Share Posted January 22, 2012 (edited) If you can explain what it does, maybe someone can make it for you. I need to look first on my backup archive if i still have it.. but anyway what it does is it's same with @item command and the syntax is something like this: @itemmap <map name> <item id/name> <quantity> something like that if i remember it right, I have this on my previous Server got it from eAthena it was posted/modified by Rad Santos but was originally made by Cid *something* I don't remember lol and I'm not quite sure. so what it does is, it gives item to every Player who are on the Map. well this is a nice Command for giving out Rewards/Gift for your beloved Players Edited January 22, 2012 by ngek202 Quote Link to comment Share on other sites More sharing options...
Sanasol Posted January 22, 2012 Group: Members Topic Count: 11 Topics Per Day: 0.00 Content Count: 185 Reputation: 53 Joined: 01/04/12 Last Seen: February 28 Share Posted January 22, 2012 (edited) /*========================================== * @itemmap * A way of giving items to all players on a whole map *------------------------------------------*/ ACMD_FUNC(itemmap) { struct map_session_data *pl_sd = NULL; struct s_mapiterator* iter; int j; int pl_GM_level, GM_level; int map_id = 0; char map_name[MAP_NAME_LENGTH]; char item_name[100]; int number = 0, item_id, flag; struct item item_tmp; struct item_data *item_data; int get_count, count=0; memset(item_name, '0', sizeof(item_name)); memset(map_name, '0', sizeof(map_name)); nullpo_retr(-1, sd); if (!message || !*message) return -1; if(sscanf(message, "%15s "%99[^"]" %d", map_name, item_name, &number) != 3 && sscanf(message, "%15s %99s %d", map_name, item_name, &number) != 3) { clif_displaymessage(fd, "Please, enter an item name/id (usage: @itemmap <mapname> <item name or ID> [quantity])."); return -1; } if (number <= 0) number = 1; if ((item_data = itemdb_searchname(item_name)) == NULL && (item_data = itemdb_exists(atoi(item_name))) == NULL) { clif_displaymessage(fd, msg_txt(19)); // Invalid item ID or name. return -1; } item_id = item_data->nameid; get_count = number; //Check if it's stackable. if (!itemdb_isstackable2(item_data)) get_count = 1; GM_level = pc_isGM(sd); if (strstr(map_name, ".gat") == NULL && strstr(map_name, ".afm") == NULL && strlen(map_name) < MAP_NAME_LENGTH-4) // 16 - 4 (.gat) strcat(map_name, ".gat"); if ((map_id = map_mapname2mapid(map_name)) < 0) map_id = sd->bl.m; iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) ) { if (pl_sd->fd != fd && pc_isGM(sd) >= pc_isGM(pl_sd)) { pl_GM_level = pc_isGM(pl_sd); if (!((battle_config.hide_GM_session || (pl_sd->sc.option & OPTION_INVISIBLE)) && (pl_GM_level > GM_level))) { // you can look only lower or same level if (pl_sd->bl.m == map_id) { // If the player is on the map for (j = 0; j < number; j += get_count) { memset(&item_tmp, 0, sizeof(item_tmp)); item_tmp.nameid = item_id; item_tmp.identify = 1; if ((flag = pc_additem(pl_sd, &item_tmp, get_count))) clif_additem(pl_sd, 0, 0, flag); } count ++; clif_displaymessage(pl_sd->fd, "Something is falling from the sky."); // Message for all players on the map (can't use "mercy.." because we can use a Support or a Attack skill with @skillmap) } } } } snprintf(atcmd_output, sizeof(atcmd_output) ,"You give the item to : %d players.", count); clif_displaymessage(fd, atcmd_output); return 0; } Edited March 24, 2012 by Emistry Codeboxed Content 1 Quote Link to comment Share on other sites More sharing options...
ngek202 Posted January 22, 2012 Group: Members Topic Count: 40 Topics Per Day: 0.01 Content Count: 530 Reputation: 33 Joined: 01/17/12 Last Seen: August 16, 2017 Author Share Posted January 22, 2012 (edited) wow I will try and test this Thanks Sanasol. @Sanasol i tried though I end up with 1 error while compiling: 1>c:usersbeedesktopr15503srcmapatcommand.c(2391): error C2198: 'pc_additem' : too few arguments for call Edited January 22, 2012 by ngek202 Quote Link to comment Share on other sites More sharing options...
Sanasol Posted January 22, 2012 Group: Members Topic Count: 11 Topics Per Day: 0.00 Content Count: 185 Reputation: 53 Joined: 01/04/12 Last Seen: February 28 Share Posted January 22, 2012 obviously old src code. dunno how repair it) wait for developers Quote Link to comment Share on other sites More sharing options...
ngek202 Posted January 22, 2012 Group: Members Topic Count: 40 Topics Per Day: 0.01 Content Count: 530 Reputation: 33 Joined: 01/17/12 Last Seen: August 16, 2017 Author Share Posted January 22, 2012 I see thanks anyway man at least we have the src now I lost my copy of this one Quote Link to comment Share on other sites More sharing options...
ngek202 Posted January 23, 2012 Group: Members Topic Count: 40 Topics Per Day: 0.01 Content Count: 530 Reputation: 33 Joined: 01/17/12 Last Seen: August 16, 2017 Author Share Posted January 23, 2012 no one looked on this yet Quote Link to comment Share on other sites More sharing options...
Sanasol Posted January 23, 2012 Group: Members Topic Count: 11 Topics Per Day: 0.00 Content Count: 185 Reputation: 53 Joined: 01/04/12 Last Seen: February 28 Share Posted January 23, 2012 if ((flag = pc_additem(pl_sd, &item_tmp, get_count))) to if ((flag = pc_additem(pl_sd, &item_tmp, get_count, LOG_TYPE_COMMAND))) try this 1 Quote Link to comment Share on other sites More sharing options...
ngek202 Posted January 23, 2012 Group: Members Topic Count: 40 Topics Per Day: 0.01 Content Count: 530 Reputation: 33 Joined: 01/17/12 Last Seen: August 16, 2017 Author Share Posted January 23, 2012 (edited) I will try it now Sanasol thanks Update It's working now I missed a line lol.. I tried repasting it again and it worked Thank you very much Sanasol. Edited January 23, 2012 by ngek202 Quote Link to comment Share on other sites More sharing options...
MxR Posted March 14, 2012 Group: Members Topic Count: 5 Topics Per Day: 0.00 Content Count: 30 Reputation: 3 Joined: 02/19/12 Last Seen: February 1, 2023 Share Posted March 14, 2012 ngek202 can you post your fixed src. O_o. Quote Link to comment Share on other sites More sharing options...
ngek202 Posted March 15, 2012 Group: Members Topic Count: 40 Topics Per Day: 0.01 Content Count: 530 Reputation: 33 Joined: 01/17/12 Last Seen: August 16, 2017 Author Share Posted March 15, 2012 (edited) Ill post it once I get home, but I'd suggest you take a look on Xantara's version I think it's better though. here: http://pastebin.com/UNKGE3hv Edited March 15, 2012 by ngek202 Quote Link to comment Share on other sites More sharing options...
vBrenth Posted March 24, 2012 Group: Members Topic Count: 35 Topics Per Day: 0.01 Content Count: 311 Reputation: 46 Joined: 11/06/11 Last Seen: 9 hours ago Share Posted March 24, 2012 Not working on 3ceam whyyy Quote Link to comment Share on other sites More sharing options...
ngek202 Posted March 24, 2012 Group: Members Topic Count: 40 Topics Per Day: 0.01 Content Count: 530 Reputation: 33 Joined: 01/17/12 Last Seen: August 16, 2017 Author Share Posted March 24, 2012 (edited) I think because on 3ceam it still use pc_isGM and GM_level while on rAthena's current version uses pc_get_group_level and level the one I posted is i modified it to work with rAthena's new gm command update. ok here this should work Sanasol's version I just added the changes he did. http://pastebin.com/raw.php?i=DYUAe6Ca Edited March 24, 2012 by ngek202 Quote Link to comment Share on other sites More sharing options...
alexcross09 Posted March 2, 2013 Group: Members Topic Count: 0 Topics Per Day: 0 Content Count: 4 Reputation: 0 Joined: 02/11/13 Last Seen: May 8, 2013 Share Posted March 2, 2013 where can i paste this? Quote Link to comment Share on other sites More sharing options...
Cydh Posted March 3, 2013 Group: Developer Topic Count: 153 Topics Per Day: 0.03 Content Count: 2285 Reputation: 748 Joined: 06/16/12 Last Seen: February 21 Share Posted March 3, 2013 where can i paste this? src/map/atcommand.c Quote Link to comment Share on other sites More sharing options...
alexcross09 Posted March 6, 2013 Group: Members Topic Count: 0 Topics Per Day: 0 Content Count: 4 Reputation: 0 Joined: 02/11/13 Last Seen: May 8, 2013 Share Posted March 6, 2013 and then how about adding @itemmap command when i try to use @itemmap its unknown command ? Quote Link to comment Share on other sites More sharing options...
Cydh Posted March 6, 2013 Group: Developer Topic Count: 153 Topics Per Day: 0.03 Content Count: 2285 Reputation: 748 Joined: 06/16/12 Last Seen: February 21 Share Posted March 6, 2013 still on your src/map/atcommand.c, find these def lines, and you must add itemmap there. ACMD_DEF(unloadnpcfile), ACMD_DEF(cart), - ACMD_DEF(mount2) + ACMD_DEF(mount2), + ACMD_DEF(itemmap), }; AtCommandInfo* atcommand; int i; also, check your group.conf's commands. Quote Link to comment Share on other sites More sharing options...
Lighta Posted March 6, 2013 Group: Members Topic Count: 16 Topics Per Day: 0.00 Content Count: 737 Reputation: 216 Joined: 11/29/11 Last Seen: December 20, 2020 Share Posted March 6, 2013 here the one I had done: /*========================================== * @item command (usage: @item <name/id_of_item> <quantity>) (modified by [Yor] for pet_egg) *------------------------------------------*/ ACMD_FUNC(item) { char item_name[100], string[30]; int number = 0, item_id, flag; struct item item_tmp; struct item_data *item_data; int get_count, i; int map_id = 0, guildid = 0, partyid = 0, type = 0; struct s_mapiterator* iter; TBL_PC *pl_sd; nullpo_retr(-1, sd); memset(item_name, '\0', sizeof (item_name)); if (strstr(command, "party") != NULL) { //polymorph [Lighta] struct party_data *pd; if (sscanf(message, "%30s %30s %d", string, item_name, &number) < 2) { clif_displaymessage(fd, "Please, enter an item name/id (usage: @itemparty <partyname> <item name or ID> [quantity])"); return -1; } pd = party_searchname(string); if (pd) partyid = pd->party.party_id; else if (sd->status.party_id) partyid = sd->status.party_id; if (!partyid) { clif_displaymessage(fd, "Party not found!"); return -1; } type = 1; } else if (strstr(command, "guild") != NULL) { struct guild *g; if (sscanf(message, "%30s %30s %d", string, item_name, &number) < 2) { clif_displaymessage(fd, "Please, enter an item name/id (usage: @itemguild <guildname> <item name or ID> [quantity])"); return -1; } g = guild_searchname(string); if (g) guildid = g->guild_id; else if (sd->status.guild_id) guildid = sd->status.guild_id; if (!guildid) { clif_displaymessage(fd, "Guild not found!"); return -1; } type = 2; } else if (strstr(command, "map") != NULL) { if (sscanf(message, "%30s %30s %d", string, item_name, &number) < 2) { clif_displaymessage(fd, "Please, enter an item name/id (usage: @itemmap <mapname> <item name or ID> [quantity])"); return -1; } if ((map_id = map_mapname2mapid(string)) <= 0) //if map not found take current one map_id = sd->bl.m; type = 3; } else if (!message || !*message || (//normal command sscanf(message, "\"%99[^\"]\" %d", item_name, &number) < 1 && sscanf(message, "%99s %d", item_name, &number) < 1 )) { clif_displaymessage(fd, msg_txt(983)); // Please enter an item name or ID (usage: @item <item name/ID> <quantity>). return -1; } if (number <= 0) number = 1; if ((item_data = itemdb_searchname(item_name)) == NULL && (item_data = itemdb_exists(atoi(item_name))) == NULL) { clif_displaymessage(fd, msg_txt(19)); // Invalid item ID or name. return -1; } item_id = item_data->nameid; get_count = number; //Check if it's stackable. if (!itemdb_isstackable2(item_data)) get_count = 1; iter = mapit_getallusers(); for (pl_sd = (TBL_PC*) mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*) mapit_next(iter)) { switch (type) { case 1: //team limited if (pl_sd->status.party_id != partyid) continue; break; case 2: //guild limited if (pl_sd->status.guild_id != guildid) continue; break; case 3: if (pl_sd->bl.m != map_id) continue; break; default: pl_sd = sd; } for (i = 0; i < number; i += get_count) { // if not pet egg if (!pet_create_egg(pl_sd, item_id)) { memset(&item_tmp, 0, sizeof (item_tmp)); item_tmp.nameid = item_id; item_tmp.identify = 1; if ((flag = pc_additem(pl_sd, &item_tmp, get_count, LOG_TYPE_COMMAND))) clif_additem(pl_sd, 0, 0, flag); } } if (!type) break; //backward } mapit_free(iter); if (flag == 0) clif_displaymessage(fd, msg_txt(18)); // Item created. return 0; } There many iterator as you can see, you can use :@itemmap <mapname> <nameid> <amount>@itemguild <guildname> <nameid> <amount>@itemparty <partyname> <nameid> <amount>and ofc old one :@item <nameid> <amount> Quote Link to comment Share on other sites More sharing options...
kamikaze666 Posted March 7, 2013 Group: Members Topic Count: 10 Topics Per Day: 0.00 Content Count: 92 Reputation: 8 Joined: 01/11/13 Last Seen: September 29, 2015 Share Posted March 7, 2013 (edited) EDIT 2: error showing with the following EDIT3: baaah silly mistake "struct s_map iterator* iter;" should actually be "struct s_mapiterator *iter;" .... >.< rebiuld succeeded "struct s_map iterator* iter;" 1 IntelliSense: incomplete type is not allowed d:\games\***\source\src\map\atcommand.c 1177 14 map-server_sql 2 IntelliSense: expected a ';' d:\games\***\source\src\map\atcommand.c 1177 22 map-server_sql 3 IntelliSense: identifier "iter" is undefined d:\games\***\source\src\map\atcommand.c 1243 1 map-server_sql Edited March 7, 2013 by kamikaze666 Quote Link to comment Share on other sites More sharing options...
Kringle Posted May 6, 2013 Group: Members Topic Count: 10 Topics Per Day: 0.00 Content Count: 34 Reputation: 1 Joined: 06/14/12 Last Seen: May 3, 2020 Share Posted May 6, 2013 1>d:\rathena\svn\src\map\atcommand.c(1154): warning C4003: not enough actual parameters for macro 'msg_txt' 1>d:\rathena\svn\src\map\atcommand.c(1154): warning C4047: 'function' : 'map_session_data *' differs in levels of indirection from 'int' 1>d:\rathena\svn\src\map\atcommand.c(1154): warning C4024: 'map_msg_txt' : different types for formal and actual parameter 1 1>d:\rathena\svn\src\map\atcommand.c(1154): error C2059: syntax error : ')' Need help! Quote Link to comment Share on other sites More sharing options...
Jaburak Posted May 6, 2013 Group: Members Topic Count: 48 Topics Per Day: 0.01 Content Count: 1125 Reputation: 236 Joined: 07/30/12 Last Seen: April 13 Share Posted May 6, 2013 Try @itemmap by Xantara: http://rathena.org/board/topic/56124-package-getitem-map-itemmap/ Quote Link to comment Share on other sites More sharing options...
Question
ngek202
looking for @itemmap command if anyone still has it
this is a very good command to have.
Thanks in advance.
Edited by ngek202Link to comment
Share on other sites
21 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.