Jump to content

Question

Posted

Salut, aveti idee cum pot face o comanda prin care playerii sa se poata reconecta pe server fara sa inchida sampul? Gen sa dea /relog si sa le incarce din nou toate datele, sa puna din nou parola etc.

18 answers to this question

Recommended Posts

  • 0
Posted

Ai putea face oarecum asa: 

CMD:relog(playerid, params[])
{
	SendClientMessage(playerid, -1, "In curand te vei reconecta!");
	OnPlayerConnect(playerid);
	return 1;
}

Nu sunt sigur ca va functiona, daca vrei ceva global, exemplu pentru actualizarea gm-ului, te poti conecta tu la rcon si dupa apelezi gmx pentru restart

  • 0
Posted
Acum 1 minut, iSkull a spus:

Ai putea face oarecum asa: 


CMD:relog(playerid, params[])
{
	SendClientMessage(playerid, -1, "In curand te vei reconecta!");
	OnPlayerConnect(playerid);
	return 1;
}

Nu sunt sigur ca va functiona, daca vrei ceva global, exemplu pentru actualizarea gm-ului, te poti conecta tu la rcon si dupa apelezi gmx pentru restart

Incerc acum.

  • 0
Posted

Nu am o functie de deelay, am doar asta:

if(IsPlayerLogged[playerid] == 0) {
        SCM(playerid, COLOR_WARNING, "* Ai primit kick deoarece nu te-ai logat.");
        KickEx(playerid);
        return true;
     }    

  • 0
Posted

Mai bine fa-l timer, timp de asteptare 30 de secunde sau cat doresti, altfel nu ai cum sa treci din cauza ca la conectare sunt resetate majoritatea, dar trebuie sa ai grija sa-l faci pe baza de id la timer

 

Ex:

new LoginTimer[MAX_PLAYERS];

OnPlayerConnect(playerid)
{
	LoginTimer[playerid] = SetTimerEx("Delay", 30000, false, "i", playerid);
	ShowPlayerDialog// pentru conectare
}

OnDialogResponse => daca user-ul introduce corect parola si exista in baza de date sa-l pui LoginTimer[playerid] = -1;

function Delay(playerid)
{
	if(LoginTimer[playerid] == -1) return 1;
	SendClientMessage(playerid, -1, "Ai primit kick deoarece nu te-ai logat in 30 de secunde!");
	KillTimer(LoginTimer[playerid]);
	LoginTimer[playerid] = -1;
	Kick(playerid);
}

 

  • 0
Posted
Acum 2 minute, iSkull a spus:

Mai bine fa-l timer, timp de asteptare 30 de secunde sau cat doresti, altfel nu ai cum sa treci din cauza ca la conectare sunt resetate majoritatea, dar trebuie sa ai grija sa-l faci pe baza de id la timer

 

Ex:


new LoginTimer[MAX_PLAYERS];

OnPlayerConnect(playerid)
{
	LoginTimer[playerid] = SetTimerEx("Delay", 30000, false, "i", playerid);
	ShowPlayerDialog// pentru conectare
}

OnDialogResponse => daca user-ul introduce corect parola si exista in baza de date sa-l pui LoginTimer[playerid] = -1;

function Delay(playerid)
{
	if(LoginTimer[playerid] == -1) return 1;
	SendClientMessage(playerid, -1, "Ai primit kick deoarece nu te-ai logat in 30 de secunde!");
	KillTimer(LoginTimer[playerid]);
	LoginTimer[playerid] = -1;
	Kick(playerid);
}

 

Ok, multumesc pentru raspuns :D

  • 0
Posted

Am scris asa:

YCMD:relog(playerid, params[], help)
{
    SCM(playerid, -1, "In curand te vei reconecta!");
    OnPlayerDisconnect(playerid);
    OnPlayerConnect(playerid);
    IsPlayerLogged[playerid] = 1;
    return 1;
}

Nu imi mai da kick dar cand ma pune sa scriu pinul nu imi apar cifrele.image.png.388d3e5d738c7d45c2a2b6b3468779ca.png

  • 0
Posted

Nu stiu daca mai functioneaza sau functiona dar poti incerca sa banezi ip playerului si sa il debanezi (aici ma refer la comanda de rcon)

new string[50], playerIp[17];
GetPlayerIp(playerid, playerIp);
format(string, sizeof(string), "banip %s", playerIp);
SendRconCommand(string);
format(string, sizeof(string), "unbanip %s", playerIp);
SendRconCommand(string);
SendRconCommand("reloadbans"); // eventual pentru siguranta ca fim siguri ca nu mai este banat

Stiu ca asta genera un timeout si ii dadea kick dupa care il reconecta. Dar nu pot garanta 100%

  • 0
Posted (edited)
1 hour ago, Banditul said:

Nu stiu daca mai functioneaza sau functiona dar poti incerca sa banezi ip playerului si sa il debanezi (aici ma refer la comanda de rcon)

new string[50], playerIp[17];
GetPlayerIp(playerid, playerIp);
format(string, sizeof(string), "banip %s", playerIp);
SendRconCommand(string);
format(string, sizeof(string), "unbanip %s", playerIp);
SendRconCommand(string);
SendRconCommand("reloadbans"); // eventual pentru siguranta ca fim siguri ca nu mai este banat

Stiu ca asta genera un timeout si ii dadea kick dupa care il reconecta. Dar nu pot garanta 100%

Am incercat pe localhost si si pe server dar nu face nimic din pacate.

Edited by TheGodfather

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.