AMX MOD X
Суббота, 03.01.2026, 08:26:22



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

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

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
Как захватить их какой команды игрок умер
000000Дата: Понедельник, 10.11.2008, 12:21:45 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 15
Репутация: 1
Статус: Не в сети
Вот накропал, но наверно много лишнего написал..
/* Plugin generated by AMXX-Studio */

#include <amxmodx>

#define PLUGIN "mycolor chat"
#define VERSION "0.1"
#define AUTHOR "000000"
#define MAXSLOTS 32

enum Color
{
YELLOW = 1, // Yellow
GREEN, // Green Color
TEAM_COLOR, // Red, grey, blue
GREY, // grey
RED, // Red
BLUE, // Blue
}

new TeamInfo;
new SayText;
new MaxSlots;

new TeamName[][] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}

new bool:IsConnected[MAXSLOTS + 1];

public plugin_init()
{

register_plugin("mycolor chat", "0.1", "000000")
register_event("DeathMsg", "color", "a")

TeamInfo = get_user_msgid("TeamInfo");
SayText = get_user_msgid("SayText");
MaxSlots = get_maxplayers();
}

public color()
{

ColorChat(0, GREEN, "%s^03(???????????) %s.", "*ТЕКС", "^04ТЕКС"); // ^03 ^04 Цвета сообщения
return PLUGIN_HANDLED;
}

public client_putinserver(player)
{
IsConnected[player] = true;
}

public client_disconnect(player)
{
IsConnected[player] = false;
}

public ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
static message[256];

switch(type)
{
case YELLOW: // Yellow
{
message[0] = 0x01;
}
case GREEN: // Green
{
message[0] = 0x04;
}
default: // White, Red, Blue
{
message[0] = 0x03;
}
}

vformat(message[1], 251, msg, 4);

// Make sure message is not longer than 192 character. Will crash the server.
message[192] = '^0';

new team, ColorChange, index, MSG_Type;

if(!id)
{
index = FindPlayer();
MSG_Type = MSG_ALL;

} else {
MSG_Type = MSG_ONE;
index = id;
}

team = get_user_team(index);
ColorChange = ColorSelection(index, MSG_Type, type);

ShowColorMessage(index, MSG_Type, message);

if(ColorChange)
{
Team_Info(index, MSG_Type, TeamName[team]);
}
}

ShowColorMessage(id, type, message[])
{
message_begin(type, SayText, _, id);
write_byte(id)
write_string(message);
message_end();
}

Team_Info(id, type, team[])
{
message_begin(type, TeamInfo, _, id);
write_byte(id);
write_string(team);
message_end();

return 1;
}

ColorSelection(index, type, Color:Type)
{
switch(Type)
{
case RED:
{
return Team_Info(index, type, TeamName[1]);
}
case BLUE:
{
return Team_Info(index, type, TeamName[2]);
}
case GREY:
{
return Team_Info(index, type, TeamName[0]);
}
}

return 0;
}

FindPlayer()
{
new i = -1;

while(i <= MaxSlots)
{
if(IsConnected[++i])
{
return i;
}
}

return -1;
}

Он показывает соообщение в чате при каждой смерти

ColorChat(0, GREEN, "%s^03(???????????) %s.", "*ТЕКС", "^04ТЕКС");

как вписать в ???????? что например при убийстве котр-террориста было там написанно Counter, а при убийстве террора было написанно (Terror) смерть я поймал но незнаю как сделать чтобы он определил из какой команды умер, и как вписать его в ColorChat

За ранее спасибо B)

 
mozartДата: Понедельник, 10.11.2008, 21:48:44 | Сообщение # 2
Лейтенант
Группа: Пользователи
Сообщений: 46
Репутация: 0
Статус: Не в сети
get_user_team ???
 
000000Дата: Понедельник, 10.11.2008, 22:04:45 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 15
Репутация: 1
Статус: Не в сети
Это надо ввести 2 функции get_user_team
Например
Code
get_user_team ( 32, [ CT[], len ] )
get_user_team ( 32, [ T[], len ] )

Или я не правильно заполнил?

И потом если выполняется 1 действие (CT) то идет сообщение в 1 Colorchat
А если выполняется 2 действие (Т) то сообщение идет во 2 Colorchat ???

И как сделать если например 1 функция выполнилась то выполнился 1 Colorchat
ColorChat(0, GREEN, "%s^03(Counter) %s.", "*ТЕКС", "^04ТЕКС");

спс за помощь, пойду юзать скрипт kill hp

Сообщение отредактировал 000000 - Понедельник, 10.11.2008, 22:22:05
 
PomanoBДата: Понедельник, 10.11.2008, 22:35:34 | Сообщение # 4
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
http://www.amxmodx.org/funcwiki.php?go=func&id=199

http://romanov4400.mybrute.com
 
000000Дата: Вторник, 11.11.2008, 11:04:42 | Сообщение # 5
Рядовой
Группа: Пользователи
Сообщений: 15
Репутация: 1
Статус: Не в сети
Вот сделал, но 1 ошибка при компиляции
Quote
<37> : error 034: argument does not have a default value (argument 2)

Вот сам исходник

Quote
#include <amxmodx>

#define PLUGIN "test"
#define VERSION "0.1"
#define AUTHOR "cwt777"

new const g_msgTemplate[] = "^x04 TestTestTest ^x03%d"

new g_msgSayText

public plugin_init()
{
register_plugin("test", "0.1", "cwt777")
register_event("DeathMsg", "kill", "a")
g_msgSayText = get_user_msgid("SayText")

}
public kill()
{
static aID, vID
static msgText[255]
static aTeam

aID = read_data(1)
vID = read_data(2)


if(vID == aID)
{
return
}


aTeam = get_user_team(aID)
formatex(msgText,_, g_msgTemplate, aTeam)
msgText[192] = '^0'
msgSayText(vID, msgText)
}

msgSayText(id, message[])
{
message_begin(MSG_ONE, g_msgSayText, _, id)
write_byte(id)
write_string(message)
message_end()
}

А и еще бедет ли сообщение высвечиватся при каждом убийстве?

 
draftДата: Вторник, 11.11.2008, 12:38:10 | Сообщение # 6
Полковник
Группа: Пользователи
Сообщений: 225
Репутация: 3
Статус: Не в сети
Так а на какой строчке ошибка?
formatex(msgText,_, g_msgTemplate, aTeam)
мне лично кажется, что здесь 2 аргумент не канает как дефолтный, поэтому и ругается. Вставляй сюда число форматируемых символов.
 
cwt777Дата: Вторник, 11.11.2008, 13:11:15 | Сообщение # 7
Сержант
Группа: Пользователи
Сообщений: 32
Репутация: 0
Статус: Не в сети
Поставил сначало в эту строчку formatex(msgText,1, g_msgTemplate, aTeam)
Потом пробовал formatex(msgText,2, g_msgTemplate, aTeam)

Все компинируется, но вот тока сообщение не показывает (((

Может сдесь где намудрил

Quote
static aID, vID
static msgText[255]
static aTeam

aID = read_data(1)
vID = read_data(2)

if(vID == aID)
{
return
}

 
draftДата: Вторник, 11.11.2008, 14:18:09 | Сообщение # 8
Полковник
Группа: Пользователи
Сообщений: 225
Репутация: 3
Статус: Не в сети
Так а не маловато ли поставил?
Исходя из кода, ставить нужно 191, поскольку 192 - это символ конца строки ^0
Ну и плюс
static msgText[255]
замени на
static msgText[193]
память за зря расходуешь лишнюю :)
 
cwt777Дата: Вторник, 11.11.2008, 14:19:15 | Сообщение # 9
Сержант
Группа: Пользователи
Сообщений: 32
Репутация: 0
Статус: Не в сети
Quote (draft)
Так а не маловато ли поставил? Исходя из кода, ставить нужно 191, поскольку 192 - это символ конца строки ^0 Ну и плюс static msgText[255] замени на static msgText[193] память за зря расходуешь лишнюю

:D Гг Я просто незнаю от куда такие числа берутся, это из какого то плагина слизанно )))
А как ты определил что 193 надо ставить blush
 
