Может кто нибудь Знает Почему на Еа и Ра я смог всунуть команды @whosell @detach @emotion @dance @heart А на геркулесе неполучается? И есть ли src Коды для етих команд на Hercules?? Если есть скажите где, Или помогите Установить Имеющиеся вот те которые я пытаюсь, Даже самый елементарный (детач) выдал мне 7 ошибок при компиляции ACMD_FUNC(whosell) { char item_name[100]; int item_id = 0, j, count = 0, sat_num = 0; int s_type = 1; // search bitmask: 0-name,1-id, 2-card, 4-refine int refine = 0,card_id = 0; bool flag = 0; // place dot on the minimap? struct map_session_data* pl_sd; struct s_mapiterator* iter; unsigned int MinPrice = battle_config.vending_max_value, MaxPrice = 0; struct item_data *item_data; nullpo_retr(-1, sd); if (!message || !*message) { clif_displaymessage(fd, "Use: @whosell (<+refine> )(<item_id>)(<[card_id]>) or @whosell <name>"); return -1; } if (sscanf(message, "+%d %d[%d]", &refine, &item_id, &card_id) == 3){ s_type = 1+2+4; } else if (sscanf(message, "+%d %d", &refine, &item_id) == 2){ s_type = 1+4; } else if (sscanf(message, "+%d [%d]", &refine, &card_id) == 2){ s_type = 2+4; } else if (sscanf(message, "%d[%d]", &item_id, &card_id) == 2){ s_type = 1+2; } else if (sscanf(message, "[%d]", &card_id) == 1){ s_type = 2; } else if (sscanf(message, "+%d", &refine) == 1){ s_type = 4; } else if (sscanf(message, "%d", &item_id) == 1 && item_id == atoi(message)){ //names, that start on num are not working //so implemented minumum item_id>500 //or better make item_id == atoi(message) ? s_type = 1; } else if (sscanf(message, "%99[^\n]", item_name) == 1){ s_type = 1; if ((item_data = itemdb_searchname(item_name)) == NULL){ clif_displaymessage(fd, "Not found item with this name"); return -1; } item_id = item_data->nameid; } else { clif_displaymessage(fd, "Use: @whosell (<+refine> )(<item_id>)(<[card_id]>) or @whosell <name>"); return -1; } //check card if(s_type & 2 && ((item_data = itemdb_exists(card_id)) == NULL || item_data->type != IT_CARD)){ clif_displaymessage(fd, "Not found a card with than ID"); return -1; } //check item if(s_type & 1 && (item_data = itemdb_exists(item_id)) == NULL){ clif_displaymessage(fd, "Not found an item with than ID"); return -1; } //check refine if(s_type & 4){ if (refine<0 || refine>10){ clif_displaymessage(fd, "Refine out of bounds: 0 - 10"); return -1; } /*if(item_data->type != IT_WEAPON && item_data->type != IT_ARMOR){ clif_displaymessage(fd, "Use refine only with weapon or armor"); return -1; }*/ } iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) ) { if( pl_sd->vender_id ) //check if player is vending { for (j = 0; j < pl_sd->vend_num; j++) { if((item_data = itemdb_exists(pl_sd->status.cart[pl_sd->vending[j].index].nameid)) == NULL) continue; if(s_type & 1 && pl_sd->status.cart[pl_sd->vending[j].index].nameid != item_id) continue; if(s_type & 2 && ((item_data->type != IT_ARMOR && item_data->type != IT_WEAPON) || (pl_sd->status.cart[pl_sd->vending[j].index].card[0] != card_id && pl_sd->status.cart[pl_sd->vending[j].index].card[1] != card_id && pl_sd->status.cart[pl_sd->vending[j].index].card[2] != card_id && pl_sd->status.cart[pl_sd->vending[j].index].card[3] != card_id))) continue; if(s_type & 4 && ((item_data->type != IT_ARMOR && item_data->type != IT_WEAPON) || pl_sd->status.cart[pl_sd->vending[j].index].refine != refine)) continue; if(item_data->type == IT_ARMOR) snprintf(atcmd_output, CHAT_SIZE_MAX, "+%d %d[%d] | Price %d | Amount %d | Map %s[%d,%d] | Seller %s",pl_sd->status.cart[pl_sd->vending[j].index].refine ,pl_sd->status.cart[pl_sd->vending[j].index].nameid ,pl_sd->status.cart[pl_sd->vending[j].index].card[0] ,pl_sd->vending[j].value ,pl_sd->vending[j].amount ,mapindex_id2name(pl_sd->mapindex) ,pl_sd->bl.x,pl_sd->bl.y ,pl_sd->status.name); else if(item_data->type == IT_WEAPON) snprintf(atcmd_output, CHAT_SIZE_MAX, "+%d %d[%d,%d,%d,%d] | Price %d | Amount %d | Map %s[%d,%d] | Seller %s",pl_sd->status.cart[pl_sd->vending[j].index].refine ,pl_sd->status.cart[pl_sd->vending[j].index].nameid ,pl_sd->status.cart[pl_sd->vending[j].index].card[0] ,pl_sd->status.cart[pl_sd->vending[j].index].card[1] ,pl_sd->status.cart[pl_sd->vending[j].index].card[2] ,pl_sd->status.cart[pl_sd->vending[j].index].card[3] ,pl_sd->vending[j].value ,pl_sd->vending[j].amount ,mapindex_id2name(pl_sd->mapindex) ,pl_sd->bl.x,pl_sd->bl.y ,pl_sd->status.name); else snprintf(atcmd_output, CHAT_SIZE_MAX, "ID %d | Price %d | Amount %d | Map %s[%d,%d] | Seller %s",pl_sd->status.cart[pl_sd->vending[j].index].nameid ,pl_sd->vending[j].value ,pl_sd->vending[j].amount ,mapindex_id2name(pl_sd->mapindex) ,pl_sd->bl.x, pl_sd->bl.y ,pl_sd->status.name); if(pl_sd->vending[j].value < MinPrice) MinPrice = pl_sd->vending[j].value; if(pl_sd->vending[j].value > MaxPrice) MaxPrice = pl_sd->vending[j].value; clif_displaymessage(fd, atcmd_output); count++; flag = 1; } if(flag && pl_sd->mapindex == sd->mapindex){ clif_viewpoint(sd, 1, 1, pl_sd->bl.x, pl_sd->bl.y, ++sat_num, 0xFFFFFF); flag = 0; } } } mapit_free(iter); if(count > 0) { snprintf(atcmd_output,CHAT_SIZE_MAX, "Found %d ea. Prices from %dz to %dz", count, MinPrice, MaxPrice); clif_displaymessage(fd, atcmd_output); } else clif_displaymessage(fd, "Nobody is selling it now."); return 0; } /*========================================== * @detach *==========================================*/ ACMD_FUNC(detach) { nullpo_retr(-1, sd); sd->state.monster_ignore = 0; sd->state.autotrade = 1; clif_authfail_fd(fd, 15); return 0; } /*========================================== @heart X by Anarchist => Displays the heart special effect ------------------------------------------ */ ACMD_FUNC(heart) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>2){ clif_displaymessage(fd, "usage: @heart 1 or 2"); return -1; } if(atoi(message)==1){ clif_specialeffect(&sd->bl,364,0); } else if(atoi(message)==2){ clif_specialeffect(&sd->bl,509,0); } return 0; } /*========================================== * @emotion X by Anarchist * => Displays the emotions without delay *------------------------------------------*/ ACMD_FUNC(emotion) { if(!message || !*message || atoi(message)<0 || atoi(message)>87){ clif_displaymessage(fd, "usage: @emotion 1-87"); return -1; } clif_emotion(&sd->bl,atoi(message)); return 0; } /*========================================== @dance X by Anarchist => Special effects with dance style ------------------------------------------ */ ACMD_FUNC(dance) { nullpo_retr(-1, sd); if(!message || !message || atoi(message)<0 || atoi(message)>9){ clif_displaymessage(fd, "usage: @dance 1-9"); return -1; } if(atoi(message)==1){ clif_specialeffect(&sd->bl,413,0); } else if(atoi(message)==2){ clif_specialeffect(&sd->bl,414,0); } else if(atoi(message)==3){ clif_specialeffect(&sd->bl,415,0); } else if(atoi(message)==4){ clif_specialeffect(&sd->bl, 426, 0); } else if(atoi(message)== 5){ clif_specialeffect(&sd->bl,458,0); } else if(atoi(message)==6){ clif_specialeffect(&sd->bl,466,0); } else if(atoi(message)==7){ clif_specialeffect(&sd->bl,501,0); } else if(atoi(message)==8){ clif_specialeffect(&sd->bl,540,0); } else if(atoi(message)==9){ clif_specialeffect(&sd->bl,550,0); } return 0; }