[Ajuda] Banir conta.
#1

Olб! tenho um comando de banir um jogador em estado off. Porem... ele so pega o nick do msm,e eu queria colocar um motivo,ja tentei usar sscanf,porem o msm da erro... alguem pd me ajudar?

comando:

PHP код:
dcmd_banirconta(playerid,params[]) {
if(
PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,red,"| ERRO | Comando Invalido!  /Comandos");
if(
strlen(params) < 3) return SendClientMessage(playerid,red,"| ERRO | Digite: /banirconta [Nick]");
if(
IsIllegalName(params)) return SendClientMessage(playerid,red,"| ERRO | Nick ilegal!");
if(!
udb_Exists(params)) return SendClientMessage(playerid,red,"| ERRO | A conta nгo Existe!");
if(
PlayerInfo[playerid][Level] < 5){if(dUserINT(params).("level") >= 1) return SendClientMessage(playerid,red,"| ERRO | A conta pertence a um membro da Administraзгo!");}
if(
dUserINT(params).("banned") == 1) return SendClientMessage(playerid,red,"| ERRO | A Conta jб permanece Banida!");
dUserSetINT(params).("banned",1);
new 
SampDotBan[128],file[255];
format(file,sizeof(file),"/ladmin/users/%s.sav",udb_encode(params));
new 
tmp2[256]; tmp2 dini_Get(file,"ip");
format(SampDotBan,sizeof(SampDotBan),"banip %s"tmp2);
SendRconCommand(SampDotBan);
SendRconCommand("reloadbans");
if(
dUserINT(params).("banned") == 1){
CMDMessageToAdmins(playerid,"banirconta");
//--------------- LOGAR
new ADMNAME[MAX_PLAYER_NAME];GetPlayerName(playeridADMNAMEMAX_PLAYER_NAME);
new 
logstring[128];format(logstringsizeof(logstring), "| BAN-LOG | O(A) %s %s baniu a conta do(a) jogador(a) %s",CargoAdmin(playerid), ADMNAME,params);
SaveToFile("BannedAccs",logstring);
//---------------
SendClientMessage(playerid,azulao,"| INFO | Vocк baniu a conta e o IP do jogador(a)!");
new 
frm[260];
new 
motivo[250];
new 
year,month,day,hour,minuite,secondgetdate(yearmonthday); gettime(hour,minuite,second);
format(frm,sizeof(frm),"| ADMINISTRAЗГO | O(A) %s %s baniu a conta do jogador(a) %s",CargoAdmin(playerid),ADMNAME,params,motivo[2],day,month,year,hour,minuite);
MessageToAdmins(vermelho,frm);
}else{
SendClientMessage(playerid,red,"| ERRO | Nгo й possivel banir a conta!");}
return 
1;} 
Reply
#2

Vou te ajudar, mas nгo vou fazer pra vocк.
Me envia o cуdigo com sscanf pra eu analisar o erro.
Reply
#3

Quote:
Originally Posted by ipsLuan
Посмотреть сообщение
Vou te ajudar, mas nгo vou fazer pra vocк.
Me envia o cуdigo com sscanf pra eu analisar o erro.

//topo do fs
PHP код:
#include sscanf 
Comando:

PHP код:
dcmd_banirconta(playerid,params[]) {
new 
motivo[250]; 
if(
PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,red,"| ERRO | Comando Invalido!  /Comandos");
if(
sscanf(params"ss",paramsmotivo)) return SendClientMessage (playerid0xFF0000FF"| ERRO | Digite: /Banirconta [Nick] [Motivo]");
if(
IsIllegalName(params)) return SendClientMessage(playerid,red,"| ERRO | Nick ilegal!");
if(!
udb_Exists(params)) return SendClientMessage(playerid,red,"| ERRO | A conta nгo Existe!");
if(
PlayerInfo[playerid][Level] < 5){if(dUserINT(params).("level") >= 1) return SendClientMessage(playerid,red,"| ERRO | A conta pertence a um membro da Administraзгo!");}
if(
dUserINT(params).("banned") == 1) return SendClientMessage(playerid,red,"| ERRO | A Conta jб permanece Banida!");
dUserSetINT(params).("banned",1);
new 
SampDotBan[128],file[255];
format(file,sizeof(file),"/ladmin/users/%s.sav",udb_encode(params));
new 
tmp2[256]; tmp2 dini_Get(file,"ip");
format(SampDotBan,sizeof(SampDotBan),"banip %s"tmp2);
SendRconCommand(SampDotBan);
SendRconCommand("reloadbans");
if(
dUserINT(params).("banned") == 1){
CMDMessageToAdmins(playerid,"banirconta");
//--------------- LOGAR
new ADMNAME[MAX_PLAYER_NAME];GetPlayerName(playeridADMNAMEMAX_PLAYER_NAME);
new 
logstring[128];format(logstringsizeof(logstring), "| BAN-LOG | O(A) Admin(a) %s baniu a conta do(a) Jogador(a): (%s)"ADMNAME,params);
SaveToFile("BannedAccs",logstring);
//---------------
SendClientMessage(playerid,azulao,"| INFO | A conta e o IP foi banidas com Sucesso!");
new 
frm[260];
new 
year,month,day,hour,minuite,secondgetdate(yearmonthday); gettime(hour,minuite,second);
format(frm,sizeof(frm),"| GNC-Admin | O(A) %s %s baniu o(a) jogador(a) %s ( Motivo: %s )",CargoAdmin(playerid),ADMNAME,params,motivo,day,month,year,hour,minuite);  //mudei isso
SendClientMessageToAll(red,frm);
}else{
SendClientMessage(playerid,red,"| ERRO | Nгo й possivel banir a conta!");}
return 
1;} 
Porem na hora de testar,o fs do Ladmin,nao funciona na gm
Reply
#4

PHP код:
new nomeJogador[24], motivo[56];
if(
sscanf(params"s[24]s[56]"nomeJogadormotivo)) 
Edite as variбveis de acordo com a tua necessidade.
Reply
#5

Quote:
Originally Posted by ipsLuan
Посмотреть сообщение
PHP код:
new nomeJogador[24], motivo[56];
if(
sscanf(params"s[24]s[56]"nomeJogadormotivo)) 
Edite as variбveis de acordo com a tua necessidade.
atй copilou mais o fs nгo ligou. ;-;
Reply
#6

Vocк compilou o FS?
Vocк incluiu o sscanf?
Reply
#7

Quote:
Originally Posted by ipsLuan
Посмотреть сообщение
Vocк compilou o FS?
Vocк incluiu o sscanf?
coloquei o "#include sscanf" no topo do fs.

PHP код:
C:\Users\Dean\Desktop\Projeto\filterscripts\ladmin4v2.pwn(8320) : warning 235: public function lacks forward declaration (symbol "ProcessarCadeiaSegundo")
Pawn compiler 3.2.3664              Copyright (c1997-2006ITB CompuPhase
1 Warning 
esse warning й de outro cmd.
Reply
#8

Й sscanf2 a include.
Em relaзгo ao erro, falta criar o forward.

Use isso como base:
PHP код:
CMD:ban(playeridparams[])
{
    new 
nomeJogador[24], motivo[60];
    if(
sscanf(params"s[24]s[60]"nomeJogadormotivo)) return SendClientMessage(playerid, -1"Uso correto: /ban [Nome_Jogador] [Motivo]");
    
format(stringsizeof(string), "[BAN] %s foi banido pelo motivo: %s."nomeJogadormotivo);
    
SendClientMessageToAll(-1string);
    return 
1;

Reply
#9

Quote:
Originally Posted by ipsLuan
Посмотреть сообщение
Й sscanf2 a include.
Em relaзгo ao erro, falta criar o forward.

Use isso como base:
PHP код:
CMD:ban(playeridparams[])
{
    new 
nomeJogador[24], motivo[60];
    if(
sscanf(params"s[24]s[60]"nomeJogadormotivo)) return SendClientMessage(playerid, -1"Uso correto: /ban [Nome_Jogador] [Motivo]");
    
format(stringsizeof(string), "[BAN] %s foi banido pelo motivo: %s."nomeJogadormotivo);
    
SendClientMessageToAll(-1string);
    return 
1;

eu testei dessa forma


PHP код:
dcmd_banirconta(playerid,params[]) {
if(
PlayerInfo[playerid][Level] < 2) return SendClientMessage(playerid,red,"| ERRO | Comando Invalido!  /Comandos");
new 
nomeJogador[900];
new 
motivo[900];
if(!
strlen(nomeJogador) || !strlen(motivo)) return SendClientMessage(playeridred"| ERRO | Digite: /Banirconta [Nick] [Motivo]");
if(
IsIllegalName(params)) return SendClientMessage(playerid,red,"| ERRO | Nick ilegal!");
if(!
udb_Exists(params)) return SendClientMessage(playerid,red,"| ERRO | A conta nгo Existe!");
if(
PlayerInfo[playerid][Level] < 5){if(dUserINT(params).("level") >= 1) return SendClientMessage(playerid,red,"| ERRO | A conta pertence a um membro da Administraзгo!");}
if(
dUserINT(params).("banned") == 1) return SendClientMessage(playerid,red,"| ERRO | A Conta jб permanece Banida!");
dUserSetINT(params).("banned",1);
new 
SampDotBan[128],file[255];
format(file,sizeof(file),"/ladmin/users/%s.sav",udb_encode(params));
new 
tmp2[256]; tmp2 dini_Get(file,"ip");
format(SampDotBan,sizeof(SampDotBan),"banip %s"tmp2);
SendRconCommand(SampDotBan);
SendRconCommand("reloadbans");
if(
dUserINT(params).("banned") == 1){
CMDMessageToAdmins(playerid,"banirconta");
//--------------- LOGAR
new ADMNAME[MAX_PLAYER_NAME];GetPlayerName(playeridADMNAMEMAX_PLAYER_NAME);
new 
logstring[128];format(logstringsizeof(logstring), "| BAN-LOG | O(A) Admin(a) %s baniu a conta do(a) Jogador(a): (%s)"ADMNAME,params);
SaveToFile("BannedAccs",logstring);
//---------------
SendClientMessage(playerid,azulao,"| INFO | A conta e o IP foi banidas com Sucesso!");
new 
frm[260];
new 
year,month,day,hour,minuite,secondgetdate(yearmonthday); gettime(hour,minuite,second);
format(frm,sizeof(frm),"| GNC-Admin | O(A) %s %s baniu o(a) jogador(a) %s ( Motivo: %s )",CargoAdmin(playerid),ADMNAME,nomeJogador,motivo,day,month,year,hour,minuite);  //mudei isso
SendClientMessageToAll(red,frm);
}else{
SendClientMessage(playerid,red,"| ERRO | Nгo й possivel banir a conta!");}
return 
1;} 
porem na hora de testar quando eu digito "/Banirconta Fulano teste" ele fica mostrando isso: | ERRO | Digite: /Banirconta [Nick] [Motivo]"
Reply
#10

Use sscanf. Desde quando comecei a estudar a linguagem, nunca utilizei strlen para este tipo de coisa.
Estou no trabalho, nгo posso te dar uma ajuda melhor.
E tambйm, evite criar strings grandes, como й o caso acima que vocк cria com 900 sendo que nгo vai utilizar nem 50.



PHP код:
if(sscanf(params"s[24]s[56]"nomeJogadormotivo)) 
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)