View Single Post
Black Rose
Veteran Member
Join Date: Feb 2011
Location: Stockholm, Sweden
Old 02-19-2018 , 16:37   Re: Need Help my first plugin
Reply With Quote #2

I see you are using both dodx and cstrike.
dod : Day Of Defeat
cstrike: Counter-Strike



Unfortunately it's not this easy to get the arguments supplied with the command. You have to account for everything the user can do wrong with the command.
I finished your plugin and added some commentary to help you understand what's going on.
If you have more questions don't hesitate to ask.
Also, this section is for Modules C#/C++. What you have is a Plugin written in PAWN.
So if your question is regarding plugin scripting, put it here:
https://forums.alliedmods.net/forumdisplay.php?f=11

Code:
#include <amxmodx> // core functionality, required. #include <amxmisc> // cmd_access(), show_activity(). #include <fun> // set_user_frags() #include <cstrike> // cs_set_user_deaths() #define PLUGIN  "New Plug-In" #define VERSION "1.0" #define AUTHOR  "Author" public plugin_init() {     register_plugin(PLUGIN, VERSION, AUTHOR)     register_clcmd("amx_setscore", "cmdSetScore", ADMIN_BAN) } public cmdSetScore(id, level, cid){     if (!cmd_access(id, level, cid, 2)) // This will check if you have access to this command and if there are 2 or more arguments required to run the function.         return PLUGIN_HANDLED     // Now we have to read the argument supplied with the command.     // First we need a variable to store the argument in string-form.     // Player name 31 chars and you need one extra cell for the null-termination.     new temparg[32];     // Then we have to actually read the argument.     read_argv(1, temparg, charsmax(temparg)); // In this case we read the first argument which will contain our target player. /* Flags: *  1 - obey immunity *  2 - allow yourself *  4 - must be alive *  8 - can't be bot #define CMDTARGET_OBEY_IMMUNITY (1<<0) #define CMDTARGET_ALLOW_SELF    (1<<1) #define CMDTARGET_ONLY_ALIVE    (1<<2) #define CMDTARGET_NO_BOTS      (1<<3) */     // This function will try to work out the target you're after by matching what you wrote with details from the players (name & userid).     new target = cmd_target(id, temparg, CMDTARGET_OBEY_IMMUNITY|CMDTARGET_ALLOW_SELF)     if ( ! target ) { // You might have multiple matches or no matches at all, you have to account for that.         client_print(id, print_console, "Multiple or no target."); // Perhaps a small error message so the command user understands why the command didn't work.         return PLUGIN_HANDLED     }     // If the code reaches here we have a target, we can continue.     // We are now done with the target so we can reuse the temparg[] variable for something new.     read_argv(2, temparg, charsmax(temparg)); // Like reading the frags number.     // You can then use str_to_num() to convert the number in string format to an integer which the function will accept.     set_user_frags(target, str_to_num(temparg));     if ( read_argc() > 2 ) { // check if there are more than 2 arguments, since you did allow only 2 arguments earlier.         read_argv(3, temparg, charsmax(temparg)); // And lastly get the argument for the deaths.         cs_set_user_deaths(target, str_to_num(temparg)) // ... and set them using an integer.     }     new id_name[32], target_name[32];     get_user_name(id, id_name, charsmax(id_name)) // Get the name of id (the person using the command)     get_user_name(target, target_name, charsmax(target_name)) // Get the name of the target of the command.     // There's even a function that will print out the activity based on your cvar setting.     show_activity(id, id_name, "changed the score of %s.", target_name); /* // Show admins activity // 0 - disabled // 1 - show without admin name // 2 - show with name amx_show_activity 0 */          return PLUGIN_HANDLED }

Last edited by Black Rose; 02-19-2018 at 16:50.
Black Rose is offline