draftДата: Вторник, 11.11.2008, 14:26:57 | Сообщение # 10
Полковник
Группа: Пользователи
Сообщений: 225
Репутация: 3
Статус: Не в сети
Code

formatex(msgText,_, g_msgTemplate, aTeam)
msgText[192] = '^0'  

Вот код.
msgText - это массив символов, где символ под номером 192 сделан нулевым, то бишь, последним в выводимой строке. Предполагаю, что сделано это предыдущим кодером для того, чтобы сервер не падал, если вдруг попадётся сообщение на 193 символа. Ну а дальше всё просто. 192-й символ - последний, значит, форматировать тебе надо 191 символ, поскольку 192-й ты уже знаешь.
Ну и отсюда получается, что символы после 192-го уже не имеют значения, значит, при создании массива создаёшь его не
static msgText[255]
а
static msgText[193]
Суть в том, что 193 - указывает на размер строки или по-другому, массива символов, где у каждого символа свой номер. Тока прикол-то в том, что номер первого символа не "1", а "0", поэтому и символов всего 193, но последним будет не 193-й, а 192-й. Ну, в общем, такая математика :D
 
cwt777Дата: Вторник, 11.11.2008, 14:34:53 | Сообщение # 11
Сержант
Группа: Пользователи
Сообщений: 32
Репутация: 0
Статус: Не в сети
Quote (draft)
Вот код. msgText - это массив символов, где символ под номером 192 сделан нулевым, то бишь, последним в выводимой строке. Предполагаю, что сделано это предыдущим кодером для того, чтобы сервер не падал, если вдруг попадётся сообщение на 193 символа. Ну а дальше всё просто. 192-й символ - последний, значит, форматировать тебе надо 191 символ, поскольку 192-й ты уже знаешь. Ну и отсюда получается, что символы после 192-го уже не имеют значения, значит, при создании массива создаёшь его не static msgText[255] а static msgText[193] Суть в том, что 193 - указывает на размер строки или по-другому, массива символов, где у каждого символа свой номер. Тока прикол-то в том, что номер первого символа не "1", а "0", поэтому и символов всего 193, но последним будет не 193-й, а 192-й. Ну, в общем, такая математика

rolleyes спб что объяснил)))

У меня еще пару вопросов вот исходник который работает

Code
/* Plugin generated by AMXX-Studio */

#include <amxmodx>

#define PLUGIN "kill"
#define VERSION "0.1"
#define AUTHOR "cwt777"

new const g_msgTemplate[] = "^x04 VAS ubil igrok ^x03%d KomaHgbl ^x04 %d Fragov"

new g_msgSayText

public plugin_init()
{
      register_plugin("kill", "0.1", "cwt777")
      register_event("DeathMsg", "kill", "a")
      g_msgSayText = get_user_msgid("SayText")

}
public kill()
{
      static aID, vID
      static msgText[193]
      static aTeam, aFrags
           
      aID = read_data(1)
      vID = read_data(2)
           
           
      if(vID == aID)
      {
       return
      }
           
      aTeam = get_user_team(aID)
      aFrags = get_user_frags(aID)
      formatex(msgText,191,g_msgTemplate, aTeam, aFrags)
      msgText[192] = '^0'
      msgSayText(vID, msgText)
}

msgSayText(id, message[])
{
      message_begin(MSG_ONE, g_msgSayText, _, id)
      write_byte(id)       
      write_string(message)
      message_end()
}

Но....
Когда меня убивют пишут
Игрок 1 (тут число моих фрагов) Fragov это когда я играю за Контров
а когда за терроров
Игрок 2 (тут число моих фрагов) Fragov
А как сделать так что бы вместо цифры показал название команды, И в чат сообщаласб например при убийстве контров в контровский чат, а при убийстве террора в террорский чат %)

Сообщение отредактировал cwt777 - Вторник, 11.11.2008, 15:20:18
 
PomanoBДата: Вторник, 11.11.2008, 16:37:48 | Сообщение # 12
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Что-то типа такого ...
Только сообщение подправь
Code

/* Plugin generated by AMXX-Studio */  

#include <amxmodx>  

#define PLUGIN "kill"  
#define VERSION "0.1"  
#define AUTHOR "cwt777"  

new const g_msgTemplate[] = "^x04 VAS ubil igrok ^x03%s ^x04 %d Fragov"  

new g_msgSayText  

public plugin_init()  
{  
  register_plugin("kill", "0.1", "cwt777")  
  register_event("DeathMsg", "kill", "a")  
  g_msgSayText = get_user_msgid("SayText")  

}  
public kill()  
{  
  static aID, vID  
  static msgText[193]  
  static aTeam, aFrags  
  new vTeam;
            
  aID = read_data(1)  
  vID = read_data(2)  
             
             
  if(vID == aID)  
  {  
   return  
  }  
             
  aTeam = get_user_team(aID)  
  aFrags = get_user_frags(aID)  
  vTeam=get_user_team(vID)
        
   
  if (aTeam==1)
   formatex(msgText,191,g_msgTemplate, "(Terrorist)", aFrags+1)  
  else if (aTeam==2)
   formatex(msgText,191,g_msgTemplate, "(Counter-Terrorist)", aFrags+1)  
   
  msgText[192] = '^0'  
  msgSayText(vTeam, msgText)  
}  

msgSayText(team,message[])  
{  
   new players[32]
   new pln;
    
   if (team==1)
    get_players(players,pln,"e","TERRORIST")
   else if (team==2)
    get_players(players,pln,"e","CT")
    
   for (new i=0; i<pln; i++)  
   {
    message_begin(MSG_ONE, g_msgSayText, _, players[i])  
    write_byte(players[i])        
    write_string(message)  
    message_end()  
   }
}


http://romanov4400.mybrute.com
 
cwt777Дата: Вторник, 11.11.2008, 17:29:50 | Сообщение # 13
Сержант
Группа: Пользователи
Сообщений: 32
Репутация: 0
Статус: Не в сети
Quote (PomanoB)
Что-то типа такого ... Только сообщение подправь

спб огромное )) ;)

Добавлено (2008-11-11, 5:29 Pm)
---------------------------------------------
а можно в место фрагов поставить Имя игрока который убил, ведь через get_user_name = aName не получится да?

 
PomanoBДата: Вторник, 11.11.2008, 22:51:47 | Сообщение # 14
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Code

new aName[32];
get_user_name(id,aName,31);


http://romanov4400.mybrute.com
 
cwt777Дата: Вторник, 11.11.2008, 23:00:59 | Сообщение # 15
Сержант
Группа: Пользователи
Сообщений: 32
Репутация: 0
Статус: Не в сети
ага спб))
тока поменял местами
if (aTeam==1)
formatex(msgText,191,g_msgTemplate, "(Terrorist)", aFrags+1)
else if (aTeam==2)
formatex(msgText,191,g_msgTemplate, "(Counter-Terrorist)", aFrags+1)
Как раз я только что таг же сделал)), у меня не выводил сообщение имени оказалось, что забыл поменять переменну %d на %s =)

Эх достал я наверно всех своими вопросами, всем спасибо за помощь)

Сообщение отредактировал cwt777 - Вторник, 11.11.2008, 23:07:06
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2026