Форум Pawn.Wiki - Воплоти мечту в реальность!: Ошибка при сохранении здоровья в формате float - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Pawn ]
Ошибка при сохранении здоровья в формате float

#1
Пользователь офлайн   seriydikiy 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Всем привет. Когда захожу на сервер, ввожу, например, /hp 0 35, в чате пишет что админ тет-а-тет туда сюда выдал 35.00 здоровья, хорошо. В базе float, по умолчанию 100. Выхожу и в БД вижу 0 хп. Мне нужно, чтобы здоровье сохранялось и сохранялось в виде, к примеру, 56.0 или 34.6. Просьба помочь мне, если есть возможность и желание

код [Показать]

0

#2
Пользователь офлайн   Saibot 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
'%0.2f' > '%f'

0

#3
Пользователь офлайн   seriydikiy 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияSaibot (13 марта 2025 - 16:57) писал:

'%0.2f' > '%f'

Не помогло
0

#4
Пользователь онлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияseriydikiy (13 марта 2025 - 17:07) писал:

Не помогло

В таблице столбец FLOAT?
0

#5
Пользователь офлайн   seriydikiy 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияM I S T E V (13 марта 2025 - 17:14) писал:

В таблице столбец FLOAT?

Верно
0

#6
Пользователь онлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию
После строки

mysql_tquery(database, string);

Сделай дебаг, потом полученный результат напрямую вставь в базу и тебе укажет на ошибки, если они будут. Также есть папку logs, где об этом тоже пишут

printf("query:\n%s", string);

0

#7
Пользователь офлайн   Saibot 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
CMD:health(playerid, params[])
{
	if(!authorization[playerid]) return SendClientMessage(playerid, 0xF81414FF, "{F81414}* {AAAAAA}На данный момент вы не можете использовать команды.");
	if(pInfo[playerid][pAdmin] < 2) return SendClientMessage(playerid, 0xF81414FF, "{F81414}* {AAAAAA}У Вас нет доступа к данной команде.");
	if(!IsAdminAuthorizated(playerid)) return SendClientMessage(playerid, 0xF81414FF, "{F81414}* {AAAAAA}Вы не авторизованы в админ-систему.");
	if(sscanf(params, "df", params[0], params[1])) return SendClientMessage(playerid, 0xF81414FF, "{F81414}* {AAAAAA}Используйте: /health(hp) [ID игрока][здоровье].");
	if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, 0xF81414FF, "{F81414}* {AAAAAA}Данного игрока нет на сервере.");
	new string[128];
	format(string, sizeof(string),"[A] Администратор %s[%i] изменил здоровье игроку %s[%i] на %0.2f единиц.", pInfo[playerid][pName], playerid, pInfo[params[0]][pName], params[0], params[1]);
	SendAdminMessage(0xAAAAAAFF, string);
	format(string, sizeof(string),"Администратор %s[%i] изменил Вам здоровье на %0.2f единиц.", pInfo[playerid][pName], playerid, params[1]);
	SendClientMessage(params[0], 0x4DB2FFFF, string);
	SetPlayerHealth(params[0], params[1]);
	pInfo[params[0]][pHealth] = params[1];
	format(string, sizeof(string), "UPDATE `accounts` SET `pHealth` = '%f' WHERE `pName` = '%s'", params[1], pInfo[params[0]][pName]);
	mysql_tquery(database, string);
	return 1;
}
alias:health("hp")

0

#8
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
1. Работать с аккаунтов лучше по ID, а не по нику.
2.
CMD:health(playerid, params[])
{
    if(!authorization[playerid]) return SendClientMessage(playerid, 0xF81414FF, "{F81414}* {AAAAAA}На данный момент вы не можете использовать команды.");
    if(pInfo[playerid][pAdmin] < 2) return SendClientMessage(playerid, 0xF81414FF, "{F81414}* {AAAAAA}У Вас нет доступа к данной команде.");
    if(!IsAdminAuthorizated(playerid)) return SendClientMessage(playerid, 0xF81414FF, "{F81414}* {AAAAAA}Вы не авторизованы в админ-систему.");

    new targetid;
    new Float:health;

    if(sscanf(params, "df", targetid, health)) return SendClientMessage(playerid, 0xF81414FF, "{F81414}* {AAAAAA}Используйте: /health(hp) [ID игрока][здоровье].");
    if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, 0xF81414FF, "{F81414}* {AAAAAA}Данного игрока нет на сервере.");
    new string[128];
    format(string, sizeof(string),"[A] Администратор %s[%i] изменил здоровье игроку %s[%i] на %0.2f единиц.", pInfo[playerid][pName], playerid, pInfo[targetid][pName], targetid, health);
    SendAdminMessage(0xAAAAAAFF, string);
    format(string, sizeof(string),"Администратор %s[%i] изменил Вам здоровье на %0.2f единиц.", pInfo[playerid][pName], playerid, health);
    SendClientMessage(targetid, 0x4DB2FFFF, string);
    SetPlayerHealth(targetid, health);
    pInfo[targetid][pHealth] = health;

    format(string, sizeof(string), "UPDATE `accounts` SET `pHealth` = '%0.2f' WHERE `pName` = '%s'", pInfo[targetid][pHealth], pInfo[targetid][pName]);
    mysql_tquery(database, string);
    return 1;
}
alias:health("hp")

0

#9
Пользователь офлайн   seriydikiy 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (13 марта 2025 - 17:43) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

То есть в остальном проблем вы не заметили, верно?
0

#10
Пользователь офлайн   seriydikiy 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Взял способ Димы. Теперь нужно исправить кое-что. С перехода на float, после регистрации / авторизации я появляюсь на этом месте. В чем может быть проблема? Присутствуют предположения? В логах пусто
Изображение

Сообщение отредактировал seriydikiy: 13 марта 2025 - 19:37

0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика