04.03.2019, 04:09
(
Последний раз редактировалось Alex_T; 04.03.2019 в 07:29.
)
Hello, I am making it so only admins can output certain commands anyway the flag system doesnt seem to be working for me.
If I remove/comment the code above out, the system works perfectly fine however if I add it back in the commands perform normally when they aren't supposed to.
Even disabling the CMD with a command still doesnt work. The command will still send.
Код:
public e_COMMAND_ERRORS:OnPlayerCommandReceived(playerid, cmdtext[], e_COMMAND_ERRORS:success)
{
if(success != COMMAND_OK) {
SendClientMessage(playerid, X11_RED, "Error: Unknown message!");
return COMMAND_OK;
}
return COMMAND_OK;
}
Код:
forward adminOnPlayerConnect(playerid);
public adminOnPlayerConnect(playerid) {
unloadPlayerCmds(playerid);
}
adminOnPlayerLogin(playerid) {
loadPlayerCmds(playerid);
return 1;
}
isCmdAllowed(playerid, cmdid) {
new AdminFlags:alevel = AdminFlags:Player[playerid][Admin];
if(_:(alevel & acmds[cmdid][CmdAFlags]) != 0 && acmds[cmdid][CmdAFlags] != EAdminFlags_None) {
return 1;
}
return COMMAND_UNDEFINED;
}
loadPlayerCmds(playerid) {
for(new i=0;i<sizeof(acmds);i++) {
printf("Is Allowed?: %d", isCmdAllowed(playerid, i));
if(isCmdAllowed(playerid, i) == 1) {
Command_SetPlayerNamed(acmds[i][ACMDName], playerid, true);
print("Allowed");
}
}
}
unloadPlayerCmds(playerid) {
for(new i=0;i<sizeof(acmds);i++) {
Command_SetPlayerNamed(acmds[i][ACMDName], playerid, false);
printf("CMDName Test: %s", acmds[i][ACMDName]);
}
}
Код:
public OnPlayerConnect(playerid) {
adminOnPlayerConnect(playerid);
return 1;
}
Код:
enum AdminFlags (<<= 1) {
EAdminFlags_None = 0,
EAdminFlags_Basic = 1,
EAdminFlags_Refund,
EAdminFlags_Donations,
EAdminFlags_ServerManager,
EAdminFlags_All = -1
};
enum ACmds {
ACMDName[32],
AdminFlags:CmdAFlags
};
new acmds[][ACmds] = {
{"test", EAdminFlags_All}
};
YCMD:test(playerid, params[], help) {
SendClientMessage(playerid, X11_RED, "Test working, you are admin");
return 1;
}
Код:
YCMD:disabletest(playerid, params[], help) {
Command_SetPlayerNamed("test", playerid, false);
SendClientMessage(playerid, X11_WHITE, "CMD:Test disabled");
return 1;
}

