Назад

Не могу настроить команду @detach

Автор: Yeg0R: Дата: 01.03.2010

Нашол на офе афины тему, но там не че не понятно.
Подскажите плз че и куда вставить.

Автор: Yeg0R: Дата: 01.03.2010

Как я понел чтобы добавить новую команду надо поправить исходнеки и перекомпилировать, с дансе и эмотион я разобрался а с дт не могу


alter table `char` add autotrade int not null default 0;



Изменяем в char_sql/char.c (приблизительно 249 строка):

sprintf(tmp_sql,"UPDATE `%s` SET `online`='0' WHERE `account_id`='%d'", char_db, account_id);


на

sprintf(tmp_sql,"UPDATE `%s` SET `online`='0',`autotrade`=0 WHERE `account_id`='%d'", char_db, account_id);


Для осуществления сброса статуса autotrade при выходе пользователя.

Изменяем в map/atcommand.c (приблизительно 7618 строка) команду atcommand_autotrade

int atcommand_autotrade(
const int fd, struct map_session_data* sd,
const char* command, const char* message)
{
nullpo_retr(-1, sd);
if (sd->vender_id) //check if player's vending
{
sd->state.autotrade = 1;
clif_authfail_fd(fd, 15);
}
else
{
//"You should be vending to use @Autotrade."
clif_displaymessage(fd, msg_txt(549));
}
return 0;
}


на

int atcommand_autotrade(
const int fd, struct map_session_data* sd,
const char* command, const char* message)
{
nullpo_retr(-1, sd);
if (sd->state.autotrade)
{
sd->state.autotrade = 0;
sd->state.monster_ignore = 0;
sprintf(tmp_sql, "UPDATE `%s` SET `autotrade`='0' WHERE `char_id`='%d'",char_db,sd->char_id);
if (mysql_query(&mmysql_handle, tmp_sql))
{
ShowSQL("DB error - %s\n",mysql_error(&mmysql_handle));
ShowDebug("at %s:%d - %s\n", __FILE__,__LINE__,tmp_sql);
}

}

if (sd->vender_id) //check if player's vending
{
sd->state.autotrade = 1;
sd->state.monster_ignore = 1;
sprintf(tmp_sql, "UPDATE `%s` SET `autotrade`='1' WHERE `char_id`='%d'",char_db,sd->char_id);
if (mysql_query(&mmysql_handle, tmp_sql))
{
ShowSQL("DB error - %s\n",mysql_error(&mmysql_handle));
ShowDebug("at %s:%d - %s\n", __FILE__,__LINE__,tmp_sql);
}
clif_authfail_fd(fd, 15);
}
else
{
//"You should be vending to use @Autotrade."
clif_displaymessage(fd, msg_txt(549));
}

return 0;
}


если это кончно то

куда какие строчки надо вставать

Автор: unded: Дата: 01.03.2010

alter table `char` add autotrade int not null default 0;


ЭТО MYSQL

Идем в char_sql/char.c
ишем:

sprintf(tmp_sql,"UPDATE `%s` SET `online`='0' WHERE `account_id`='%d'", char_db, account_id);


заменяем на:

sprintf(tmp_sql,"UPDATE `%s` SET `online`='0',`autotrade`=0 WHERE `account_id`='%d'", char_db, account_id);



Для осуществления сброса статуса autotrade при выходе пользователя.

Идем в map/atcommand.c

ишем:

int atcommand_autotrade(
const int fd, struct map_session_data* sd,
const char* command, const char* message)
{
nullpo_retr(-1, sd);
if (sd->vender_id) //check if player's vending
{
sd->state.autotrade = 1;
clif_authfail_fd(fd, 15);
}
else
{
//"You should be vending to use @Autotrade."
clif_displaymessage(fd, msg_txt(549));
}
return 0;
}


заменяем на:


int atcommand_autotrade(
const int fd, struct map_session_data* sd,
const char* command, const char* message)
{
nullpo_retr(-1, sd);
if (sd->state.autotrade)
{
sd->state.autotrade = 0;
sd->state.monster_ignore = 0;
sprintf(tmp_sql, "UPDATE `%s` SET `autotrade`='0' WHERE `char_id`='%d'",char_db,sd->char_id);
if (mysql_query(&mmysql_handle, tmp_sql))
{
ShowSQL("DB error - %s\n",mysql_error(&mmysql_handle));
ShowDebug("at %s:%d - %s\n", __FILE__,__LINE__,tmp_sql);
}

}

if (sd->vender_id) //check if player's vending
{
sd->state.autotrade = 1;
sd->state.monster_ignore = 1;
sprintf(tmp_sql, "UPDATE `%s` SET `autotrade`='1' WHERE `char_id`='%d'",char_db,sd->char_id);
if (mysql_query(&mmysql_handle, tmp_sql))
{
ShowSQL("DB error - %s\n",mysql_error(&mmysql_handle));
ShowDebug("at %s:%d - %s\n", __FILE__,__LINE__,tmp_sql);
}
clif_authfail_fd(fd, 15);
}
else
{
//"You should be vending to use @Autotrade."
clif_displaymessage(fd, msg_txt(549));
}

return 0;
}



Так Более понятно??

Автор: Yeg0R: Дата: 01.03.2010

У меня нету такой сторчки:
/code
sprintf(tmp_sql,"UPDATE `%s` SET `online`='0' WHERE `account_id`='%d'", char_db, account_id);
/code

Автор: unded: Дата: 01.03.2010

Найди в char_sql/char.c

void set_char_offline(int char_id, int account_id)


и там ниже увидешь=)

Автор: dimjke: Дата: 01.03.2010

Что это за код такой вообще?И где вы его откопали?? =0

Автор: unded: Дата: 01.03.2010

Я не знаю У него спроси Я прост сделал более понятней Аха..

Автор: Yeg0R: Дата: 01.04.2010

на офе афины

Автор: Yeg0R: Дата: 01.04.2010

я ещё спрашивал , это то или нет?

дайте плз норм коды для детача =)

Автор: GreenDay: Дата: 01.04.2010

ет кажысь код аутотрейда для того чтобы в онлайн юзеры @at невписовались

Автор: Yeg0R: Дата: 01.04.2010

но

Автор: San: Дата: 01.04.2010


//======================
//@detach by db1mOk
//======================
int atcommand_detach( const int fd, struct map_session_data* sd, const char* command, const char* message)
{
nullpo_retr(-1, sd);
if (!message || !*message) {
clif_displaymessage(fd, "Откройте чат!");
return -1;
}
chat_createpcchat(sd, detach, "",1,true);


sd->state.monster_ignore = 1;
sd->state.autotrade = 1;
clif_authfail_fd(fd, 15);
return 0;
}



{ "detach", 0,1, atcommand_detach },

Автор: Yeg0R: Дата: 01.04.2010

при компилирование пишет 2 ошибки
попробовал добавить
{ "detach", 1, atcommand_detach },
тоже самое
что делать?

Автор: San: Дата: 01.04.2010

какие ошибки?

Автор: Yeg0R: Дата: 01.04.2010

error C2065: detach: необъявленный идентификатор
atcommand.c(8264) : warning C4047: функция: 'const char *' отличается по уровням косвенного обращения от 'int'
atcommand.c(8264) : warning C4024: chat_createpcchat: различные типы для формального и фактического параметров 2

2 одинаковые

Автор: dimjke: Дата: 01.04.2010

int atcommand_detach(const int fd, struct map_session_data* sd, const char* command, const char* message)
{
struct chat_data* cd;
nullpo_retr(-1, sd);

if (sd->chatID && (cd = (struct chat_data*)map_id2bl(sd->chatID)))
{
sd->state.monster_ignore = 1;
sd->state.autotrade = 1;
clif_authfail_fd(fd, 15);
} else {
clif_displaymessage(fd, "Откройте чат!");
}
return 0;
}

Поидеи вот рабочий,компилит без ошибок..

Автор: Yeg0R: Дата: 01.04.2010

а как сделать чтобы ещ @dt канало?

Автор: dimjke: Дата: 01.04.2010

Можно и сделать по другому,вроде тоже рабочий

//@detach by dimjke
int atcommand_detach( const int fd, struct map_session_data* sd, const char* command, const char* message)
{
int bb;
nullpo_retr(-1, sd);
if (!message || !*message || (sscanf(message, "%d", &bb) != 1)) {
clif_displaymessage(fd, "Usage: @detach 1");
return -1;
}
sd->state.autoloot = 0;
sd->state.autolootid = 0;
sd->state.monster_ignore = 1;
sd->state.autotrade = 1;
clif_authfail_fd(fd, 15);
return 0;
}


{ "dt", 0, atcommand_detach },
{ "detach", 0, atcommand_detach },

Автор: San: Дата: 01.04.2010

еще добавь


{ "dt", 0,1, atcommand_detach },

Автор: Yeg0R: Дата: 01.04.2010

всё сделал всем спасибо