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

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

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

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

Ошибки в плагине!

Статус пользователя Redir
сообщение 15.3.2014, 13:55
Сообщение #1
Стаж: 12 лет

Сообщений: 567
Благодарностей: 138
Полезность: 119

Всем привет. Иногда возникает ошибка в плагине sad.gif

Стоит debug режим:
Код
L 03/15/2014 - 14:38:07: [AMXX] Displaying debug trace (plugin "kills_like_cso.amxx")
L 03/15/2014 - 14:38:07: [AMXX] Run time error 4: index out of bounds
L 03/15/2014 - 14:38:07: [AMXX]    [0] phphHnSFl.sma::show_kills (line 98)
L 03/15/2014 - 14:38:07: [AMXX]    [1] phphHnSFl.sma::zp_user_infected_post (line 55)
L 03/15/2014 - 14:38:10: [AMXX] Displaying debug trace (plugin "kills_like_cso.amxx")
L 03/15/2014 - 14:38:10: [AMXX] Run time error 4: index out of bounds
L 03/15/2014 - 14:38:10: [AMXX]    [0] phphHnSFl.sma::show_kills (line 96)
L 03/15/2014 - 14:38:10: [AMXX]    [1] phphHnSFl.sma::zp_user_infected_post (line 55)
L 03/15/2014 - 14:38:20: [AMXX] Displaying debug trace (plugin "kills_like_cso.amxx")
L 03/15/2014 - 14:38:20: [AMXX] Run time error 4: index out of bounds
L 03/15/2014 - 14:38:20: [AMXX]    [0] phphHnSFl.sma::show_kills (line 98)
L 03/15/2014 - 14:38:20: [AMXX]    [1] phphHnSFl.sma::zp_user_infected_post (line 55)
L 03/15/2014 - 14:38:20: [AMXX] Displaying debug trace (plugin "kills_like_cso.amxx")
L 03/15/2014 - 14:38:20: [AMXX] Run time error 4: index out of bounds
L 03/15/2014 - 14:38:20: [AMXX]    [0] phphHnSFl.sma::show_kills (line 96)
L 03/15/2014 - 14:38:20: [AMXX]    [1] phphHnSFl.sma::zp_user_infected_post (line 55)


Вот собственно исходник этого плагина:
Код:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <zombieplague>

new const red_color[14] = { 250, 50, 250, 250, 250, 250, 250, 50, 250, 250, 250, 250, 250, 250 }
new const green_color[14] = { 250, 150, 250, 150, 0, 250, 50, 150, 150, 0, 150, 250, 150, 0 }
new const blue_color[14] = { 250, 250, 50, 50, 0, 50, 250, 250, 50, 0, 250, 50, 50, 0 }
new const cso_kill_headshot[] = "cso/headshot.wav"
new const cso_kill_sounds[14][] =
{
"cso/kill1.wav",
"cso/kill2.wav",
"cso/kill3.wav",
"cso/kill4.wav",
"cso/kill5.wav",
"cso/kill6.wav",
"cso/kill7.wav",
"cso/kill8.wav",
"cso/kill9.wav",
"cso/kill10.wav",
"cso/kill11.wav",
"cso/kill12.wav",
"cso/kill13.wav",
"cso/kill14.wav"
}

new Float:g_iTask[33];
new g_iKills[33];
new g_center1_sync;

public plugin_init()
{
register_plugin("Kill's Like CS Online", "0.1", "fl0wer")

RegisterHam(Ham_Killed, "player", "Player_Killed_Post", 1)
RegisterHam(Ham_Player_PostThink, "player", "Player_PostThink_Post", 1)

g_center1_sync = CreateHudSyncObj()
}

public plugin_precache()
{
for(new i = 0; i < sizeof cso_kill_sounds; i++)
precache_sound(cso_kill_sounds[i])

precache_sound(cso_kill_headshot)
}

public zp_user_infected_post(id, infector)
{
if(!infector)
return;

show_kills(id, infector)
}

public Player_Killed_Post(victim, attacker, shouldgib)
{
if(!is_user_connected(attacker))
return;

if(victim == attacker)
return;

show_kills(victim, attacker)
}

public Player_PostThink_Post(id)
{
if(!is_user_alive(id))
return;

if(g_iTask[id] + 4.0 <= get_gametime())
{
g_iKills[id] = max(g_iKills[id] -= 1, 0);
g_iTask[id] = get_gametime();
}
}

show_kills(victim, attacker)
{
g_iKills[attacker]++;
g_iTask[attacker] = get_gametime();
g_iKills[victim] = 0;
g_iTask[victim] = 0.0;

new speak_sound = g_iKills[attacker] - 1;

if(get_pdata_int(victim, 75) == HIT_HEAD)
{
client_cmd(attacker, "speak ^"%s^"", cso_kill_headshot)
}
else
{
client_cmd(attacker, "speak ^"%s^"", cso_kill_sounds[speak_sound])
}
set_hudmessage(red_color[g_iKills[attacker]], green_color[g_iKills[attacker]], blue_color[g_iKills[attacker]], -1.0, 0.25, 0, 0.1, 3.0, 0.1, 0.1, -1)
ShowSyncHudMsg(attacker, g_center1_sync, "%d KILL!", g_iKills[attacker])
}


Прошу помощи. thank_you2.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя 9iky6
сообщение 15.3.2014, 14:05
Сообщение #2


Стаж: 14 лет

Сообщений: 143
Благодарностей: 47
Полезность: 260

