Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

вывод сообщения в чат своим и всем мёртвым.

Статус пользователя ssx
сообщение 5.6.2014, 17:27
Сообщение #1


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Здравствуйте!

Хочу запилить что бы в чат писало что такой-то игрок начинает закладывать/разминировать бомбу.

Есстественно уведомлять противников - глупо.

Подскажите пожалуйста как это реализовать ?


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Fintok
сообщение 5.6.2014, 18:17
Сообщение #2


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

ssx, используй Misc Stats из стандартного набора AMXX.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 5.6.2014, 18:46
Сообщение #3


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Цитата(Fintok @ 5.6.2014, 18:17) *
ssx, используй Misc Stats из стандартного набора AMXX.

там разве не всех уведомляет ?


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DumoH4uk
сообщение 5.6.2014, 19:22
Сообщение #4


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Код:
#include <amxmodx>
#include <amxmisc>
#include <csx>

#define PLUGIN "Bomb"
#define VERSION "1.0"
#define AUTHOR "Azaza"

public plugin_init() register_plugin(PLUGIN, VERSION, AUTHOR)

public bomb_planted(id)
{
new Name[32]
get_user_name(id, Name, charsmax(Name))

new Players[32], Player, Num

get_players(Players, Num, "ch")

for(new i; i < Num; i++)
{
Player = Players[i]

if(get_user_team(id) != get_user_team(Player) || id == Player) continue;

client_print(Player, print_chat, "%s Ustanovil bomb!", Name)
}
}

public bomb_defused(id)
{
new Name[32]
get_user_name(id, Name, charsmax(Name))

new Players[32], Player, Num

get_players(Players, Num, "ch")

for(new i; i < Num; i++)
{
Player = Players[i]

if(get_user_team(id) != get_user_team(Player) || id == Player) continue;

client_print(Player, print_chat, "%s Razminiroval bomb!", Name)
}
}


Как-то так. Отлавливаем установку бомбы и разминирование бомбы. Сообщение пишется только команде (CT - кто поставил бомбу TT - кто разминировал бомбу).

А, вообще вот - События с бомбой В поиске напиши (Бомб)

Отредактировал: DumoH4uk, - 5.6.2014, 19:29
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Surf
сообщение 5.6.2014, 20:00
Сообщение #5


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

DumoH4uk,
не верно
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 5.6.2014, 21:04
Сообщение #6


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

отлавливаю через
public bomb_planting(planter)
и
public bomb_defusing(defuser)

Заюзал бы цикл по игрокам да как не знаю .



Отредактировал: ssx, - 5.6.2014, 21:06


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DumoH4uk
сообщение 5.6.2014, 21:09
Сообщение #7


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Цитата(Surf @ 5.6.2014, 22:00) *
DumoH4uk,
не верно


Что неверного?

Код:
bomb_defused --> bomb_defusing


и

Код:
bomb_planted --> bomb_planting


функции вызываются в момент установки и в момент разминирования бомбы.
Сообщения пишутся как надо, игроку который устанавливает или минирует бомбу сообщение не пишется.
Что нужно? Что не правильно?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 5.6.2014, 21:09
Сообщение #8


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

как то так
Код:
new i, Count, Players[32], player

get_players(Players, Count, "h")

for(i = 0; i < Count; i++) {
player = Players[i]

//тут все остальное...
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Zer0CooL
сообщение 5.6.2014, 21:28
Сообщение #9
Стаж: 13 лет

Сообщений: 13
Благодарностей: 8
Полезность: 0

Цитата
Что нужно? Что не правильно?

Ну во первых как ты уже заметил немного не те функции заюзал :)
Во вторых дергать функцию get_user_team(id) не хорошо, когда есть флаг "e" для функции get_players
В третьих у тебя получается дублирование кода, что тоже не очень хорошо. Ну в данном случае это мелочи...

Вот переделал стандартный miscstats (взял его из последнего дев. билда).
Что менял:
Код:

public bomb_planting(planter)
{
if (BombPlanting)
announcePlantingDefusing(planter, "PLANT_BOMB")
}

public bomb_defusing(defuser)
{
if (BombDefusing)
announcePlantingDefusing(defuser, "DEFUSING_BOMB")

g_Defusing = defuser
}

