AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Suggestions / Requests (https://forums.alliedmods.net/forumdisplay.php?f=12)
-   -   autoresponder edit (https://forums.alliedmods.net/showthread.php?t=346787)

tedaimlocks 03-17-2024 12:15

autoresponder edit
 
can anyone edit this https://forums.alliedmods.net/showthread.php?t=27814 autoresponder and create something like the default advertise messages but add some conditions for online players and current map?

something like this

PHP Code:

[SPK ZMZOMBIE.LEAGUECS.RO Players: %onlineplayers/32 Map: %map 


georgik57 03-17-2024 13:34

Re: autoresponder edit
 
https://forums.alliedmods.net/showpo...4&postcount=10
https://forums.alliedmods.net/showpo...6&postcount=12

Uzviseni Bog 03-17-2024 14:08

Re: autoresponder edit
 
https://forums.alliedmods.net/showth...09#post2815909

tedaimlocks 03-17-2024 14:18

Re: autoresponder edit
 
yea.. something like that, i dont know how to do it tho, since i have to do it in advertisements file

bigdaddy424 03-17-2024 15:58

Re: autoresponder edit
 
something like this should work
PHP Code:

new mapname[32];
public 
plugin_init() get_mapname(mapname31);
stock setColor(string[], len)
{
    if (
contain(string"!t") != -|| contain(string"!g") != -|| contain(string,"!n") != -1)
    {
        
//Some nice shiny colors ^^
        
replace_all(stringlen"!t""^x03");
        
replace_all(stringlen"!n""^x01");
        
replace_all(stringlen"!g""^x04");
        
        
//Work away a stupid bug
        
format(stringlen"^x01%s"string);
    }

    if (
contain(string"%online%") != -1)
    {
        
replace_all(stringlen"%online%"fmt("%d"get_playersnum()));
    }

    if (
contain(string"%mapname%") != -1)
    {
        
replace_all(stringlen"%mapname%"mapname);
    }



tedaimlocks 03-18-2024 09:43

Re: autoresponder edit
 
so uh how should i do it? i have no idea

PHP Code:

#include <amxmodx>
#include <amxmisc>

#pragma semicolon 1

new const PLUGIN[] = "Autoresponder/Advertiser";
new const 
VERSION[] = "0.5";
new const 
AUTHOR[] = "MaximusBrood";

#define NORM_AD 0
#define SAY_AD 1

#define COND 0
#define STORE 1

#define COND_TKN '%'
#define SAY_TKN '@'

#define COND_STKN "%"
#define DEVIDE_STKN "~"
#define SAY_STKN "@"

//-.-.-.-.-.-.-.-.DEFINES.-.-.-.-.-.-.-.-.-.-.

//Maximum amount of ads
#define MAXADS 64

//Minimum difference between two different ads (float)
new const Float:RAND_MIN 60.0;

//Maximum difference between two different ads (float)
new const Float:RAND_MAX 80.0;

//-.-.-.-.-.-.-.-.END DEFINES..-.-.-.-.-.-.-.

//Stores
new sayConditions[MAXADS][3][32];
new 
normConditions[MAXADS][3][32];
new 
normStore[MAXADS][128];
new 
sayStore[MAXADS][2][128];

new 
gmsgSayText;

//Counters
new adCount[2] = {00};

public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR);
    
register_cvar("admanager_version""0.5"FCVAR_SERVER);
    
    
register_cvar("ad_react_all""1");
    
    
gmsgSayText get_user_msgid("SayText");
    
    
register_clcmd("say","eventSay");
    
register_clcmd("say_team","eventSay");
    
    
//Delay the load proces by 10 sec because we don't want to get more load
    //on the already high-load mapchange.
    //Too soon to affect players while playing, too late to create time-out @ mapchange
    
set_task(10.0"load");
}

public 
load()
{
    
//Load the data
    
new filepath[64];
    
get_configsdir(filepath63);
    
format(filepath63"%s/advertisements.ini"filepath);
    
    if(
file_exists(filepath))
    {
        new 
output[512], conditions[128], temp[64], type;
        
        
//Open file
        
new fHandle fopen(filepath"rt");
        
        
//Checks for failure
        
if(!fHandle)
            return;
        
        
//Loop through all lines
        
for(new 0MAXADS && !feof(fHandle); a++)
        {
            
//Get line
            
fgets(fHandleoutput511);
            
            
            
//Work away comments
            
if(output[0] == ';' || !output[0] || output[0] == ' ' || output[0] == 10
            {
                
//Line is not counted
                
a--;
                continue;
            }
            
            
//Reset type
            
type 0;
            
            
//Check if it contains conditions
            
if(output[0] == COND_TKN)
            {
                
//Cut the conditions off the string
                
split(outputconditions127output511DEVIDE_STKN);
                
                
//Determine if its say check or normal ad
                
type output[0] == SAY_TKN 0;
                
                
//Put the conditions in own space
                
for(new 03b++)
                {
                    new 
sort[16], cond[32], numb;
                    
                    
//Remove the % from line 
                    
conditions[0] = ' ';
                    
trim(conditions);
                    
                    
//Get one condition from the line
                    
split(conditionstemp64conditions127COND_STKN);
                    
                    
split(tempsort15cond31" ");
                    
                    if(
equali(sort"map"))
                    {
                        
numb 0;
                    } else if(
equali(sort"min_players"))
                    {
                        
numb 1;
                    } else if(
equali(sort"max_players"))
                    {
                        
numb 2;
                    } else
                    {
                        continue;
                    }
                    
                    
//Copy it to its final resting place ^^
                    
setString(CONDtypecondadCount[type], numb);
                    
                    
//Exit if it hasn't got more conditions
                    
if(!conditions[0])
                        break;
                }
            }
            
            if(
type == 0)
                
type output[0] == SAY_TKN 0;
            
            if(
type == SAY_AD)
            {
                new 
said[32], answer[128];
                
                
//Remove the @ from line
                
output[0] = ' ';
                
trim(output);
                
                
split(outputsaid31answer127DEVIDE_STKN);
                
                
//Apply color
                
setColor(answer127);
                
                
//Save it
                
setString(STORESAY_ADsaidadCount[SAY_AD], 0);
                
setString(STORESAY_ADansweradCount[SAY_AD], 1);
            } else
//if(type == NORM_AD)
            
{
                
//Apply color
                
setColor(output511);
                
                
//Save it
                
setString(STORENORM_ADoutputadCount[NORM_AD]);
            }
            
            
//Increment the right counter
            
adCount[NORM_AD] += type == NORM_AD 0;
            
adCount[SAY_AD]  += type == SAY_AD  0;
        }
        
        
//Set a first task, if there are any normal ads
        
if(adCount[NORM_AD] != 0)
            
set_task(random_float(RAND_MINRAND_MAX), "eventTask");
        
        
//Close file to prevent lockup
        
fclose(fHandle);    
    }
}

new 
currAd = -1;

public 
eventTask()
{
    
//Go past all ads and check conditions
    
for(new 0adCount[NORM_AD]; a++)
    {
        
//Put current ad to the next one
        
currAd currAd == adCount[NORM_AD] - currAd 1;
        
        if(
checkConditions(currAdNORM_AD))
        {
            
//Display the ad
            
new data[3];
            
data[0] = currAd;
            
data[1] = NORM_AD;
            
data[2] = 0;
            
displayAd(data);
            
            break;
        }
    }
        
    
//Set a new task
    
set_task(random_float(RAND_MINRAND_MAX), "eventTask");
    
    return 
PLUGIN_CONTINUE;
}

public 
eventSay(id)
{
    
//If nothing is said, don't check
    
if(adCount[SAY_AD] == 0)
        return 
PLUGIN_CONTINUE;
    
    new 
talk[64], keyword[16];
    
read_args(talk63) ;
        
    
//En nu rennen voor jullie zakgeld klootzjakken!
    
for(new 0adCount[SAY_AD]; a++)
    {
        
//Get the string
        
getString(STORESAY_ADkeyword15a0);
        
        if(
containi(talkkeyword) != -1)
        {
            
//Check the rest if it fails to conditions
            
if(!checkConditions(aSAY_AD))
                continue;
            
            new 
data[3];
            
data[0] = a;
            
data[1] = SAY_AD;
            
data[2] = id;
            
            
//Set the task
            
set_task(0.3"displayAd"0data3);
            
            
//Don't execute more of them
            
break;
        }
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
displayAd(params[])
{
    
//Get the string that is going to be displayed
    
new message[128];
    
getString(STOREparams[1], message127params[0], params[1]);
    
    
//If its enabled by cvar and id is set, display to person who triggered message only
    
if(get_cvar_num("ad_react_all") == && params[2] != 0)
    {
        
message_begin(MSG_ONEgmsgSayText, {0,0,0}, params[2]);
        
write_byte(params[2]);
        
write_string(message);
        
message_end();
    
    } else
    {
        
//Display the message to everyone
        
new plist[32], playernumplayer;
        
        
get_players(plistplayernum"c");
    
        for(new 
0playernumi++)
        {
            
player plist[i];
            
            
message_begin(MSG_ONEgmsgSayText, {0,0,0}, player);
            
write_byte(player);
            
write_string(message);
            
message_end();
        }
    }
    
    return 
PLUGIN_HANDLED;
}

//---------------------------------------------------------------------------
//                                STOCKS
//---------------------------------------------------------------------------

stock checkConditions(atype)
{
    
//Mapname
    
if((type == NORM_AD && normConditions[a][0][0]) || (type == SAY_AD && sayConditions[a][0][0]))
    {
        new 
mapname[32];
        
get_mapname(mapname31);
        
        if(! (
type == NORM_AD && equali(mapnamenormConditions[a][0]) ) || (type == SAY_AD && equali(mapnamesayConditions[a][0]) ) )
            return 
false;
    }
    
    
//Min Players
    
if((type == NORM_AD && normConditions[a][1][0]) || (type == SAY_AD && sayConditions[a][1][0]))
    {
        new 
playersnum get_playersnum();
        
        if( (
type == NORM_AD && playersnum str_to_num(normConditions[a][1]) ) || (type == SAY_AD && playersnum str_to_num(sayConditions[a][1]) ) )
            return 
false;
    }
    
    
//Max Players
    
if((type == NORM_AD && normConditions[a][2][0]) || (type == SAY_AD && sayConditions[a][2][0]))
    {
        new 
playersnum get_playersnum();
        
        if( (
type == NORM_AD && playersnum str_to_num(normConditions[a][2]) ) || (type == SAY_AD && playersnum str_to_num(sayConditions[a][2]) ) )
            return 
false;
    }
    
    
//If everything went fine, return true
    
return true;
}    

stock setColor(string[], len)
{
    if (
contain(string"!t") != -|| contain(string"!g") != -|| contain(string,"!n") != -1)
    {
        
//Some nice shiny colors ^^
        
replace_all(stringlen"!t""^x03");
        
replace_all(stringlen"!n""^x01");
        
replace_all(stringlen"!g""^x04");
        
        
//Work away a stupid bug
        
format(stringlen"^x01%s"string);
    }
}

stock getString(modetypestring[], lenonetwo 0)
{
    
//server_print("mode: %d type: %d len: %d one: %d two %d", mode, type, len, one, two);
    
    //Uses the fact that a string is passed by reference
    
if(mode == COND)
    {
        if(
type == NORM_AD)
        {
            
copy(stringlennormConditions[one][two]);
        } else
//if(type = SAY_AD)
        
{
            
copy(stringlensayConditions[one][two]);
        }
    } else
//if(mode == STORE)
    
{
        if(
type == NORM_AD)
        {
            
copy(stringlennormStore[one]);
        } else
//if(type == SAY_AD)
        
{
            
copy(stringlensayStore[one][two]);
        }
    }
}

stock setString(modetypestring[], onetwo 0)
{
    if(
mode == COND)
    {
        if(
type == NORM_AD)
        {
            
copy(normConditions[one][two], 31string);
        } else
//if(type = SAY_AD)
        
{
            
copy(sayConditions[one][two], 31string);
        }
    } else
//if(mode == STORE)
    
{
        if(
type == NORM_AD)
        {
            
copy(normStore[one], 127string);
        } else
//if(type == SAY_AD)
        
{
            
copy(sayStore[one][two], 127string);
        }
    }




All times are GMT -4. The time now is 15:36.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.