This work gave the structure in a snap.
PHP Code:
/*
From VEN's auto join on connect plugin
*/
#include <amxmodx>
#include <sqlx>
new const g_sqlhost[] = "127.0.0.1"
new const g_sqluser[] = "amx_mac"
new const g_sqlpass[] = "amx_mac"
new const g_sqldb[] = "amx_mac"
new const g_sqltable[] = "auto_player_team"
new Handle:g_tuple
#define AUTO_TEAM_JOIN_DELAY 0.1
#define TEAM_SELECT_VGUI_MENU_ID 2
enum
{
JOIN_CT,
JOIN_T
}
public plugin_init() {
register_plugin("Auto Join", "1.0", "DusT")
register_message(get_user_msgid("ShowMenu"), "message_show_menu")
register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu")
}
public plugin_cfg(){
set_task(0.1, "connectDb")
}
public connectDb(){
g_tuple = SQL_MakeDbTuple(g_sqlhost, g_sqluser, g_sqlpass, g_sqldb)
new query[512]
formatex(query, charsmax(query), "CREATE TABLE IF NOT EXISTS %s(id INT NOT NULL AUTO_INCREMENT, match_id VARCHAR(64) NOT NULL default '', clan_id VARCHAR(64) NOT NULL default '', player VARCHAR(64) NOT NULL default '', team_CT_T VARCHAR(64) NOT NULL default '', PRIMARY KEY(id))", g_sqltable)
SQL_ThreadQuery(g_tuple, "checkTable", query)
}
public checkTable(failState, Handle:query, error[], errNum){
if(errNum)
set_fail_state(error)
}
public message_show_menu(msgid, dest, id) {
static team_select[] = "#Team_Select"
static menu_text_code[sizeof team_select]
get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
if (!equal(menu_text_code, team_select))
return PLUGIN_CONTINUE
checkTeamDb( id )
return PLUGIN_HANDLED
}
public message_vgui_menu(msgid, dest, id) {
if (get_msg_arg_int(1) != TEAM_SELECT_VGUI_MENU_ID)
return PLUGIN_CONTINUE
checkTeamDb( id )
return PLUGIN_HANDLED
}
public checkTeamDb( id ){
new query[156], data[2]
data[0] = id
formatex(query, charsmax(query), "SELECT `team_CT_T` FROM %s WHERE `player` = '%s'", g_sqltable, getEscName( id ))
SQL_ThreadQuery(g_tuple, "getTeam", query, data, sizeof data)
}
public getTeam( failState, Handle:query, error[], errNum, data[]){
new id, team[3]
id = data[0]
if(!is_user_connected(id))
return
if(!SQL_NumResults(query))
return
SQL_ReadResult(query, 0, team, charsmax(team))
if(equali(team, "ct"))
set_force_team_join_task(id, JOIN_CT)
else if(equali(team, "t"))
set_force_team_join_task(id, JOIN_T)
}
public getEscName( id ){
new escName[64], name[32]
get_user_name(id, name, charsmax(name))
SQL_QuoteString(Empty_Handle, escName, charsmax(escName), name )
return escName
}
set_force_team_join_task(id, team_join) {
static param_menu_msgid[2]
param_menu_msgid[0] = team_join
set_task(AUTO_TEAM_JOIN_DELAY, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid)
}
public task_force_team_join(menu_msgid[], id) {
if (get_user_team(id))
return
new team[2]
switch(menu_msgid[0]){
case JOIN_CT: team[0] = '2'
case JOIN_T: team[0] = '1'
default: team[0] = '6'
}
force_team_join(id, team)
}
stock force_team_join(id, team[]) {
static jointeam[] = "jointeam"
engclient_cmd(id, jointeam, team)
}