Перейти к содержанию

Рекомендуемые сообщения

Возникла проблема следующего характера:

При попытки купить предмет в кэш шопе пишет ошибку в чат.("Покупка не удалась. Неправильная информация о предмете." Это 1231 строчка в файле data/msgstringtable.txt)

Сервер ничего не пишет.

Использую:

-2011-03-22aRagexeRE.exe

-eathena Revision 15138: trunk

Кто знает как с этим бороться?

Ссылка на комментарий
Поделиться на другие сайты

@Darkness - Купи себе мозг. И забудь про ?Athena.

@ТС - Попробовать другой .ехе. И может быть что-то с предметом? Стандартный не пробовал?

Я сколняюсь к тому, что .exe предметы не так считывает. Так как заметил что в аукционе есть небольшие проблемы:

-Добавляю предмет на аукцион(все в порядке).

-Нахожу его в лотах(вроде тоже все хорошо).

-А сделать ставку не могу(Пишет типо не могу выставить предмет на аукцион)

-Смотрю в мои лоты, а там вместо, например Knife[4], пишет Unknown Item и яблочко.

Меня еще этот момент смутил, но я закрыл глаза, т.к. аукцион не особо важен. Хотя сейчас вот уж задумался об этом.

В смысле стандартный? Предмет стандартный засунуть в кэш шоп?

Я пробовал ставить поты в кэш шоп, включал стандартный, который в папке merchants лежит. Результат один и тот же...

Сейчас еще тогда с .exe поэкспериментирую.

Ссылка на комментарий
Поделиться на другие сайты

@Darkness - Купи себе мозг. И забудь про ?Athena.

@ТС - Попробовать другой .ехе. И может быть что-то с предметом? Стандартный не пробовал?

Я сколняюсь к тому, что .exe предметы не так считывает. Так как заметил что в аукционе есть небольшие проблемы:

-Добавляю предмет на аукцион(все в порядке).

-Нахожу его в лотах(вроде тоже все хорошо).

-А сделать ставку не могу(Пишет типо не могу выставить предмет на аукцион)

-Смотрю в мои лоты, а там вместо, например Knife[4], пишет Unknown Item и яблочко.

Меня еще этот момент смутил, но я закрыл глаза, т.к. аукцион не особо важен. Хотя сейчас вот уж задумался об этом.

Аукцион можешь и не пробовать ставить, даже на последней rAthena он не исправлен. У всех такие проблемы, думаешь почему люди его не используют? Не один же ты такой умный :)

Поменял пару .exe, все так же :(

Ссылка на комментарий
Поделиться на другие сайты

Вообщем то еще ничего, только это: hold,whosell,show,emotion,dance,heart,dt

Завтра попробую еще раз афинку скачать.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

Здравствуй!столкнулся с такой же проблемой не давнно.

вот решение твоей пробелы с Cash Shop.

правим src, такие файлы как:

правим: npc.c

правим: npc.h

правим: clif.c

правим: packet_db.txt

src\map\npc.c

находим


/*==========================================
* Cash Shop Buy List
*------------------------------------------*/

и меняем на это


/*==========================================
* Cash Shop Buy List
*------------------------------------------*/
int npc_cashshop_buylist(struct map_session_data *sd, int points, int count, unsigned short* item_list)
{
int i, j, nameid, amount, new_, w, vt;
struct npc_data *nd = (struct npc_data *)map_id2bl(sd->npc_shopid);

if( !nd || nd->subtype != CASHSHOP )
return 1;

if( sd->state.trading )
return 4;

new_ = 0;
w = 0;
vt = 0; // Global Value

// Validating Process ----------------------------------------------------
for( i = 0; i < count; i++ )
{
nameid = item_list[i*2+1];
amount = item_list[i*2+0];

if( !itemdb_exists(nameid) || amount <= 0 )
return 5;

ARR_FIND(0,nd->u.shop.count,j,nd->u.shop.shop_item[j].nameid == nameid);
if( j == nd->u.shop.count || nd->u.shop.shop_item[j].value <= 0 )
return 5;

if( !itemdb_isstackable(nameid) && amount > 1 )
{
ShowWarning("Player %s (%d:%d) sent a hexed packet trying to buy %d of nonstackable item %d!\n", sd->status.name, sd->status.account_id, sd->status.char_id, amount, nameid);
amount = item_list[i*2+0] = 1;
}

switch( pc_checkadditem(sd,nameid,amount) )
{
case ADDITEM_NEW:
new_++;
break;
case ADDITEM_OVERAMOUNT:
return 3;
}

vt += nd->u.shop.shop_item[j].value * amount;
w += itemdb_weight(nameid) * amount;
}

if( w + sd->weight > sd->max_weight )
return 3;
if( pc_inventoryblank(sd) < new_ )
return 3;
if( points > vt ) points = vt;

// Payment Process ----------------------------------------------------
if( sd->kafraPoints < points || sd->cashPoints < (vt - points) )
return 6;
pc_paycash(sd,vt,points);

// Delivery Process ----------------------------------------------------
for( i = 0; i < count; i++ )
{
struct item item_tmp;

nameid = item_list[i*2+1];
amount = item_list[i*2+0];

memset(&item_tmp,0,sizeof(item_tmp));

if( !pet_create_egg(sd,nameid) )
{
item_tmp.nameid = nameid;
item_tmp.identify = 1;
pc_additem(sd,&item_tmp,amount);
}

if( log_config.enable_logs&0x20 )
log_pick_pc(sd, "S", nameid, amount, NULL);
}

return 0;
}

Следующим правим npc.h

находим строку

int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int points);

