Перенос аккаунтов файлы=>mysql -
vlad12559 - 20.01.2013
После перевода сервера на бд написал небольшой скрипт автоматического переноса с файлов в бд(не php,a напрямую при коннекте),то есть при коннекте проверяем зарегистрирован ли игрок на сервере в файлах и записываем всё в бд,однако возникли проблемы.Как вы считаете как лучше переносить аккаунты,php скриптом или при коннекте игрока проверку,имеется ли его аккаунт в файлах и автоматическая запись в бд?
Вот как я сделал
в onplayerconnect
http://pastebin.com/kZfd8B8z
в public OnPlayerRequestClass(playerid, classid)
http://pastebin.com/VKzrHhLR
Вот функции записи и проверки зареган или нет
http://pastebin.com/NwfLJLhf
При коннекте аккаунт просто не успевает как бы перенестись,то есть имя и пароль переносит нормально,а остальное как рандомно...
Re: Перенос аккаунтов файлы=>mysql -
[A_Tm]_Denis - 20.01.2013
Quote:
Originally Posted by vlad12559
За оплату.Убедительная просьба пользователей с низким знанием не тревожить.
|
на этом форуме запрещен платный скриптинг и любые платные услуги.
Re: Перенос аккаунтов файлы=>mysql -
Splav - 21.01.2013
В скрипте ошибка значит. GameWorld именно так и переводил аккаунты на БД. При коннекте - запись из файла в БД, удаление файла
Re: Перенос аккаунтов файлы=>mysql -
vlad12559 - 21.01.2013
Никто не поможет?
Re: Перенос аккаунтов файлы=>mysql -
pozitiv4eg - 21.01.2013
Делал для своего сервера mysql r7
в OnPlayerRequestClass
PHP код:
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
new accounts[32];
format(accounts,sizeof(accounts),"%s.ini",name);
if(fexist(accounts))
{
return OnPlayerChangeAccount(playerid);
}
PHP код:
public OnPlayerChangeAccount(playerid)
{
new name[24];
new str[128];
new pass[100];
GetPlayerName(playerid,name,sizeof(name));
format(str,sizeof(str),"%s.ini",name);
new inisql = ini_openFile(str);
ini_getString(inisql,"Key",pass);
ini_closeFile(inisql);
format(str,sizeof(str),"INSERT INTO `accounts`(`name`,`password`) VALUES ('%s','%s')",name,pass);
mysql_function_query(sqlsamp, str, false, "","");
SendClientMessage(playerid,-1,".");
SendClientMessage(playerid,-1,".");
OnPlayerUpdateAccounts(playerid);
return 1;
}
Ну а дальше вытаскивал значение и update.
ну и соответственно кикал игрока типо с причиной перезайти. Думаю самый оптимальный вариант
Re: Перенос аккаунтов файлы=>mysql -
vlad12559 - 22.01.2013
Изменил,однако происходит то же самое.То есть у когото слетают часы в игре,у когото team и т.д.В чём может быть проблема?Может в самой таблице?
Re: Перенос аккаунтов файлы=>mysql -
pozitiv4eg - 22.01.2013
Смотреть надо
Re: Перенос аккаунтов файлы=>mysql -
vlad12559 - 22.01.2013
в public OnPlayerRequestClass(playerid, classid)
http://pastebin.com/92dBtjpR
вот сам паблик проверки
http://pastebin.com/dS6mW4Th
паблик перезаписи
http://pastebin.com/M2rWDgya
диалоги
http://pastebin.com/y7DicKgm
ну и функции которые записывают в бд
http://pastebin.com/WZgmfiw9
За помощь буду очень признателен,если есть возможность вот мой скайп vlad12559,там поподробней могу всё пояснить.
Re: Перенос аккаунтов файлы=>mysql -
pozitiv4eg - 22.01.2013
а где проверка на то есть ли аккаунт или его нету?
Re: Перенос аккаунтов файлы=>mysql -
vlad12559 - 22.01.2013
Я же выше кинул
OnPlayerRegCheck
вот
http://pastebin.com/dS6mW4Th
и сам вызов этой проверки вот
http://pastebin.com/92dBtjpR