Jump to content
  • 0

pomoc Mysql - help


Anonimus24

Dotaz

Ahoj potřeboval bych poradit přešel jsem na MySQL jak mohu vyřešit že uživatel v DTB neexistuje?

 

CMD:setadmin(playerid, params[])
{
    if(IsPlayerAdmin(playerid) || Player[playerid][AdminLevelHL] == 1)
	{
	    format(MAX_STR,sizeof(MAX_STR),"");
		new ID, NICK[MAX_PLAYER_NAME];
	    if(isNumeric(params))
	    {
	        if(sscanf(params,"i",ID)) 				return SendErrorMessage(playerid,"Použití: /SetAdmin (ID/NICK)");
	        else if(IsPlayerNPC(ID)) 				return SendErrorMessage(playerid,"Zadané ID má NPC!");
			else if(!IsPlayerConnected(ID)) 		return SendErrorMessage(playerid,"Hráč se zadaným ID není připojený na serveru!");
			//------------------------------------------------------------------
			if(IsPlayerAdmin(playerid) == 0)
			{
				if(	strcmp(PlayerName(ID), "Anonimus24",true) == 0 ||
				strcmp(PlayerName(ID), "aDk0SK",true) == 0 ||
	 			strcmp(PlayerName(ID), "Adam20",true) == 0 ||
	   			strcmp(PlayerName(ID), "Qvosty_",true) == 0) 		return SendErrorMessage(playerid,"Nelze nastavit hlavního administrátora.");
	 		}
   			
            new Data[80];
		    format(Data, sizeof(Data), "Server/Hraci/%s.cfg", PlayerName(ID));
		    if(fexist(Data))
			{
				new way[32], str[1000],MAX_SetAdmin[1000];
 				strcat(MAX_SetAdmin,"Položka\tNastaveno\n");
				format(way,32,"Server/Hraci/%s.cfg",PlayerName(ID));
				SetPVarString(playerid, "NastaveniAdmina", PlayerName(ID));//uložení hráče id
				format(str, sizeof(str), "Hodnost:\t%s\n",dini_Get(way, "AdminLevelHodnost"));
				strcat(MAX_SetAdmin, str);
				format(str, sizeof(str), "IP:\t\n",str);
				strcat(MAX_SetAdmin, str);
				format(str, sizeof(str), "Admin Práva\n");
				strcat(MAX_SetAdmin, str);
				ShowPlayerDialogEx(playerid, Dialog_SetAdminHodnost, DIALOG_STYLE_TABLIST_HEADERS, "Nastavení Admin Práv", MAX_SetAdmin, "Potvrdit", "Zavřít");
			}else SendErrorMessage(playerid,"Tento hráč neexistuje");
  		}
	}else SCM(playerid,0xFFFFFFAA,"{FF0000}[ ! ]{FFFFFF} Pro tento příkaz nemáte dostatečné oprávnění.");
	return 1;
}

 

Link to comment
Share on other sites

9 odpovědí na tuto otázku

Recommended Posts

  • 2

Ak chápem správne, že tento kód si používal pôvodne a teraz ťa zaujíma, ako v mysql zistiť, či je hráč (ne)registrovaný, môžeš to skúsiť touto funkciou. Nezabudni si upraviť názov tabuľky (players) a názov stĺpca (nick) tak, aby to sedelo s tvojou databázou.

stock IsNickRegistered(MySQL:dbHandle, const nick[])
{
    new query[128];
    mysql_format(dbHandle, query, sizeof(query), "SELECT COUNT(*) FROM `players` WHERE `nick`='%s'", nick);
    mysql_query(dbHandle, query);

    new found;
    cache_get_value_index_int(0, 0, found);
    return found;
}

 

Edited by DuFF
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0
před 9hodinami, DuFF said:

Ak chápem správne, že tento kód si používal pôvodne a teraz ťa zaujíma, ako v mysql zistiť, či je hráč (ne)registrovaný, môžeš to skúsiť touto funkciou. Nezabudni si upraviť názov tabuľky (players) a názov stĺpca (nick) tak, aby to sedelo s tvojou databázou.


stock IsNickRegistered(MySQL:dbHandle, const nick[])
{
    new query[128];
    mysql_format(dbHandle, query, sizeof(query), "SELECT COUNT(*) FROM `players` WHERE `nick`='%s'", nick);
    mysql_query(dbHandle, query);

    new found;
    cache_get_value_index_int(0, 0, found);
    return found;
}

 

Děkuji měl bych rovnou otázku pokud mám v DTB 

image.png.615aceead0c4b4cebfc0dabbe5ca47c1.png

Potřeboval bych to do Hodnost

1796153051_Beznzvu.png.ecb5d67fca69c5484b96ba232ee1308f.png

Kód mám zde:

format(str, sizeof(str), "Hodnost:\t%s\n",Player[playerid][AdminLevelHodnost]);

U IP adresi mi to funguje normálně ale u hodnosti ne proč?

Link to comment
Share on other sites

  • 0
před 3hodinami, HighPrint said:

Jak vypada deklarace 


Player[playerid][AdminLevelHodnost]
new querya[500];
			GetPlayerIp(ID,Player[ID][AdminLevelIP], MAX_PLAYER_IP);
			mysql_format(g_SQL, querya, sizeof(querya), "INSERT INTO `admins`(`ID`, `IP`,`Username`,`AdminLevelHodnost`) VALUES (%i, '%e', '%e', '%e')",Player[ID][IDDB],Player[ID][AdminLevelIP],Player[ID][NickName],Player[ID][NickName]);
			mysql_tquery(g_SQL, querya, "OnSetAdmin", "d",ID);

 

Link to comment
Share on other sites

  • 0

V sql příkazu co jsi zaslal doplňuješ "Player[ID][NickName]" do sloupce "AdminLevelHodnost"

HighPrint pravděpodobně myslel, jakým způsobem deklaruješ tuto proměnnou - vytváříš, nebo doplňuješ daty..
Pravděpodobně to bude něco ve stylu

enum Neco {
	..,
	AdminLevelHodnost[26]
}

new Player[MAX_PLAYERS][Neco];

pak tedy můžeš hodnotu dosadit klasicky přes

format(Player[ID][AdminLevelHodnost], 26, "hodnost");

A pak by mělo jít bez problémů dosadit v dialogu za %s nebo v INSERT sql příkazu za %e.

Otázka tedy zní, kde a co dosazuješ do "Player[ID][AdminLevelHodnost]"?

  • Děkuji (+1) 1
Link to comment
Share on other sites

  • 0
před 21minutami, Anonimus24 said:

new querya[500];
			GetPlayerIp(ID,Player[ID][AdminLevelIP], MAX_PLAYER_IP);
			mysql_format(g_SQL, querya, sizeof(querya), "INSERT INTO `admins`(`ID`, `IP`,`Username`,`AdminLevelHodnost`) VALUES (%i, '%e', '%e', '%e')",Player[ID][IDDB],Player[ID][AdminLevelIP],Player[ID][NickName],Player[ID][NickName]);
			mysql_tquery(g_SQL, querya, "OnSetAdmin", "d",ID);

 

Kód, ktorý si poslal, má na starosti vkladanie dát do databázy a vyzerá to tak, že tam máš preklep. V poslednom argumente si použil Player[ID][NickName] a myslím si, že tam chceš skôr Player[ID][AdminLevelHodnost].

HighPrint chcel vidieť ten enum, v ktorom máš AdminLevelHodnost a riadok new Player... Okrem tohto by si mohol poslať ešte kód, v ktorom máš načítavanie dát z databázy.

Link to comment
Share on other sites

  • 0
před 35minutami, KyBLKuBA said:

V sql příkazu co jsi zaslal doplňuješ "Player[ID][NickName]" do sloupce "AdminLevelHodnost"

HighPrint pravděpodobně myslel, jakým způsobem deklaruješ tuto proměnnou - vytváříš, nebo doplňuješ daty..
Pravděpodobně to bude něco ve stylu


enum Neco {
	..,
	AdminLevelHodnost[26]
}

new Player[MAX_PLAYERS][Neco];

pak tedy můžeš hodnotu dosadit klasicky přes


format(Player[ID][AdminLevelHodnost], 26, "hodnost");

A pak by mělo jít bez problémů dosadit v dialogu za %s nebo v INSERT sql příkazu za %e.

Otázka tedy zní, kde a co dosazuješ do "Player[ID][AdminLevelHodnost]"?

Toto funguje ale pokud chci poté změnit hodnost na jinačí v DTB se mi to přepíše ale bohužel se mi stále ukazuje "hodnost" kterou jsem tam zadal potřeboval bych při změně hodnosti aby se ukazovala hodnost kterou jsem nastavil.
 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...