[Ajuda] Armazenar SOS
#1

Meu servidor possui um sistema de SOS, porйm, aparece os pedidos de ajuda apenas para os admins que tгo em modo trabalho. Desejava que armazenasse os SOS enviados quando estava sem administradores ou nгo tivesse trabalhando, sendo assim o admin digitava /versos e apareciam todos que nгo foram atendidos lб. Como posso fazer?
Reply
#2

Nгo posso esboзar um cуdigo funcional, pфs estou no trabalho. Mas vou dar uma dica.

Vocк pode criar uma variбvel, bidimensional, para armazenar informaзгo que vocк julgar importantes.

Exe:
PHP код:

#define MAX_REPORTES (25)
enum r_info
{
    
texto[128],
    
jogadorId,
}
new 
Reporte[MAX_REPORTES][r_info];
stock RegistrarReporte(playerid, const rTexto[])
{
    for(new 
isizeof(Reporte); i++)
    {
        if(!
Reporte[i][reporteAtivo])
        {
            
Reporte[i][reporteAtivo] = true;
            
format(Reporte[i][texto], 128rTexto);
            
Reporte[i][jogadorId] = playerid;
            break;
        }
    }

depois й sу vocк trabalhar com loops, salvando as informaзхes. Quando eu tiver tempo esboзarei um cуdigo melhor neste post dando edit.
Reply
#3

Poderia especificar mais? No caso, as loops. Fico no aguardo.
Reply
#4

Use fwrite e escreva os reportes utilizando a quebra de linha para ficarem um abaixo do outro.
Apуs isso, crie um comando (de preferкncia em zcmd) que percorra esse arquivo listando todos os reportes.

Obs.: Use o loop com o fread para ler os reportes e logo apуs formate a string e use-a.
Reply
#5

Cara. Eu sou novato nessas paradas. Poderiam me dar um exemplo, ou explicando passo-a-passo?
Reply
#6

PHP код:
#include <a_samp>
#include <zcmd>
#define MAX_REPORTS (25)
enum reportData {
    
reportExists,
    
reportPlayer,
    
reportText[128]
};
new 
Report[MAX_REPORTS][reportData];
public 
OnFilterScriptInit()
{
    return 
1;
}
public 
OnFilterScriptExit()
{
    return 
1;
}
stock ReportAdd(playeridtext[])
{
    new 
reportid GetFreeReportID();
    
    if (
reportid != -1)
    {
        
Report[reportid][reportExists] = true;
        
Report[reportid][reportPlayer] = playerid;
        
format(Report[reportid][reportText], 128text);
        return 
reportid;
    }
    return -
1;
}
stock GetFreeReportID()
{
    for (new 
0!= MAX_REPORTS++) if (!Report[i][reportExists])
        return 
i;
        
    return -
1;
}
CMD:report(playeridparams[])
{
    new 
reportid ReportAdd(playeridparams);
    if (
reportid != -1)
    {
        for (new 
0MAX_PLAYERS++) if (IsPlayerAdmin(i)) {
            
SendClientMessage(i, -1"Foi recebido um relatуrio.");
        }
        
SendClientMessage(playerid, -1"Seu relatуrio foi enviado para todos os administradores on-line.");
    }
    else {
        
SendClientMessage(playerid, -1"A lista de relatуrios estб cheia. Por favor, espere um pouco.");
    }
    return 
1;
}
CMD:reports(playeridparams[])
{
    new 
countstring[128];
    
    if (!
IsPlayerAdmin(playerid))
        return 
0;
    for (new 
0!= MAX_REPORTS++) if (Report[i][reportExists])
    {
        
format(stringsizeof(string), "%i - %s [%i] relatou: %s"iGetName(Report[i][reportPlayer]), Report[i][reportPlayer], Report[i][reportText]);
        
SendClientMessage(playerid, -1string);
        
        
count++;
    }
    if (!
count)
        return 
SendClientMessage(playerid, -1"Nгo hб relatуrios ativos a serem exibidos.");
        
    return 
1;
}
stock GetName(playerid)
{
    new 
name[MAX_PLAYER_NAME];
    
     
GetPlayerName(playeridnamesizeof(name));
     return 
name;
}
CMD:ar(playeridparams[])
{
    new 
reportid strval(params), string[128];
        
    if (!
IsPlayerAdmin(playerid))
        return 
0;
    
format(stringsizeof(string), "%s aceitou o seu relatуrio."GetName(playerid));
    
SendClientMessage(Report[reportid][reportPlayer], -1string);
    
Report[reportid][reportExists] = false;
    
Report[reportid][reportPlayer] = INVALID_PLAYER_ID;
    
Report[reportid][reportText] = '\0';
    return 
1;

Reply
#7

Nгo desejo filterscript. Desejo fazer um cуdigo para meu GM, poderia adaptar? Sim. Porйm o cуdigo estб com erros, ao digitar /reports, nгo aparece nada. Fico grato pela tentativa.
Reply
#8

Quote:
Originally Posted by ThuuGLif3
Посмотреть сообщение
Nгo desejo filterscript. Desejo fazer um cуdigo para meu GM, poderia adaptar? Sim. Porйm o cуdigo estб com erros, ao digitar /reports, nгo aparece nada. Fico grato pela tentativa.
Quote:
Originally Posted by 1sbedx
Посмотреть сообщение
PHP код:
#include <a_samp>
#include <zcmd>
#define MAX_REPORTS (25)
enum reportData {
    
reportExists,
    
reportPlayer,
    
reportText[128]
};
new 
Report[MAX_REPORTS][reportData];
public 
OnFilterScriptInit()
{
    return 
1;
}
public 
OnFilterScriptExit()
{
    return 
1;
}
stock ReportAdd(playeridtext[])
{
    new 
reportid GetFreeReportID();
    
    if (
reportid != -1)
    {
        
Report[reportid][reportExists] = true;
        
Report[reportid][reportPlayer] = playerid;
        
format(Report[reportid][reportText], 128text);
        return 
reportid;
    }
    return -
1;
}
stock GetFreeReportID()
{
    for (new 
0!= MAX_REPORTS++) if (!Report[i][reportExists])
        return 
i;
        
    return -
1;
}
CMD:report(playeridparams[])
{
    new 
reportid ReportAdd(playeridparams);
    if (
reportid != -1)
    {
        for (new 
0MAX_PLAYERS++) if (IsPlayerAdmin(i)) {
            
SendClientMessage(i, -1"Foi recebido um relatуrio.");
        }
        
SendClientMessage(playerid, -1"Seu relatуrio foi enviado para todos os administradores on-line.");
    }
    else {
        
SendClientMessage(playerid, -1"A lista de relatуrios estб cheia. Por favor, espere um pouco.");
    }
    return 
1;
}
CMD:reports(playeridparams[])
{
    new 
countstring[128];
    
    if (!
IsPlayerAdmin(playerid))
        return 
0;
    for (new 
0!= MAX_REPORTS++) if (Report[i][reportExists])
    {
        
format(stringsizeof(string), "%i - %s [%i] relatou: %s"iGetName(Report[i][reportPlayer]), Report[i][reportPlayer], Report[i][reportText]);
        
SendClientMessage(playerid, -1string);
        
        
count++;
    }
    if (!
count)
        return 
SendClientMessage(playerid, -1"Nгo hб relatуrios ativos a serem exibidos.");
        
    return 
1;
}
stock GetName(playerid)
{
    new 
name[MAX_PLAYER_NAME];
    
     
GetPlayerName(playeridnamesizeof(name));
     return 
name;
}
CMD:ar(playeridparams[])
{
    new 
reportid strval(params), string[128];
        
    if (!
IsPlayerAdmin(playerid))
        return 
0;
    
format(stringsizeof(string), "%s aceitou o seu relatуrio."GetName(playerid));
    
SendClientMessage(Report[reportid][reportPlayer], -1string);
    
Report[reportid][reportExists] = false;
    
Report[reportid][reportPlayer] = INVALID_PLAYER_ID;
    
Report[reportid][reportText] = '\0';
    return 
1;





Reply
#9

Quote:
Originally Posted by ThuuGLif3
Посмотреть сообщение
Nгo desejo filterscript. Desejo fazer um cуdigo para meu GM, poderia adaptar? Sim. Porйm o cуdigo estб com erros, ao digitar /reports, nгo aparece nada. Fico grato pela tentativa.
Vocк entrou como administrador RCON?
Reply
#10

vcs sгo fodas ele disse que possui o sistema ja no GM dele e vcs postando comandos e funзхes para serem adaptados ! Simples poste o CMD de /versos e o CMD usando pra enviar o SOS !
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)