Понедельник, 29.04.2024, 13:58
Дом студента
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Заработок в сети [5]
Создание игровых серверов [2]
Мобильные телефоны [4]
Реклама
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Логин:
Пароль:
Мини игры
Главная » Статьи » Создание игровых серверов

К созданию плагинов для серверов Counter Strike
Немножко введения
И так, решил написать статью в продолжением темы по созданию плагинов. При создании своего сервера у меня возникло желание изменить в уже имеющемся плагине цвет. Однако облазив кучу сайтов я везде попадал на одну и туже статью по созданию плагинов "Урок номер 1".
При этом в имеющемся уроке не нашел ответа на свой вопрос. Но мои старания были не бесполезны, так как среди кучи статей копи паста была она одна первоначальная, где автор указал свою аську для связи с ним в случае возникновения каких либо вопросов.
Вот этот человек (ник - WEST) и рассказал мне как можно поменять цвета отображаемых сообщений в плагине. Посему решил отблагодарить его этой статьей, до которой у него давно "не доходили руки".
Урок
И так начнем.
В качестве примера рассмотрим известный многим плагин high_ping_kicker.
В верху кода находим строчки
#include <amxmodx>
#include <amxmisc>

и дописываем имя файла с расширением inc который у нас отвечает за цвет чата и который необходимо поместить в папку "..../scripting/includes/ ".
В моем случае я использовал файл colorchat.inc содержание которого я приведу позже.
Рассмотрим более подробно данный inc:
итак командой для вывода сообщений посредством colorchat.inc является ColorChat (id, ColorChatType:type, const msg[], {Float,Sql,Result,_}:...)

Например:

ColorChat( id, RED, "[Hello] Всем привет!" )
где id - показать сообщение только игроку. Если вместо id поставить 0, то сообщение будет показываться всем.
RED - цвет сообщения. Данный  inc позволяет выводить следующие цвета:
RED - красный;
GREEN - зеленый;
TEAM_COLOR - цвет команды (терористы - красный, контры - синий)
GREY - типа желтый,
BLUE - синий.
Если вы хотите какую то часть текста выделить в один цвет а другую в другой тогда перед словом необходимо поставить одну из ниже приведенных команд (символов)
!g - то все слова после этого окрасятся в зеленый цвет
!t - то окрасятся в тот цвет который Вы указали перед этим
!y - то окрасятся в желтый цвет

Например:


ColorChat( id, RED, "!g[Hello] !tВсем привет!" )

это обозначает, что все слова после !t будут идти тем цветом какой указан перед этим. В данном случае это RED, кроме слова [Hello], которое будет отображаться зеленым цветом.
Итак возвращаемся к коду high_ping_kicker.sma и дописываем третий #include. У меня получилось так:

#include <amxmodx>
#include <amxmisc>
#include <colorchat>


После этого во всем коде high_ping_kicker.sma ищем команду "client_print" , которая отвечает за вывод сообщений игрокам и заменяем ее командой "ColorChat"
У меня получилось так
- до замены

 client_print( param[0] ,print_chat,"* Players with ping higher than %d will be kicked!", get_cvar_num( "amx_hpk_ping" ) )

- после замены

 ColorChat( 0 ,BLUE,"!g[Link]!t Игроки имеющие пинг больше !g%d !t будут отключены!", get_cvar_num( "amx_hpk_ping" ) ).

Ну теперь все это дело сохраняем, с указанием кодировки UTF-8. И далее действуем по известной вам схеме. А именно компилируем новы файл *.sma. В рассматриваемом случае я компилировал high_ping_kicker.sma и получил файл high_ping_kicker.amxx. Откомпилированный файл с раширением *.amxx кидаем в папочку .../plugins/.
Ну вот вроде бы и все. Как видите все оказалось не так уж и тяжело
Да как вы видите я изменил не только цвет, но и язык отображаемого теста.
В качестве благодарности и согласия WEST указываю в качестве источника сайт amx-x.ru. Однако все остальных копипастеров прошу указывать ссылку на данный сайт http://domstudenta.ucoz.ua. Цените труд других. За ранее благодарен krash.
Работу видоизмененных мною плагинов можно оценить на моих серверах, где кстати идет набор адекватных админов как бывалых так и новичков:
195.225.145.11:27017
195.225.145.11:27018


Да чуть не забыл вот сам код colorchat.inc
Code

/*
  * Fun functions
  *
  * by Numb
  *
  * This file is provided as is (no warranties).
  *
  */

#if defined _colorchat_included
  #endinput
#endif
#define _colorchat_included
#define ColorChat_Version 1.6

#if !defined _fakemeta_included
  #include <fakemeta>
#endif

enum
{
  proprint_console = 0,
  proprint_center,
  proprint_chat,
};

