Перенос аккаунтов файлы=>mysql
#1

После перевода сервера на бд написал небольшой скрипт автоматического переноса с файлов в бд(не php,a напрямую при коннекте),то есть при коннекте проверяем зарегистрирован ли игрок на сервере в файлах и записываем всё в бд,однако возникли проблемы.Как вы считаете как лучше переносить аккаунты,php скриптом или при коннекте игрока проверку,имеется ли его аккаунт в файлах и автоматическая запись в бд?
Вот как я сделал
в onplayerconnect

http://pastebin.com/kZfd8B8z

в public OnPlayerRequestClass(playerid, classid)

http://pastebin.com/VKzrHhLR

Вот функции записи и проверки зареган или нет

http://pastebin.com/NwfLJLhf

При коннекте аккаунт просто не успевает как бы перенестись,то есть имя и пароль переносит нормально,а остальное как рандомно...
Reply
#2

Quote:
Originally Posted by vlad12559
Посмотреть сообщение
За оплату.Убедительная просьба пользователей с низким знанием не тревожить.
на этом форуме запрещен платный скриптинг и любые платные услуги.
Reply
#3

В скрипте ошибка значит. GameWorld именно так и переводил аккаунты на БД. При коннекте - запись из файла в БД, удаление файла
Reply
#4

Никто не поможет?
Reply
#5

Делал для своего сервера mysql r7
в OnPlayerRequestClass
PHP код:

        
new name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(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(sqlsampstrfalse"","");
    
SendClientMessage(playerid,-1,".");
    
SendClientMessage(playerid,-1,".");
    
OnPlayerUpdateAccounts(playerid);
    return 
1;

Ну а дальше вытаскивал значение и update.
ну и соответственно кикал игрока типо с причиной перезайти. Думаю самый оптимальный вариант
Reply
#6

Изменил,однако происходит то же самое.То есть у когото слетают часы в игре,у когото team и т.д.В чём может быть проблема?Может в самой таблице?
Reply
#7

Смотреть надо
Reply
#8

в 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,там поподробней могу всё пояснить.
Reply
#9

а где проверка на то есть ли аккаунт или его нету?
Reply
#10

Я же выше кинул
OnPlayerRegCheck

вот
http://pastebin.com/dS6mW4Th

и сам вызов этой проверки вот

http://pastebin.com/92dBtjpR
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)