Назад

[request] Приветствие

Автор: xDREDDx: Дата: 02.10.2011

Вот возникла такая идея, даже где-то помню я видел этот скрипт, только не помню где... Вот хочю написать его...
Вобщем суть скрипта такая:
Когда в игру заходит определённого уровня ГМ (например 80)
У всех игроков на сервере автоматически появляются несколько эмоций...
Вот....
Незнаю с чего начать. OnPcLoginEvent, а далее, понятия не имею(
Помогите, кому не лень))

Автор: xDREDDx: Дата: 02.10.2011

А понятно, так значит это команда... В старых ревизиях копался, ничего подходящего не нашёл(
Спасибо, сейчас попробую как подойдёт...

Автор: xDREDDx: Дата: 02.16.2011

atcommand.c
..\src\map\atcommand.c(9389) : error C2039: 'auth' : is not a member of ''
d:\архивы\server\ea1\src\map\pc.h(102) : see declaration of ''

Как бы исправить?)
Как я понял еще нужно что-то в pc.h добавить

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

в

struct map_session_data {

после
	//NOTE: When deciding to add a flag to state or special_state, take into consideration that state is preserved in
//status_calc_pc, while special_state is recalculated in each call. [Skotlex]
struct {

добавить
unsigned short auth;

Автор: Jarek: Дата: 02.16.2011

Стоп!
dimjke, зачем вы это посоветовали?
Смысл из того, что мы добавим эту переменную? Мы её где-нибудь менять будем?

xDREDDx, я же предупреждал, что команда из старых ревизий, её надо почти полностью переписать.
Вот адаптированный вариант:

int atcommand_happyhappyjoyjoy(const int fd, struct map_session_data* sd, const char* command, const char* message)
{
struct map_session_data *pl_sd;
struct s_mapiterator* iter;
int e;

nullpo_retr(-1, sd);
iter = mapit_getallusers();
for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
{
e=rand()%40;
if(e==34) e = 0;
clif_emotion(&pl_sd->bl,e);
}
return 0;
}


А если у вас свежий сервер, то будет выглядеть так:
ACMD_FUNC(happyhappyjoyjoy)
{
struct map_session_data *pl_sd;
struct s_mapiterator* iter;
int e;

nullpo_retr(-1, sd);
iter = mapit_getallusers();
for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) )
{
e=rand()%40;
if(e==34) e = 0;
clif_emotion(&pl_sd->bl,e);
}
return 0;
}

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

Jarek, я код самой команды не смотрел, просто написал как убрать ошибку в 4 посте...