[Ajuda] Problema com cуdigo e MySQL
#1

Olб a todos, estou aqui pois estou com uma DOR DE CABEЗA TREMENDA. O problema й o seguinte: Eu estou а criar um comando de banimento e que o mesmo insira informaзхes completas de banimento ao banco de dados, porйm, o problema й que quando eu vejo a tabela com as informaзхes "inseridas", acaba saindo 2 valores em branco (Nome e Motivo).

Eis aqui os cуdigos que estou utilizando do mesmo. Comando /ban:
pawn Код:
CMD:ban(playerid, params[]){
    if(APlayerData[playerid][Admin] < 1)  return SendClientMessage(playerid, COLOR_LIGHTRED, "Vocк nгo tem permissгo para utilizar este comando.");
    new pID, tMotivo[64], dBan, mBan, aBan, hBan, miBan, sBan, gIP[16];
    if(sscanf(params, "us[128]", pID, tMotivo)) return SendClientMessage(playerid, COLOR_LIGHTGRAY, "USE: /ban [ID] [Motivo]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, COLOR_LIGHTGRAY, "Este ID nгo estб conectado.");
    gettime(hBan, miBan, sBan);
    GetPlayerIp(pID, gIP, 16);

    format(ABanData[pID][Nome], 24, "%s", GetNome(pID));
    format(ABanData[pID][AdminBaniu], 24, "%s", GetNome(playerid));
    format(ABanData[pID][MotivoBan], 64, "%s", tMotivo);
    format(ABanData[pID][DataBan], 50, "%s", getdate(aBan, mBan, dBan));
    format(ABanData[pID][IP], 16, "%s", gIP);
    orm_insert(ABanData[pID][OrmID], "", "");

    format(tString, sizeof(tString), " Vocк baniu o jogador %s ID:[%d].", GetNome(pID), pID);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, tString);
    format(tString, sizeof(tString), "| AdminCmd | O jogador %s ID: [%d] foi banido pelo Administrador %s ID:[%d].", GetNome(pID), pID, GetNome(playerid), playerid);
    SendClientMessageToAll(COLOR_LIGHTRED, tString);
    Kick(pID);
    return 1;
}
Cуdigo do GetNome:
pawn Код:
stock GetNome(playerid){
    new pNome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pNome, sizeof(pNome));
    return pNome;
}
Espero resolver isso o mais rбpido possнvel, e por favor apontem os erros.
Reply
#2

Tente desta maneira abaixo, porйm verifique antes se no banco de dados estб setando o nome do administrador que baniu. Se estiver setando verifique sua enum pois o erro possa estar lб!
PHP код:
CMD:ban(playeridparams[])
{
    if(
APlayerData[playerid][Admin] < 1) return SendClientMessage(playeridCOLOR_LIGHTRED"Vocк nгo tem permissгo para utilizar este comando.");
    new 
pIDtMotivo[64], dBanmBanaBanhBanmiBansBangIP[16], aname[MAX_PLAYER_NAME], pname[MAX_PLAYER_NAME];
    if(
sscanf(params"us[128]"pIDtMotivo)) return SendClientMessage(playeridCOLOR_LIGHTGRAY"USE: /ban [ID] [Motivo]");
    if(!
IsPlayerConnected(pID)) return SendClientMessage(playeridCOLOR_LIGHTGRAY"Este ID nгo estб conectado.");
    
gettime(hBanmiBansBan);
    
GetPlayerName(pIDanamesizeof(aname));
    
GetPlayerName(playeridpnamesizeof(pname));
    
GetPlayerIp(pIDgIP16);

    
format(ABanData[pID][Nome], 24"%s"aname);
    
format(ABanData[pID][AdminBaniu], 24"%s"pname);
    
format(ABanData[pID][MotivoBan], 64"%s"tMotivo);
    
format(ABanData[pID][DataBan], 50"%s"getdate(aBanmBandBan));
    
format(ABanData[pID][IP], 16"%s"gIP);
    
orm_insert(ABanData[pID][OrmID], """");

    
format(tStringsizeof(tString), " Vocк baniu o jogador %s ID:[%d]."anamepID);
    
SendClientMessage(playeridCOLOR_LIGHTBLUEtString);
    
format(tStringsizeof(tString), "| AdminCmd | O jogador %s ID: [%d] foi banido pelo Administrador %s ID:[%d]."anamepIDpnameplayerid);
    
SendClientMessageToAll(COLOR_LIGHTREDtString);
    
Kick(pID);
    return 
1;

Reply
#3

Pra falar a verdade estб tudo corretamente com as Enums, e ele seta no banco de dados o nome do administrador que baniu, sу nгo mostra o nome do banido e o motivo do ban.
Reply
#4

Quote:
Originally Posted by [BPW]Wesley
Посмотреть сообщение
Pra falar a verdade estб tudo corretamente com as Enums, e ele seta no banco de dados o nome do administrador que baniu, sу nгo mostra o nome do banido e o motivo do ban.
Poste sua enum aqui e um print do banco de dados.
Reply
#5

pawn Код:
enum bInfo{
    Nome[24],
    AdminBaniu[24],
    MotivoBan[24],
    DataBan[50],
    IP[16],
    ID,
    ORM:OrmID
};
new ABanData[MAX_PLAYERS][bInfo];
Abaixo o link com a imagem do banco de dados (no caso a tabela):
http://imgur.com/3WSHhdo
Reply
#6

Tenta assim.
PHP код:
enum bInfo{
    
Nome[30],
    
AdminBaniu[30],
    
MotivoBan[70],
    
DataBan[70],
    
IP[16],
    
ID,
    
ORM:OrmID
};
new 
ABanData[MAX_PLAYERS][bInfo]; 


Se nгo funcionar poste a base do script aonde seta o salvamento no banco de dados.
Reply
#7

Infelizmente nгo foi ...

Os cуdigos envolvendo a enum sгo esses:

OnPlayerConnected(playerid).
pawn Код:
public OnPlayerConnect(playerid)
{
    /* ORM Banimento */
        GetPlayerName(playerid, ABanData[playerid][Nome], 30);
    new ORM:ormid = ABanData[playerid][OrmID] = orm_create("banidos", MySQL);
    orm_addvar_string(ormid, ABanData[playerid][Nome], 30, "Nome");
    orm_addvar_string(ormid, ABanData[playerid][AdminBaniu], 30, "AdminBaniu");
    orm_addvar_string(ormid, ABanData[playerid][MotivoBan], 30, "MotivoBan");
    orm_addvar_string(ormid, ABanData[playerid][IP], 16, "IP");
    orm_addvar_int(ormid, ABanData[playerid][ID], "ID");
   
    orm_setkey(ormid, "Nome");
        orm_select(ormid, "OnPlayerVerificar", "d", playerid);
    return 1;
}
OnPlayerVerificar(playerid);
pawn Код:
public OnPlayerVerificar(playerid) {
    if(orm_errno(ABanData[playerid][OrmID]) == ERROR_OK){
        SendClientMessage(playerid, -1, "Vocк estб banido.");
        Kick(playerid);
    } else {
        // Tirei pois й o ORM dos dados de cadastro.
    }
    return 1;
}
E normalmente para fazer o salvamento dos dados na tabela eu uso o seguinte:
pawn Код:
orm_insert(ABanData[playerid][OrmID]);
e mais uma vez obrigado por tentar me ajudar. Espero que vocк consiga resolver isso por favor.
Reply
#8

Nгo e preciso setar na var , insira logo no banco de dados , quando quiser ver o ban use o select , assim fica mais facil .
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)