меняем на это

int npc_cashshop_buylist(struct map_session_data *sd, int points, int count, unsigned short* item_list);

идем 3 докумен clif.c

ищим

void clif_parse_cashshop_buy(int fd, struct map_session_data *sd)
{
int fail = 0, amount, points;
short nameid;
nullpo_retv(sd);

nameid = RFIFOW(fd,2);
amount = RFIFOW(fd,4);
points = RFIFOL(fd,6); // Not Implemented. Should be 0

if( sd->state.trading || !sd->npc_shopid )
fail = 1;
else
fail = npc_cashshop_buy(sd, nameid, amount, points);

clif_cashshop_ack(sd, fail);
}

правим на это

void clif_parse_cashshop_buy(int fd, struct map_session_data *sd)
{
int fail = 0;
struct npc_data *nd;
nullpo_retv(sd);

if( sd->state.trading || !sd->npc_shopid )
fail = 1;
else
{
#if PACKETVER < 20101116
short nameid = RFIFOW(fd,2);
short amount = RFIFOW(fd,4);
int points = RFIFOL(fd,6);

fail = npc_cashshop_buy(sd, nameid, amount, points);
#else
int len = RFIFOW(fd,2);
int points = RFIFOL(fd,4);
int count = RFIFOW(fd,8);
unsigned short* item_list = (unsigned short*)RFIFOP(fd,10);

if( len < 10 || len != 10 + count * 4)
{
ShowWarning("Player %u sent incorrect cash shop buy packet (len %u:%u)!\n", sd->status.char_id, len, 10 + count * 4);
return;
}
fail = npc_cashshop_buylist(sd,points,count,item_list);
#endif
}

clif_cashshop_ack(sd,fail);
}

идем в \db\packet_db.txt

ищим

packet_ver: 26
+0x0288,-1,cashshopbuy,4:8
0x0436,19,wanttoconnection,2:6:10:14:18

меняем на

packet_ver: 26
+0x0288,-1,cashshopbuy,4:8
0x0436,19,wanttoconnection,2:6:10:14:18
0x0436,19,wanttoconnection,2:6:10:14:18
0x035f,5,walktoxy,2
0x0360,6,ticksend,2
0x0361,5,changedir,2:4
0x0362,6,takeitem,2
0x0363,6,dropitem,2:4
0x0364,8,movetokafra,2:4
0x0365,8,movefromkafra,2:4
0x0366,10,useskilltopos,2:4:6:8
0x0367,90,useskilltoposinfo,2:4:6:8:10
0x0368,6,getcharnamerequest,2
0x0369,6,solvecharname,2
0x0856,-1
0x0857,-1
0x0858,-1
0x0859,-1

если помог ставь Плюс

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика