17.09.2016, 20:15
Olб, o sistema de mudar nick do meu servidor estб com um bug, muda o nome da conta certinho e salva, mas, em questгo das casas/empresas ele fica o ъltimo nick. Meu gamemode й Trucking
Код:
CMD:mudarnick(playerid, params[])
{
SendAdminText(playerid, "/mudarnick", params);
if(PlayerInfo[playerid][NoEvento] == 1) return SendClientMessage(playerid, -1, "{ff0000}Vocк estб no evento!");
if(APlayerData[playerid][LoggedIn] == true)
{
if(MudarNick[playerid] == true)
{
if(isnull(params)) SendClientMessage(playerid, -1, "{FF0000}Uso: /mudarnick [NovoNick]");
else
{
if(strlen(params) < 4) return SendClientMessage(playerid, -1, "{FF0000}Minimo 4 Caracterias.");
if(strlen(params) > 14) return SendClientMessage(playerid, -1, "{FF0000}Maximo 14 Caracterias.");
new NomeDoIndividuo[24]; // Variavel
// Geta o Nome Antigo do Player
GetPlayerName(playerid, NomeDoIndividuo, sizeof(NomeDoIndividuo));
new Linhas[1000], ContaExiste[50]; // Var das Linhas a ser lida
format(ContaExiste, sizeof(ContaExiste), PlayerFile, params);
if(fexist(ContaExiste)) return SendClientMessage(playerid, -1, "{FF0000}Esse Nick ja esta em uso.");
for(new asd; asd < sizeof(badnames); ++asd)
{
if(strfind(NomeDoIndividuo,badnames[asd]) != -1)
{
return SendClientMessage(playerid, -1, "{FF0000}Nick Invalido!");
}
}
format(APlayerData[playerid][PlayerName], 24, params);
// Casas
for(new HouseID = 1; HouseID < MAX_HOUSES; HouseID++)
{
if(AHouseData[HouseID][Owned] == true)
{
if(strcmp(AHouseData[HouseID][Owner], NomeDoIndividuo, false) == 0)
{
for(new i; i < MAX_HOUSESPERPLAYER; i++)
{
if(APlayerData[playerid][Houses][i] != 0)
{
format(AHouseData[HouseID][Owner], 50, APlayerData[playerid][PlayerName]);
format(AHouseData[HouseID][HouseName], 100, TXT_DefaultHouseName, params);
House_UpdateEntrance(HouseID);
HouseFile_Save(HouseID);
APlayerData[playerid][Houses][i] = HouseID;
break;
}
}
}
}
}
// Empresas
for(new BusID = 1; BusID < MAX_BUSINESS; BusID++)
{
if (ABusinessData[BusID][Owned] == true)
{
if (strcmp(ABusinessData[BusID][Owner], NomeDoIndividuo, false) == 0)
{
for (new i; i < MAX_BUSINESSPERPLAYER; i++)
{
if (APlayerData[playerid][Business][i] != 0)
{
format(ABusinessData[BusID][Owner], 50, APlayerData[playerid][PlayerName]);
BusinessFile_Save(BusID);
Business_UpdateEntrance(BusID);
APlayerData[playerid][Business][i] = BusID;
break;
}
}
}
}
}
// Banco
new FileBank[100], bool:TemContaBanco = false;
format(FileBank, sizeof(FileBank), BankFile, NomeDoIndividuo);
if(fexist(FileBank)) TemContaBanco = true;
if(TemContaBanco == true)
{
// Mudanзa na Conta do Banco
new File:ArquivoBank[2], StrBank[2][50];
format(StrBank[0], 50, BankFile, NomeDoIndividuo);
format(StrBank[1], 50, BankFile, APlayerData[playerid][PlayerName]);
// Abre a Conta Antiga e ja Cria a nova Conta
ArquivoBank[0] = fopen(StrBank[0], io_read);
ArquivoBank[1] = fopen(StrBank[1], io_append);
// Aqui lк todas as linhas da antiga conta e grava na nova
while(fread(ArquivoBank[0], Linhas)) fwrite(ArquivoBank[1], Linhas);
// Fecha os Arquivos e Exclui a conta antiga
fclose(ArquivoBank[0]);
fclose(ArquivoBank[1]);
fremove(StrBank[0]);
}
// Conta
new FileAccount[100];
format(FileAccount, sizeof(FileAccount), PlayerFile, NomeDoIndividuo);
if(fexist(FileAccount))
{
// Mudanзa na Conta do Player
new File:ArquivoConta[2], StrConta[2][48];
format(StrConta[0], 48, PlayerFile, NomeDoIndividuo);
format(StrConta[1], 48, PlayerFile, APlayerData[playerid][PlayerName]);
// Abre a Conta Antiga e ja Cria a nova Conta
ArquivoConta[0] = fopen(StrConta[0], io_read);
ArquivoConta[1] = fopen(StrConta[1], io_append);
// Aqui lк todas as linhas da antiga conta e grava na nova
while(fread(ArquivoConta[0], Linhas)) fwrite(ArquivoConta[1], Linhas);
// Fecha os Arquivos e Exclui a conta antiga
fclose(ArquivoConta[0]);
fclose(ArquivoConta[1]);
fremove(StrConta[0]);
}
new FString[128], Name[28];
GetPlayerName(playerid, Name, sizeof(Name));
format(FString, sizeof(FString), "{ffff00}O jogador {FFFFFF}%s {ffff00}alterou seu nick para {FFFFFF}%s", Name, params);
SendClientMessageToAll(-1, FString);
SetPlayerName(playerid, APlayerData[playerid][PlayerName]); // Muda o Nome do Jogador
BankFile_Load(playerid);
//----------------------[Casa do Jogador]------------------------------------------//
new HouseID, BusID;
for (new HouseSlot; HouseSlot < MAX_HOUSESPERPLAYER; HouseSlot++)
{
HouseID = APlayerData[playerid][Houses][HouseSlot];
if (HouseID != 0)
{
AHouseData[HouseID][Owned] = true;
format(AHouseData[HouseID][Owner], 24, NomeDoIndividuo);
HouseFile_Save(HouseID);
House_UpdateEntrance(HouseID);
House_RemoveVehicles(HouseID);
HouseFile_Load(HouseID, true);
}
}
//----------------------[Empresa do Jogador]--------------------------------------------//
for (new BusSlot; BusSlot < MAX_BUSINESSPERPLAYER; BusSlot++)
{
BusID = APlayerData[playerid][Business][BusSlot];
if (BusID != 0)
{
ABusinessData[BusID][Owned] = true;
format(ABusinessData[BusID][Owner], 24, NomeDoIndividuo);
BusinessFile_Save(BusID);
Business_UpdateEntrance(BusID);
}
}
MudarNick[playerid] = false;
}
}
else
SendClientMessage(playerid, -1, "{FF0000}Vocк precisa da autorizaзгo de um administrador para mudar seu nick.");
}
else
SendClientMessage(playerid, -1, "{FF0000}Vocк nгo estб logado!");
return true;
}

