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

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

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

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

14 страниц V  « 5 6 7 ... 12 13 »

Crux Ansata. Плагин добавляет талисман жизни.

Статус пользователя neygomon
сообщение 9.6.2015, 9:50
Сообщение #101


Стаж: 14 лет

Сообщений: 1644
Благодарностей: 515
Полезность: 363

Nixon, это я знаю.
но все равно он вызывается чуточку позже нежели HLTV, и уже в Round_Start все живые :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Dukkhaz0r
сообщение 9.6.2015, 9:59
Сообщение #102


Стаж: 12 лет

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

Тестовая версия.
-Исправлен баг с багнутым рандомом(thx neygomon и Nixon);
-Добавлена регенерация здоровья прямо до сотки.

Исходник:
Код:
#include <amxmodx>
#include <engine>

#define MIN_PLAYERS 5
#define ROUND_ACCESS 3
#define GIVE_HEALTH 5
#define INTERVAL_REGENERATION 2.0

new const g_szModel[] = "models/crux_ansata.mdl";

new g_iPlayerId, g_iRoundCounter, szName[32];

public plugin_init()
{
register_plugin("Crux Ansata", "1.0", "DUKKHAZ0R");

register_touch("crux_ansata", "player", "fw_TouchEntity");

register_logevent("eRoundStart", 2, "1=Round_Start");
register_event("DeathMsg", "eDeathMsg", "a", "1>0");
register_event("TextMsg", "eRoundRestart", "a", "2&#Game_C", "2&#Game_w");

set_task(INTERVAL_REGENERATION, "RegenerationHealth", .flags="b");
}

public plugin_precache()
{
precache_model(g_szModel);
}

public client_disconnect(id)
if(g_iPlayerId == id) g_iPlayerId = 0;

public eRoundRestart()
g_iRoundCounter = 0;

public eRoundStart()
{
if(++g_iRoundCounter < ROUND_ACCESS || get_playersnum() < MIN_PLAYERS)
return;

static iEnt;

while((iEnt = find_ent_by_class(iEnt, "crux_ansata")))
remove_entity(iEnt);

static apPlayers[32], iPlayers;
get_players(apPlayers, iPlayers, "ach");

g_iPlayerId = apPlayers[random(iPlayers-1)];
get_user_name(g_iPlayerId, szName, charsmax(szName));

ChatColor(0, "^4[CA] ^3%s ^1выпал талисман жизни.", szName);
}

public eDeathMsg()
{
static pVictim, Float:flOrigin[3]; pVictim = read_data(2);

if(pVictim == g_iPlayerId)
{
new iEnt = create_entity("info_target");

if(!is_valid_ent(iEnt))
return;

entity_get_vector(pVictim, EV_VEC_origin, flOrigin);
entity_set_vector(iEnt, EV_VEC_origin, flOrigin);
entity_set_string(iEnt, EV_SZ_classname, "crux_ansata");
entity_set_int(iEnt, EV_INT_solid, SOLID_TRIGGER);
entity_set_int(iEnt, EV_INT_movetype, MOVETYPE_NONE);
entity_set_int(iEnt, EV_INT_effects, 8);
entity_set_model(iEnt, g_szModel);
entity_set_size(iEnt, Float:{-16.0,-16.0,-16.0}, Float:{16.0,16.0,16.0});
ChatColor(g_iPlayerId = 0, "^4[CA] ^3%s ^1потерял талисман жизни.", szName);
}
}

public fw_TouchEntity(iEnt, id)
{
if(!is_valid_ent(iEnt))
return;

get_user_name(g_iPlayerId = id, szName, charsmax(szName));
ChatColor(0,"^4[CA] ^3%s ^1поднял талисман жизни.",szName);

entity_set_int(iEnt, EV_INT_flags, FL_KILLME);
}

