Skip to content

SA-MP Command guesser to correct player mistakes when typing a command.

License

Notifications You must be signed in to change notification settings

Se8870/samp-command-guess

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SA:MP Command Guess

sampctl

Just simple command guesser for SA-MP using Levenshtein Distance function.

Will working with most of command processor (including y_commands and also discord command)

Installation

Using sampctl

Simply install to your project:

sampctl package install Se8870/samp-command-guess

Include in your code and begin using the library:

#include <command-guess>

Manual installation

Simply download it from main repository, or go to release page.

Extract command.guess.inc inside the zip or tar.gz to your server directory (It should be inside pawno/includes)

Include in your code and begin using the library:

#include <command-guess>

Function Lists

Command_Guess(output[], const cmdtext[], len = sizeof dest);

Usage

With Y_CMD

#include <a_samp>
#include <YSI_Visual\y_commands>
#include <command-guess>

main() 
{
    print("Script loaded");
    
    Command_SetDeniedReturn(true);
}

public e_COMMAND_ERRORS:OnPlayerCommandReceived(playerid, cmdtext[], e_COMMAND_ERRORS:success) 
{
    if (success == COMMAND_UNDEFINED) 
    {
        new 
            guessCmd[32], 
            dist = Command_Guess(guessCmd, cmdtext);
  
        if (dist < 3)
        {
            SendClientMessageEx(playerid, -1, "{FF0000}ERROR:{FFFFFF} \"%s\" is not found, did you mean \"%s\"?", cmdtext, guessCmd);
        }
        else
        {
            SendClientMessageEx(playerid, -1, "{FF0000}ERROR:{FFFFFF} \"%s\" is not found", cmdtext);
        }
        return COMMAND_SILENT;
    }
    return COMMAND_OK;
}

With most command processor (I-ZCMD Example)

#include <a_samp>

#include <izcmd>
#include <command-guess>

main() 
{
    print("Script loaded");
}
public OnPlayerCommandPerformed(playerid, cmdtext[], success) 
{
    if (!success) 
    {
        new 
            guessCmd[32],
            dist = Command_Guess(guessCmd, cmdtext);

        if (dist < 3)
        {
            SendClientMessageEx(playerid, -1, "{FF0000}ERROR:{FFFFFF} \"%s\" is not found, did you mean \"%s\"?", cmdtext, guessCmd);
        }
        else
        {
            SendClientMessageEx(playerid, -1, "{FF0000}ERROR:{FFFFFF} \"%s\" is not found", cmdtext);
        }
        return 1;
    }
    return 1;
}

Testing

To test, simply run the following commands:

sampctl package run