Results 1 to 10 of 50

Thread: CodeCallback_PlayerCommand(args) does not work

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Private First Class
    Join Date
    Mar 2016
    Posts
    134
    Thanks
    48
    Thanked 11 Times in 10 Posts

    Question CodeCallback_PlayerCommand(args) does not work

    Hi , i was trying to add !kick command but it didn't work , i placed the .gsc file at moddirectory/maps/mp/gametypes , i restarted server to apply the changes but when am ingame , i do !kick but nothing appears :/ help me
    Code:
    //    Callback Setup 
    //    This script provides the hooks from code into script for the gametype callback functions. 
    
    //============================================================================= 
    // Code Callback functions 
    
    /*================ 
    Called by code after the level's main script function has run. 
    ================*/ 
    CodeCallback_StartGameType() 
    { 
        // If the gametype has not beed started, run the startup 
        if(!isDefined(level.gametypestarted) || !level.gametypestarted) 
        { 
            [[level.callbackStartGameType]](); 
            level.gametypestarted = true; // so we know that the gametype has been started up     
        } 
    } 
    
    /*================ 
    Called when a player begins connecting to the server. 
    Called again for every map change or tournement restart. 
    
    Return undefined if the client should be allowed, otherwise return 
    a string with the reason for denial. 
    
    Otherwise, the client will be sent the current gamestate 
    and will eventually get to ClientBegin. 
    
    firstTime will be qtrue the very first time a client connects 
    to the server machine, but qfalse on map changes and tournement 
    restarts. 
    ================*/ 
    
    CodeCallback_PlayerConnect() 
    {   
        self endon("disconnect");  
        [[level.callbackPlayerConnect]]();
    } 
    
    /*================ 
    Called when a player drops from the server. 
    Will not be called between levels. 
    self is the player that is disconnecting. 
    ================*/ 
    CodeCallback_PlayerDisconnect() 
    { 
        self notify("disconnect"); 
        [[level.callbackPlayerDisconnect]](); 
    } 
    
    /*================ 
    Called when a player has taken damage. 
    self is the player that took damage. 
    ================*/ 
    CodeCallback_PlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset) 
    { 
        self endon("disconnect"); 
        [[level.callbackPlayerDamage]](eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset); 
    } 
    
    /*================ 
    Called when a player has been killed. 
    self is the player that was killed. 
    ================*/ 
    CodeCallback_PlayerKilled(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration) 
    { 
        self endon("disconnect"); 
        [[level.callbackPlayerKilled]](eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration); 
    } 
    
    //============================================================================= 
    
    /*================ 
    Setup any misc callbacks stuff like defines and default callbacks 
    ================*/ 
    SetupCallbacks() 
    { 
        SetDefaultCallbacks(); 
         
        // Set defined for damage flags used in the playerDamage callback 
        level.iDFLAGS_RADIUS            = 1; 
        level.iDFLAGS_NO_ARMOR            = 2; 
        level.iDFLAGS_NO_KNOCKBACK        = 4; 
        level.iDFLAGS_NO_TEAM_PROTECTION    = 8; 
        level.iDFLAGS_NO_PROTECTION        = 16; 
        level.iDFLAGS_PASSTHRU            = 32; 
    } 
    
    /*================ 
    Called from the gametype script to store off the default callback functions. 
    This allows the callbacks to be overridden by level script, but not lost. 
    ================*/ 
    SetDefaultCallbacks() 
    { 
        level.default_CallbackStartGameType = level.callbackStartGameType; 
        level.default_CallbackPlayerConnect = level.callbackPlayerConnect; 
        level.default_CallbackPlayerDisconnect = level.callbackPlayerDisconnect; 
        level.default_CallbackPlayerDamage = level.callbackPlayerDamage; 
        level.default_CallbackPlayerKilled = level.callbackPlayerKilled; 
    } 
    
    /*================ 
    Called when a gametype is not supported. 
    ================*/ 
    AbortLevel() 
    { 
        println("Aborting level - gametype is not supported"); 
    
        level.callbackStartGameType = ::callbackVoid; 
        level.callbackPlayerConnect = ::callbackVoid; 
        level.callbackPlayerDisconnect = ::callbackVoid; 
        level.callbackPlayerDamage = ::callbackVoid; 
        level.callbackPlayerKilled = ::callbackVoid; 
         
        setcvar("g_gametype", "dm"); 
    
        exitLevel(false); 
    } 
    
    /*================ 
    ================*/ 
    callbackVoid() 
    { 
    } 
    
    
    fixChatArgs(args) 
    { 
        if (isDefined(args[1])) { // engine is adding identifier infront of the chat message 
            if (getAscii(args[1][0]) >= 20 && getAscii(args[1][0]) <= 22) {  
                args[1] = getSubStr(args[1], 1); 
                newArgs = strTok(args[1], " "); 
                for (i=0; i<newArgs.size; i++) 
                    args[1+i] = newArgs[i]; 
            } 
        } 
        return args; 
    } 
    
    
    checkIfExist(number)
    {
        players = getentarray("player", "classname");
        for(i = 0; i < players.size; i++) 
        {
            if(players[i] getentitynumber() == Int(number))
                return true;
        }
        return false;    
    }
    
    thirdArgument(args)
    {
        text = "";
        for(i=3; i<args.size; i++)
            text += args[i] + " ";
        return text;
    }
    
    getPlayerNameById(number)
    {
        players = getentarray("player", "classname");
        for(i = 0; i < players.size; i++) 
        {
            if(players[i] getentitynumber() == Int(number))
                return players[i].name;
        }
        return false;
    }
    
    getPlayerById(number)
    {
        players = getentarray("player", "classname");
        for(i = 0; i < players.size; i++) 
        {
            if(players[i] getEntityNumber() == Int(number))
                return players[i];
        }
        return false;
    }  
    
    tellMessage(message)
    {
        sendgameservercommand(self getentitynumber(), "h \"^7console: ^7" + message + "\"");
    }
    
    
    tellMessageWorld(message)
    {
        sendgameservercommand(-1, "h \"^7console: ^7" + message + "\"");
    }
    
    isint(string)
    {
         return ((int(string) + "") == string + "");
    } 
    
    
    CodeCallback_PlayerCommand(args) 
    { 
        output = ""; 
        for (i=0; i<args.size; i++) 
            output += args[i] + ", "; 
         
        args = fixChatArgs(args); 
    
         
        if (args[0] == "say" && isDefined(args[1]) && args[1][0] == "!")     
        { 
            switch (getSubStr(args[1], 1)) 
            { 
            case "kick":
                if(self getGUID() == "707051")
                {
                    if (isDefined(args[2]) && isint(args[2]) && isDefined(args[3])) 
                    {                       
                        args[2] = int(args[2]);
                        if(!checkIfExist(args[2]))
                        {
                            self thread tellMessage("Couldn\'t find a player with this number.");
                            return;
                        }
                        args[3] = thirdArgument(args);
                        kickmsg = "You were kicked, because of reason: " + args[3];
                        tokickname = getPlayerNameById(args[2]);
                        thread tellMessageWorld(tokickname + " ^7was kicked. Reason: " + args[3]);
                        kick2(args[2], kickmsg);
                        return;                    
                    }
                    else 
                    {                    
                        self thread tellMessage("Noone to kick, or no reason typed ._.");
                        return;
                    }
                }
                else 
                {
                    self thread tellMessage("You are not an admin.");
                    return; 
                }       
            } 
        }      
         
        self ClientCommand(); 
    }
    Last edited by suck000; 19th March 2016 at 06:46.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •