음, 분명히하기 위해 폰은 C++과 매우 유사한 언어입니다. 저는 비트 마스크 권한 (PHP에서)이 필요한 관리자 제어판을 프로그래밍 중이며 PHP에 대한 권한 (제대로 된 적이 없기 때문에)을 제대로 변환했는지 여부는 실제로 알지 못합니다. 나는 define()을 사용하여 권한을 정의했다. 여기에 원래 (전당포에)입니다 방법은 다음과 같습니다 나는 비트 플래그를 비교하고 대부분의 시간은 그냥 따라 EAdminFlags_All
권한을 인식이 비트 마스크 정의를 폰에서 PHP로 변환하는 방법은 무엇입니까?
define("EAdminFlags_None",0);
define("EAdminFlags_BasicAdmin",1);
define("EAdminFlags_CanGiveGuns",1 << 0);
define("EAdminFlags_HouseAdmin",1 << 1);
define("EAdminFlags_IRCAdmin",1 << 2);
define("EAdminFlags_BusinessAdmin",1 << 3);
define("EAdminFlags_AdminManage",1 << 4);
define("EAdminFlags_Scripter",1 << 5);
define("EAdminFlags_HelperManage",1 << 6);
define("EAdminFlags_Unbannable",1 << 7);
define("EAdminFlags_CanRefundSelf",1 << 8);
define("EAdminFlags_VehicleAdmin",1 << 9);
define("EAdminFlags_AntiCheat",1 << 10);
define("EAdminFlags_BigEars",1 << 11);
define("EAdminFlags_SetName",1 << 12);
define("EAdminFlags_CanHide",1 << 13);
define("EAdminFlags_Invisible",1 << 14);
define("EAdminFlags_GiveDrugs",1 << 15);
define("EAdminFlags_Unban",1 << 16);
define("EAdminFlags_WeatherManage",1 << 17);
define("EAdminFlags_GiveRestrictedGun",1 << 18);
define("EAdminFlags_TeleportOthers",1 << 19);
define("EAdminFlags_CanBanAdmins",1 << 20);
define("EAdminFlags_GiveMats",1 << 21);
define("EAdminFlags_StatsManage",1 << 22);
define("EAdminFlags_FamilyAdmin",1 << 23);
define("EAdminFlags_FactionAdmin",1 << 24);
define("EAdminFlags_MassCmds",1 << 25);
define("EAdminFlags_Nuke",1 << 26);
define("EAdminFlags_RangeBan",1 << 27);
define("EAdminFlags_GiveMoney",1 << 28);
define("EAdminFlags_Donations",1 << 29);
define("EAdminFlags_ServerManager",1 << 30);
define("EAdminFlags_All",-1);
: 나는 PHP에서 그것을 정의하는 방법
//Pawn
enum EAdminFlags (<<= 1) {
EAdminFlags_None = 0,
EAdminFlags_BasicAdmin = 1, //kick, fine, etc 0
EAdminFlags_CanGiveGuns, //1
EAdminFlags_HouseAdmin, //2
EAdminFlags_IRCAdmin, //3
EAdminFlags_BusinessAdmin, //4
EAdminFlags_AdminManage, //5 can see invisible admins/manipulate admin flags
EAdminFlags_Scripter, //getpvars, reloadcmds, stuff only scripters should need 6
EAdminFlags_HelperManage, // 7 manage helpers/teachers
EAdminFlags_Unbannable, //unbanable under ANY circumstances 8
EAdminFlags_CanRefundSelf, //can refund himself
EAdminFlags_VehicleAdmin, //10 can manipulate player vehicles
EAdminFlags_AntiCheat, //immune to the anticheat 11
EAdminFlags_BigEars, //can /bigears, /bigfamilyears, /bigmouth
EAdminFlags_SetName, //13
EAdminFlags_CanHide, //can toggle/untoggle hidden on themselves 14
EAdminFlags_Invisible, //Invisible on admins list(like 9999s before) 15
EAdminFlags_GiveDrugs, //server manager, can restart the server/do rcon cmds, create job cars 16
EAdminFlags_Unban, //can unban, oban, oprison people 17
EAdminFlags_WeatherManage, //can manage weather/time 18
EAdminFlags_GiveRestrictedGun, //can give restircted guns 19
EAdminFlags_TeleportOthers, //can teleport other people 20
EAdminFlags_CanBanAdmins, //can ban other admins(or any punishments) 21
EAdminFlags_GiveMats, //can give materials 22
EAdminFlags_StatsManage, //23 /setstat, /sethp, /setarmor
EAdminFlags_FamilyAdmin, //24
EAdminFlags_FactionAdmin, //25
EAdminFlags_MassCmds, //26 can do /masstphere, /massmoney, /masskick, /massnuke
EAdminFlags_Nuke, //27 can do things like /nuke, sparta, rangeban
EAdminFlags_RangeBan, //28 can range ban
EAdminFlags_GiveMoney, //29 can /givemoney /money
EAdminFlags_Donations, //30 can give DPS/set donate rank
EAdminFlags_ServerManager, //can restart the server, etc, use /noooc, /nopms, /nonewb
EAdminFlags_All = -1,
};
지금이가 EAdminFlags_None
및 EAdminFlags_BasicAdmin
입니다. PHP에서 이것을 어떻게 정의했는지에 대한 문제가있을 수 있습니다. 권한은 데이터베이스에 저장하고 예를 들어 원시 정수 값으로 저장됩니다 51531777
다음 그것과 같이 PHP에로드와 비교됩니다 :
$account = new Account(Auth::getUserID());
echo "Welcome ".$account->getUsername()."<br>";
if($account->getAdminPerms(EAdminFlags_FamilyAdmin)) {
echo "You are a family admin."; //testing purposes
//If the person has those permissions set then display he/she is a family admin but even if the permissions are set to EAdminFlags_BasicAdmin, it will still display it wrong
}
public function getAdminLevel() {
return $this->adminlevel; //This holds the integer value "51531777"
}
public function getAdminPerms($n) {
return ($this->adminlevel & (1 << $n)) != 0;
}
사전에 당신의 도움을 주셔서 감사합니다, 정말 감사 .
"문제가있을 수 있습니다. 문제가 무엇입니까? 언뜻보기에 좋아 보인다. – feeela
초보자로서 상수가 실제로 모두 올바르게 정의되었는지 확인 했습니까? 인쇄하여 2 : 1, 2, 4, 8, 16, 32, ...의 힘을 발휘하지 못하게하십시오. – Sven
권한이 잘못 표시되거나 권한이 표시되지 않는 것을 보여줍니다. 또한 사용자가 플래그를 설정했는지 여부를 확인하지 않습니다. –