[AJUDA] Urgente
#1

@EDIT (14/03/12)

Galera esses dias atrбs meu servidor estб acontecendo um ъnico bug... Quando alguem entra no servidor ele ganha admin , agora me falaram que й depois de algum administrador sair... Como faзo pra salvar mesmo quando o cara sai com alguns dos casos ex:
Voltade Prуpria
Kick ou Ban
Queda de conexгo ou crash

Agora queria ver se й porque um adm saio ou os publics OnPlayerConnect e Disconnect estгo salvando algo errado..
Sem mais delongas irei postar os dois publics!

pawn Код:
public OnPlayerConnect(playerid)
{
TogglePlayerSpectating(playerid, true);
ForceClassSelection(playerid);
SetPVarInt(playerid, "Intro", 0);
SetTimerEx("ShowIntro", 1000, 0, "d", playerid);
blockpm[playerid] = 0;
PlayerInfo[playerid][LoginsFalsos] = 0;
dini_Int(file,"LevelAdmin");
new aname[MAX_PLAYER_NAME];
GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
format(file, sizeof(file), PASTA_CONTAS, aname);
dini_IntSet(file, "DM", 0);
TextDrawShowForPlayer(playerid, topblack);
TextDrawShowForPlayer(playerid, backblack);
CPSERVICE_actualcp[playerid] = 0;
AFK[playerid]=0;
multar[playerid]= 0;
autoescola[playerid] = 0;
nogame[playerid] = 0;
noevento[playerid] = 0;
PlayerInfo[playerid][Logged] = 0;
vip[playerid] = 0;
guard[playerid] = 0;
GPS_Spawned[playerid] = 0;
DMLiberado[playerid] = 0;
Mute[playerid] = 0;
SpawnPlayer(playerid);
//news
new Pname[MAX_PLAYER_NAME];
new string[256];
new sstring[256];
//============================================================================================================
if(dini_Int("nickban.ini",PlayerName(playerid)) == 1)
{
SendClientMessage(playerid, 0x11B1FFAA, "Vocк foi banido Motivo: Vocк estб banido!");
format(sstring, sizeof(sstring), "%s (%d) Foi banido |Motivo|: Conta estб banida!", aname,playerid);
SendClientMessageToAll(0x11B1FFAA, sstring);
Kick(playerid);
return 1;
}
if(dini_Int("banidos.ini",PlayerName(playerid)) == 1)
{
SendClientMessage(playerid, 0x11B1FFAA, "Vocк foi kickado |Motivo|: Conta estб banida!");
format(sstring, sizeof(sstring), "%s (%d) Foi kickado |Motivo|: Conta estб banida", aname,playerid);
SendClientMessageToAll(0x11B1FFAA, sstring);
Kick(playerid);
return 1;
}
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
StopAudioStreamForPlayer(playerid);
new aname[MAX_PLAYER_NAME];
GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
format(file, sizeof(file), PASTA_CONTAS, aname);
dini_IntSet(file, "Admin", pAdmin[playerid]);
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(file,sizeof(file),"Contas/%s.ini",name);
dini_IntSet(file, "Admin", pAdmin[playerid]);
new Pname[MAX_PLAYER_NAME];
new string[256];
GetPlayerName(playerid, Pname, sizeof(Pname));
switch(reason)
{
case 0: format(string, sizeof(string), "» %s saiu do servidor (Queda de conexгo)", Pname);
case 1: format(string, sizeof(string), "» %s saiu do servidor (Vontade Prуpria)", Pname);
case 2: format(string, sizeof(string), "» %s saiu do servidor (Kickado ou Banido)", Pname);
}
Mute[playerid] = 0;
SendClientMessageToAll(C_Temac, string);
TextDrawHideForPlayer(playerid, Relogio);
new Interior;
Interior = GetPlayerInterior(playerid);
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
CPSERVICE_actualcp[playerid] = 0;
new grana;
grana = GetPlayerMoney(playerid);
dini_IntSet(file, "Dinheiro", grana);
dini_IntSet(file,"Continuar",1);
dini_FloatSet(file,"ContinuarX",Float:X);
dini_FloatSet(file,"ContinuarY",Float:Y);
dini_FloatSet(file,"ContinuarZ",Float:Z);
dini_IntSet(file,"ContinuarI",Interior);
dini_IntSet(file, "convitent", 0);
dini_IntSet(file, "Entrevista", 0);
if(pAdmin[playerid] == 1 || pAdmin[playerid] == 2 || pAdmin[playerid] == 3 || pAdmin[playerid] == 4 || pAdmin[playerid] == 5 || pAdmin[playerid] == 6)
{
new AdminName[MAX_PLAYER_NAME];
GetPlayerName(playerid, AdminName, sizeof(AdminName));
format(string, sizeof(string), "~w~%s: ~r~ADM ~p~OFFLINE", AdminName);
for(new i=0; i<MAX_PLAYERS; i++)
{
GameTextForPlayer(i, string , 5000, 3);
}
}
if(InCall[playerid]==1)
{
if(playerid==sender)
{
InCall[gc]=0,GetCall[gc]=0; InCall[sender]=0,GetCall[sender]=0;
SetPlayerSpecialAction(gc,SPECIAL_ACTION_STOPUSECELLPHONE);
format(str3,128,"%s desligou o celular!",GetName(sender));
SendClientMessage(gc,GRAY,str3);
} else if(playerid == gc)
{
InCall[gc]=0,GetCall[gc]=0; InCall[sender]=0,GetCall[sender]=0;
SetPlayerSpecialAction(sender,SPECIAL_ACTION_STOPUSECELLPHONE);
format(str3,128,"%s estб fora de area por sair da Cidade!",GetName(gc));
SendClientMessage(sender,GRAY,str3);
}
}
minutos[playerid] = 0;
Conversa[playerid] = 0;
NaFaculdade[playerid] = 0;
return 1;
}
Reply
#2

aheuahuehauheuaheuhauehuaheuahuehuahueauehuaheuahu aheuh
Reply
#3

Quote:
Originally Posted by Stewie`
Посмотреть сообщение
aheuahuehauheuaheuhauehuaheuahuehuahueauehuaheuahu aheuh
Cara caзoa depois , mais me ajuda man
Reply
#4

talvez seja porque algum admin sai e nao reseta a variavel dele de admin, entгo o prуximo que entrar fica como adm.
Reply
#5

Mais cara , isso de 3 pessoas que entram , 2 ganham adm do nada...

@EDIT
Que se registram...

Ve se isso ajuda:
pawn Код:
if(dialogid == REGISTRO)
{
new aname[MAX_PLAYER_NAME];
GetPlayerName(playerid, aname, sizeof(aname));
format(file, sizeof(file), PASTA_CONTAS, aname);
if(response == 1)
{
if(strlen(inputtext) < MIN_SENHA || strlen(inputtext) > MAX_SENHA)
{
format(STRX, sizeof(STRX), "(INFO) A senha deve ter entre %d e %d caracteres!", MIN_SENHA, MAX_SENHA);
SendClientMessage(playerid, Vermelho, STRX);
format(STRX, sizeof(STRX), "Senha muito grande ou pequena, %s!\nColoque sua senha e clique em \"Registrar\".", aname);
ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_PASSWORD, "Registrando uma conta", STRX, "Registrar", "Sair");
return 1;
}
dini_Create(file);
dini_Set(file, "MP3", "0");
dini_Set(file, "CAPACETE", "0");
dini_Set(file, "JETPACK", "0");
dini_Set(file, "Senha", encrypt(inputtext));
dini_Set(file, "Skin", "0");
dini_Set(file, "Profissao", "0");
dini_Set(file, "ContaBancaria", "0");
dini_Set(file, "SaldoBancario", "0");
dini_Set(file, "Celular", "0");
dini_Set(file, "CartaoTelefonico", "0");
dini_Set(file, "HabTerrestre", "0");
dini_Set(file, "HabAerea", "0");
dini_Set(file, "HabNautica", "0");
dini_Set(file, "Preso", "0");
dini_Set(file, "Bloco", "0");
dini_Set(file, "Casa", "0");
dini_Set(file, "Carta", "0");
dini_Set(file, "Lembrete", "Nada");
dini_Set(file, "Level","0");
dini_IntSet(file,"Continuar",0);
dini_Set(file, "Combustivel", "50");
dini_IntSet(file, "novato", 1);
dini_IntSet(file,"Carro",0);
dini_IntSet(file,"Porte", 0);
dini_IntSet(file,"GUARD", 0);
dini_IntSet(file,"VIP", 0);
dini_IntSet(file,"Carteira", 0);
//dini_IntSet(file,"aAdmin",0);
//dini_IntSet(file,"Admin",0);
dini_IntSet(file,"LevelAdmin",0);
dini_Set(file, "Faculdade", "0");
GivePlayerMoney(playerid,5000);
ShowPlayerDialog(playerid, cidades, DIALOG_STYLE_LIST, "Clique na cidade depois em morar", "Los santos", "Morar", "Cancelar");
SendClientMessage(playerid, 0x82C0FFAA, "[CONTA] Registrado com sucesso.");
GameTextForPlayer(playerid, "~r~Registrado com sucesso", 8000, 3);
PlayerPlaySound(playerid, 1057, 0, 0, 0);
PlayerInfo[playerid][Logged] = 1;
}else{
format(STRX, sizeof(STRX), "Vocк tem que ter uma conta para jogar %s!\nColoque sua senha e clique em \"Registrar\".", aname);
ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_PASSWORD, "Registrando uma conta", STRX, "Registrar", "Sair");
}
}
if(dialogid == LOGIN)
{
new aname[MAX_PLAYER_NAME];
GetPlayerName(playerid, aname, sizeof(aname));
format(file, sizeof(file), PASTA_CONTAS, aname);
if(response == 1)
{
new senhaacc[256];
senhaacc = dini_Get(file, "Senha");
if(strcmp(encrypt(inputtext), senhaacc, true) == 0)
{
pAdmin[playerid] = dini_Int(file, "LevelAdmin");
SetSpawnInfo(playerid, 1, dini_Int(file, "Skin"), dini_Int(file, "CasaX"), dini_Int(file, "CasaY"), dini_Int(file, "CasaZ"), 354.1657, 0, 0, 0, 0, 0, 0);
if(dini_Int(file, "Continuar") == 1){
SendClientMessage(playerid, Branco, "(INFO) Vocк pode voltar a posiзгo de quando saiu do server, use /continuar");
}
if(dini_Int(file, "Bloco") == 1){
new stringlembrete[256];
format(stringlembrete, sizeof(stringlembrete), "Lembrete: %s.", dini_Get(file, "Lembrete"));
SendClientMessage(playerid, Blue, stringlembrete);
}
if(dini_Int(file,"novato") == 2){
new string2[256];
new ip[128];
GetPlayerIp(playerid,ip,128);
format(string2, sizeof(string2), "Seu Nick: %s » Seu ID: %d » Seu IP: %s", aname,playerid,ip);
SendClientMessage(playerid, 0xFFFF00AA, string2);
SendClientMessage(playerid, 0xFFFF00AA, "Veja sua identidade, digite /identidade");
}
if(pAdmin[playerid] == 1 || pAdmin[playerid] == 2 || pAdmin[playerid] == 3 || pAdmin[playerid] == 4 || pAdmin[playerid] == 5 || pAdmin[playerid] == 6)
{
new AdminName[MAX_PLAYER_NAME];
GetPlayerName(playerid, AdminName, sizeof(AdminName));
format(string, sizeof(string), "~r~Adm ~p~%s: ~g~Online", AdminName);
for(new i=0; i<MAX_PLAYERS; i++)
{
GameTextForPlayer(i, string , 5000, 3);
}
}
Reply
#6

No OnPlayerConnect vocк nгo verificou se o jogador tem conta, o que devia fazer...

Depois aqui

pawn Код:
//pAdmin[playerid] = 0;
//new aname[MAX_PLAYER_NAME];
Tira essas tags...
Reply
#7

voce deve colocar o seguinte quando for carregar o jogador no bd dele,
PlayerInfo[playerid][pAdmin] = dini_int(file,"LevelAdmin");
Reply
#8

Quote:
Originally Posted by BlackCoder
Посмотреть сообщение
voce deve colocar o seguinte quando for carregar o jogador no bd dele,
PlayerInfo[playerid][pAdmin] = dini_int(file,"LevelAdmin");
Alias, seria mais fбcil para ele fazer um Gamemode do 0, pois GMs do 0 sгo os melhores para alguйm aprender algo.
Reply
#9

Quote:
Originally Posted by BlueX
Посмотреть сообщение
Alias, seria mais fбcil para ele fazer um Gamemode do 0, pois GMs do 0 sгo os melhores para alguйm aprender algo.
ATЙ QUE ENFIM ALGUMA PESSOA DESTE FУRUM ME COMPREENDE PORRA KKKK, jб fas 5 meses que estou fazendo um gamemode roleplay ¬¬ mas estб ficando muito bom,muito superior a qualquer um pra download. e realmente ele iria aprender muito.
Reply
#10

Quote:
Originally Posted by BlackCoder
Посмотреть сообщение
ATЙ QUE ENFIM ALGUMA PESSOA DESTE FУRUM ME COMPREENDE PORRA KKKK, jб fas 5 meses que estou fazendo um gamemode roleplay ¬¬ mas estб ficando muito bom,muito superior a qualquer um pra download. e realmente ele iria aprender muito.
+ uma boa parte aqui concorda com ele, e com vc ^^ as vezes criar um novo do zero й mil vezes melhor.
+ acontece q os players que comeзam agora ficam com preguiзa e acabam por vir no forum, antes de tentar resolver por si proprios, ou ainda acabam por editar, e ou copiar gms prontos, o que surge inumeros bugs, cujo eles nem sonham como resolver, pois ja pegaram pronto.
tbm apoio a refazer alguma coisa errada do zero, polpa bem menas dor de cabeзa hehe
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)