PDA

Просмотр полной версии : [Вопрос] AccountID



BaBuIIIkaDrifteR
03.02.2015, 05:29
У меня возникла маленькая проблема.
Сделал что бы в файл записывался № аккаунта кто регаеться.
Допустим 1 зарегался у него №1 будут, 2 зарегался у него №2 будет и т.д.
Но почему то не записывается №. В чем проблема?

public OnPlayerRegister(playerid, password[])


new numbergame;
numbergame +=1;
Player[playerid][pNumG] = numbergame;

ini_setInteger(iniFile,"pNumG",numbergame += 1); //Çàïèñûâàåì Íîìåð Àêêàóíòà
И еще тут же вопросик как сделать пробел между деньгами? Допустим у меня денег 100000. В диалоге MSGBOX пишет у вас 100000 денег. А как сделать что бы писало с пробелом ? Типо у вас 100 000 денег?

I'm Cobra
03.02.2015, 09:00
В бд нужно к 'ID' присвоить значение 'Auto_Increment', и не нужно будет сохранять ID, а просто загружать.

Mazzilla
03.02.2015, 14:29
В бд нужно к 'ID' присвоить значение 'Auto_Increment', и не нужно будет сохранять ID, а просто загружать.
Хороший совет, но у него на файлах аккаунты.

[ForD]
04.02.2015, 13:23
Я правда вообще хз что и как там,но может:
Player[playerid][pNumG] += 1;
ini_setInteger(iniFile,"pNumG",Player[playerid][pNumG]);
:pardon:

BaBuIIIkaDrifteR
04.02.2015, 19:00
;57792']Я правда вообще хз что и как там,но может:
Player[playerid][pNumG] += 1;
ini_setInteger(iniFile,"pNumG",Player[playerid][pNumG]);
:pardon:
Нет ) Я пробывал уже так

[ForD]
04.02.2015, 19:05
#include <a_samp>
#include <mxINI>

enum PlayerData
{
pID
}
new PlayerInf[MAX_PLAYERS][PlayerData];
new filestr[13 + MAX_PLAYER_NAME];
new PlFile;

main();

public OnGameModeInit()
{
SetGameModeText("Blank Script");
format(filestr,sizeof(filestr),"PlayerID.ini");//общ кол-во id
if(!fexist(filestr))
{
PlFile = ini_createFile(filestr);
if(PlFile < 0)
{
PlFile = ini_openFile(filestr);
}
if(PlFile >= 0)
{
ini_setInteger(PlFile,"PlayerID",0);
ini_closeFile(PlFile);
}
}
return 1;
}


public OnPlayerConnect(playerid)
{
new Name[MAX_PLAYER_NAME];
GetPlayerName(playerid,Name,sizeof(Name));
format(filestr,sizeof(filestr),"Players/%s.ini",Name);
if(!fexist(filestr))
{
ini_closeFile(PlFile);
format(filestr,sizeof(filestr),"PlayerID.ini");
PlFile = ini_openFile(filestr);
ini_getInteger(PlFile,"PlayerID",PlayerInf[playerid][pID]);
PlayerInf[playerid][pID]++;
ini_setInteger(PlFile,"PlayerID",PlayerInf[playerid][pID]);
ini_closeFile(PlFile);
format(filestr,sizeof(filestr),"Players/%s.ini",Name);
PlFile = ini_createFile(filestr);
if(PlFile < 0)
{
PlFile = ini_openFile(filestr);
}
if(PlFile >= 0)
{
ini_setInteger(PlFile,"PlayerID",PlayerInf[playerid][pID]);
ini_setString(PlFile,"PlayerName",Name);
ini_closeFile(PlFile);
}
}
return 1;
}

В общем должно работать,я не совсем соображаю в файлах,но вроде все работает.

BaBuIIIkaDrifteR
04.02.2015, 22:29
Смотрите переделал. Теперь все нормально работает.
Но когда выключаю сервер и включаю опять номер аккаунта пишет 0.
Вот весь код.

public OnPlayerRegister(playerid, password[])
{
if(IsPlayerConnected(playerid))
{
new playername[MAX_PLAYER_NAME], string[128];
GetPlayerName(playerid, playername, sizeof(playername));
format(string,128,"Accouns/%s.ini",playername);
new iniFile = ini_createFile(string);
ini_setString(iniFile,"Name",playername);
ini_setString(iniFile,"Pass",password);
ini_setInteger(iniFile,"pNumG",Player[playerid][pNumG]);//Номер Аккаунта
ini_closeFile(iniFile);
}
return 1;
}

public OnPlayerLogin(playerid,password[])
{
if(IsPlayerConnected(playerid))
{
new pass[64], string[128];
format(string, 128, "Accouns/%s.ini", pNick(playerid));
new iniFile = ini_openFile(string);
if(iniFile < 0) print(ini_getErrorInfo(iniFile)), ini_closeFile(iniFile);
ini_getString(iniFile, "Pass", pass);
if(strcmp(pass, password, false) == 0)// Если введёный пароль, соответсвует паролю при регистрации, то загружаем акк
{
ini_getString(iniFile,"Name",Player[playerid][Name], MAX_PLAYER_NAME);
ini_getString(iniFile,"Pass",Player[playerid][Pass], 64);
ini_getInteger(iniFile,"pNumG",Player[playerid][pNumG]);//Номер аккаунта
ini_closeFile(iniFile);
}
}
return 1;
}


public OnPlayerConnect(playerid)
{
Player[playerid][pNumG] ++;
return 1;
}


В чем тут проблема я не понимаю. ???
Использование, пример:


if(strcmp(cmd, "/MyID", true) == 0)
{
format(string,sizeof(string),"%sAccount ID: (%d)",string,Player[playerid][pNumG]);
SPD(playerid,0,DIALOG_STYLE_MSGBOX,"Номер аккаунта игрока",string,"Ok","Heok");
return 1;
}

BaBuIIIkaDrifteR
05.02.2015, 12:27
Проблема не решена. UP

BaBuIIIkaDrifteR
06.02.2015, 19:37
UPUPUP

Mazzilla
06.02.2015, 21:10
Зачем делать айди аккаунта при хранении данных от аккаунтов в файлах?

Ну и мой вариант решения проблемы:
Имеется глобальная переменная total_accounts; Выгружаем значение из файла, который будет хранить значение этой переменной. После регистрации нового персонажа значение total_accounts увеличиваем на единицу и приравниваем к Player[playerid][pNumG] значение total_accounts. При рестарте мода, либо можно сделать таймер, обновляем значение total_accounts в файле.

BaBuIIIkaDrifteR
09.02.2015, 04:00
Зачем делать айди аккаунта при хранении данных от аккаунтов в файлах?

Ну и мой вариант решения проблемы:
Имеется глобальная переменная total_accounts; Выгружаем значение из файла, который будет хранить значение этой переменной. После регистрации нового персонажа значение total_accounts увеличиваем на единицу и приравниваем к Player[playerid][pNumG] значение total_accounts. При рестарте мода, либо можно сделать таймер, обновляем значение total_accounts в файле.

Ну у меня так и сделано Прибавляем 1 но после рестарта опять с 1 начинаеться прибавка

Mazzilla
09.02.2015, 15:20
Ну у меня так и сделано Прибавляем 1 но после рестарта опять с 1 начинаеться прибавка
Тогда ещё раз читайте мой пост.

BaBuIIIkaDrifteR
13.02.2015, 00:41
Тогда ещё раз читайте мой пост.

Не чего не получается нет мода от куда вырезать модно или урока?

[ForD]
16.02.2015, 09:33
я же давал готовый вариант,чем не устраивает?!!?!

Посмотри внимательней код,там сделан отдельный файл для общего кол-ва id аккаунтов.и при перезагрузке сервера новый ак будет создаваться по возрастанию с последнего id а не с 0

BaBuIIIkaDrifteR
16.02.2015, 18:08
Спасибо всем! Подучил чуть павн и сделал все сам!
Тема закрыта!
p.s FORD Твой варик нерабочий суть в другом была.

[ForD]
16.02.2015, 23:48
о_О
:mda:
Мой вариант был рабочий,я его даже проверял потом,в прочем в чем-же в другом у тебя там была суть я не понимаю..