public RegenerationHealth()
{
if(!g_iPlayerId || get_playersnum() < MIN_PLAYERS)
return;

static Float:fHealth, MsgId_Health; fHealth = entity_get_float(g_iPlayerId, EV_FL_health);

if(!MsgId_Health) MsgId_Health = get_user_msgid("Health");

if(fHealth < 100 && is_user_alive(g_iPlayerId))
{
static Float:giveHealth; giveHealth = (fHealth + GIVE_HEALTH) < 100 ? float(GIVE_HEALTH) : (100 - fHealth);

entity_set_float(g_iPlayerId, EV_FL_health, fHealth + giveHealth);

message_begin(MSG_ONE_UNRELIABLE, MsgId_Health, _, g_iPlayerId);
write_byte(floatround(fHealth + giveHealth));
message_end();

message_begin(MSG_ONE_UNRELIABLE, 98, _, g_iPlayerId);
write_short(1<<10);
write_short(1<<10);
write_short(0x0000);
write_byte(0);
write_byte(255);
write_byte(0);
write_byte(40);
message_end();
}
}

stock ChatColor(const id, const szMessage[], any:...)
{
static szBuffer[191], apPlayers[32], iPlayers; iPlayers = 1;
vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
if(id)
{
if(!is_user_connected(id)) return;
apPlayers[0] = id;
iPlayers = 1;
}
else get_players(apPlayers, iPlayers, "ch");
for(new i;i < iPlayers; i++)
{
message_begin(MSG_ONE_UNRELIABLE, 76, .player = apPlayers[i]);
write_byte(apPlayers[i]);
write_string(szBuffer);
message_end();
}
}


Причина: Исправил register_logevent(&quot;eRoundStart&quot;, 2, &quot;1=Round_Start&quot;);


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
gamerman
сообщение 9.6.2015, 10:30
Сообщение #103
Стаж: 11 лет

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

Спасибо. Счас будем тестить.

Кстати, ты шаришь в программинге, не можешь подсказать че миниган не крутится у спектров.
Тему на форуме я создавал.

Отредактировал: gamerman, - 9.6.2015, 10:31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя neygomon
сообщение 9.6.2015, 11:50
Сообщение #104


Стаж: 14 лет

Сообщений: 1644
Благодарностей: 515
Полезность: 363

Dukkhaz0r, а какой смысл гонять цикл таска, если, скажем, игроков мало или же нет "носителя" талисмана или тело мертвое, а талисман просто валяется?
предлагаю запускать таск только при соблюдении этих условий и убивать, если что-то не совпадает.

ps.gif Оптимизация 100lvl

Отредактировал: neygomon, - 9.6.2015, 11:52
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
gamerman
сообщение 9.6.2015, 12:12
Сообщение #105
Стаж: 11 лет

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

Цитата(Dukkhaz0r @ 9.6.2015, 13:59) *
Тестовая версия.
-Исправлен баг с багнутым рандомом(thx neygomon и Nixon);
-Добавлена регенерация здоровья прямо до сотки.


Тестовая версия вообще не работает.
Талисман не выдаётся, сообщения не пишутся. В чем дело?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя tato2013
сообщение 9.6.2015, 12:16
Сообщение #106


Стаж: 12 лет

Сообщений: 331
Благодарностей: 121
Полезность: 185

Цитата(gamerman @ 9.6.2015, 14:12) *
Тестовая версия вообще не работает.
Талисман не выдаётся, сообщения не пишутся. В чем дело?

Тоже самое...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя neygomon
сообщение 9.6.2015, 12:26
Сообщение #107


Стаж: 14 лет

Сообщений: 1644
Благодарностей: 515
Полезность: 363

gamerman, tato2013, даже этого нет?
Код:
ChatColor(0, "^4[CA] ^3%s ^1выпал талисман жизни.", szName);
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
gamerman
сообщение 9.6.2015, 12:31
Сообщение #108
Стаж: 11 лет

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

