[Ajuda] Sistema de organizaзхes
#1

Bom galera, faz uma semana que to tentando fazer um sistema de organizaзхes, fiz vбrios modelos, mais nenhum satisfaz minhas vontades, que й de salvar a org em uma pasta com um arquivo com o nome da organzaзгo. dentro desse arquivo o lider, os membros, os fundos e drogas da org.

Код:
#include a_samp
#include zcmd
#include sscanf2
#include dof2

#define Civil 0
#define Polнcia_Militar 1
#define Exйrcito 2
#define Policia_Federal 3
#define Estado_Islвmico 4
#define Comando_Vermelho 5
#define PCC 6
#define Familia_do_Norte 7
#define Familia_Groove 8
#define Famнlia_Ballas 9
#define Milнcia 10

#define COR_GROO 		0x00FF0099 // cor das orgs
#define COR_BALL 		0xA020F099
#define COR_PCC			0xFFFFFFFF
#define COR_CV  		0xA020F099
#define COR_FDN			0xFFFFFFFF
#define COR_PM 			0x4169E199
#define COR_PF 			0x00FF0099
#define COR_EB 			0xA020F099
#define COR_MIL			0xFFFFFFFF
#define COR_EST  		0xA020F099

#define LOCALHQ_PCC 	2170.8975,1702.2501,10.6239

#define COR_ERRO 0xAD0000AA
#define COR_SUCESSO 0x00AB00AA
#define COR_AV_ADM 0x007CF6AA
#define COR_AZUL_CLARO 0x00F6F6AA
#define COR_RAD 0x4876FFAA

enum PlayerDados //O enum serve, na maioria das veses, para ser usado em outras variaveis como pode ver abaixo
{
    Organizacao,
    Cargo
}
new pDados[MAX_PLAYERS][PlayerDados]; //Criamos a varнavel que amarzenarб os Dados do player





public OnPlayerConnect(playerid)
{

    new arquivo[34], playername[MAX_PLAYER_NAME]; //Criamos as vбriaveos que irгo armazenar o arquivo e o nome do jogador
    GetPlayerName(playerid, playername, sizeof(playername)); //Getamos o nome do player
    format(arquivo, sizeof(arquivo), "Contas/%s", playername); //Formatamos o arquivo de acordo com o nome do player (Contas/NOME)
    pDados[playerid][Organizacao] = DOF2_GetInt(arquivo, "Organizaзгo");
    pDados[playerid][Cargo] = DOF2_GetInt(arquivo, "Cargo");
    SpawnPlayer(playerid); //Dб SPAWN no player
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    new arquivo[34], playername[MAX_PLAYER_NAME]; //Criamos as vбriaveos que irгo armazenar o arquivo e o nome do jogador
    GetPlayerName(playerid, playername, sizeof(playername)); //Getamos o nome do player
    format(arquivo, sizeof(arquivo), "Contas/%s", playername); //Formatamos o arquivo de acordo com o nome do player (Contas/NOME)
    if(DOF2_FileExists(arquivo)) //Se a Conta existir
    {
        DOF2_SetInt(arquivo, "Organizaзгo", pDados[playerid][Organizacao]); //Setamos o valor de "pDados[playerid][Organizacao]" no "arquivo", com a TAG "Organizaзгo"
        DOF2_SetInt(arquivo, "Cargo", pDados[playerid][Cargo]); //Setamos o valor de "pDados[playerid][Cargo]" no "arquivo", com a TAG "Cargo"
    }
    else //Se a conta nгo esxitir
    {
        DOF2_CreateFile(arquivo); //Cria o arquivo com os Dados do player
        DOF2_SetInt(arquivo, "Organizaзгo", pDados[playerid][Organizacao]); //Setamos o valor de "pDados[playerid][Organizacao]" no "arquivo", com a TAG "Organizaзгo"
        DOF2_SetInt(arquivo, "Cargo", pDados[playerid][Cargo]); //Setamos o valor de "pDados[playerid][Cargo]" no "arquivo", com a TAG "Cargo"
    }
	return 1;
}

public OnPlayerUpdate(playerid)
{
    new arquivo[34], playername[MAX_PLAYER_NAME]; //Criamos as vбriaveos que irгo armazenar o arquivo e o nome do jogador
    GetPlayerName(playerid, playername, sizeof(playername)); //Getamos o nome do player
    format(arquivo, sizeof(arquivo), "Contas/%s", playername); //Formatamos o arquivo de acordo com o nome do player (Contas/NOME)
    if(DOF2_FileExists(arquivo)) //Se a Conta existir
    {
        DOF2_SetInt(arquivo, "Organizaзгo", pDados[playerid][Organizacao]); //Setamos o valor de "pDados[playerid][Organizacao]" no "arquivo", com a TAG "Organizaзгo"
        DOF2_SetInt(arquivo, "Cargo", pDados[playerid][Cargo]); //Setamos o valor de "pDados[playerid][Cargo]" no "arquivo", com a TAG "Cargo"
    }
    else //Se a conta nгo esxitir
    {
        DOF2_CreateFile(arquivo); //Cria o arquivo com os Dados do player
        DOF2_SetInt(arquivo, "Organizaзгo", pDados[playerid][Organizacao]); //Setamos o valor de "pDados[playerid][Organizacao]" no "arquivo", com a TAG "Organizaзгo"
        DOF2_SetInt(arquivo, "Cargo", pDados[playerid][Cargo]); //Setamos o valor de "pDados[playerid][Cargo]" no "arquivo", com a TAG "Cargo"
    }
	return 1;
}

public OnGameModeExit()
{
	DOF2_Exit(); //Sempre coloque isto aqui quando estiver a usar DOF2, ou irб dar um WARN, e mau funcionamento da include
	return 1;
}

public OnPlayerSpawn(playerid)
{

    if(pDados[playerid][Organizacao] == 0)
    {
        SetPlayerPos(playerid, 2192.3462,1676.3215,12.3672);
        SetPlayerColor(playerid, -1);
    }
    else if(pDados[playerid][Organizacao] == 1)
    {
        SetPlayerPos(playerid, 2192.3462,1676.3215,12.3672);
        SetPlayerColor(playerid, COR_PM);
    }
    else if(pDados[playerid][Organizacao] == 2)
    {
        SetPlayerPos(playerid, 2192.3462,1676.3215,12.3672);
        SetPlayerColor(playerid, COR_EB);
    }
    else if(pDados[playerid][Organizacao] == 3)
    {
        SetPlayerPos(playerid, 2192.3462,1676.3215,12.3672);
        SetPlayerColor(playerid, COR_PF);
    }
    else if(pDados[playerid][Organizacao] == 4)
    {
        SetPlayerPos(playerid, 2192.3462,1676.3215,12.3672);
        SetPlayerColor(playerid, COR_EST);
    }
    else if(pDados[playerid][Organizacao] == 5)
    {
        SetPlayerPos(playerid, 2192.3462,1676.3215,12.3672);
        SetPlayerColor(playerid, COR_CV);
    }
    else if(pDados[playerid][Organizacao] == 6)
    {
        SetPlayerPos(playerid, 2192.3462,1676.3215,12.3672);
        SetPlayerColor(playerid, COR_PCC);
    }
    else if(pDados[playerid][Organizacao] == 7)
    {
        SetPlayerPos(playerid, 2192.3462,1676.3215,12.3672);
        SetPlayerColor(playerid, COR_FDN);
    }
    else if(pDados[playerid][Organizacao] == 8)
    {
        SetPlayerPos(playerid, 2192.3462,1676.3215,12.3672);
        SetPlayerColor(playerid, COR_GROO);
    }
    else if(pDados[playerid][Organizacao] == 9)
    {
        SetPlayerPos(playerid, 2192.3462,1676.3215,12.3672);
        SetPlayerColor(playerid, COR_BALL);
    }
    else if(pDados[playerid][Organizacao] == 10)
    {
        SetPlayerPos(playerid, 2192.3462,1676.3215,12.3672);
        SetPlayerColor(playerid, COR_MIL);
    }

	return 1;
}


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{

    if(dialogid == 100)
    {
        new playername[MAX_PLAYER_NAME], string[128]; //Variaveis que irб armazenar o nome e "string"
        GetPlayerName(playerid, playername, sizeof(playername)); //Geta o nome do player que aparaceu o dialog
        if(response) //Se ele clicar em SIM...
        {
            pDados[playerid][Organizacao] = GetPVarInt(playerid, "OrgConvidado"); //Seta a organizaзгo de acordo com a PVarInt do comando /convida
            pDados[playerid][Cargo] = 1; //Seta o cargo a 1
            format(string, sizeof(string), "%s aceitou seu Convite.", playername); //Formata uma mensagem com o nome do player que aceitou
            SendClientMessage(GetPVarInt(playerid, "QuemConvidou"), 0x00FF00FF, string); //Envia a mensgaem a quem convidou
            format(string, sizeof(string), "%s й o mais novo membro da Organizaзгo.", playername); //Formata uma mensgaem com o nome do player que aceitou
            SendFamilyMessage(pDados[playerid][Organizacao], GetPlayerColor(playerid), string); //Manda a mensagem para a organizaзгo do player
            SendClientMessage(playerid, 0x00FF00FF, "Vocк aceitou o Convite."); //Manda uma mensagem amigavel ao player que aceitou :P
            DeletePVar(playerid, "OrgConvidado"); //Deleta o PVar
            DeletePVar(playerid, "QuemConvidou"); //Deleta o PVar
            SpawnPlayer(playerid); //Spawn nele!
        }
        else //Se ele ciclar em NГO...
        {
            format(string, sizeof(string), "%s rejeitou seu Convite.", playername); //Formata a mensgaem com o nome do player que rejeitou o convite
            SendClientMessage(GetPVarInt(playerid, "QuemConvidou"), 0x00FF00FF, string); //Envia a mensagem a quem convidou o player
            SendClientMessage(playerid, 0x00FF00FF, "Vocк rejeitou o Convite."); //Manda uma mensagem amigavel ao player que rejeitou :P
            DeletePVar(playerid, "OrgConvidado"); //Deleta o PVar
            DeletePVar(playerid, "QuemConvidou"); //Deleta o PVar
        }
    }
	return 1;
}


CMD:membros(playerid)
{
    new playername[MAX_PLAYER_NAME], string[128]; //Criamos variaveis que irгo armazenar o nome e mensganes formatadas
    if(pDados[playerid][Organizacao] >= 1)
    {
        SendClientMessage(playerid, 0xBFC0C2FF, "(=-=-=-=-=-=-=({FFD700}Membros Online{BFC0C2})=-=-=-=-=-=-=)");
        for(new i = 0; i < MAX_PLAYERS; i++) //Criamos um loop de acordo com o MAX_PLAYERS
        {
            if(IsPlayerConnected(i)) //Verifica se o "i" (player) do loop estб online
            {
                if(pDados[i][Organizacao] == pDados[playerid][Organizacao]) //Verifica se a organizaзгo do player (do loop) й igual a do player que digitou o comando
                {
                    GetPlayerName(i, playername, sizeof(playername)); //Geta o nome do player(loop)...
                    if(pDados[i][Cargo] <= 4) //Verifica se o player do loop e cargo 4 ou menos
                    {
                        format(string, sizeof(string), "Membro: %s, Cargo: %d", playername, pDados[i][Cargo]); //Formata uma mensgaem com o nome e cargo do player (loop)
                        SendClientMessage(playerid, GetPlayerColor(playerid), string); //Envia a mensagem do player que digitou o comando
                    }
                    else
                    {
                        if(pDados[i][Cargo] == 6) //Verifica se o player й Lнder e formata/envia uma mensagem diferente/destacada
                        {
                            format(string, sizeof(string), "Membro: %s, Cargo: Lнder", playername);
                            SendClientMessage(playerid, GetPlayerColor(playerid), string);
                        }
                        else if(pDados[i][Cargo] == 5) //Verifica se o player й Lнder e formata/envia uma mensagem diferente/destacada
                        {
                            format(string, sizeof(string), "Membro: %s, Cargo: Sub-Lнder", playername);
                            SendClientMessage(playerid, GetPlayerColor(playerid), string);
                        }
                    }
                }
            }
        }
    }
    else
    {
        SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo pertence a nenhuma Organizaзгo.");
    }
    return 1; //Returnando a 1, nunca se esqueзa!
}

CMD:r(playerid, params[])
{
    new text[128], string[128], playername[MAX_PLAYER_NAME]; //Criando variavйs...
    if(sscanf(params, "s", text)) return SendClientMessage(playerid, 0xAD0000AA, "USE: /radio [MENSAGEM]");
    if(pDados[playerid][Organizacao] == 0) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo participa de nenhuma organizaзгo!"); //Verifica se o player й CIVIL, se for, returna a mensagem
    GetPlayerName(playerid, playername, sizeof(playername)); //Geta o nome de quem usou o comando
    format(string, sizeof(string), "(Rбdio) %s [Cargo: %d] diz: %s", playername, pDados[playerid][Cargo], text); //Formata uma mensagem com o nome do player, cargo e a mensgem
    SendFamilyMessage(pDados[playerid][Organizacao], COR_RAD, string); //Envia a mensagem a organizaзгo do player
    return 1; //Returnando a 1, nunca se esqueзa!
}

CMD:convidar(playerid, params[])
{
    new id, playername[MAX_PLAYER_NAME], idname[MAX_PLAYER_NAME], string[128]; //Cria variaveis que irгo armazenar id, nome e string
    if(pDados[playerid][Cargo] != 6) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo й lider!"); //Vк se quem digitou o comando й lнder, se nгo, returna a mensagem
    if(sscanf(params, "d", id)) return SendClientMessage(playerid, 0xAD0000AA, "USE: /convidar [ID]");
    if(pDados[id][Organizacao] != 0) return SendClientMessage(playerid, 0xAD0000AA, "Este jogador jб estб em uma Organizaзгo."); //Verifica se o player jб estб em alguma organizaзгo, se estiver, returna a mensagem
    if(playerid == id) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo pode convidar a vocк mesmo."); //Verifica se o "id" = id de quem digitou (playerid)
    GetPlayerName(id, idname, sizeof(idname)); //Geta o nome do "id"
    format(string, sizeof(string), "Vocк convidou %s para sua Organizaзгo.", idname); //Formata a mensagem com que foi convidado
    SendClientMessage(playerid, GetPlayerColor(playerid), string); //Envia a mensagem ao lнder
    GetPlayerName(playerid, playername, sizeof(playername)); //Geta o nome de quem digitou o comando
    format(string, sizeof(string), "%s estб lhe Convidando para fazer parte da Organizaзгo: %s \nDeseja aceitar?", playername, GetOrgName(pDados[playerid][Organizacao])); //Formata um dialog com o nome de que convidou e o nome da organizaзгo
    ShowPlayerDialog(id, 100, DIALOG_STYLE_MSGBOX, "Convite para organizaзгo", string, "Sim", "Nгo");
    SetPVarInt(id, "OrgConvidado", pDados[playerid][Organizacao]); //Setando PVarInt que serб usar no OnDialogResponse
    SetPVarInt(id, "QuemConvidou", playerid); //Setando PVarInt que serб usar no OnDialogResponse
    return 1; //Returnando a 1, nunca se esqueзa!
}

CMD:promover(playerid, params[])
{
    new id, cargo, string[128], playername[MAX_PLAYER_NAME], idname[MAX_PLAYER_NAME]; //Cria as vбriveis...
    if(pDados[playerid][Cargo] != 6) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo й lider!"); //Verifica se o player que digitou o comando й lнder
    if(sscanf(params, "dd", id, cargo)) return SendClientMessage(playerid, 0xAD0000AA, "USE: /promover [ID] [CARGO]");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xAD0000AA, "Este jogador nгo estб online."); //Verifica se o player que serб promovido estб online
    if(pDados[id][Organizacao] != pDados[playerid][Organizacao]) return SendClientMessage(playerid, 0xAD0000AA, "Este jogador nгo й da mesma Organizaзгo que vocк."); //Verifica se o "id" й da mesma organizaзгo do lнder
    if(playerid == id) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo pode promover a vocк mesmo."); //Verifica se o "id" й ele mesmo (playerid)
    if(cargo >= 1 || cargo <= 5) //Verifica se o cargo estб entre 1 a 5
    {
        pDados[id][Cargo] = cargo; //Seta o cargo do player de acordo com o "cargo" que o lнder digitou
        GetPlayerName(playerid, playername, sizeof(playername)); //Geta o nome do player que digitou o comando
        GetPlayerName(id, idname, sizeof(idname)); //Geta o nome de quem recebeu a promoзгo
        format(string, sizeof(string), "%s promoveu o membro %s para o Cargo %d.", playername, idname, cargo); //Formata a mesgaem com quem prommoveu, quem foi promovido e o cargo
        SendFamilyMessage(pDados[playerid][Organizacao], GetPlayerColor(playerid), string); //Envia a mensagem para a organizaзгo
        format(string, sizeof(string), "%s te promoveu para o Cargo %d.", playername, cargo); //Formata a mensgame...
        SendClientMessage(id, GetPlayerColor(playerid), string); //Envia a mesngaem para quem foi promovido
    }
    else //Caso o cargo nгo esta de 1 a 5, envia a mensagem abaixo:
    {
        SendClientMessage(playerid, 0xAD0000AA, "Cargos de 1 a 5");
        return 1;
    }
    return 1; //Returnando a 1, nunca se esqueзa!
}

CMD:demitir(playerid, params[])
{
    new id, motivo[128], string[128], playername[MAX_PLAYER_NAME], idname[MAX_PLAYER_NAME]; //Criando variaveis :P
    if(pDados[playerid][Cargo] != 6) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo й lider!"); //Verifica se o player que digitou o comando й lider
    if(sscanf(params, "ds", id, motivo)) return SendClientMessage(playerid, 0xAD0000AA, "USE: /demitir [ID] [MOTIVO]");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xAD0000AA, "Este jogador nгo estб online."); //Verifica se quem serб demitido estб online
    if(pDados[id][Organizacao] != pDados[playerid][Organizacao]) return SendClientMessage(playerid, 0xAD0000AA, "Este jogador nгo й da mesma Organizaзгo que vocк."); //Verifica se o "id" й da mesma organizaзгo do lнder
    if(playerid == id) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo pode demitir a vocк mesmo."); //Verifica se o "id" й ele mesmo (playerid)
    pDados[id][Organizacao] = 0;
    pDados[id][Cargo] = 0; //Seta o cargo od player a 0
    GetPlayerName(playerid, playername, sizeof(playername)); //Geta o nome de quem demitiu
    GetPlayerName(id, idname, sizeof(idname)); //Geta o nome de quem foi demitido
    format(string, sizeof(string), "%s demitiu o membro %s da Organizaзгo.", playername, idname); //Formata uma mensagem com o nome de quem demitiu e quem foi demitido
    SendFamilyMessage(pDados[playerid][Organizacao], GetPlayerColor(playerid), string); //Envia a mensagem para a organizaзгo
    format(string, sizeof(string), "%s te demitiu da Organizaзгo. Motivo: %s.", playername, motivo); //Formata uma mensagem com o nome de quem demitiu e o motivo
    SendClientMessage(id, GetPlayerColor(playerid), string); //Envia a mensagem para quem foi demitido
    SpawnPlayer(id); //Spawn no nego!
    return 1; //Returnando a 1, nunca se esqueзa!
}

CMD:darlider(playerid, params[])
{
    new id, org, string[256], quemdeu[MAX_PLAYER_NAME], quemganhou[MAX_PLAYER_NAME]; //Cria vбriaveis que irб armazenar o id do lнder, a organizaзгo, o nome etc...
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xAD0000AA, "{00E5FF}Vocк nгo estб autorizado a usar este Comando."); //Verifica se o player estб logado na RCON, se nгo, returna a mensagem
    if(sscanf(params, "ii", id, org)) return SendClientMessage(playerid, 0xAD0000AA, "USE: /darlider [ID] [ORGANIZAЗГO]");
    if(org < 0 || org >= 11) return SendClientMessage(playerid, 0xAD0000AA, "Nъmero de Organizaзхes Permitidas: 0 б 10");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xAD0000AA, "Este jogador nгo estб online."); //Verifica se o player que iria ser setado lнder estб online
    GetPlayerName(id, quemganhou, sizeof(quemganhou)); //Geta o nome de quem ganhou a lideanзa
    GetPlayerName(playerid, quemdeu, sizeof(quemdeu)); //Geta o nome do admin que deu o lнder
    format(string, sizeof(string), "Vocк  deu lнder da Organizaзгo %s para %s(ID: %d)", GetOrgName(org), quemganhou, id); //Formata uma mensagem com o nome de quem ganhou a lideranзa, o nome da orgnizaзгo que foi setada e o "id"
    SendClientMessage(playerid, 0x00F6F6AA, string); //Manda a mensgem formatada para quem digitou o comando (quem deu o lнder)
    format(string, sizeof(string), "%s(ID: %d) te deu lнder da Organizaзгo %s.", quemdeu, playerid, GetOrgName(org)); //Formata uma mensgame com quem deu a lideranзa, o "playerid" e o nome organizaзгo setada
    SendClientMessage(id, 0x00F6F6AA, string); //Envia a mensgaem formatada para que recebeu a lideranзa
    format(string, sizeof(string), "%s(ID: %d) й o novo lнder da Organizaзгo %s.", quemganhou, id, GetOrgName(org)); //Formata a mensagem...
    SendClientMessageToAll(0x00F6F6AA, string); //Envia a mensagem para todos Online
    pDados[id][Organizacao] = org; //Seta a organizaзгo do "id"
    pDados[id][Cargo] = 6; //Seta o cargo (lideranзa) do "id"
    SpawnPlayer(id); //Spawna o player que rebeu a lideranзa
    return 1; //Returnando a 1, nunca se esqueзa!
}

CMD:medemitir(playerid, params[])
{
    if(pDados[playerid][Organizacao] > 0)
    {
        new zString[256], zNome[MAX_PLAYER_NAME], zMotivo[256];
        if(sscanf(params, "s", zMotivo)) return SendClientMessage(playerid, 0xAD0000AA, "Use: /medemitir [MOTIVO]");
        GetPlayerName(playerid, zNome, sizeof(zNome));
        format(zString, sizeof(zString), "%s(ID: %d) se demitiu da organizaзгo %s. Motivo: %s", zNome, playerid, GetOrgName(pDados[playerid][Organizacao]), zMotivo);
        SendClientMessageToAll(0x00F6F6AA, zString);
        format(zString, sizeof(zString), "Vocк se demitiu da organizaзгo %s com sucesso.",GetOrgName(pDados[playerid][Organizacao]));
        SendClientMessage(playerid, GetPlayerColor(playerid), zString);
        pDados[playerid][Organizacao] = 0;
        pDados[playerid][Cargo] = 0;
        OnPlayerSpawn(playerid);
    }
    else
    {
        SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo participa de nenhuma organizaзгo!");
    }
    return 1;
}

CMD:equipar(playerid)
{
    if(pDados[playerid][Organizacao] == 0)
    {
        SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo participa de nenhuma organizaзгo.");
    }
    else if(pDados[playerid][Organizacao] == 1)
    {
        if(!IsPlayerInRangeOfPoint(playerid, 2.0, LOCALHQ_PCC )) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo estб no local para se equipar");
/*        new Armas_Polнcia_Militar = 300*pDados[playerid][Cargo];
        GivePlayerWeapon(playerid, 24, Armas_Polнcia_Militar);
        GivePlayerWeapon(playerid, 25, Armas_Polнcia_Militar);*/
    }
    else if(pDados[playerid][Organizacao] == 2)
    {
        if(!IsPlayerInRangeOfPoint(playerid, 2.0, LOCALHQ_PCC )) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo estб no local para se equipar");
/*        new Armas_Exйrcito = 300*pDados[playerid][Cargo];
        GivePlayerWeapon(playerid, 24, Armas_Exйrcito);
        GivePlayerWeapon(playerid, 25, Armas_Exйrcito);*/
    }
    else if(pDados[playerid][Organizacao] == 3)
    {
        if(!IsPlayerInRangeOfPoint(playerid, 2.0, LOCALHQ_PCC )) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo estб no local para se equipar");
/*        new Armas_Polнcia_Federal = 300*pDados[playerid][Cargo];
        GivePlayerWeapon(playerid, 24, Armas_Polнcia_Federal);
        GivePlayerWeapon(playerid, 25, Armas_Polнcia_Federal);*/
    }
    else if(pDados[playerid][Organizacao] == 4)
    {
        if(!IsPlayerInRangeOfPoint(playerid, 2.0, LOCALHQ_PCC )) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo estб no local para se equipar");
/*        new Armas_Estado_Islвmico = 300*pDados[playerid][Cargo];
        GivePlayerWeapon(playerid, 24, Armas_Estado_Islвmico);
        GivePlayerWeapon(playerid, 25, Armas_Estado_Islвmico);*/
    }
    else if(pDados[playerid][Organizacao] == 5)
    {
        if(!IsPlayerInRangeOfPoint(playerid, 2.0, LOCALHQ_PCC )) return SendClientMessage(playerid, Amarelo, "Vocк nгo estб no local para se equipar");
/*        new Armas_Comando_Vermelho = 300*pDados[playerid][Cargo];
        GivePlayerWeapon(playerid, 24, Armas_Comando_Vermelho);
        GivePlayerWeapon(playerid, 25, Armas_Comando_Vermelho);*/
    }
    else if(pDados[playerid][Organizacao] == 6)
    {
        if(!IsPlayerInRangeOfPoint(playerid, 2.0, LOCALHQ_PCC )) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo estб no local para se equipar");
/*        new Armas_PCC = 300*pDados[playerid][Cargo];
        GivePlayerWeapon(playerid, 24, Armas_PCC);
        GivePlayerWeapon(playerid, 25, Armas_PCC);*/
    }
    else if(pDados[playerid][Organizacao] == 7)
    {
        if(!IsPlayerInRangeOfPoint(playerid, 2.0, LOCALHQ_PCC )) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo estб no local para se equipar");
/*        new Armas_Famнlia_do_Norte = 300*pDados[playerid][Cargo];
        GivePlayerWeapon(playerid, 24, Armas_Famнlia_do_Norte);
        GivePlayerWeapon(playerid, 25, Armas_Famнlia_do_Norte);*/
    }
    else if(pDados[playerid][Organizacao] == 8)
    {
        if(!IsPlayerInRangeOfPoint(playerid, 2.0, LOCALHQ_PCC )) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo estб no local para se equipar");
/*        new Armas_Famнlia_Groove = 300*pDados[playerid][Cargo];
        GivePlayerWeapon(playerid, 24, Armas_Famнlia_Groove);
        GivePlayerWeapon(playerid, 25, Armas_Famнlia_Groove);*/
    }
    else if(pDados[playerid][Organizacao] == 9)
    {
        if(!IsPlayerInRangeOfPoint(playerid, 2.0, LOCALHQ_PCC )) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo estб no local para se equipar");
/*        new Armas_Famнlia_Ballas = 300*pDados[playerid][Cargo];
        GivePlayerWeapon(playerid, 24, Armas_Famнlia_Ballas);
        GivePlayerWeapon(playerid, 25, Armas_Famнlia_Ballas);*/
    }
    else if(pDados[playerid][Organizacao] == 10)
    {
        if(!IsPlayerInRangeOfPoint(playerid, 2.0, LOCALHQ_PCC )) return SendClientMessage(playerid, 0xAD0000AA, "Vocк nгo estб no local para se equipar");
/*        new Armas_Milнcia = 300*pDados[playerid][Cargo];
        GivePlayerWeapon(playerid, 24, Armas_Milнcia);
        GivePlayerWeapon(playerid, 25, Armas_Milнcia);*/
    }
    return 1; //Returnando a 1, nunca se esqueзa!
}


// ----------------------------------------------------------------------------------------------------------

stock GetOrgName(orgid)
{
    new str[30];
    if(orgid == 0)
    {
        str = "Civil";
    }
    if(orgid == 1)
    {
        str = "Polнcia Militar";
    }
    if(orgid == 2)
    {
        str = "Exйrcito";
    }
    if(orgid == 3)
    {
        str = "Polнcia Federal";
    }
    if(orgid == 4)
    {
        str = "Estado Islвmico";
    }
    if(orgid == 5)
    {
        str = "Comando Vermelho";
    }
    if(orgid == 6)
    {
        str = "PCC";
    }
    if(orgid == 7)
    {
        str = "Famнlia do Norte";
    }
    if(orgid == 8)
    {
        str = "Famнlia Groove";
    }
    if(orgid == 9)
    {
        str = "Famнlia Ballas";
    }
    if(orgid == 10)
    {
        str = "Milнcia";
    }
    return str;
}

stock SendFamilyMessage(orgid, cor, mensagem[]) //stock que envia a mensagem para tal organizaзгo de acordo com "ogrid"
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(pDados[i][Organizacao] == orgid)
            {
                SendClientMessage(i, cor, mensagem);
            }
        }
    }
    return 0;
}
meu sistema ta assim. fiz com um criador de organizaзхes, mais ele salva a org do play no arquivo do player, em Contas, e nгo й isso que eu quero, quero salvar a organizaзгo.

nгo sei como mudar os cуdigos, alguйm ai sabe ?
Reply
#2

Pelo o que eu entendi voce quer criar uma pasta com a org do player, como por exemplo:

PHP код:
Um arquivo .ini %s nome da org talspq vc ta pegando assim?
               
public 
OnPlayerDisconnect(playeridreason)
{
    new 
arquivo[34], playername[MAX_PLAYER_NAME]; //Criamos as vбriaveos que irгo armazenar o arquivo e o nome do jogador
    
GetPlayerName(playeridplayernamesizeof(playername)); //Getamos o nome do player
    
format(arquivosizeof(arquivo), "Contas/%s"playername); //Formatamos o arquivo de acordo com o nome do player (Contas/NOME)
    
if(DOF2_FileExists(arquivo)) //Se a Conta existir
    
{
        
DOF2_SetInt(arquivo"Organizaзгo"pDados[playerid][Organizacao]); //Setamos o valor de "pDados[playerid][Organizacao]" no "arquivo", com a TAG "Organizaзгo"
        
DOF2_SetInt(arquivo"Cargo"pDados[playerid][Cargo]); //Setamos o valor de "pDados[playerid][Cargo]" no "arquivo", com a TAG "Cargo"
    
}
    else 
//Se a conta nгo esxitir
    
{
        
DOF2_CreateFile(arquivo); //Cria o arquivo com os Dados do player
        
DOF2_SetInt(arquivo"Organizaзгo"pDados[playerid][Organizacao]); //Setamos o valor de "pDados[playerid][Organizacao]" no "arquivo", com a TAG "Organizaзгo"
        
DOF2_SetInt(arquivo"Cargo"pDados[playerid][Cargo]); //Setamos o valor de "pDados[playerid][Cargo]" no "arquivo", com a TAG "Cargo"
    
}
    return 
1;
}
 
pq esta formatando pro aquivo do player
Reply
#3

pq esta formatando pro aquivo do player?

й isso que eu nгo sei mudar mano, vou tentar aqui fazer um arquivo especнfico pra org
Reply
#4

PHP код:
format(arquivosizeof(arquivo), "Orgs/%s"name);( 
Reply
#5

Код:
#define MAX_ORGS 10+1

enum pOrg
{
	LIDER[60], FUNDOS, DROGAS, ArquivoOrg[120]
};

new Org[MAX_ORGS][pOrg];

CriarOrg(GetOrgName(Player[playerid][Organizacao])
{
    format(ArquivoOrg, sizeof(ArquivoOrg), "ORGS/%s", GetOrgName(Player[playerid][Organizacao])); //Formatamos o arquivo de acordo com o nome da org do player
    if(DOF2_FileExists(arquivo)) //Se a Organizaзгo existir
    {
        DOF2_SetInt(arquivo, "LIDER", Org[playerid][LIDER]);
//        DOF2_SetInt(arquivo, "MEMBROS", Player[playerid][Cargo]);
        DOF2_SetInt(arquivo, "FUNDOS", Org[playerid][FUNDOS]);
        DOF2_SetInt(arquivo, "DROGAS", Org[playerid][DROGAS]);
    }
    else //Se a org nгo existir cria
    {
        DOF2_CreateFile(arquivo);
        DOF2_SetInt(arquivo, "LIDER", Org[playerid][LIDER]);
//        DOF2_SetInt(arquivo, "MEMBROS", Org[playerid][Cargo]);
        DOF2_SetInt(arquivo, "FUNDOS", Org[playerid][FUNDOS]);
        DOF2_SetInt(arquivo, "DROGAS", Org[playerid][DROGA]);
    }
}
Fiz assim e deu alguns erros, mais nгo sei se ta certo.


Код:
CriarOrg(playerid)
{
    format(ArquivoOrg, sizeof(ArquivoOrg), "ORGS/%s", GetOrgName(Player[playerid][Organizacao])); //Formatamos o arquivo de acordo com o nome do player (Contas/NOME)
    if(DOF2_FileExists(arquivo)) //Se a Organizaзгo existir
    {
        DOF2_SetInt(arquivo, "LIDER", Org[playerid][LIDER]);
//        DOF2_SetInt(arquivo, "MEMBROS", Player[playerid][Cargo]);
        DOF2_SetInt(arquivo, "FUNDOS", Org[playerid][FUNDOS]);
        DOF2_SetInt(arquivo, "DROGAS", Org[playerid][DROGAS]);
    }
    else //Se a org nгo existir cria
    {
        DOF2_CreateFile(arquivo); 
        DOF2_SetInt(arquivo, "LIDER", Org[playerid][LIDER]);
//        DOF2_SetInt(arquivo, "MEMBROS", Org[playerid][Cargo]);
        DOF2_SetInt(arquivo, "FUNDOS", Org[playerid][FUNDOS]);
        DOF2_SetInt(arquivo, "DROGAS", Org[playerid][DROGA]);
    }
}
to achando que esse cуdigo vai criar vбrias organizaзхes na pasta ORGS, com o mesmo nome, sei lб.
E aonde eu devo botar pra chamar essa public de criar org ? no On Game Mode Init ?
Reply
#6

tenho que botar CriarOrg(playerid) no comando de /darlider ?
Reply
#7

Cara faz o que eu vo te mandar aqui. Vocк cria a organizaзгo por comando й ela й salva na pasta Orgs.

Ela salva assim: Org0, Org1, Org2 quantas vc for criar. dentro desse arquivo tem o Nome da org, Lider, Membros, Drogas, Grana.

PHP код:
#include <a_samp>
#include <DOF2>
#include <sscanf2>
#include <Pawn.CMD>
#define MAX_ORGS                                                                20
enum oInfo
{
    
OrgNome[20],
    
Lider[24],
    
Membro1[24],
    
Membro2[24],
    
Drogas,
    
Grana
};
new 
OrgInfo[MAX_ORGS][oInfo];
new 
Org;
main()
{
    print(
"\nSistema de Organizaзгo By: AutoMatic\n\n");
}
public 
OnGameModeInit()
{
    
SetGameModeText("RPG");
    
AddPlayerClass(01958.37831343.157215.3746269.1425000000);
    return 
1;
}
public 
OnGameModeExit()
{
    
DOF2::Exit();
    return 
1;
}
CMD:criarorg(playeridparams[])
{
    new 
STR[90], NomeOrg[20], File[34];
    if(
sscanf(params"s[20]"NomeOrg))
        return 
SendClientMessage(playerid, -1"| ERRO | Use: /CriarOrg [Nome]");
        
    
format(Filesizeof(File), "Orgs/Org%d.ini"Org);
    
    if(
DOF2::FileExists(File))
        return 
SendClientMessage(playerid, -1"| ERRO | Esta organizaзгo jб existe!");
        
    
DOF2::CreateFile(File);
    
    
format(OrgInfo[Org][OrgNome], 20NomeOrg);
    
DOF2::SetString(File"OrgNome"NomeOrg);
    
    
format(OrgInfo[Org][Lider], 24"Ninguem");
    
DOF2::SetString(File"Lider""Ninguem");
    
    
format(OrgInfo[Org][Membro1], 24"Ninguem");
    
DOF2::SetString(File"Membro1""Ninguem");
    
    
format(OrgInfo[Org][Membro2], 24"Ninguem");
    
DOF2::SetString(File"Membro2""Ninguem");
    
    
OrgInfo[Org][Drogas] = 0;
    
DOF2::SetInt(File"Drogas"0);
    
    
OrgInfo[Org][Grana] = 0;
    
DOF2::SetInt(File"Grana"0);
    
    
DOF2::SaveFile();
    
    
format(STRsizeof(STR), "| INFO | Vocк criou a Organiзгo Nъmero %d chamada %s"OrgNomeOrg);
    
SendClientMessage(playerid, -1STR);
    
    
Org++;
    return 
1;

Reply
#8

ok vou ver aqui
Reply
#9

atй deu certo, mais vou ter que mudar meu GM todo. Mais vlw ai mano rs
Reply
#10

Melhor mudar й fazer desse jeito do que "mexer" й piorar oque estava fazendo

Esse seu sistema que vocк fez acima nгo ira rodar tudo certinho como pensa! Vai precisar de muita gambiarra para funcionar й terб vбrios bugs.

@Edit

Fui vendo seus pedidos de ajuda aqui agora pouco й vi que estava fazendo de uma maneira que nгo iria rodar mesmo!

Outra tambйm й que vocк ta querendo definir MAX_ORGS para ser nome se MAX_ORGS vai ser um nъmero nгo uma string. :/

Use nъmeros como eu fiz para buscar o arquivo "Orgs/Org%d" й se quiser pegue o nome da org dentro do arquivo nгo e difнcil apenas usar a logica й a include DOF2 + a matriz (enum)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)