Damager - Error логи

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
81
Реакции
9
Помог
3 раз(а)
Основная информация

Проблема: Error логи

Ошибка:
L 02/13/2017 - 01:25:31: [AMXX] Displaying debug trace (plugin "damager.amxx", version "0.1b")
L 02/13/2017 - 01:25:31: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
L 02/13/2017 - 01:25:31: [AMXX] [0] damager.sma::EventDamage (line 23)
Дополнительная информация

Amx Mod X: ReAMXX

Билд:
Код:
1022


ReGamedll:
Код:
5.2.0.175-dev


Список модулей:
Код:
Currently loaded modules:
name version author status
[ 1] Engine 1.8.3-Re AMX Mod X Dev Team running
[ 2] Ham Sandwich 1.8.3-Re AMX Mod X Dev Team running
[ 3] CStrike 1.8.3-Re AMX Mod X Dev Team running
[ 4] Fun 1.8.3-Re AMX Mod X Dev Team running
[ 5] FakeMeta 1.8.3-Re AMX Mod X Dev Team running
[ 6] CSX 1.8.3-Re AMX Mod X Dev Team running
[ 7] MySQL 1.8.3-Re AMX Mod X Dev Team running
[ 8] nVault 1.8.3-Re AMX Mod X Dev Team running


Список плагинов:
Код:
не могу скопировать все из консоли, не хватает строк)


Список метамодулей:
Код:
Currently loaded plugins:
description stat pend file vers src load unlod
[ 1] AMX Mod X RUN - amxmodx_mm_i386. v1.8.3-R ini Start ANY
[ 2] Reunion RUN - reunion_mm_i386. v0.1.75 ini Start Never
[ 3] Revoice RUN - revoice_mm_i386. v0.1.26 ini Start Never
[ 4] ReSemiclip RUN - resemiclip_mm_i3 v2.3.8 ini Chlvl ANY
[ 5] Engine RUN - engine_amxx_i386 v1.8.3-R pl1 ANY ANY
[ 6] Ham Sandwich RUN - hamsandwich_amxx v1.8.3-R pl1 ANY ANY
[ 7] CStrike RUN - cstrike_amxx_i38 v1.8.3-R pl1 ANY ANY
[ 8] Fun RUN - fun_amxx_i386.so v1.8.3-R pl1 ANY ANY
[ 9] FakeMeta RUN - fakemeta_amxx_i3 v1.8.3-R pl1 ANY ANY
[10] CSX RUN - csx_amxx_i386.so v1.8.3-R pl1 ANY ANY
[11] MySQL RUN - mysql_amxx_i386. v1.8.3-R pl1 ANY ANY


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

#pragma semicolon 1

new g_pHudSyncObj1;
new g_pHudSyncObj2;

public plugin_init()
{
register_plugin("Damager", "0.1b", "Subb98");
register_event("Damage", "EventDamage", "b", "2!0", "3=0", "4!0");
g_pHudSyncObj1 = CreateHudSyncObj();
g_pHudSyncObj2 = CreateHudSyncObj();
}

public EventDamage(const id)
{
static pAttacker, iDamage;
pAttacker = get_user_attacker(id), iDamage = read_data(2);
{
set_hudmessage(0, _, 200, _, 0.55, _, _, 1.0, _, 0.0, -1);
ShowSyncHudMsg(pAttacker, g_pHudSyncObj1, "%d", iDamage);
}
if(is_user_connected(id))
{
set_hudmessage(255, 0, _, 0.45, -1.0, _, _, 1.0, _, 0.0, -1);
ShowSyncHudMsg(id, g_pHudSyncObj2, "%s%d", id == pAttacker ? "-" : "", iDamage);
}
}

stock bool:fm_is_ent_visible(const id, const pEnt, const bool:bIgnoreMonsters = false)
{
new Float:fStart[3], Float:fDestination[3], Float:fFraction;
pev(id, pev_origin, fStart);
pev(id, pev_view_ofs, fDestination);
fStart[0] += fDestination[0];
fStart[1] += fDestination[1];
fStart[2] += fDestination[2];
pev(pEnt, pev_origin, fDestination);
engfunc(EngFunc_TraceLine, fStart, fDestination, bIgnoreMonsters, id, 0);
get_tr2(0, TR_flFraction, fFraction);
if(fFraction > 0.97)
{
return true;
}
return false;
}


Комментарий:
Здравствуйте. Плагин посылает регулярные ошибки в логи. Помогите исправить пожалуйста)
 
В этой теме было размещено решение! Перейти к решению.

Вложения

Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
Последнее редактирование:
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Cовсем не похож на код Влада, скорее всего его сильно изменили.
В павне я новичок, но не как не могу понять, зачем там сток и факемета?
И почему там фигурные скобки без условия? xD Что Вы сделали с кодом? xD
 
Последнее редактирование:
Сообщения
258
Реакции
262
Помог
5 раз(а)
C++:
/**********
* Damager 0.1b
*
* Описание:
* Данный плагин отображает нанесённый урон в режиме реального времени
*
* Особенности:
* Настройка активности отображения нанесённого урона по умолчанию
* Гибкая настройка чат-сообщений
* Блокировка вывода команды /damage, дабы лишний раз не засорять чат
*
* Команды:
* say /damage - вкл/откл отображение урона (общий чат)
* say_team /damage - вкл/откл отображение урона (командный чат)
*
* Авторские права:
* © Subb98, 2013
*
* Издательские права:
* © Life In Game - Игровые серверы CS 1.6, 2013
*
**********/

#include <amxmodx>

#pragma semicolon 1

#define MAX_PLAYERS 32 // Максимальное кол-во игроков на сервере, заменить своим (по умолчанию 32)
#define is_client_connected(%0) (0 < %0 <= g_iMaxPlayers)

#define DAMAGE_DEFAULT_ACTIVE 1 // Активность отображения нанесённого урона по умолчанию (1 - включено, 0 - отключено; по умолчанию 1)

#define USE_COLOR_PREFIX // Закомментируйте эту строку, если не хотите использовать цветной префикс в чат-сообщениях

#if defined USE_COLOR_PREFIX
#define MSG_SAY_TEXT 76

new const g_szPrefixName[] = "Damager"; // Имя цветного префикса (по умолчанию "Damager")
#endif

#define WILL_BE_USED_BOTS // Закомментируйте эту строку, если на сервере не будут использоваться боты

new bool:g_bDamage[MAX_PLAYERS];

new g_pHudSyncObj1;
new g_pHudSyncObj2;
new g_iMaxPlayers;

public plugin_init()
{
register_plugin("Damager", "0.1b", "Subb98");
register_dictionary("damager.txt");
register_clcmd("say /damage", "CmdDamage");
register_clcmd("say_team /damage", "CmdDamage");
register_event("Damage", "EventDamage", "b", "2!0", "3=0", "4!0");
g_pHudSyncObj1 = CreateHudSyncObj();
g_pHudSyncObj2 = CreateHudSyncObj();
g_iMaxPlayers = get_maxplayers();
}

public client_putinserver(id)
{
switch(DAMAGE_DEFAULT_ACTIVE)
{
case 0: g_bDamage[id] = false;
case 1: g_bDamage[id] = true;
}
}

public CmdDamage(id)
{
switch(g_bDamage[id])
{
case false:
{
g_bDamage[id] = true;
#if defined USE_COLOR_PREFIX
PrintChatColorMessage(id, "^1[^4%s^1] %L", g_szPrefixName, id, "DAMAGER_ON");
#else
client_print(id, print_chat, "%L", id, "DAMAGER_ON");
#endif
}
case true:
{
g_bDamage[id] = false;
#if defined USE_COLOR_PREFIX
PrintChatColorMessage(id, "^1[^4%s^1] %L", g_szPrefixName, id, "DAMAGER_OFF");
#else
client_print(id, print_chat, "%L", id, "DAMAGER_OFF");
#endif
}
}
return PLUGIN_HANDLED;
}