announcePlantingDefusing(id, message[])
{
new name[32]
get_user_name(id, name, charsmax(name))

new players[32], playersNum
message[0] == 'P' ? get_players(players, playersNum, "aceh", "T")
: get_players(players, playersNum, "aceh", "CT")

set_hudmessage(255, 100, 50, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
for (new i = 0; i < playersNum; i++)
ShowSyncHudMsg(players[i], g_announce_sync, "%L", LANG_PLAYER, message, name)
}

Не проверял, но должно работать.
Прикрепленные файлы:
Прикрепленный файл  miscstats.zip ( 7,43 килобайт ) Кол-во скачиваний: 0
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 5.6.2014, 21:57
Сообщение #10


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Спасибо...

Давайте ближе к финалу .. направление понял ...

Нужно: писать в чат сообщение всем мёртвым (кт, тр и спектаторы) и своим живым.

Это получается два цикла нужно использовать ?

Первый - берем всех мёртвых
Второй - берем всех живых со своей команды

Так ?

Отредактировал: ssx, - 5.6.2014, 21:58


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Zer0CooL
сообщение 5.6.2014, 23:04
Сообщение #11
Стаж: 13 лет

Сообщений: 13
Благодарностей: 8
Полезность: 0

Цитата
Нужно: писать в чат сообщение всем мёртвым (кт, тр и спектаторы) и своим живым.

Тогда как то так:
Код:

#include <amxmodx>
#include <csx>
#include <cstrike>

public bomb_planting(planter)
{
show_message("сообщение", CS_TEAM_T)
}

public bomb_defusing(defuser)
{
show_message("сообщение", CS_TEAM_CT)
}

stock show_message(const message[], CsTeams:team)
{
new players[32], playersNum, pid
get_players(players, playersNum, "ch")

for (new i = 0; i < playersNum; i++)
{
pid = players[i]
if (!is_user_alive(pid) || cs_get_user_team(pid) == team)
client_print(pid, print_chat, message)
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 9.6.2014, 15:19
Сообщение #12


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Ваш код работает но не могу интегрировать в свой плагин.

Вот часть моего плагина:
Код:
public bomb_planting(planter)
{
if(priv[planter] == 0 || !is_user_alive(planter))
return PLUGIN_HANDLED

new name[32]
get_user_name(planter,name,31)

if(priv[planter] == 2)
{
show_message("ВИП-игрок %s начинает ставить бомбу!", CS_TEAM_T) - тут нужно впихнуть name
show_message("бла-бла-бла", CS_TEAM_T) - это не работает так же.
// client_print(0,print_chat,"ВИП-игрок %s начинает ставить бомбу!",name) - как было раньше
// client_print(0,print_chat,"бла-бла-бла") - как было раньше
}
}


Помогите пожалуйста.

Отредактировал: ssx, - 9.6.2014, 15:20


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 9.6.2014, 15:23
Сообщение #13


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

Код:
show_message("ВИП-игрок %s начинает ставить бомбу!", name, CS_TEAM_T)
show_message("бла-бла-бла", CS_TEAM_T)


если я правильно понял, то вы около сообщения указали как надо сделать
если так, то попробуйте этот код

Отредактировал: GOOD FELLOW, - 9.6.2014, 15:24
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 9.6.2014, 15:25
Сообщение #14


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Цитата(GOOD FELLOW @ 9.6.2014, 15:23) *
Код:
show_message("ВИП-игрок %s начинает ставить бомбу!", name, CS_TEAM_T)
show_message("бла-бла-бла", CS_TEAM_T)


это?


пробовал. сразу ерроры. пробовал в сток передавать name
stock show_message(const message[], CsTeams:team, name) - не катит

пробовал в стоке вставлять
new name[32]
get_user_name(pid,name,31)

Код:
stock show_message(const message[], CsTeams:team)
{
new players[32], playersNum, pid
get_players(players, playersNum, "ch")

for (new i = 0; i < playersNum; i++)
{
pid = players[i]
if (!is_user_alive(pid) || cs_get_user_team(pid) == team)

new name[32]
get_user_name(pid,name,31)
client_print(pid, print_chat, message)

client_cmd(pid, "echo [TEST MSG] Your name %s", name)
}
}

Аналогично не хочет компилить даже не то что работать.

Отредактировал: ssx, - 9.6.2014, 15:26


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 9.6.2014, 15:29
Сообщение #15


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

Код:
stock show_message(const message[], CsTeams:team)

попробуй заменить на

Код:
stock show_message(const message[], any:..., CsTeams:team)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 9.6.2014, 15:36
Сообщение #16


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

На вот такое
Код:
stock show_message(const message[], any:..., CsTeams:team)
{
new players[32], playersNum, pid
get_players(players, playersNum, "ch")

for (new i = 0; i < playersNum; i++)
{
pid = players[i]
if (!is_user_alive(pid) || cs_get_user_team(pid) == team)
new name[32]
get_user_name(pid,name,31)
client_print(pid, print_chat, message)

client_cmd(pid, "echo [TEST MSG] Your name %s", name)
}
}

ругается вот так:
ошибки компиля
// D:\user0\Server_CS_27014\cstrike\addons\amxmodx\scripting\kill_bonus.sma(643)
: error 001: expected token: ")", but found ","
// D:\user0\Server_CS_27014\cstrike\addons\amxmodx\scripting\kill_bonus.sma(643)
: error 029: invalid expression, assumed zero
// D:\user0\Server_CS_27014\cstrike\addons\amxmodx\scripting\kill_bonus.sma(646)
: error 021: symbol already defined: "get_players"
// D:\user0\Server_CS_27014\cstrike\addons\amxmodx\scripting\kill_bonus.sma(648)
: error 010: invalid function or declaration
// D:\user0\Server_CS_27014\cstrike\addons\amxmodx\scripting\kill_bonus.sma(651)
: error 010: invalid function or declaration
// D:\user0\Server_CS_27014\cstrike\addons\amxmodx\scripting\kill_bonus.sma(653)
: error 021: symbol already defined: "get_user_name"
// D:\user0\Server_CS_27014\cstrike\addons\amxmodx\scripting\kill_bonus.sma(656)
: error 021: symbol already defined: "client_cmd"
// D:\user0\Server_CS_27014\cstrike\addons\amxmodx\scripting\kill_bonus.sma(658)
: warning 203: symbol is never used: "name"
// D:\user0\Server_CS_27014\cstrike\addons\amxmodx\scripting\kill_bonus.sma(658)
: warning 203: symbol is never used: "pid"
// D:\user0\Server_CS_27014\cstrike\addons\amxmodx\scripting\kill_bonus.sma(658)
: warning 203: symbol is never used: "players"
// D:\user0\Server_CS_27014\cstrike\addons\amxmodx\scripting\kill_bonus.sma(658)
: warning 203: symbol is never used: "playersNum"
//
// 7 Errors.
// Could not locate output file D:\user0\Server_CS_27014\cstrike\addons\amxmodx\
scripting\compiled\kill_bonus.amx (compile failed).
//
// Compilation Time: 0.22 sec
// ----------------------------------------


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 9.6.2014, 15:41
Сообщение #17


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

дай мне весь код своего плагина, посижу пошаманю
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 9.6.2014, 15:47
Сообщение #18


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Цитата(GOOD FELLOW @ 9.6.2014, 15:41) *
дай мне весь код своего плагина, посижу пошаманю

добавил в скайп.


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 9.6.2014, 17:45
Сообщение #19


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

И так, таки не смог добиться что бы name выводило в сообщении.

Для теста разделил на две функции т.к. если в одной то оба сообщения не отображаются .

плаг
Код:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#include <csx>

public plugin_init()
{
register_plugin("TEST", "1.0", "ISDP")
register_clcmd("say /t","test")
register_clcmd("say /t1","test1")
}

public test(id)
{
new name[32]
get_user_name(id,name,31)

client_print(0,print_chat,"Игрок %s Тестирует функцию test!",name)

show_message("Тест простого сообщения", CS_TEAM_T)
}

public test1(id)
{
new name[32]
get_user_name(id,name,31)

client_print(0,print_chat,"Игрок %s Тестирует функцию test1!",name)

show_message("Тест сообщения с ником %s", CS_TEAM_T)
}

//stock show_message(const message[], CsTeams:team)
stock show_message(const message[], const CsTeams:team, any:...)
{
new players[32], playersNum, pid
get_players(players, playersNum, "ch")

for (new i = 0; i < playersNum; i++)
{
pid = players[i]
if (!is_user_alive(pid) || cs_get_user_team(pid) == team) {
new szName[32]
get_user_name(pid,szName,31)
client_print(pid, print_chat, message)
}
}
}


У кого какие мысли?


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 9.6.2014, 17:57
Сообщение #20


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Пока что не актуально... похоже есть решение.. сейчас протестирую и выложу.

Спасибо GOOD FELLOW за помощь!


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: