Форум Pawn.Wiki - Воплоти мечту в реальность!: Не сохраняется 3д текст на персонаже в базу данных - Форум Pawn.Wiki - Воплоти мечту в реальность!

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

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

[ Pawn ]
Не сохраняется 3д текст на персонаже в базу данных

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

  • Banned
  • Вставить ник
  • Раскрыть информацию
Привет, сделал себе сохранение в базу данных систему описание персонажа, но она вообще не сохраняется хотя в логах ошибок нету сделал следующим образом

переменная

new Text3D:pame_text[MAX_PLAYERS] = {Text3D:-1, ...};


в enum

pPame[128]


команда создание текста

CMD:pame(playerid, params[])
{
    if(pame_text[playerid] != Text3D: -1)
    	return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: У Вас уже имеется описание персонажа, используйте: /dellpame");
    	
    format(stringer, sizeof(stringer), "\n\
    {ffffff}Вы собирайтесь создать описание для своего персонажа.\n\n\
    {ffffff}Описание персонажа не может быть меньше 10 символов, и больше 200");
    SPD(playerid, 7000, DSI, "{FFCC00}Описание персонажа", stringer, "Далее", "Отмена");
    return true;
}


		case 7000:
			{
		        if(!response)
		      		return 1;

		        new count_symbol = strlen(inputtext);

		        const max_symbol_for_pame = 128;

		        if(!(10 <= count_symbol <= max_symbol_for_pame))
		      		return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: Используйте не меньше 10 и не больше 128 символов.");

		        const line_break_start = 64;

		        new pame[max_symbol_for_pame];

		        strcat(pame, inputtext);

		        if(count_symbol > line_break_start)
		        {
	                new str_line_break[max_symbol_for_pame / 2];

	                strmid(str_line_break, pame, line_break_start, max_symbol_for_pame);
	                strdel(pame, line_break_start, max_symbol_for_pame);

	                strcat(pame, "\n");
	                strcat(pame, str_line_break);
		        }
		        if(pame_text[playerid] != Text3D: -1)
	                return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: У Вас уже имеется описание персонажа, используйте: /dellpame");

		        pame_text[playerid] = CreateDynamic3DTextLabel(pame, 0x645d5dAA, 0.0, 0.0, -1.0, 5, playerid, -1, 0);

		        /*new string[MAX_CHATBUBBLE_LENGTH + 1] =  "Описание: ";
		        strcat(string, pame);
		        SendClientMessage(playerid, 0x645d5dAA, string);*/
		        
				new string[256];
				format(string, sizeof(string),"{FFFFFF}Вы создали описание для вашего персонажа.\n\n{808080}%s",pame);
				ShowPlayerDialog(playerid, 0, DSM, "{FFCC00}Описание персонажа", string, "Закрыть", "");

		        format(stringer, sizeof(stringer),"[A] %s[%d] Создал описание персонажа.",PlayerInfo[playerid][pNames],playerid);
		        SendAdminMessage(0xff6600AA, stringer);
		        
				format(mysql_query_, sizeof(mysql_query_),
					"UPDATE `"TABLE_ACCOUNT"` SET `pPame` = '%s' WHERE `pID` = '%d'"
					, PlayerInfo[playerid][pPame]
					, PlayerInfo[playerid][pID]
				);
				mysql_tquery(connects, mysql_query_, "", "");
		        return true;
			}



в onplayerdisconnect

	if(pame_text[playerid] != Text3D: -1)
	{
		DestroyDynamic3DTextLabel(pame_text[playerid]);

		pame_text[playerid] = Text3D: -1;
	}



в загрузку аккаунта

cache_get_field_content(0, "pPname", maximum),          PlayerInfo[playerid][pPame] = strval(maximum);


где игрок заходит на сервер

	if (PlayerInfo[playerid][pPame])
	{
	    pame_text[playerid] = CreateDynamic3DTextLabel(PlayerInfo[playerid][pPame], 0x645d5dAA, 0.0, 0.0, -1.0, 5, playerid, -1, 0);
	}



при регистрации игрока

    if (PlayerInfo[playerid][pPame]){
    	pame_text[playerid] = CreateDynamic3DTextLabel(PlayerInfo[playerid][pPame], 0x645d5dAA, 0.0, 0.0, -1.0, 5, playerid, -1, 0);
	}



а это удаление команды

CMD:dellpame(playerid, params[])
{
    if(pame_text[playerid] == Text3D: -1)
        return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Вы не создавали описание персонажа. Используйте: /pame [ описание ]"); // Проверка на то, создан ли у игрока описание или нет.

    DestroyDynamic3DTextLabel(pame_text[playerid]);

    pame_text[playerid] = Text3D: -1;

    return SendClientMessage(playerid, COLOR_GREY, "Вы удалили описание своего персонажа");
}



и добавил в базу данных

 `pPame` int(11) NOT NULL,



вроде все правильно сделал, а всеравно не сохраняет у меня версия mysql 39-6

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

  • Знаток
  • Вставить ник
  • Раскрыть информацию
cache_get_field_content(0, "pPname", maximum),          PlayerInfo[playerid][pPame] = strval(maximum);


Что это?

Может быть нужно так?
Результат записать в массив?
cache_get_field_content(0, "pPname", PlayerInfo[playerid][pPame] );
printf("Pname playerid %d: %s", playerid, , PlayerInfo[playerid][pPame]); // для проверки


 `pPame` int(11) NOT NULL,

Столбец не Int а char хотя-бы.
Или Text

Сообщение отредактировал vawylon: 06 августа 2022 - 05:12

1

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

  • Banned
  • Вставить ник
  • Раскрыть информацию
спасибо большое попробую

#4
Пользователь офлайн   samperonline 

  • Banned
  • Вставить ник
  • Раскрыть информацию
а как вот это понять я не совсем понял
Столбец не Int а char хотя-бы.
Или Text

у меня есть такое varchar(64) NOT NULL, у меня версия mysql r39-6


вот такое нашел щас тестану
varchar(128) CHARACTER SET cp1251 COLLATE cp1251_bin NOT NULL,

Сообщение отредактировал samperonline: 06 августа 2022 - 21:29


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

  • Местный
  • Вставить ник
  • Раскрыть информацию
Ты пытаешься сохранить текст в столбец, который принимает только целочисленное число. Это int, а тебе нужно хранить строку для этого используй Char или Varchar

Сообщение отредактировал Saibot: 06 августа 2022 - 21:31

1

#6
Пользователь офлайн   samperonline 

  • Banned
  • Вставить ник
  • Раскрыть информацию
Ну я почти понял как это работает надеюсь щас получится, спасибо всем огромное очень помогли с этим Varchar я даже не знал о нем

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

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


enum
pPame[128]

при создании описании сохраняю сразу

				new stringg[144];
				format(stringg, sizeof(stringg), "UPDATE `accounts` SET `pPame` = '%s' WHERE `pID` = '%d'", PlayerInfo[playerid][pPame], PlayerInfo[playerid][pID]);
				mysql_function_query(connects, stringg, false, "", "");



в загрузку вставил это

cache_get_field_content(0, "pPame",					PlayerInfo[playerid][pPame],connects,128);


в бд это
`pPame` varchar(128) NOT NULL DEFAULT '',

не сохраняется и все

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

  • Профессионал
  • Вставить ник
  • Раскрыть информацию
Так может stringg маловат? Мускул лог об этом не говорит?
1

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

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

Просмотр сообщенияPa4enka (06 августа 2022 - 22:15) писал:

Так может stringg маловат? Мускул лог об этом не говорит?
ну я же не пишу 128 символом. я тестю и там тексты типа, "ку" "bb" "тест" в бд вообще нечего нету тупо пустой


[00:23:46 08/06/22] [WARNING] CMySQLResult::GetRowDataByName - field not found ("pPname") (Query: "SELECT * FROM `accounts` WHERE `Name` = 'Bandos_Pa' LIMIT 1")
[00:24:26 08/06/22] [WARNING] CMySQLResult::GetRowDataByName - field not found ("pPname") (Query: "SELECT * FROM `accounts` WHERE `Name` = 'Frederico_Bellantoni' LIMIT 1")

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

Сообщение отредактировал samperonline: 06 августа 2022 - 22:23


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

  • Профессионал
  • Вставить ник
  • Раскрыть информацию
Покажи больше кода в участке где сохраняешь.
1

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


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

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


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