[AJUDA] Sistema de Corregedor
#1

Nгo to conseguindo fazer o sistema de corregedor, por exemplo, quando vou digitar '/TirarLevel' da comandos invбlido, e quando logo na RCON pega certinho...

Vбriavel:

pawn Код:
new corregedor[MAX_PLAYERS];
/SetarC (Seta o Corregedor)

pawn Код:
if(strcmp(cmd, "/SetarC", true) == 0) {
if(!IsPlayerAdmin(playerid)) return 0;
new tmp[256];
new plid;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, 0x008040AA, "(ERRO) Use: /setarc [id].");
return 1;
}
plid = strval(tmp);
if(IsPlayerConnected(plid)){
new pname[MAX_PLAYER_NAME];
GetPlayerName(plid, pname, MAX_PLAYER_NAME);
format(file2, sizeof(file2), PASTA_CONTAS, pname);
dini_IntSet(file2, "corregedor",1);
SpawnPlayer(plid);
SendClientMessage(playerid, 0x00FF00AA, "| INFO | Corregedor Setado com sucesso");
SendClientMessage(plid, 0x00FF00AA, "| INFO | Um administrador setou vocк como corregedor!");
return 1;
}else{
SendClientMessage(playerid, Vermelho, "(ERRO) ID invбlido");
return 1;
}
}
/TirarC (Tira o corregedor do player)

pawn Код:
if(strcmp(cmd, "/tirarc", true) == 0) {
if(!IsPlayerAdmin(playerid)) return 0;
new tmp[256];
new plid;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, 0x008040AA, "(ERRO) Use: /tirarmod [id].");
return 1;
}
plid = strval(tmp);
if(IsPlayerConnected(plid)){
new pname[MAX_PLAYER_NAME];
GetPlayerName(plid, pname, MAX_PLAYER_NAME);
format(file2, sizeof(file2), PASTA_CONTAS, pname);
dini_IntSet(file2, "corregedor",0);
SpawnPlayer(plid);
SendClientMessage(playerid, 0x00FF00AA, "| INFO | Corregedor tirado com sucesso!");
SendClientMessage(plid, 0x00FF00AA, "| INFO | O administrador tirou seu corregedor!");
return 1;
}else{
SendClientMessage(playerid, Vermelho, "(ERRO) ID invбlido");
return 1;
}
}
/Corregedores (Vк os corregedores conectados)

pawn Код:
if(!strcmp(cmdtext, "/corregedores", true))
{
SendClientMessage(playerid,0x96D742AA, "~> Corregedores conectados:");
new count=0;
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i)){
if(admin[i]){
new str[256];
new pname[24];
GetPlayerName(i, pname, 24);
format(file2, sizeof(file2), PASTA_CONTAS, pname);
if(corregedor[i] == 1){
format(str,sizeof(str),"~ %s [ID %d]", pname,i);
}
SendClientMessage(playerid, 0xFFFFFFAA, str);
count++;
}
}
}
if(count == 0)
{
SendClientMessage(playerid, Vermelho, "{FF0000}~> {FFFFFF}Nenhum corregedor conectado ao servidor no momento!");
}
return 1;
}
Tem um probleminha com o /Corregedores, Quando digita /Corregedores sу aparece ''Corregedores conectados:'' e em baixo nгo aparece nada...

/TirarLevel (Tira lйveis do player que cometeu abuser, no mбximo 10).

pawn Код:
if(strcmp(cmd,"/TirarLevel", true)==0)
{
new aname[MAX_PLAYER_NAME];
GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
format(file, sizeof(file), PASTA_CONTAS, aname);
if(corregedor[playerid] == 1){
SendClientMessage(playerid, Vermelho, "| ERRO | Vocк nгo tem permissгo!");
return 1;
}
if(corregedor[playerid] == 1  || IsPlayerAdmin(playerid)){
new tmp[256];
new plid, skin;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)){
SendClientMessage(playerid, Vermelho, "Digite: /TirarLevel [id] [level]");
return 1;
}
plid = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, Vermelho, "Digite: /TirarLevel [id] [level]");
return 1;
}
skin = strval(tmp);
if(skin > -1 || skin <= -11){
SendClientMessage(playerid, Vermelho, "| ERRO | Nгo й possivel tirar mais de 10 lйvels ou menos de 1!");
return 1;
}
skin = strval(tmp);
new pname[MAX_PLAYER_NAME];
GetPlayerName(plid, pname, MAX_PLAYER_NAME);
format(file2, sizeof(file2), PASTA_CONTAS, pname);
if(IsPlayerConnected(plid)){
format(string, sizeof(string), "* O corregedor %s tirou %d leveis de vocк.", aname, skin);
SendClientMessage(plid, tcadm, string);
format(string, sizeof(string), "* Vocк tirou %d leveis do jogador '%s'.", skin, pname);
SendClientMessage(playerid, Blue, string);
dini_IntSet(file2, "Level", dini_Int(file2, "Level")+skin);
return 1;
}else{
SendClientMessage(playerid, Vermelho, "(INFO) Jogador nгo conectado.");
return 1;
}
}
}
Salva certinho, mais nгo aparece no /Corregedores, e sу dб para usar /TirarLevel na RCON!

Se alguйm puder me ajudar, obrigado.
Reply
#2

Quote:
Originally Posted by Allanrokeiro
Посмотреть сообщение
Nгo to conseguindo fazer o sistema de corregedor, por exemplo, quando vou digitar '/TirarLevel' da comandos invбlido, e quando logo na RCON pega certinho...

Vбriavel:

pawn Код:
new corregedor[MAX_PLAYERS];
/SetarC (Seta o Corregedor)

pawn Код:
if(strcmp(cmd, "/SetarC", true) == 0) {
if(!IsPlayerAdmin(playerid)) return 0;
new tmp[256];
new plid;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, 0x008040AA, "(ERRO) Use: /setarc [id].");
return 1;
}
plid = strval(tmp);
if(IsPlayerConnected(plid)){
new pname[MAX_PLAYER_NAME];
GetPlayerName(plid, pname, MAX_PLAYER_NAME);
format(file2, sizeof(file2), PASTA_CONTAS, pname);
dini_IntSet(file2, "corregedor",1);
SpawnPlayer(plid);
SendClientMessage(playerid, 0x00FF00AA, "| INFO | Corregedor Setado com sucesso");
SendClientMessage(plid, 0x00FF00AA, "| INFO | Um administrador setou vocк como corregedor!");
return 1;
}else{
SendClientMessage(playerid, Vermelho, "(ERRO) ID invбlido");
return 1;
}
}
/TirarC (Tira o corregedor do player)

pawn Код:
if(strcmp(cmd, "/tirarc", true) == 0) {
if(!IsPlayerAdmin(playerid)) return 0;
new tmp[256];
new plid;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, 0x008040AA, "(ERRO) Use: /tirarmod [id].");
return 1;
}
plid = strval(tmp);
if(IsPlayerConnected(plid)){
new pname[MAX_PLAYER_NAME];
GetPlayerName(plid, pname, MAX_PLAYER_NAME);
format(file2, sizeof(file2), PASTA_CONTAS, pname);
dini_IntSet(file2, "corregedor",0);
SpawnPlayer(plid);
SendClientMessage(playerid, 0x00FF00AA, "| INFO | Corregedor tirado com sucesso!");
SendClientMessage(plid, 0x00FF00AA, "| INFO | O administrador tirou seu corregedor!");
return 1;
}else{
SendClientMessage(playerid, Vermelho, "(ERRO) ID invбlido");
return 1;
}
}
/Corregedores (Vк os corregedores conectados)

pawn Код:
if(!strcmp(cmdtext, "/corregedores", true))
{
SendClientMessage(playerid,0x96D742AA, "~> Corregedores conectados:");
new count=0;
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i)){
if(admin[i]){
new str[256];
new pname[24];
GetPlayerName(i, pname, 24);
format(file2, sizeof(file2), PASTA_CONTAS, pname);
if(corregedor[i] == 1){
format(str,sizeof(str),"~ %s [ID %d]", pname,i);
}
SendClientMessage(playerid, 0xFFFFFFAA, str);
count++;
}
}
}
if(count == 0)
{
SendClientMessage(playerid, Vermelho, "{FF0000}~> {FFFFFF}Nenhum corregedor conectado ao servidor no momento!");
}
return 1;
}
Tem um probleminha com o /Corregedores, Quando digita /Corregedores sу aparece ''Corregedores conectados:'' e em baixo nгo aparece nada...

/TirarLevel (Tira lйveis do player que cometeu abuser, no mбximo 10).

pawn Код:
if(strcmp(cmd,"/TirarLevel", true)==0)
{
new aname[MAX_PLAYER_NAME];
GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
format(file, sizeof(file), PASTA_CONTAS, aname);
if(corregedor[playerid] == 1){
SendClientMessage(playerid, Vermelho, "| ERRO | Vocк nгo tem permissгo!");
return 1;
}
if(corregedor[playerid] == 1  || IsPlayerAdmin(playerid)){
new tmp[256];
new plid, skin;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)){
SendClientMessage(playerid, Vermelho, "Digite: /TirarLevel [id] [level]");
return 1;
}
plid = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, Vermelho, "Digite: /TirarLevel [id] [level]");
return 1;
}
skin = strval(tmp);
if(skin > -1 || skin <= -11){
SendClientMessage(playerid, Vermelho, "| ERRO | Nгo й possivel tirar mais de 10 lйvels ou menos de 1!");
return 1;
}
skin = strval(tmp);
new pname[MAX_PLAYER_NAME];
GetPlayerName(plid, pname, MAX_PLAYER_NAME);
format(file2, sizeof(file2), PASTA_CONTAS, pname);
if(IsPlayerConnected(plid)){
format(string, sizeof(string), "* O corregedor %s tirou %d leveis de vocк.", aname, skin);
SendClientMessage(plid, tcadm, string);
format(string, sizeof(string), "* Vocк tirou %d leveis do jogador '%s'.", skin, pname);
SendClientMessage(playerid, Blue, string);
dini_IntSet(file2, "Level", dini_Int(file2, "Level")+skin);
return 1;
}else{
SendClientMessage(playerid, Vermelho, "(INFO) Jogador nгo conectado.");
return 1;
}
}
}
Salva certinho, mais nгo aparece no /Corregedores, e sу dб para usar /TirarLevel na RCON!

Se alguйm puder me ajudar, obrigado.
o.o COPY/PASTE RIAIRARIARI!


pawn Код:
skin = strval(tmp);
/\ Isso no /setarlevel - AVE MARIA!! VAI ESTUDAR POAR!!

Obs: corregedoria tem no server TSSA, ou seja nem a cara de pau de inventar algo nгo teve COPY/PASTEІ
Reply
#3

Identa o cуdigo cara. Isso aн tб uma confusгo sу.

Apenas os admins sгo corregedores?

Se vocк nгo estiver logado na rcon, vai retornar 0, coloca pra retornar uma mensagem
Reply
#4

Estou falando, tipo, quando tenta tirar leveis, nгo dб, sу quando loga na RCON que dб, mesmo setado corregedor, nгo dб para tirar level... dб comando invбlido.
Reply
#5

Que code mais mal identado cara. Chega a dar nojo :S
Reply
#6

Isso ta horrivel cara identa o codigo pf.
Alem dos problemas citados acima..

Faltou definir a Var "corregedor[plid] = 1;" no /sertarc e "corregedor[plid] = 0;" no /tirarc So fazendo isso que eles irгo ser relmente carregadores!!
Reply
#7

Код:
dini_Set(file,"Corregedor","0");
Код:
new mncorregedor;
Код:
dini_IntSet(file2, "Corregedor", mncorregedor);
Код:
if(strcmp(cmd,"/TirarLevel", true)==0)
{
new aname[MAX_PLAYER_NAME];
GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
format(file, sizeof(file), PASTA_CONTAS, aname);
if(corregedor[playerid] == 1){
SendClientMessage(playerid, Vermelho, "| ERRO | Vocк nгo tem permissгo!");
return 1;
}
if(dini_Int(filene(aname),"Corregedor") >= 1){  //sу para corredores *-*
new tmp[256];
new plid, skin;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)){
SendClientMessage(playerid, Vermelho, "Digite: /TirarLevel [id] [level]");
return 1;
}
plid = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, Vermelho, "Digite: /TirarLevel [id] [level]");
return 1;
}
skin = strval(tmp);
if(skin > -1 || skin <= -11){
SendClientMessage(playerid, Vermelho, "| ERRO | Nгo й possivel tirar mais de 10 lйvels ou menos de 1!");
return 1;
}
skin = strval(tmp);
new pname[MAX_PLAYER_NAME];
GetPlayerName(plid, pname, MAX_PLAYER_NAME);
format(file2, sizeof(file2), PASTA_CONTAS, pname);
if(IsPlayerConnected(plid)){
format(string, sizeof(string), "* O corregedor %s tirou %d leveis de vocк.", aname, skin);
SendClientMessage(plid, tcadm, string);
format(string, sizeof(string), "* Vocк tirou %d leveis do jogador '%s'.", skin, pname);
SendClientMessage(playerid, Blue, string);
dini_IntSet(file2, "Level", dini_Int(file2, "Level")+skin);
return 1;
}else{
SendClientMessage(playerid, Vermelho, "(INFO) Jogador nгo conectado.");
return 1;
}
}
}
Nгo testei espero ter ajudado *-*
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)