public EventDamage(id)
{
static pAttacker; pAttacker = get_user_attacker(id);
if(pAttacker == id) return;
static iDamage; iDamage = read_data(2);
#if defined WILL_BE_USED_BOTS
if(g_bDamage[pAttacker] && is_client_connected(pAttacker) && !is_user_bot(pAttacker))
#else
if(g_bDamage[pAttacker] && is_client_connected(pAttacker))
#endif
{
set_hudmessage(0, _, 200, _, 0.55, _, _, 1.0, _, 0.0, -1);
ShowSyncHudMsg(pAttacker, g_pHudSyncObj1, "%d", iDamage);
}
#if defined WILL_BE_USED_BOTS
if(g_bDamage[id] && is_client_connected(id) && !is_user_bot(id))
#else
if(g_bDamage[id] && is_client_connected(id))
#endif
{
set_hudmessage(255, 0, _, 0.45, -1.0, _, _, 1.0, _, 0.0, -1);
ShowSyncHudMsg(id, g_pHudSyncObj2, "%d", iDamage);
}
}

stock PrintChatColorMessage(const id, const szMessage[], any:...)
{
if(!is_client_connected(id)) return;
new szMsg[191];
vformat(szMsg, charsmax(szMsg), szMessage, 3);
message_begin(MSG_ONE_UNRELIABLE, MSG_SAY_TEXT, _, id);
write_byte(id);
write_string(szMsg);
message_end();
}

Код:
[ru]
DAMAGER_ON = Отображение урона включено
DAMAGER_OFF = Отображение урона отключено

[en]
DAMAGER_ON = Display damage activated
DAMAGER_OFF = Display damage deactivated
 
Сообщения
258
Реакции
262
Помог
5 раз(а)
C++:
#include <amxmodx>
#include <fakemeta>

#pragma semicolon 1

#define USE_CHECK_VISIBLE_ENT // Закомментируйте эту строку, если не хотите использовать проверку видимости игрока перед отображением урона

#if !defined USE_CHECK_VISIBLE_ENT
#define CONSIDER_MEAT_MAPS // Закомментируйте эту строку, если не хотите принудительно активировать проверку видимости игрока на "мясных" картах

new bool:g_bMeatMap;
#endif

new g_pHudSyncObj1;
new g_pHudSyncObj2;

public plugin_init()
{
register_plugin("Damager", "0.1b", "Subb98");
register_event("Damage", "EventDamage", "b", "2!0", "3=0", "4!0");
g_pHudSyncObj1 = CreateHudSyncObj();
g_pHudSyncObj2 = CreateHudSyncObj();
}

#if defined CONSIDER_MEAT_MAPS
public plugin_cfg()
{
new const szMapTypes[][] = {"aim_", "awp_", "fy_"}; // Типы карт, которые будут считаться "мясными" (по умолчанию "aim_", "awp_", "fy_")
new szMapname[32];
get_mapname(szMapname, charsmax(szMapname));
for(new i; i < sizeof szMapTypes; i++)
{
if(equali(szMapname, szMapTypes, strlen(szMapTypes)))
{
g_bMeatMap = true;
break;
}
}
}
#endif

public EventDamage(const id)
{
static pAttacker, iDamage;
pAttacker = get_user_attacker(id), iDamage = read_data(2);
#if defined USE_CHECK_VISIBLE_ENT
if(is_user_connected(pAttacker) && pAttacker != id && fm_is_ent_visible(pAttacker, id))
#else
if(is_user_connected(pAttacker) && pAttacker != id && g_bMeatMap ? fm_is_ent_visible(pAttacker, id) : 1>0)
#endif
{
set_hudmessage(0, _, 200, _, 0.55, _, _, 1.0, _, 0.0, -1);
ShowSyncHudMsg(pAttacker, g_pHudSyncObj1, "%d", iDamage);
}
if(is_user_connected(id))
{
set_hudmessage(255, 0, _, 0.45, -1.0, _, _, 1.0, _, 0.0, -1);
ShowSyncHudMsg(id, g_pHudSyncObj2, "%s%d", id == pAttacker ? "-" : "", iDamage);
}
}

