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

Гильдии и sql


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

Здравствуйте, пишу скрипт, который будет выдавать игроку одну из выбранных гильдий.
Кроме добавления строки в таблицу guild_member и изменения значения guild_id в таблице char для пользователя. Кроме этого с чем еще надо "пошаманить", чтобы завершить процесс?
Или я совсем не в ту парафию полез? 

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

такое сработает только при условии что ты используешь SQL базу данных.

Если же нет, то даже если игрок получит гильдию, то при перезаходе она пропадет.

Возможно следующуя команда поможет решить твою проблему:

*instance_create("<instance name>"{,<instance mode>{,<owner id>}});

 

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

32 минуты назад, Salfer сказал:

такое сработает только при условии что ты используешь SQL базу данных.

Если же нет, то даже если игрок получит гильдию, то при перезаходе она пропадет.

Возможно следующуя команда поможет решить твою проблему:

*instance_create("<instance name>"{,<instance mode>{,<owner id>}});

 

Использую SQL, запросы шлю через query_sql().
Разрешите в лс обратиться за помощью?)

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

Как это instance_create вообще поможет с гильдией? Если это инстанс, а это гильдия?оО

Апдейтишь гуилд, гуилд_мембер и всё.

А, ещё guild_position

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

 

Скрытый текст

 


/* ==========================================
* Forces you to join a guild by Lance, ideas by Linkrulez
* ------------------------------------------
*/
int atcommand_forceguild(
const int fd, struct map_session_data* sd,
const char* command, const char* message)
{
// Initialization
char guild_name[100];
struct map_session_data *pl_sd;
struct guild *g;
struct guild_member m;
int guild_id;
int i;

// WTF crap (Copied from other functions)
memset(guild_name, '\0', sizeof(guild_name));
memset(atcmd_output, '\0', sizeof(atcmd_output));
nullpo_retr(-1, sd);

// Syntax detection
if (!message || !*message || sscanf(message, "%99[^\n]", guild_name) < 1) {
clif_displaymessage(fd, "Please, enter a guild name/id (usage: @forceguild <guild_name/id>).");
return -1;
}
    if ((g = guild_search(pl_sd->status.guild_id))!= NULL)
      {
        clif_displaymessage(fd, "Target player appears to already be in a guild.");
        return -1;
    }

// Search for guild
if ((g = guild_searchname(guild_name)) != NULL || // name first to avoid error when name begin with a number
    (g = guild_search(atoi(message))) != NULL) {
  for(i=0;i<g->max_member;i++)
  if(g->member[i].account_id==0) // Finding a blank space
   break;
  if(i==g->max_member){ // If blank space is the max member?
   clif_displaymessage(fd,"Sorry, guild is full.");
   return -1;
  }
  else {
   sd->guild_invite = g->guild_id; // Just in case some function needs it.
   guild_makemember(&m,sd); // Go format my m variable
   intif_guild_addmember( g->guild_id, &m ); // Alright, time to do the interconnection
   return 0;
  }

}
else // Dude, you got the wrong guild!
{
clif_displaymessage(fd,"Sorry, the guild you specified is not found.");
return -1;
}
return 0; // HUH? How it get here?
}

 

 

Код старый, сохранился в одном из древних эмуляторов. Работать будет или нет - без понятия. Надо тестить.

Насколько я помню, то команда позволяла игроку без приглашения вступить в любую гильдию.

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

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