код [Показать]
[ Pawn ]
Ошибка при сохранении здоровья в формате float
#1
Отправлено 13 марта 2025 - 16:37

Всем привет. Когда захожу на сервер, ввожу, например, /hp 0 35, в чате пишет что админ тет-а-тет туда сюда выдал 35.00 здоровья, хорошо. В базе float, по умолчанию 100. Выхожу и в БД вижу 0 хп. Мне нужно, чтобы здоровье сохранялось и сохранялось в виде, к примеру, 56.0 или 34.6. Просьба помочь мне, если есть возможность и желание
#4
Отправлено 13 марта 2025 - 17:14

#5
Отправлено 13 марта 2025 - 17:23

#6
Отправлено 13 марта 2025 - 17:26

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

Сделай дебаг, потом полученный результат напрямую вставь в базу и тебе укажет на ошибки, если они будут. Также есть папку logs, где об этом тоже пишут
printf("query:\n%s", string);

#7
Отправлено 13 марта 2025 - 17:41

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")

#8
Отправлено 13 марта 2025 - 17:43

1. Работать с аккаунтов лучше по ID, а не по нику.
2.
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")

#10
Отправлено 13 марта 2025 - 19:36

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

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