typedef std:: initializer_list < std:: string > cmd_alias;
#define ZERO_COMMANDF(name, min_execute_level, this_restrictions, aliasses, format) \
class cmd ## name : public SAMPGDK::ZeroCMD::Command\
{\
public:\
cmd ## name() { parserenabled = true; parser.SetFormat(format); alias = std::vector<std::string>(aliasses); ExecuteLevel = (min_execute_level); Restrictions = (this_restrictions); SAMPGDK::ZeroCMD::Internal::register_command(this, "/"#name); for(auto i: (alias)) { SAMPGDK::ZeroCMD::Internal::register_command(this, i); } }\
bool do_command(int playerid, std::string params);\
};\
cmd ## name cmd ## name ## __execute;\
bool cmd ## name::do_command(int playerid, std::string params)
//Example usage:
ZCMDF( apvaddhp, PERMISSION_ADMIN, RESTRICTION_NONE, cmd_alias( { "/addvehhp" } ) , "pf" )
{
static float hp;
if ( parser.Good ( ) == 2 )
{
int targetid = parser.Get < ParsePlayer> ( 0 ) .playerid ;
if ( targetid ! = INVALID_PLAYER_ID)
{
if ( Player[ targetid] .CurrentVehicle )
{
GetVehicleHealth( Player[ targetid] .CurrentVehicle , & hp) ;
safeSetVehicleHealth( Player[ targetid] .CurrentVehicle , hp + parser.Get < float > ( 1 ) ) ;
fixSendClientMessage( playerid, - 1 , "Vehicle HP has been >ADDED< succesfully" ) ;
return true ;
}
fixSendClientMessage( playerid, - 1 , "Player not in vehicle" ) ;
return true ;
}
fixSendClientMessage( playerid, - 1 , "Invalid ID" ) ;
return true ;
}
fixSendClientMessage( playerid, - 1 , "Usage: {41BECC}/apvaddhp <id/nickname> <amount>" ) ;
return true ;
}
dHlwZWRlZiBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpzdHJpbmc+IGNtZF9hbGlhczsKCiNkZWZpbmUgWkVST19DT01NQU5ERihuYW1lLCBtaW5fZXhlY3V0ZV9sZXZlbCwgdGhpc19yZXN0cmljdGlvbnMsIGFsaWFzc2VzLCBmb3JtYXQpIFwKY2xhc3MgY21kICMjIG5hbWUgOiBwdWJsaWMgU0FNUEdESzo6WmVyb0NNRDo6Q29tbWFuZFwKCXtcCgkJcHVibGljOlwKCQljbWQgIyMgbmFtZSgpIHsgcGFyc2VyZW5hYmxlZCA9IHRydWU7IHBhcnNlci5TZXRGb3JtYXQoZm9ybWF0KTsgYWxpYXMgPSBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oYWxpYXNzZXMpOyBFeGVjdXRlTGV2ZWwgPSAobWluX2V4ZWN1dGVfbGV2ZWwpOyBSZXN0cmljdGlvbnMgPSAodGhpc19yZXN0cmljdGlvbnMpOyBTQU1QR0RLOjpaZXJvQ01EOjpJbnRlcm5hbDo6cmVnaXN0ZXJfY29tbWFuZCh0aGlzLCAiLyIjbmFtZSk7IGZvcihhdXRvIGk6IChhbGlhcykpIHsgU0FNUEdESzo6WmVyb0NNRDo6SW50ZXJuYWw6OnJlZ2lzdGVyX2NvbW1hbmQodGhpcywgaSk7IH0gfVwKCQlib29sIGRvX2NvbW1hbmQoaW50IHBsYXllcmlkLCBzdGQ6OnN0cmluZyBwYXJhbXMpO1wKCX07XAoJY21kICMjIG5hbWUgY21kICMjIG5hbWUgIyMgX19leGVjdXRlO1wKCWJvb2wgY21kICMjIG5hbWU6OmRvX2NvbW1hbmQoaW50IHBsYXllcmlkLCBzdGQ6OnN0cmluZyBwYXJhbXMpCgkKLy9FeGFtcGxlIHVzYWdlOgpaQ01ERihhcHZhZGRocCwgUEVSTUlTU0lPTl9BRE1JTiwgUkVTVFJJQ1RJT05fTk9ORSwgY21kX2FsaWFzKHsiL2FkZHZlaGhwIiB9KSwgInBmIikKewoJc3RhdGljIGZsb2F0IGhwOwoJaWYgKHBhcnNlci5Hb29kKCkgPT0gMikKCXsKCQlpbnQgdGFyZ2V0aWQgPSBwYXJzZXIuR2V0PFBhcnNlUGxheWVyPigwKS5wbGF5ZXJpZDsKCQlpZiAodGFyZ2V0aWQgIT0gSU5WQUxJRF9QTEFZRVJfSUQpCgkJewoJCQlpZiAoUGxheWVyW3RhcmdldGlkXS5DdXJyZW50VmVoaWNsZSkKCQkJewoJCQkJR2V0VmVoaWNsZUhlYWx0aChQbGF5ZXJbdGFyZ2V0aWRdLkN1cnJlbnRWZWhpY2xlLCAmaHApOwoJCQkJc2FmZVNldFZlaGljbGVIZWFsdGgoUGxheWVyW3RhcmdldGlkXS5DdXJyZW50VmVoaWNsZSwgaHAgKyBwYXJzZXIuR2V0PGZsb2F0PigxKSk7CgkJCQlmaXhTZW5kQ2xpZW50TWVzc2FnZShwbGF5ZXJpZCwgLTEsICJWZWhpY2xlIEhQIGhhcyBiZWVuID5BRERFRDwgc3VjY2VzZnVsbHkiKTsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgkJCWZpeFNlbmRDbGllbnRNZXNzYWdlKHBsYXllcmlkLCAtMSwgIlBsYXllciBub3QgaW4gdmVoaWNsZSIpOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJZml4U2VuZENsaWVudE1lc3NhZ2UocGxheWVyaWQsIC0xLCAiSW52YWxpZCBJRCIpOwoJCXJldHVybiB0cnVlOwoJfQoJZml4U2VuZENsaWVudE1lc3NhZ2UocGxheWVyaWQsIC0xLCAiVXNhZ2U6IHs0MUJFQ0N9L2FwdmFkZGhwIDxpZC9uaWNrbmFtZT4gPGFtb3VudD4iKTsKCXJldHVybiB0cnVlOwp9
compilation info
prog.cpp:1:14: error: 'initializer_list' in namespace 'std' does not name a template type
typedef std::initializer_list<std::string> cmd_alias;
^
prog.cpp:14:6: error: expected constructor, destructor, or type conversion before '(' token
ZCMDF(apvaddhp, PERMISSION_ADMIN, RESTRICTION_NONE, cmd_alias({"/addvehhp" }), "pf")
^
prog.cpp:14:77: error: expected unqualified-id before ')' token
ZCMDF(apvaddhp, PERMISSION_ADMIN, RESTRICTION_NONE, cmd_alias({"/addvehhp" }), "pf")
^
stdout