PDA

Просмотр полной версии : [Вопрос] Смена ника.



BaBuIIIkaDrifteR
29.01.2015, 18:38
Вообщем столкнулся я с проблемой сохранения домов после смены ника.

Суть проблемы: Если у меня куплен дом и я меняю ник и хозяин дома не меняется помогите сделать что бы менялся.

Код смены ника:

if(dialogid == 10)//Смена ника
{
if(response)
{
if(strlen(inputtext) < 4 || !valid_sym(inputtext) || strlen(inputtext) > MAX_PLAYER_NAME) return SCM(playerid, -1, "{00FF00}Energy Drift: {FFFFFF}Ник слишком короткий или в тексте найдены запрещенные символы.");
new str[256],str2[256],string[256],neck[300];
format(str,256,"Accouns/%s.ini",inputtext);
if(fexist(str)) return SCM(playerid, -1, "{00FF00}Energy Drift: {FFFFFF}Этот ник уже занят");
format(str2,256,"Accouns/%s.ini",pNick(playerid));
fremove(str2);
strmid(Player[playerid][Name], inputtext, 0, strlen(inputtext), MAX_PLAYER_NAME);
format(string,256,"Accouns/%s.ini",pNick(playerid));
new iniFile = ini_createFile(string);
ini_setString(iniFile,"Name",pNick(playerid));
ini_setString(iniFile,"Pass",Player[playerid][Pass]);
ini_setInteger(iniFile,"Level",Player[playerid][Level]);
ini_setInteger(iniFile,"Drift",Player[playerid][Drift]);
ini_setInteger(iniFile,"Win",Player[playerid][Win]);
ini_setInteger(iniFile,"Lose",Player[playerid][Lose]);
ini_setInteger(iniFile,"Money",GetPlayerMoney(playerid));
ini_setInteger(iniFile,"Skin",Player[playerid][Skin]);
ini_setInteger(iniFile,"Admin",Player[playerid][Admin]);
ini_setInteger(iniFile,"Bann",Player[playerid][Bann]);
ini_setInteger(iniFile,"Muted",Player[playerid][Muted]);
ini_setInteger(iniFile,"MuteTime",Player[playerid][MuteTime]);
ini_setInteger(iniFile,"Exist",Player[playerid][Exist]);
ini_setInteger(iniFile,"Warn",Player[playerid][pWarns]);
ini_setInteger(iniFile,"VIP",Player[playerid][pVIP]);//Вип система
ini_setInteger(iniFile,"Donate",Player[playerid][pDonate]);//Система доната
ini_setInteger(iniFile,"pGift",Player[playerid][pGift]);//Новый год
ini_setInteger(iniFile,"pJump",Player[playerid][pJump]);//Доп.возможности (прыжек на машине)
ini_setInteger(iniFile,"pCrash",Player[playerid][pCrash]);//Доп.возможности (AntiCraser)
ini_setInteger(iniFile,"pDriftX5",Player[playerid][pDriftX5]);//Доп.возможности (Множетель дрифта x5)
ini_setInteger(iniFile,"pJailed",Player[playerid][pJailed]);//Система тюрьмы
ini_setInteger(iniFile,"pMestoJail",Player[playerid][pMestoJail]);//Система тюрьмы
ini_setInteger(iniFile,"pJailTime",Player[playerid][pJailTime]);//Система тюрьмы
ini_setInteger(iniFile,"Klan",PKlan[playerid]);//Система кланов доработка
ini_setInteger(iniFile,"KlanLvl",KlanLvl[playerid]);//Система кланов доработка
ini_setFloat(iniFile,"Posx",Player[playerid][Posx]);
ini_setFloat(iniFile,"Posy",Player[playerid][Posy]);
ini_setFloat(iniFile,"Posz",Player[playerid][Posz]);
ini_setFloat(iniFile,"Posa",Player[playerid][Posa]);
ini_setFloat(iniFile,"SaveX",Player[playerid][pPosX]);//Сохронение позиции по команде
ini_setFloat(iniFile,"SaveY",Player[playerid][pPosY]);//Сохронение позиции по команде
ini_setFloat(iniFile,"SaveZ",Player[playerid][pPosZ]);//Сохронение позиции по команде
ini_setFloat(iniFile,"Angle",Player[playerid][pPosA]);//Сохронение позиции по команде
ini_closeFile(iniFile);
SavePlayer(playerid);

return 1;
}
}
Код сохранения домов

stock HouseFile_Save(HouseID)
{
new file[100], File:HFile, LineForFile[100];
format(file, sizeof(file), HouseFile, HouseID);
HFile = fopen(file, io_write);
if(AHouseData[HouseID][Owned] == true)
format(LineForFile, 100, "Owned Yes\r\n");
else
format(LineForFile, 100, "Owned No\r\n");
fwrite(HFile, LineForFile);
format(LineForFile, 100, "Owner %s\r\n", AHouseData[HouseID][Owner]);
fwrite(HFile, LineForFile);
format(LineForFile, 100, "HouseName %s\r\n", AHouseData[HouseID][HouseName]);
fwrite(HFile, LineForFile);
format(LineForFile, 100, "HouseX %f\r\n", AHouseData[HouseID][HouseX]);
fwrite(HFile, LineForFile);
format(LineForFile, 100, "HouseY %f\r\n", AHouseData[HouseID][HouseY]);
fwrite(HFile, LineForFile);
format(LineForFile, 100, "HouseZ %f\r\n", AHouseData[HouseID][HouseZ]);
fwrite(HFile, LineForFile);
format(LineForFile, 100, "HouseLevel %i\r\n", AHouseData[HouseID][HouseLevel]);
fwrite(HFile, LineForFile);
format(LineForFile, 100, "HouseMaxLevel %i\r\n", AHouseData[HouseID][HouseMaxLevel]);
fwrite(HFile, LineForFile);
format(LineForFile, 100, "HousePrice %i\r\n", AHouseData[HouseID][HousePrice]);
fwrite(HFile, LineForFile);
if(AHouseData[HouseID][HouseOpened] == true)
format(LineForFile, 100, "HouseOpened Yes\r\n");
else
format(LineForFile, 100, "HouseOpened No\r\n");
fwrite(HFile, LineForFile);
if(AHouseData[HouseID][StaticHouse] == true)
format(LineForFile, 100, "StaticHouse Yes\r\n");
else
format(LineForFile, 100, "StaticHouse No\r\n");
fwrite(HFile, LineForFile);
/*fwrite(HFile, "\r\n");
{
{
format(LineForFile, 100, "\r\n");
fwrite(HFile, LineForFile);
format(LineForFile, 100, "\r\n");
fwrite(HFile, LineForFile);
fwrite(HFile, "\r\n");
}
}*/
fclose(HFile);
return 1;
}
Вот как дома выгледят в файле:

Owned Yes
Owner eXtaz
HouseName {00FF11}eXtaz's house
HouseX -264.639434
HouseY 1529.455200
HouseZ 76.062660
HouseLevel 1
HouseMaxLevel 10
HousePrice 2100000
HouseOpened No
StaticHouse No

L0ndl3m
29.01.2015, 19:00
Есть переменная отвечающая за ID дома игрока?

BaBuIIIkaDrifteR
29.01.2015, 19:08
Есть переменная отвечающая за ID дома игрока?
owner[24]

enum THouseData
{
PickupID,
Text3D:DoorText,
MapIconID,
bool:Owned,
Owner[24],
HouseName[100],
Float:HouseX,
Float:HouseY,
Float:HouseZ,
HouseLevel,
HouseMaxLevel,
HousePrice,
bool:HouseOpened,
/*bool:StaticHouse*/
}
new AHouseData[MAX_HOUSES][THouseData];

L0ndl3m
29.01.2015, 19:11
Не переменная дома, а игрока, что-то типа:

PlayerInfo[playerid][pHouse]

BaBuIIIkaDrifteR
29.01.2015, 19:16
Не переменная дома, а игрока, что-то типа:

PlayerInfo[playerid][pHouse]

Ой сорри )

APlayerData[playerid][CurrentHouse] = 0;

L0ndl3m
29.01.2015, 19:19
strmid(AHouseData[APlayerData[playerid][CurrentHouse]][Owner], inputtext, 0, MAX_PLAYER_NAME, MAX_PLAYER_NAME + 1);

BaBuIIIkaDrifteR
29.01.2015, 19:39
strmid(AHouseData[APlayerData[playerid][CurrentHouse]][Owner], inputtext, 0, MAX_PLAYER_NAME, MAX_PLAYER_NAME + 1);

Это if(dialogid == 10) суда ?

L0ndl3m
29.01.2015, 19:40
После

fremove(str2);
добавляйте.

BaBuIIIkaDrifteR
29.01.2015, 19:49
Не работает =(

L0ndl3m
29.01.2015, 19:53
В файле не меняется?

BaBuIIIkaDrifteR
29.01.2015, 19:57
Нет
В файле не меняется?

L0ndl3m
30.01.2015, 00:02
Проблема решена в скайпе. Тема закрыта.