Skip to forum content

You are not logged in. Please login or register.


forums.pvpgn.pro → [RU] The Source Code → подскажите команда неработает:)

Pages 1

You must login or register to post a reply

RSS topic feed

Posts: 12

1

Topic: подскажите команда неработает:)

чё я тут мог такого намутить что сервер ложится после использования команды smile?:)))

static int _handle_anntest_command(t_connection * c, char const *text)
{
  unsigned int i;
  char const * rab;
  t_message *  message;
  t_account *  account;
  char const *  username;

  
  
  account = conn_get_account(c);
  rab = account_get_strattr(account,"BNET\\acct\\kann");
  for (i=0; text[i]!=' ' && text[i]!='\0'; i++); /* skip command */
  for (; text[i]==' '; i++);

  if (text[i]=='\0')
  {
    message_send_text(c,message_type_info,c,"usage: /announce <announcement>");
    return 0;
  }
  if ( rab >= 0 )
  {
  snprintf(msgtemp, sizeof(msgtemp), "%.64s: %.128s",conn_get_username(c),&text[i]);
  message = message_create(message_type_error,c,msgtemp);
  message_send_all(message);
  rab=rab-1;
  account_set_strattr(account,"BNET\\acct\\kann",rab);
  }
  else
  {
  message_send_text(c,message_type_error,c,rab);
  }

  return 0;
}

по идее она должна записывать данные в поле kann
изначальное значение 10, с каждым использованием команды должно
  rab=rab-1; уменьшаться на 1 и записывать значение в поле kann , но вот что-то нехотит работать( можете помочь?

1 minute and 3 seconds after:

else
  {
  message_send_text(c,message_type_error,c,rab);
  }

необязательная часть команды, она должна по идее выводить красным цветом 0 , когда закончатся анонсы....

2

Re: подскажите команда неработает:)

Я посмотрел, там есть разные функции чтения/записи для разных типов данных.
account_set_strattr - строка
account_set_numattr - число
account_set_boolattr - булево

Соответственно, нужно юзать для каждого свое. А ты пытаешься уменьшить на -1 тип char. Которого к тому же не существует, хотя объявлен как указатель.
Если вдруг захочешь читать строковое значение, то нужно сначала проверять, существует ли оно в бд

if ( account_set_strattr(...) ) 
   x = account_set_strattr(...)
Do not ask for support in PM.

3

Re: подскажите команда неработает:)

а ну терь троху въежжаю:) мне нужна не строка а число от 0 до 200 например:)
значит нужно вместо

account_set_strattr использовать account_set_numattr ?

6 minutes and 52 seconds after:

да отнимать -1 нужно и потом записывать после каждого успешного announce . просто я неправильно все написал:)

4

Re: подскажите команда неработает:)

Да, только зачем отнимать то? smile
Если делаешь анонсы для юзеров с ограничением в день, то смотри как здесь.

Do not ask for support in PM.

5

Re: подскажите команда неработает:)

не я имею ввиду, что каждое верное срабатывание вычитает -1 от количества анонсов, и записывает в базу.. или я не правильно вычитаю?

6

Re: подскажите команда неработает:)

Наверное правильно, в зависимости от того что ты хотел сделать. Просто если у тебя проверка >= 0, то конечное значение будет -1.

Do not ask for support in PM.

7 (edited by Karaulov 17.10.2011 15:42)

Re: подскажите команда неработает:)

начальное значение rab = 10, после правильного срабатывание rab становится = rab-1 и записывается в базу, правильно я вычитаю или нет?

ну в общем ща проверю:)) я переписал , сделал account_get(или set)_digann , функция принимает 2 значения.

Добавлено: 20.10.2011 15:46

может кто знает, как вызвать обновление базы игроков? в общем анонсы заносятся в базу только когда приходит время обновления аккаунтов, если время сделать 10 сек, то обновляется каждые 10 сек(стандартно 300), но я думаю если онлайн 1000 то это накроет всю базу mysql, вот как сделать что бы после отправки анонса база обновлялась, но только для того кто отправил его, иначе я выдаю 5 анонсов, человек их отправляет, делает релог и у него опять 5 анонсов. если кто сможет, помогите , ну а я покуда сам буду искать решение:)

8

Re: подскажите команда неработает:)

Yt

Cub_bone wrote:

иначе я выдаю 5 анонсов, человек их отправляет, делает релог и у него опять 5 анонсов.

Нет, данные каждого плеера хранятся в памяти, и после релога они берутся оттуда же. То, что ты написал может произойти только если сервер будет перезапущен.

Do not ask for support in PM.

9

Re: подскажите команда неработает:)

Не перезапущен, а упадет - при шатдауне данные должны записаться в базу.

10

Re: подскажите команда неработает:)

Хз, даже при рехеше данные не сбрасываются в бд - проверял недавно, меняя через set. Сервер только с заданным интервалом обновляет бд.

Do not ask for support in PM.

11

Re: подскажите команда неработает:)

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

conf_set_usersync
conf_set_usersync
conf_setdef_usersync
но это что-то нето
как я понял это настраивает в конфиге usersync а запроса на синхронизацию немогу найти...

12

Re: подскажите команда неработает:)

Если онлайн >1000, надо наоборот больше настроить интервал для синхронизации. Сделай так, чтобы сервер не накрывался и всё будет нормально сохраняться. Если машина вдруг выключится, то что же поделать, кому то на пару анонсов будет больше smile

Если всё же хочешь синхронизировать вручную:
accountlist_save(1);
accountlist_flush(1)

Do not ask for support in PM.

Posts: 12

Pages 1

You must login or register to post a reply

Who now at forum

Currently view post: 1 guest, 0 registered users

forums.pvpgn.pro → [RU] The Source Code → подскажите команда неработает:)