Код
public zp_user_infected_post(id, infector)
{
   if(!infector)
      return;

Поменяй на это:
Код
public zp_user_infected_post(id, infector)
{
   if(!is_user_connected(infector))
      return;


Отредактировал: 9iky6, - 15.3.2014, 14:06
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
exec1337
сообщение 15.3.2014, 14:07
Сообщение #3
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Код
[pawn][/pawn]
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
serfreeman1337
сообщение 15.3.2014, 14:39
Сообщение #4
Стаж: 13 лет

Сообщений: 912
Благодарности: выкл.

Кто-то смог набрать больше 14 убийств за 1 минуту? Тут выход за массивы.
В функции show_kills найди и замени:
Код:
g_iKills[attacker]++

на:
Код:
if(g_iKills[attacker] < sizeof cso_kill_sounds)
g_iKills[attacker]++;


Отредактировал: serfreeman1337, - 15.3.2014, 14:39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Redir
сообщение 15.3.2014, 15:27
Сообщение #5
Стаж: 12 лет

Сообщений: 567
Благодарностей: 138
Полезность: 119

Поставил сразу же оба варианты. Т.е. заменил, как вы 9iky6 сказали и вы serfreeman1337. Буду тестировать, спасибо!!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Redir
сообщение 15.3.2014, 17:26
Сообщение #6
Стаж: 12 лет

Сообщений: 567
Благодарностей: 138
Полезность: 119

Ошибки остались cray.gif

Вот такое выдает:
Код
L 03/15/2014 - 19:14:32: [AMXX] Displaying debug trace (plugin "kills_like_cso.amxx")
L 03/15/2014 - 19:14:32: [AMXX] Run time error 4: index out of bounds
L 03/15/2014 - 19:14:32: [AMXX]    [0] phpqsTchf.sma::show_kills (line 99)
L 03/15/2014 - 19:14:32: [AMXX]    [1] phpqsTchf.sma::zp_user_infected_post (line 55)
L 03/15/2014 - 19:14:32: [AMXX] Displaying debug trace (plugin "kills_like_cso.amxx")
L 03/15/2014 - 19:14:32: [AMXX] Run time error 4: index out of bounds
L 03/15/2014 - 19:14:32: [AMXX]    [0] phpqsTchf.sma::show_kills (line 99)
L 03/15/2014 - 19:14:32: [AMXX]    [1] phpqsTchf.sma::zp_user_infected_post (line 55)


Вот, какой исходник плагина у меня получился, когда заменил, как вы 9iky6 и serfreeman1337 сказали:
Код:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <zombieplague>

new const red_color[14] = { 250, 50, 250, 250, 250, 250, 250, 50, 250, 250, 250, 250, 250, 250 }
new const green_color[14] = { 250, 150, 250, 150, 0, 250, 50, 150, 150, 0, 150, 250, 150, 0 }
new const blue_color[14] = { 250, 250, 50, 50, 0, 50, 250, 250, 50, 0, 250, 50, 50, 0 }
new const cso_kill_headshot[] = "cso/headshot.wav"
new const cso_kill_sounds[14][] =
{
"cso/kill1.wav",
"cso/kill2.wav",
"cso/kill3.wav",
"cso/kill4.wav",
"cso/kill5.wav",
"cso/kill6.wav",
"cso/kill7.wav",
"cso/kill8.wav",
"cso/kill9.wav",
"cso/kill10.wav",
"cso/kill11.wav",
"cso/kill12.wav",
"cso/kill13.wav",
"cso/kill14.wav"
}

new Float:g_iTask[33];
new g_iKills[33];
new g_center1_sync;

public plugin_init()
{
register_plugin("Kill's Like CS Online", "0.1", "fl0wer")

RegisterHam(Ham_Killed, "player", "Player_Killed_Post", 1)
RegisterHam(Ham_Player_PostThink, "player", "Player_PostThink_Post", 1)

g_center1_sync = CreateHudSyncObj()
}

public plugin_precache()
{
for(new i = 0; i < sizeof cso_kill_sounds; i++)
precache_sound(cso_kill_sounds[i])

precache_sound(cso_kill_headshot)
}

public zp_user_infected_post(id, infector)
{
if(!is_user_connected(infector))
return;

show_kills(id, infector)
}

public Player_Killed_Post(victim, attacker, shouldgib)
{
if(!is_user_connected(attacker))
return;

if(victim == attacker)
return;

show_kills(victim, attacker)
}

public Player_PostThink_Post(id)
{
if(!is_user_alive(id))
return;

if(g_iTask[id] + 4.0 <= get_gametime())
{
g_iKills[id] = max(g_iKills[id] -= 1, 0);
g_iTask[id] = get_gametime();
}
}

show_kills(victim, attacker)
{
if(g_iKills[attacker] < sizeof cso_kill_sounds)
g_iKills[attacker]++;
g_iTask[attacker] = get_gametime();
g_iKills[victim] = 0;
g_iTask[victim] = 0.0;

new speak_sound = g_iKills[attacker] - 1;

if(get_pdata_int(victim, 75) == HIT_HEAD)
{
client_cmd(attacker, "speak ^"%s^"", cso_kill_headshot)
}
else
{
client_cmd(attacker, "speak ^"%s^"", cso_kill_sounds[speak_sound])
}
set_hudmessage(red_color[g_iKills[attacker]], green_color[g_iKills[attacker]], blue_color[g_iKills[attacker]], -1.0, 0.25, 0, 0.1, 3.0, 0.1, 0.1, -1)
ShowSyncHudMsg(attacker, g_center1_sync, "%d KILL!", g_iKills[attacker])
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mistrick
сообщение 15.3.2014, 17:43
Сообщение #7


Стаж: 13 лет

Сообщений: 543
Благодарностей: 426
Полезность: 1034

Код:
if(g_iKills[attacker] < sizeof cso_kill_sounds - 1)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Redir
сообщение 15.3.2014, 18:38
Сообщение #8
Стаж: 12 лет

Сообщений: 567
Благодарностей: 138
Полезность: 119

Цитата(Mistrick94 @ 15.3.2014, 19:43) *
Код:
if(g_iKills[attacker] < sizeof cso_kill_sounds - 1)

Можно подробней, куда этот код вставить ?!
Код:
if(g_iKills[attacker] < sizeof cso_kill_sounds)


Заменить на
Код:
if(g_iKills[attacker] < sizeof cso_kill_sounds - 1)


Правильно понимаю ?

Отредактировал: Redir, - 15.3.2014, 18:41
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: