[Ajuda] Salvar cargo de quem agendou cadeia
#1

RESOLVIDO!
A mensagem serб mantida para os outros jogadores que quiserem o comando ou tiverem a mesma dъvida.



Alguйm me dб uma ajuda?

Queria salvar o cargo de quem agendou a cadeia do jogador, mas nгo consigo. Da forma abaixo, apenas mostra no chat (Mensagem global) quem agendou no momento, mas queria salvar isso pra quando o jogador logar, aparecer a mensagem:
"| PRISГO | O(A) (cargo aqui) Fulano te agendou a cumprir 1 minuto(s) de cadeia. Motivo: Teste"
Atualmente, no OnPlayerSpawn, estб assim:
"| PRISГO | O(A) Administrador(a) %s te agendou a cumprir %i minuto(s) de cadeia. Motivo: %s" (Aparece tudo certinho, sу queria trocar o "Administrador(a)" pelo cargo da pessoa que agendou"

Entenderam?

Cуdigos abaixo.

OnPlayerSpawn
Код:
public OnPlayerSpawn(playerid)
{
    Erro[playerid] = 0;
	TogglePlayerSpectating(playerid, false);
	TogglePlayerControllable(playerid, true);
	SetCameraBehindPlayer(playerid);
    if(SpawnPos[playerid] == true) SetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]), SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPosA]), SpawnPos[playerid] = false, SetPlayerCameraPos(playerid, PlayerInfo[playerid][pCamX], PlayerInfo[playerid][pCamY], PlayerInfo[playerid][pCamZ]), SetPlayerInterior(playerid, PlayerInfo[playerid][pInterior]);
	format(File, 56, "pAdmin/Agendados/%s.ini", pNomeOriginal[playerid]);
	if(DOF2_FileExists(File))
	{
		format(Str, 256, "| PRISГO | O(A) Administrador(a) %s te agendou a cumprir %i minuto(s) de cadeia. Motivo: %s", DOF2_GetString(File, "Administrador"), DOF2_GetInt(File, "Tempo"), DOF2_GetString(File, "Motivo"));
		printf("%s", Str);
		SendClientMessage(playerid, CorErro, Str);
		DOF2_RemoveFile(File);
	}
	if(PlayerInfo[playerid][pCongelado] == true) TogglePlayerControllable(playerid, false);
	return 1;
}
CMD:AgendarCadeia
Код:
CMD:agendarcadeia(playerid, params[])
{
	new Cargo[256];
	if(PlayerInfo[playerid][pAdmin] < 1)						return SendClientMessage(playerid, CorErro, "| ERRO | Comando invбlido.");
	new Nome[24];
    if(sscanf(params, "s[24]is[56]", Nome, ID,  Motivo))		return SendClientMessage(playerid, CorErroNeutro, "Use: /AgendarCadeia [CONTA] [TEMPO EM MINUTOS] [MOTIVO]");
    new ID1 = GetPlayerID(Nome);
	if(IsPlayerConnected(ID1))                                  return SendClientMessage(playerid, CorErro, "| ERRO | Este jogador estб conectado, use /Cadeia.");
	format(File, sizeof(File), "pAdmin/Contas/%s.ini", Nome);
	if(!DOF2_FileExists(File))              					return SendClientMessage(playerid, CorErro, "| ERRO | Esta conta nгo existe.");
	switch(PlayerInfo[playerid][pAdmin])
	{
		case 1: Cargo = "Ajudante";
		case 2: Cargo = "Moderador(a)";
		case 3: Cargo = "Administrador(a)";
		case 4: Cargo = "Desenvolvedor";
	}
 	format(Str, sizeof(Str), "| PRISГO | O(A) %s %s agendou a prisгo de %s por %i minutos. Motivo: %s", Cargo, pNomeOriginal[playerid], Nome, ID, Motivo);
    SendClientMessageToAll(Vermelho, Str);
	AgendarCadeia(Nome, ID, playerid, Motivo); //colocar pra salvar cargo na pasta e puxar o cargo ao player logar
	return 1;
}
stock AgendarCadeia
Код:
stock AgendarCadeia(playerid[], tempo, administrador, Motivo1[])
{
	if(tempo < 0)
	{
		format(File, 56, "pAdmin/Contas/%s.ini", playerid);
		new TempoAtual = DOF2_GetInt(File, "pCadeia");
		if(tempo * -1 >= TempoAtual / 60)
		{
			DOF2_SetInt(File, "pCadeia", 0);
			DOF2_SaveFile();
			format(File, 56, "pAdmin/Agendados/%s.ini", playerid);
			if(DOF2_FileExists(File)) DOF2_RemoveFile(File);
			return 0;
		}
		else
		{
		    new tempo1 = tempo * -1 * 60;
		    TempoAtual -= tempo1;
		    DOF2_SetInt(File, "pCadeia", TempoAtual);
		    DOF2_SaveFile();
		    format(File, 56, "pAdmin/Agendados/%s.ini", playerid);
			if(DOF2_FileExists(File)) DOF2_SetInt(File, "Tempo", DOF2_GetInt(File, "Tempo") - tempo * -1), DOF2_SaveFile();
		    return 0;
		}
	}
	if(tempo > 0)
	{
		format(File, 56, "pAdmin/Contas/%s.ini", playerid);
		if(DOF2_GetInt(File, "pCadeia") > 0)
		{
		    new Tempo9;
		    Tempo9 = tempo * 60;
		    DOF2_SetInt(File, "pCadeia", DOF2_GetInt(File, "pCadeia") + Tempo9);
		    DOF2_SaveFile();
		}
		else
		{
		    DOF2_SetInt(File, "pCadeia", tempo * 60);
		    DOF2_SaveFile();
		}
		format(File, 56, "pAdmin/Agendados/%s.ini", playerid);
		if(!DOF2_FileExists(File))
		{
			DOF2_CreateFile(File);
			DOF2_SetInt(File, "Tempo", tempo);
			DOF2_SetString(File, "Administrador", pNomeOriginal[administrador]);
			DOF2_SetString(File, "Motivo", Motivo1);
			DOF2_SaveFile();
		}
		else
		{
		    new ADM[24], Motivo2[56], Tempo1;
			format(ADM, 24, DOF2_GetString(File, "Administrador"));
			format(Motivo2, 56, DOF2_GetString(File, "Motivo"));
			Tempo1 = DOF2_GetInt(File, "Tempo");
			format(Str, 256, "%s | %s", ADM, pNomeOriginal[administrador]);
			DOF2_SetString(File, "Administrador", Str);
			format(Str, 256, "%s | %s", Motivo2, Motivo1);
			DOF2_SetString(File, "Motivo", Str);
			DOF2_SetInt(File, "Tempo", tempo + Tempo1);
			DOF2_SaveFile();
		}
	}
	return 1;
}
Eu definitivamente nгo faзo ideia de como fazer, pois das formas que tentei, aparece inъmeros erros e fico em dъvida se fiz corretamente, e por este motivo prefiro vir pedir ajuda a vocкs experientes
Reply
#2

Troque a mensagem do "OnPlayerSpawn" por esta:

PHP код:
format(Str256"| PRISГO | O %s %s te agendou a cumprir %i minuto(s) de cadeia. Motivo: %s"DOF2_GetString(File"CargoAdmin"), DOF2_GetString(File"Administrador"), DOF2_GetInt(File"Tempo"), DOF2_GetString(File"Motivo")); 
Troque a Stock de AgendarCadeia por esta:

PHP код:
stock AgendarCadeia(playerid[], tempoadministradorMotivo1[])
{
    if(
tempo 0)
    {
        
format(File56"pAdmin/Contas/%s.ini"playerid);
        new 
TempoAtual DOF2_GetInt(File"pCadeia");
        if(
tempo * ->= TempoAtual 60)
        {
            
DOF2_SetInt(File"pCadeia"0);
            
DOF2_SaveFile();
            
format(File56"pAdmin/Agendados/%s.ini"playerid);
            if(
DOF2_FileExists(File)) DOF2_RemoveFile(File);
            return 
0;
        }
        else
        {
            new 
tempo1 tempo * -60;
            
TempoAtual -= tempo1;
            
DOF2_SetInt(File"pCadeia"TempoAtual);
            
DOF2_SaveFile();
            
format(File56"pAdmin/Agendados/%s.ini"playerid);
            if(
DOF2_FileExists(File)) DOF2_SetInt(File"Tempo"DOF2_GetInt(File"Tempo") - tempo * -1), DOF2_SaveFile();
            return 
0;
        }
    }
    if(
tempo 0)
    {
        
format(File56"pAdmin/Contas/%s.ini"playerid);
        if(
DOF2_GetInt(File"pCadeia") > 0)
        {
            new 
Tempo9;
            
Tempo9 tempo 60;
            
DOF2_SetInt(File"pCadeia"DOF2_GetInt(File"pCadeia") + Tempo9);
            
DOF2_SaveFile();
        }
        else
        {
            
DOF2_SetInt(File"pCadeia"tempo 60);
            
DOF2_SaveFile();
        }
        
format(File56"pAdmin/Agendados/%s.ini"playerid);
        if(!
DOF2_FileExists(File))
        {
            
DOF2_CreateFile(File);
            
DOF2_SetInt(File"Tempo"tempo);
            
DOF2_SetString(File"Administrador"pNomeOriginal[administrador]);
            
DOF2_SetString(File"CargoAdmin"NomeCargo(administrador));
            
DOF2_SetString(File"Motivo"Motivo1);
            
DOF2_SaveFile();
        }
        else
        {
            new 
ADM[24], Motivo2[56], Tempo1;
            
format(ADM24DOF2_GetString(File"Administrador"));
            
format(Motivo256DOF2_GetString(File"Motivo"));
            
Tempo1 DOF2_GetInt(File"Tempo");
            
format(Str256"%s | %s"ADMpNomeOriginal[administrador]);
            
DOF2_SetString(File"Administrador"Str);
            
DOF2_SetString(File"CargoAdmin"NomeCargo(administrador));
            
format(Str256"%s | %s"Motivo2Motivo1);
            
DOF2_SetString(File"Motivo"Str);
            
DOF2_SetInt(File"Tempo"tempo Tempo1);
            
DOF2_SaveFile();
        }
    }
    return 
1;

E adicione esta stock no final do seu gamemode:

PHP код:
NomeCargo(playerid)
{
    new 
nomecargo[30];
    if(
PlayerInfo[playerid][pAdmin] == 1) {
        
nomecargo "Ajudante";
    }
    else if(
PlayerInfo[playerid][pAdmin] == 2) {
        
nomecargo "Moderador";
    }
    else if(
PlayerInfo[playerid][pAdmin] == 3) {
        
nomecargo "Administrador";
    }
    else if(
PlayerInfo[playerid][pAdmin] == 4) {
        
nomecargo "Desenvolvedor";
    }
    return 
nomecargo;

Reply
#3

Obrigado! Deu tudo certo.
Deixa eu ver se entendi... Basicamente, foi puxado o CargoAdmin, salvo na stock AgendarCadeia (Que eu nгo sei como fez), e criado uma nova stock com os respectivos cargos dos administradores. Correto?
+REP
Reply
#4

Quote:
Originally Posted by Psicotico
Посмотреть сообщение
Obrigado! Deu tudo certo.
Deixa eu ver se entendi... Basicamente, foi puxado o CargoAdmin, salvo na stock AgendarCadeia (Que eu nгo sei como fez), e criado uma nova stock com os respectivos cargos dos administradores. Correto?
+REP
Coloquei para salvar o nome do cargo admin, veja na stock AgendarCadeia:
PHP код:
DOF2_SetString(File"CargoAdmin"NomeCargo(administrador)); 
Depois de salvo o nome do cargo sу usei "DOF2_GetString(File, "CargoAdmin")" para pegar o nome do cargo salvo. Mesma coisa do tempo, nome admin, motivo, .....
Veja em OnPlayerSpawn:
PHP код:
format(Str256"| PRISГO | O %s %s te agendou a cumprir %i minuto(s) de cadeia. Motivo: %s"DOF2_GetString(File"CargoAdmin"), DOF2_GetString(File"Administrador"), DOF2_GetInt(File"Tempo"), DOF2_GetString(File"Motivo")); 
Reply
#5

Entendi. Perguntei o que fizestes para que na prуxima eu possa aprender isto.
Obrigado mesmo!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)