AMX MOD X
Среда, 11.12.2024, 12:14:01



Приветствую Вас Гость | RSS
[ Главная ] [ Научить ботов писать в чат - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
Научить ботов писать в чат
h4xДата: Суббота, 30.01.2010, 14:01:20 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Не в сети
Допустим имеем данный код:
Code

#include <amxmodx>
#include <fakemeta>
#include <cstrike>

new botIds[3]

new const botnames[sizeof botIds][] =
{
  "TE", // t
  "CT", // ct
  "spec" // spec
}

new gmsgScoreInfo

public plugin_init()  
{
  register_plugin("Fake TeamBot", "1.0", "OneEyed\xyeta")
   
  gmsgScoreInfo = get_user_msgid("ScoreInfo")
   
  register_event("HLTV", "StartRound", "a", "1=0", "2=0")
}

public plugin_cfg()
{
  set_task(1.0, "createBots")
}

public StartRound()
{
  set_task(0.5, "PostStartRound")
}

public PostStartRound()
{
  new i, bot
   
  for(;i<sizeof botIds;i++)
  {
   bot = botIds[i]
    
   set_pev(bot, pev_origin, Float:{9999.0, 9999.0, 9999.0})
    
   fm_set_user_frags(bot, -1)
   fm_set_user_deaths(bot, -1)
    
   if(!(pev(bot, pev_effects) | EF_NODRAW))
    set_pev(bot, pev_effects, pev(bot, pev_effects) | EF_NODRAW )
    
   set_pev(bot, pev_solid, SOLID_NOT)
   set_pev(bot, pev_takedamage, DAMAGE_NO)
  }
}

public createBots()
{
  new bot, i, ptr[128]
   
  for(;i<sizeof botIds;i++)
  {
   if((bot = find_player("bli", botnames[i])))
   {
    botIds[i] = bot
     
    continue
   }
    
   botIds[i] = bot = engfunc(EngFunc_CreateFakeClient, botnames[i])
    
   dllfunc(DLLFunc_ClientConnect, bot, botnames[i], "127.0.0.1", ptr)
    
   dllfunc(DLLFunc_ClientPutInServer, bot)
    
   set_pev(bot, pev_flags, pev(bot, pev_flags) | FL_FAKECLIENT)
    
   set_pev(bot, pev_solid, SOLID_NOT)
    
   set_pev(bot, pev_takedamage, DAMAGE_NO)
    
   set_pev(bot, pev_effects, pev(bot, pev_effects) | EF_NODRAW)
    
   switch(i)
   {
    case 0: cs_set_user_team(bot, CS_TEAM_T, CS_T_TERROR)
    case 1: cs_set_user_team(bot, CS_TEAM_CT, CS_CT_URBAN)
    case 2: cs_set_user_team(bot, CS_TEAM_SPECTATOR)
   }
    
   set_pev(bot, pev_origin, Float:{9999.0, 9999.0, 9999.0})
    
   fm_set_user_frags(bot, -1)
   fm_set_user_deaths(bot, -1)
  }
}

#if cellbits == 32
  #define OFFSET_TEAM 114
#else
  #define OFFSET_TEAM 139
#endif

#define OFFSET_CSDEATHS 444

stock fm_set_user_frags(id, newfrags)
{
  new deaths = get_pdata_int(id, OFFSET_CSDEATHS)
   
  set_pev(id, pev_frags, float(newfrags))
   
  message_begin(MSG_ALL, gmsgScoreInfo)
  write_byte(id)
  write_short(newfrags)
  write_short(deaths)
  write_short(0)
  write_short(get_pdata_int(id, OFFSET_TEAM))
  message_end()
}

stock fm_set_user_deaths(id, newdeaths)
{
  new Float:frags
  pev(id, pev_frags, frags)

  set_pdata_int(id, OFFSET_CSDEATHS, newdeaths)

  message_begin(MSG_ALL, gmsgScoreInfo)
  write_byte(id)
  write_short(floatround(frags))
  write_short(newdeaths)
  write_short(0)
  write_short(get_pdata_int(id, OFFSET_TEAM))
  message_end()
}

Сидят боты в CT, T, SPEC.
Нужно чтоб бот из T каждые 2 минуты (допустим) писал сообщение в чат, а бот из CT каждые три минуты.
Но это не важно, мне главное узнать способ как заставить ботов отсылать сообщения в чат.
Пробовал через client_cmd , компилилось , но боты в чат ничего не писали :zzz:

Вобщем прошу подсказки :) Спасибо.

 
PomanoBДата: Суббота, 30.01.2010, 19:47:49 | Сообщение # 2
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Странно, по идее должно было получиться

http://romanov4400.mybrute.com
 
h4xДата: Суббота, 30.01.2010, 20:48:39 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Не в сети
Можешь привести свой пример как бы сделал ты через client_cmd ?

Я уже всю голову сломал .. %)

Сообщение отредактировал h4x - Суббота, 30.01.2010, 20:52:05
 
PomanoBДата: Суббота, 30.01.2010, 20:48:55 | Сообщение # 4
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Code
  message_begin(MSG_ALL, get_user_msgid("SayText"))
   write_byte(botIds[i])
   write_string("#Cstrike_Chat_All")
   write_string("")
   write_string("I am Bot2")
   message_end()

Попробуй


http://romanov4400.mybrute.com
 
h4xДата: Суббота, 30.01.2010, 20:52:10 | Сообщение # 5
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Не в сети
Вопрос решён. PomanoB, спасибо . :)
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024