Перейти к содержанию
Авторизация  
Emiliano

Проблема с системой домов

Рекомендуемые сообщения

Emiliano

Блин ребят уже намучился не могу ничего сделать думаю вы мне поможете.

Pass = 
Money = 0
House = 9999
Car = 0
Color 1 = 0
Color 2 = 0
Score = 0
Kills = 0
Admin = 0
Заходишь на сервер:
в House прописывается 9999 - это так и должно.
Покупаешь дом в House прописывается id дом - это тоже так и должно.
Но после перезапуска сервера этот id дома который прописался в House снова прописывается как 9999.

Вот что я вставлял:

В паблик public OnPlayerLogin(playerid,password[])
я вставил: Player[playerid][pHouse] = 9999; 

Вот что я вставил в stock SavePlayer(playerid)
Player[playerid][pHouse] = SaveHouse();

Как мне сделать проверку ??  Например: если у игрока в House уже прописано значение 50, то 9999 уже не будет заново ему прописываться.

Думаю поможете.

Изменено пользователем Emiliano

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SHOROOP

SavePlayer() показывайте целиком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Emiliano

stock SavePlayer(playerid)
{
new string[250];// Массив с путём для файла
new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string, sizeof(string), "players/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
new iniFile = ini_openFile(string);// Открываем файл по тому пути который указали.
ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл
ini_setInteger(iniFile,"Score",Player[playerid][pScore]);
ini_setInteger(iniFile,"Kills",PlayerInfo[playerid][pKills]);
ini_setInteger(iniFile,"House",PlayerInfo[playerid][pHouse]);
ini_setInteger(iniFile,"Car",Player[playerid][pCar]);
ini_setInteger(iniFile,"Color 1",Player[playerid][pColor1]);
ini_setInteger(iniFile,"Color 2",Player[playerid][pColor2]);
ini_setInteger(iniFile,"Money",Player[playerid][pMoney]);
ini_setInteger(iniFile,"Admin",Player[playerid][pAdmin]);// Записываем уровень админа
Player[playerid][pMoney] = Money(playerid);
Player[playerid][pHouse] = SaveHouse();
ini_closeFile(iniFile);// Закрываем файл
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SHOROOP

Правильно, что не работает. И работать не будет, пока не разберетесь с собственным алгоритмом. Объясняю на примере.

//Допустим, на момент вызова SavePlayer() PlayerInfo[playerid][pHouse] = 9999.
stock SavePlayer(playerid)
{
    new string[250];// Массив с путём для файла
    new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока
    GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
    format(string, sizeof(string), "players/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
    new iniFile = ini_openFile(string);// Открываем файл по тому пути который указали.
    ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл
    ini_setInteger(iniFile,"Score",Player[playerid][pScore]);
    ini_setInteger(iniFile,"Kills",PlayerInfo[playerid][pKills]);
    ini_setInteger(iniFile,"House",PlayerInfo[playerid][pHouse]); //Записываем ID дома в файл. Напоминаю, на текущий момент значение указанного элемента = 9999.
    ini_setInteger(iniFile,"Car",Player[playerid][pCar]);
    ini_setInteger(iniFile,"Color 1",Player[playerid][pColor1]);
    ini_setInteger(iniFile,"Color 2",Player[playerid][pColor2]);
    ini_setInteger(iniFile,"Money",Player[playerid][pMoney]);
    ini_setInteger(iniFile,"Admin",Player[playerid][pAdmin]);
    Player[playerid][pMoney] = Money(playerid);
    Player[playerid][pHouse] = SaveHouse(); //Не знаю, что возвращает SaveHouse, да еще и вызванный без параметров, но. В любом случае меняется только значение указанного элемента PlayerInfo[playerid][pHouse], в файл оно не пишется.
    ini_closeFile(iniFile);// Закрываем файл
}

И определитесь, наконец, с названием структуры, хранящей данные игрока - Player или PlayerInfo.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Emiliano

Ну и что вы посоветуете мне сделать ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SHOROOP

Если вопрос ставится именно так - немедленно бросить копание в коде и начать знакомиться с теорией алгоритмов. Я же в нужных местах специально комментарии оставил. Не догадаться поменять местами два действия - ну извините.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Basis

public OnPlayerLogin(playerid,password[])
вызывается когда игрок заходит,так почему у тебя там стоит
Player[playerid][pHouse] = 9999; если должно стоять

ini_getInteger(iniFile,"House",PlayerInfo[playerid][pHouse]);

поясню(ты когда подключаешься ставиться  значение дома 9999)

Изменено пользователем Basis
  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SHOROOP

@Basis, это не отменяет того, что сохранение реализовано криво. Хотя да, загрузку дефолтных значений я бы в OnPlayerConnect запихнул.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.