Jump to content
  • 0

pomoc Problém s příkazy přes dcmd


Klayman

Dotaz

Dobrý den

 

Zkoušel jsem si udělat jednoduchý admin script s pomocí dcmd. Vše jsem zkompiloval bez errorů, ale když použiju nějaký příkaz ve hře, tak mi to píše "Uknow command" zkrátka, že ten příkaz není.

 

Některé věci jsou tam zatím na nic :) ale to proto, že tam chci do budoucna připad ještě pár dalších funkcí

 

Vložím celý kód, protože netuším kde je chyba:

#include <a_samp>
#include <a_players>
#include <sscanf2>

#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

#define MAX_PLAYERS_EX 60
#define COLOR_1 0x33AA33AA
#define COLOR_2 0xFCEE21AA

new AdminLevel[MAX_PLAYERS_EX];

stock PlayerName(playerid)
{
new name[255];
GetPlayerName(playerid, name, 255);
return name;
}

dcmd_setadmin(playerid, params[])
{
new id = strval(params);
new string[128];
if (!strlen(params)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Nemáš admin level");
if (!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Hráč není připojen na serveru");
if (!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Nemáš RCON oprávnění!!!");
format(string, sizeof(string), "RCON %s udělil hráči %s administrátorská práva", PlayerName(playerid), PlayerName(id));
SendClientMessageToAll(COLOR_2, string);
AdminLevel[id] = 1;
return 1;
}

dcmd_kick(playerid, params[])
{
new id = strval(params);
new bylv[128];
new bylsv[128];
if (!strlen(params)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: /kick (id)");
if (AdminLevel[playerid] != 1) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Nemáš admin level");
if (!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Hráč není připojen na serveru");
format(bylv, sizeof(bylv), "Administrator %s vyhodil hráče %s ze serveru", PlayerName(playerid), PlayerName(id));
format(bylsv, sizeof(bylsv), "Administrator %s te vyhodil ze serveru", PlayerName(playerid));
SendClientMessageToAll(COLOR_2, bylv);
SendClientMessage(id,COLOR_2, bylsv);
Kick(id);
return 1;
}

public OnPlayerCommandText(playerid,cmdtext[])
{
	dcmd(kick,4,cmdtext);
	dcmd(setadmin,8,cmdtext);
	return 0;
}

Předem děkuji za všechny užitečné rady. :)

Link to comment
Share on other sites

7 odpovědí na tuto otázku

Recommended Posts

  • 0

Dobrý den

 

Zkoušel jsem si udělat jednoduchý admin script s pomocí dcmd. Vše jsem zkompiloval bez errorů, ale když použiju nějaký příkaz ve hře, tak mi to píše "Uknow command" zkrátka, že ten příkaz není.

 

Některé věci jsou tam zatím na nic :) ale to proto, že tam chci do budoucna připad ještě pár dalších funkcí

 

Vložím celý kód, protože netuším kde je chyba:

#include <a_samp>
#include <a_players>
#include <sscanf2>
#pragma tabsize 0


#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

#define MAX_PLAYERS_EX 60
#define COLOR_1 0x33AA33AA
#define COLOR_2 0xFCEE21AA

new AdminLevel[MAX_PLAYERS_EX];

stock PlayerName(playerid)
{
new name[255];
GetPlayerName(playerid, name, 255);
return name;
}

dcmd_setadmin(playerid, params[])
{
#pragma tabsize 0
new id = strval(params);
new string[128];
if (!strlen(params)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Nemáš admin level");
if (!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Hráč není připojen na serveru");
if (!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Nemáš RCON oprávnění!!!");
format(string, sizeof(string), "RCON %s udělil hráči %s administrátorská práva", PlayerName(playerid), PlayerName(id));
SendClientMessageToAll(COLOR_2, string);
AdminLevel[id] = 1;
return 1;
}

dcmd_kick(playerid, params[])
{
#pragma tabsize 0
new id = strval(params);
new bylv[128];
new bylsv[128];
if (!strlen(params)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: /kick (id)");
if (AdminLevel[playerid] != 1) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Nemáš admin level");
if (!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Hráč není připojen na serveru");
format(bylv, sizeof(bylv), "Administrator %s vyhodil hráče %s ze serveru", PlayerName(playerid), PlayerName(id));
format(bylsv, sizeof(bylsv), "Administrator %s te vyhodil ze serveru", PlayerName(playerid));
SendClientMessageToAll(COLOR_2, bylv);
SendClientMessage(id,COLOR_2, bylsv);
Kick(id);
return 1;
}

public OnPlayerCommandText(playerid,cmdtext[])
{
	dcmd(kick,4,cmdtext);
	dcmd(setadmin,8,cmdtext);
	return 0;
}

//skus teraz 

Předem děkuji za všechny užitečné rady. :)

Link to comment
Share on other sites

  • 0

dcmd_setadmin(playerid, params[])
{
#pragma tabsize 0
new id = strval(params);
new string[128];
if (!strlen(params)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Nemáš admin level"); // trochu blbost, nemyslíš?

if (!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Hráč není připojen na serveru");
if (!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Nemáš RCON oprávnění!!!");
format(string, sizeof(string), "RCON %s udělil hráči %s administrátorská práva", PlayerName(playerid), PlayerName(id));
SendClientMessageToAll(COLOR_2, string);
AdminLevel[id] = 1;
return 1;
}

i u druhy veci mam dojem že máš špatně ten strlen

Link to comment
Share on other sites

  • 0

Už jsem to vyřešil :) takže nemusíte psát


dcmd_setadmin(playerid, params[])
{
#pragma tabsize 0
new id = strval(params);
new string[128];
if (!strlen(params)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Nemáš admin level"); // trochu blbost, nemyslíš?

if (!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Hráč není připojen na serveru");
if (!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_2, "[Chyba]: Nemáš RCON oprávnění!!!");
format(string, sizeof(string), "RCON %s udělil hráči %s administrátorská práva", PlayerName(playerid), PlayerName(id));
SendClientMessageToAll(COLOR_2, string);
AdminLevel[id] = 1;
return 1;
}

i u druhy veci mam dojem že máš špatně ten strlen

Jojo :d ale už jsem to vyřešil úplně jinak :) ale děkuji

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...