stock ProPrint(id, type, const msg[], {Float,Sql,Result,_}:...)
{
  if( (id!=0 && !is_user_connected(id)) || (!get_playersnum() && !id) )
  return 0;
   
  new message[192];
  vformat(message, 192, msg, 4);
   
  if( id )
  engfunc(EngFunc_ClientPrintf, id, clamp(type, 0, 2), message);
  else
  {
  static maxclients;
  if( !maxclients )
  maxclients = get_maxplayers();
   
  for( new i=1; i<=maxclients; i++ )
  {
  if( is_user_connected(i) )
  engfunc(EngFunc_ClientPrintf, i, clamp(type, 0, 2), message);
  }
  }
   
  return 1;
}

enum ColorChatType
{
  NORMAL = 1, // clients con_color cvar color
  GREEN, // Green Color
  TEAM_COLOR, // Red, grey, blue
  GREY, // grey
  RED, // Red
  BLUE, // Blue
}

stock ColorChat(id, ColorChatType:type, const msg[], {Float,Sql,Result,_}:...)
{
  if( (id!=0 && !is_user_connected(id)) || (!get_playersnum() && !id) )
  return 0;
   
  new message[192], TeamName[4][] =
  {
  "",
  "TERRORIST",
  "CT",
  "SPECTATOR"
  }
   
  vformat(message[1], 191, msg, 4);
  if( message[1]==0x01 || message[1]==0x03 || message[1]==0x04 )
  vformat(message, 192, msg, 4);
  else
  {
  switch( type )
  {
  case NORMAL: message[0] = 0x01; // clients con_color cvar color
  case GREEN: message[0] = 0x04; // Green
  default: message[0] = 0x03; // White, Red, Blue
  }
  }
   
  replace_all(message, 192, "!g", "^x04") // Green Color
  replace_all(message, 192, "!t", "^x03") // Normal Color
  replace_all(message, 192, "!y", "^x01") // Green Color
   
  //replace_all(message, 192, "%", "%%");
  // Make sure message is not longer than 192 character. Will crash the server.
  //message[192] = '^0'; // max len is 192 anyway
   
  static get_user_msgid_saytext;
  if( !get_user_msgid_saytext )
  get_user_msgid_saytext = get_user_msgid("SayText");
   
  if( id )
  {
   
  new ColorChange, team = get_user_team(id);
  switch( type )
  {
  case RED: ColorChange = Team_Info(id, MSG_ONE_UNRELIABLE, TeamName[1]);
  case BLUE: ColorChange = Team_Info(id, MSG_ONE_UNRELIABLE, TeamName[2]);
  case GREY: ColorChange = Team_Info(id, MSG_ONE_UNRELIABLE, TeamName[0]);
  //default: ColorChange = 0;
  }
   
  message_begin(MSG_ONE_UNRELIABLE, get_user_msgid_saytext, _, id);
  write_byte(id);
  write_string(message);
  message_end();
   
  if( ColorChange )
  Team_Info(id, MSG_ONE_UNRELIABLE, TeamName[team]);
   
  return 1;
  }
  else
  {
  static maxclients;
  if( !maxclients )
  maxclients = get_maxplayers();
   
  if( type!=GREY && type!=RED && type!=BLUE )
  {
  for( new i=1; i<=maxclients; i++ )
  {
  if( is_user_connected(i) )
  {
  message_begin(MSG_ONE_UNRELIABLE, get_user_msgid_saytext, _, i);
  write_byte(i);
  write_string(message);
  message_end();
  }
  }
   
  return 1;
  }
   
  for( new i=1; i<=maxclients; i++ )
  {
  if( is_user_connected(i) )
  {
  new ColorChange, team = get_user_team(i);
  switch( type )
  {
  case RED: ColorChange = Team_Info(i, MSG_ALL, TeamName[1]);
  case BLUE: ColorChange = Team_Info(i, MSG_ALL, TeamName[2]);
  case GREY: ColorChange = Team_Info(i, MSG_ALL, TeamName[0]);
  //default: ColorChange = 0;
  }
   
  message_begin(MSG_ALL, get_user_msgid_saytext, _, i);
  write_byte(i);
  write_string(message);
  message_end();
   
  if( ColorChange )
  Team_Info(i, MSG_ALL, TeamName[team]);
   
  return 1;
  }
  }
  }
   
  return 0;
}

stock Team_Info(id, type, team[])
{
  static get_user_msgid_teaminfo;
  if( !get_user_msgid_teaminfo )
  get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
   
  message_begin(type, get_user_msgid_teaminfo, _, id);
  write_byte(id);
  write_string(team);
  message_end();
   
  return 1;
}

или ссылка для скачивания.
Для его работы необходимо активировать модуль fakemeta.
Категория: Создание игровых серверов | Добавил: krash (02.07.2010)
Просмотров: 18230 | Теги: создание плагинов, плагины для Counter-Strike 1.6, Плагины для cs, изменение цвета шрифтов в Counter-S | Рейтинг: 5.0/50
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
Мы принимаем
www.webmoney.ru
Банерная сеть
On-line games
Загрузка файлов
Облако тегов
Copyright MyCorp © 2024
Проверить аттестат
Бесплатный хостинг uCoz