И этого нет. Вообще ничего нет.
Наверно не отрабатывается событие в начале раунда, по которому всё происходит.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя tato2013
сообщение 9.6.2015, 12:32
Сообщение #109


Стаж: 12 лет

Сообщений: 331
Благодарностей: 121
Полезность: 185

Цитата(neygomon @ 9.6.2015, 14:26) *
gamerman, tato2013, даже этого нет?
Код:
ChatColor(0, "^4[CA] ^3%s ^1выпал талисман жизни.", szName);

Нету
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя neygomon
сообщение 9.6.2015, 12:39
Сообщение #110


Стаж: 14 лет

Сообщений: 1644
Благодарностей: 515
Полезность: 363

gamerman, tato2013,
Код:
register_logevent("eRoundRestart", 2, "1=Round_Start");

->
Код:
register_logevent("eRoundStart", 2, "1=Round_Start");
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Nixon
сообщение 9.6.2015, 13:09
Сообщение #111


Стаж: 13 лет

Сообщений: 399
Благодарностей: 192
Полезность: 589

Цитата(neygomon @ 9.6.2015, 13:39) *
gamerman, tato2013,
Код:
register_logevent("eRoundRestart", 2, "1=Round_Start");

->
Код:
register_logevent("eRoundStart", 2, "1=Round_Start");


Интересно как у него вообще скомпилировался плагин crazy.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
gamerman
сообщение 9.6.2015, 13:14
Сообщение #112
Стаж: 11 лет

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

Цитата(Nixon @ 9.6.2015, 16:09) *
Интересно как у него вообще скомпилировался плагин crazy.gif

Скомпилировался и без ошибок.

Смотрю у тебя полезность шкалит...
А у чувака который плагины пишет
Полезность: < 0
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя neygomon
сообщение 9.6.2015, 13:18
Сообщение #113


Стаж: 14 лет

Сообщений: 1644
Благодарностей: 515
Полезность: 363

Nixon, функция eRoundRestart там тоже есть...
и да, компилятор не проверяет есть функция или нет.
потом просто в логах ошибки типа "Function blabla no found"

Отредактировал: neygomon, - 9.6.2015, 13:18
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Dukkhaz0r
сообщение 9.6.2015, 13:21
Сообщение #114


Стаж: 12 лет

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

Невнимателен был, когда поправлял.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя tato2013
сообщение 9.6.2015, 14:24
Сообщение #115


Стаж: 12 лет

Сообщений: 331
Благодарностей: 121
Полезность: 185

Так что ставить.где актуальное?

Отредактировал: tato2013, - 9.6.2015, 14:25
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя neygomon
сообщение 9.6.2015, 14:27
Сообщение #116


Стаж: 14 лет

Сообщений: 1644
Благодарностей: 515
Полезность: 363

tato2013, я сказал что поменять и на что, чтобы все было ок
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 9.6.2015, 14:28
Сообщение #117


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

tato2013, Crux Ansata. Плагин добавляет талисман жизни. (Пост #800112)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
gamerman
сообщение 9.6.2015, 14:54
Сообщение #118
Стаж: 11 лет

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

Последняя версия + фикс строки работает.
И с рандомом уже более-менее нормально, по крайней мере за 3 раунда - 3 разные ника.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sot100
сообщение 9.6.2015, 15:02
Сообщение #119


Стаж: 18 лет

Сообщений: 1695
Благодарностей: 500
Полезность: 711

баганый плагин, классический чистый сервер взял для проверки, мне выпадает талисман, нас 2 игрока, меня убивает противник, подбирает талисман, и один хрен талисман в новом раунде у меня. Надо как нить рандомом делать

Хотите - кину в лс IP, протестируем


https://vk.com/club_megamozg
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 9.6.2015, 15:03
Сообщение #120


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

sot100, какую версию ставили?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
14 страниц V  « 5 6 7 ... 12 13 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 2 гостей читают эту тему: