Назад

[Ice Project]src

Автор: mr Fox: Дата: 05.29.2009

///===Установка сорсов===//

Идем в eAthena/src/map/atcommand.c

Ищем строчку:

Displays where a character is. Corrected version by Silent. [Skotlex]

Добавляем после нее:

/*==========================================
* @ice
*------------------------------------------*/
int atcommand_ice(const int fd, struct map_session_data* sd, const char* command, const char* message)
{
struct map_session_data *pl_sd;
nullpo_retr(-1, sd);

memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));

if (!message || !*message) {
clif_displaymessage(fd, "Пожалуйста введите имя игрока (usage: @ice <Имя игрока>).");
return -1;
}

if((pl_sd=map_nick2sd((char *)message)) == NULL && (pl_sd=map_charid2sd(atoi(message))) == NULL)
{
clif_displaymessage(fd, msg_txt(3)); // Если игрок в оффлайне
return -1;
}

if (pc_isGM(sd) < pc_isGM(pl_sd))
{
clif_displaymessage(fd, msg_txt(81)); // Если уровень гмства не позволяет использовать команду
return -1;
}
if(pl_sd->sc.opt1 != 2) {
pl_sd->sc.opt1 = 2;
clif_changeoption(&pl_sd->bl);
sprintf(atcmd_output, "%s был заморожен", pl_sd->status.name);
clif_displaymessage(fd, atcmd_output);
sprintf(atcmd_output, "Вы были заморожены by %s %s", player_title_txt(pc_isGM(sd)),sd->status.name);
clif_displaymessage(pl_sd->fd, atcmd_output);
return 0;
}
clif_displaymessage(fd, "Игрок уже заморожен.");
return 0;
}



/*==========================================
* @deice
*------------------------------------------*/
int atcommand_deice(const int fd, struct map_session_data* sd, const char* command, const char* message)
{
struct map_session_data *pl_sd;
nullpo_retr(-1, sd);

memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));

if (!message || !*message) {
clif_displaymessage(fd, "Пожалуйста введите имя игрока (usage: @ice <Имя игрока>).");
return -1;
}

if((pl_sd=map_nick2sd((char *)message)) == NULL && (pl_sd=map_charid2sd(atoi(message))) == NULL)
{
clif_displaymessage(fd, msg_txt(3));
return -1;
}

if (pc_isGM(sd) < pc_isGM(pl_sd))
{
clif_displaymessage(fd, msg_txt(81));
return -1;
}
if(pl_sd->sc.opt1 == 2) {
pl_sd->sc.opt1 = 0;
clif_changeoption(&pl_sd->bl);
sprintf(atcmd_output, "%s разморожен", pl_sd->status.name);
clif_displaymessage(fd, atcmd_output);
sprintf(atcmd_output, "Вы были разморожены by %s %s", player_title_txt(pc_isGM(sd)), sd->status.name);
clif_displaymessage(pl_sd->fd, atcmd_output);
return 0;
} else {
sprintf(atcmd_output, "%s is not frozen", pl_sd->status.name);
clif_displaymessage(fd, atcmd_output);
return 0;
}
}

/*==========================================
* @icemap
*------------------------------------------*/
int atcommand_icemap(const int fd, struct map_session_data* sd, const char* command, const char* message)
{
struct map_session_data* pl_sd;
struct s_mapiterator* iter;

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) )
{
if (pl_sd->fd != fd && sd->bl.m == pl_sd->bl.m && pc_isGM(sd) >= pc_isGM(pl_sd) && pl_sd->sc.opt1 != 2)
{
pl_sd->sc.opt1 = 2;
clif_changeoption(&pl_sd->bl);
clif_displaymessage(pl_sd->fd, "На этой карте все заморожены");
}
}
mapit_free(iter);

clif_displaymessage(fd, "Игроки заморожены.");
return 0;
}

/*==========================================
* @deicemap
*------------------------------------------*/
int atcommand_deicemap(const int fd, struct map_session_data* sd, const char* command, const char* message)
{
struct map_session_data* pl_sd;
struct s_mapiterator* iter;

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) )
{
if (pl_sd->fd != fd && sd->bl.m == pl_sd->bl.m && pc_isGM(sd) >= pc_isGM(pl_sd) && pl_sd->sc.opt1 == 2)
{
pl_sd->sc.opt1 = 0;
clif_changeoption(&pl_sd->bl);
clif_displaymessage(pl_sd->fd, "Заморозка закончилась.");
}
}
mapit_free(iter);

clif_displaymessage(fd, "Игроки заморожены.");

return 0;
}



///===Добавляем команду====///

Ищем:
{ "mail", 1,1 atcommand_mail },

Добавляем:

{ "ice", 10,10 atcommand_ice },
{ "deice", 10,10 atcommand_deice },
{ "icemap", 10,10 atcommand_icemap },
{ "deicemap", 10,10 atcommand_deicemap },


///===Ну вот и все) Желаю удачи )===///
P.S на счет добавления команд. если у вас нету чар команд # , то следует ставить одно число 10 пример:
{ "ice",            10,     atcommand_ice },
{ "deice", 10, atcommand_deice },
{ "icemap", 10, atcommand_icemap },
{ "deicemap", 10, atcommand_deicemap },

тыкаем спасибки)

Автор: : Дата: 01.01.1970