// Thanks to ConnorMcLeod (https://forums.alliedmods.net/showpost.php?p=1580992&postcount=10)
stock bool:fm_is_ent_visible(const id, const pEnt, const bool:bIgnoreMonsters = false)
{
new Float:fStart[3], Float:fDestination[3], Float:fFraction;
pev(id, pev_origin, fStart);
pev(id, pev_view_ofs, fDestination);
fStart[0] += fDestination[0];
fStart[1] += fDestination[1];
fStart[2] += fDestination[2];
pev(pEnt, pev_origin, fDestination);
engfunc(EngFunc_TraceLine, fStart, fDestination, bIgnoreMonsters, id, 0);
get_tr2(0, TR_flFraction, fFraction);
if(fFraction > 0.97)
{
return true;
}
return false;
}
 
Сообщения
81
Реакции
9
Помог
3 раз(а)
Javekson, код таковым был найден на просторах интернета и насколько я понял в нем была удалена проверка на видимость игрока и на мясные карты.
 
Сообщения
81
Реакции
9
Помог
3 раз(а)
wopox1337, с моими знаниями. Данное пояснение к ошибке ничего не дало. Подскажите пожалуйста конкретнее?
 
Сообщения
81
Реакции
9
Помог
3 раз(а)
Subb98, установил вашу версию, пост #4
Код:
L 02/13/2017 - 22:06:34: [AMXX] Displaying debug trace (plugin "dmg.amxx", version "0.1b")
L 02/13/2017 - 22:06:34: [AMXX] Run time error 4: index out of bounds
L 02/13/2017 - 22:06:34: [AMXX] [0] dmg.sma::EventDamage (line 104)
 
Последнее редактирование модератором:
Сообщения
258
Реакции
262
Помог
5 раз(а)
TwinG4_20,

C++:
#if defined WILL_BE_USED_BOTS
if(g_bDamage[pAttacker] && is_client_connected(pAttacker) && !is_user_bot(pAttacker))
#else
if(g_bDamage[pAttacker] && is_client_connected(pAttacker))
#endif

>>

C++:
#if defined WILL_BE_USED_BOTS
if(is_client_connected(pAttacker) && g_bDamage[pAttacker] && !is_user_bot(pAttacker))
#else
if(is_client_connected(pAttacker) && g_bDamage[pAttacker])
#endif
 
Сообщения
81
Реакции
9
Помог
3 раз(а)
wopox1337, нет. Прошу помочь с кодом в первом посте, а именно исправить ошибку. После предложения замены кода пользователем Subb98, полностью отвалился показ урона)
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
TwinG4_20, Добавил проверки, изменил немного алгоритм действия кода. Проверяйте.
Код:
/*
0.11b: Поправлен код (wopox1337)
*/

#include <amxmodx>
#pragma semicolon 1

new g_pHudSyncObj1;
new g_pHudSyncObj2;

public plugin_init()
{
register_plugin("Damager", "0.11b", "Subb98");

register_event("Damage", "EventDamage", "b", "2!0", "3=0");
g_pHudSyncObj1 = CreateHudSyncObj();
g_pHudSyncObj2 = CreateHudSyncObj();
}

public EventDamage(pVictim)
{
static pAttacker; pAttacker = get_user_attacker(pVictim);
if(!is_user_connected(pVictim) && (pVictim == pAttacker))
{
return;
}

static iDamage; iDamage = read_data(2);
set_hudmessage(255, 0, _, 0.45, -1.0, _, _, 1.0, _, 0.0, -1);
ShowSyncHudMsg(pVictim, g_pHudSyncObj1, "%d", iDamage);

if(!is_user_connected(pAttacker))
{
return;
}

set_hudmessage(0, _, 200, _, 0.55, _, _, 1.0, _, 0.0, -1);
ShowSyncHudMsg(pAttacker, g_pHudSyncObj2, "%d", iDamage);
}
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу