NIKRUS 70 Опубликовано 20 сентября, 2018 (изменено) Ищу систему денег(MXINI) с сохранением. Если у кого-то завалялась данная система, то скиньте. Изменено 20 сентября, 2018 пользователем NikitaTop Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NIKRUS 70 Опубликовано 25 сентября, 2018 Up Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Даниил Антонов 3 Опубликовано 25 сентября, 2018 // This is a comment // uncomment the line below if you want to write a filterscript //#define FILTERSCRIPT #include <a_samp> #include <mxINI> forward SaveAccounts(playerid);//ко всем форвардам, сохранение акков new saveacctimer;// ко всем массивам, созздадим таймер для сохранения акков enum pInfo { pMoney, // Сохраняет кол-во денег. Float:pHeal, // Сохраняет кол-во жизней. }; new PlayerInfo[MAX_PLAYERS][pInfo];// создадим массив со статистикой new logged[MAX_PLAYERS];// массив залогинности игрока=) public OnGameModeInit() { DisableInteriorEnterExits(); saveacctimer = SetTimer("SaveAccounts", 200000, 1);// делаем таймер для сохранения акков // Don't use these lines if it's a filterscript SetGameModeText("orig1"); AddPlayerClass(0,1208.2163,-2036.7668,69.0078,264.9641,0,0,0,0,0,0); return 1; } main() { print("\n---------------------------------------"); print("Running Grand Larceny - by the SA-MP team\n"); print("---------------------------------------\n"); } public SaveAccounts(playerid) { for(new i=0; i<MAX_PLAYERS; i++) { new PlayerName[MAX_PLAYER_NAME], account[128]; GetPlayerName(i,PlayerName,sizeof(PlayerName)); format(account,sizeof(account), "users/%s.ini", PlayerName); new iniFile = ini_openFile(account); ini_setInteger(iniFile, "Money", GetPlayerMoney(i)); GetPlayerHealth(i,PlayerInfo[i][pHeal]); ini_setFloat(iniFile, "Heal", PlayerInfo[i][pHeal]); ini_closeFile(iniFile); SendClientMessage(i, 0xFFFFFFAA, "Аккаунт сохранен");// для теста добавим } return 1; } public OnGameModeExit() { return 1; } public OnPlayerRequestClass(playerid, classid) { return 1; } public OnPlayerConnect(playerid) { logged[playerid] = 0; new PlayerName[MAX_PLAYER_NAME]; GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); // Получаем имя игрока new account[128]; format(account,sizeof(account),"users/%s.ini",PlayerName); //Создадим аккаунт { if(!fexist(account)) //Если такого аккаунта нет,то... { ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Регистрация", "Зарегистрируйся \nПароль ниже:", "Регистр", ""); //Выдаем диалог с регой } else { ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйся \nПароль ниже:", "Логин", ""); //Если аккаунт существует, то выдаем авторизацию } } return 1; } public OnPlayerDisconnect(playerid, reason) { logged[playerid]=0; return 1; } public OnPlayerSpawn(playerid) { logged[playerid] = 1; SetPlayerColor(playerid, 0xFFFFFFAA); return 1; } public OnPlayerDeath(playerid, killerid, reason) { return 1; } public OnVehicleSpawn(vehicleid) { return 1; } public OnVehicleDeath(vehicleid, killerid) { return 1; } public OnPlayerText(playerid, text[]) { if(logged[playerid] == 0) { SendClientMessage(playerid, 0xAFAFAFAA, "Сервер: Чтобы писать в чат, пожалуйста авторизуйтесь"); return 0; } return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if(!strcmp(cmdtext, "/cvet 0", true)) { SetPlayerColor(playerid, 0x00000000); //Черный return 1; } if(!strcmp(cmdtext, "/cvet 1", true)) { SetPlayerColor(playerid, 0xFFFFFFAA); //Белый return 1; } if(!strcmp(cmdtext, "/cvet 2", true)) { SetPlayerColor(playerid, 0x0000BBAA); //Синий return 1; } if(!strcmp(cmdtext, "/cvet 3", true)) { SetPlayerColor(playerid, 0x33FF33AA); //Зеленый return 1; } return 0; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { return 1; } public OnPlayerEnterCheckpoint(playerid) { return 1; } public OnPlayerLeaveCheckpoint(playerid) { return 1; } public OnPlayerEnterRaceCheckpoint(playerid) { return 1; } public OnPlayerLeaveRaceCheckpoint(playerid) { return 1; } public OnRconCommand(cmd[]) { return 1; } public OnPlayerRequestSpawn(playerid) { return 1; } public OnObjectMoved(objectid) { return 1; } public OnPlayerObjectMoved(playerid, objectid) { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { return 1; } public OnVehicleMod(playerid, vehicleid, componentid) { return 1; } public OnVehiclePaintjob(playerid, vehicleid, paintjobid) { return 1; } public OnVehicleRespray(playerid, vehicleid, color1, color2) { return 1; } public OnPlayerSelectedMenuRow(playerid, row) { return 1; } public OnPlayerExitedMenu(playerid) { return 1; } public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) { return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { return 1; } public OnRconLoginAttempt(ip[], password[], success) { return 1; } public OnPlayerUpdate(playerid) { return 1; } public OnPlayerStreamIn(playerid, forplayerid) { return 1; } public OnPlayerStreamOut(playerid, forplayerid) { return 1; } public OnVehicleStreamIn(vehicleid, forplayerid) { return 1; } public OnVehicleStreamOut(vehicleid, forplayerid) { return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == 1) //Регистрация { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Регистрация", "Ну зарегистрируйся ты уже! \nПароль ниже:", "Ок", ""); if(response) { new PlayerName[MAX_PLAYER_NAME]; GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); //Узнаем имя игрока new account[128]; format(account,sizeof(account),"users/%s.ini",PlayerName);//проверяем. Есть ли этот акк в папке users if(fexist(account)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйся! \n Пароль ниже:", "Логин", ""); //авторизуем его, если есть акк new iniFile = ini_createFile(account); //создаем акк if(iniFile < 0) ini_openFile (account); //если файл пустой, то { ini_setString(iniFile,"Пароль",inputtext); //Пароль ini_setInteger(iniFile, "Money", 5000); // Создаем файл аккаунта с кол-вом денег 5000 ini_setFloat(iniFile, "Heal", 100.0); // Создаем файл аккаунта с кол-вом Здоровья ini_closeFile(iniFile); //закроем файл ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйся:", "Логин", ""); } } else //Если этот вася захочет обойти регу и нажмет на Esc, то даем ему опять диалог { ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Регистрация", "Регистрируйся, червь:", "Ок", ""); } } if(dialogid == 2) { if(!strlen(inputtext)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйся! \nПароль ниже:", "Логин", ""); if(response) { new PlayerName[MAX_PLAYER_NAME], password[64]; GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); new account[128]; format(account,sizeof(account),"users/%s.ini",PlayerName); if(IsPlayerNPC(playerid))return 1; new iniFile = ini_openFile(account); ini_getString(iniFile, "Пароль",password); // Узнаём пароль аккаунта. if(!strcmp(inputtext, password, true)) { ini_getInteger(iniFile, "Money", PlayerInfo[playerid][pMoney]); // Записываем данные в переменную ini_getFloat(iniFile, "Heal", PlayerInfo[playerid][pHeal]); SetPlayerHealth(playerid, PlayerInfo[playerid][pHeal]); GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]); ini_closeFile(iniFile); SpawnPlayer(playerid); return 1; } else { SendClientMessage(playerid, 0xAA3333AA, "Сервер: Пароль неверный"); ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйся ты наконец:", "Ок", ""); return 1; } } else //Клавиша Esc { ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Авторизация", "Авторизовывайся,рачок:", "Ок", ""); // выдаем диалог, если нажмет на кнопку Esc } } return 1; } public OnPlayerClickPlayer(playerid, clickedplayerid, source) { return 1; } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Даниил Антонов 3 Опубликовано 25 сентября, 2018 Забыл: В SaveAccounts() PlayerInfo[playerid][pMoney] = GetPlayerMoney(playerid); Там где загрузка данных идет вот такую строку: ResetPlayerMoney(playerid); GivePlayerMoney(PlayerInfo[playerid][pMoney]); Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NIKRUS 70 Опубликовано 25 сентября, 2018 @Даниил Антонов, Зачем тут регистрация? Все сделано. Нужны только деньги и все. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GoodGamerPro 0 Опубликовано 25 сентября, 2018 , Вырежи оттуда систему эту, и сделай под себя, что сложного? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Даниил Антонов 3 Опубликовано 25 сентября, 2018 , прошу извините. Скопировал весь мод :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты