Вопросы

Начал делать но не работает. В чем проблема?

CMD:givedonate(playerid, params[])
{
	if(sscanf(params,"ud[100]", params[0],params[1])) return SendClientMessage(playerid,COLOR_WARNING,"Используйте /givedonate [id] [кол-во]");
    if(!IsPlayerConnected(params[0]))return  SendClientMessage(playerid,COLOR_WARNING,"Данного ID нет на сервере!");
	if(PLAYER_DATA[params[0]][data_LOGGED] == false)return  SendClientMessage(playerid,COLOR_WARNING,"Данный игрок не прошел авторизацию!");
	if(params[1] < 1 || params[1] > 90000) return SendClientMessage(playerid,COLOR_WARNING,"Нельзя меньше 1 дня и больше 90 дней!");
	new query[256];
    mysql_format(dbHandle,query, sizeof(query), "SELECT * FROM `accounts` WHERE `donate` = '%d'",params[0]);
 	mysql_function_query(dbHandle, query, true, "", "");
 	return true;
}

Прошу объяснить подробно

Отредактировано пользователем Remmi_Feed

Поделиться сообщением


Ссылка на сообщение

12 ответов на этот вопрос

  • 0
23 часа назад, DEST сказал:

mysql_format(dbHandle,query, sizeof(query), "UPDATE `accounts` SET `donate` = '%d' WHERE `name` = '%s'",params[0], PLAYER_DATA[playerid][data_NAME]); mysql_function_query(dbHandle, query, true, "", "");

здесь вместо playerid нужно подставить аргумент игрока, т.е. params[0]. 

Поделиться сообщением


Ссылка на сообщение
  • 0

@Remmi_Feed не работает потому что выполняется запроc SELECT, а должен запрос UPDATE. Почитать можете  в интернете гайды по составлению запросов. Ну вот вам готовый пример: 
 

mysql_format(dbHandle,query, sizeof(query), "UPDATE `accounts` SET `donate` = '%d' WHERE `name` = '%s'",params[0], PLAYER_DATA[playerid][data_NAME]);
mysql_function_query(dbHandle, query, true, "", "");

 

Поделиться сообщением


Ссылка на сообщение
  • 0

@DEST все же не работает команда

Поделиться сообщением


Ссылка на сообщение
  • 0

@Remmi_Feed там не params[0], а params[1] в запросе поменяй. И в третьей строки команды у d 100 убери. К числовому аргументу размер не ставится. 

Поделиться сообщением


Ссылка на сообщение
  • 0

@DEST команда заработала однако вот что в логах появилось

[19:04:48] sscanf warning: Format specifier does not match parameter count.
[19:04:57] sscanf warning: Format specifier does not match parameter count.

 

мне кажется это из за params[2]

Поделиться сообщением


Ссылка на сообщение
  • 0

@Remmi_Feed значит ты не выполнил мои рекомендации из второго поста, или где-то такое же есть нарушение как тут

21 час назад, Remmi_Feed сказал:

d[100]

 

Поделиться сообщением


Ссылка на сообщение
  • 0

Убрал params[2] и появилось вот что

[19:06:55] Warning: PlayerDialogResponse PlayerId: 0 dialog ID doesn't match last sent dialog ID

 

@DEST я думал убрать только [100]

Поделиться сообщением


Ссылка на сообщение
  • 0

@Remmi_Feed это с этой системой абсолютно никак не связано. Только 100 из команды и нужно было убрать. 

Поделиться сообщением


Ссылка на сообщение
  • 0

@DEST работает только на мне :) На остальных никакого эффекта 

Поделиться сообщением


Ссылка на сообщение
  • 0

@DEST то есть получится?

mysql_format(dbHandle,query, sizeof(query), "UPDATE `accounts` SET `donate` = '%d' WHERE `name` = '%s'",params[0], PLAYER_DATA,params[2]); mysql_function_query(dbHandle, query, true, "", "");

 

Поделиться сообщением


Ссылка на сообщение
  • 0

@Remmi_Feed а теперь перечитай мой пост и сделай как положено. Что заменить я выделил, на что написал.

Поделиться сообщением


Ссылка на сообщение
  • 0

@DEST дошло)

Отредактировано пользователем Remmi_Feed

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • sergeenko
      От sergeenko
      Если писать просто команду /a, то выдаёт /a [текст]
      А если написать какой-то текст то ничего не просиходит
      Код:
       
      stock SendAdminMessage(color, text[]) {     foreach(new i: Player)     {         if(PI[i][data_CADMIN] != 1||PI[i][data_ADMLVL] >= 1)         {              SendClientMessage(i, color, text);         }     }     return 1; } Команда: CMD:a(playerid, params[]) {     if(PI[playerid][data_ADMLVL] > 1)     {         new text[90];         if(sscanf(params, "s[90]", text))             return SendClientMessage(playerid, CG, "Используйте /a [текст]");         if(antiflood[playerid] > 0)              return SendClientMessage(playerid, COLOR_BLACK,"Пожалуйста, подождите пару секунд...");         antiflood[playerid]++;         if(PI[playerid][data_LOGGED] == false)              return SendClientMessage(playerid, CG, "Вы не авторизированы. Пожалуйста авторизируйтесь.");         new string[19 + (20 + (-2) + 1 + (-2)) + (MAX_PLAYER_NAME + (-2) + 3 + (-2)) + 90];         format(string, sizeof(string), "[%s #%i] %s[%i]: %s", GSName[PI[playerid][data_ADMLVL]], PI[playerid][ADMINSNUMBER], PI[playerid][data_NAME], playerid, text);         return SendAdminMessage(COLOR_BLUE, string);     }     return 1;    }