Русское сообщество по скриптингу

Постоянная ошибка в консоли сервера.

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

Постоянная ошибка в консоли сервера.

Сообщение lasombras » 14 фев 2012, 23:20

Помогите, пожалуйста, с постоянно выпрыгивающей в консоли сервера ошибкой:

[AMXX] Displaying debug trace (plugin "zp_zclass_heavy_tank.amxx")
[AMXX] Run time error 10: native error (native "set_user_health")
[AMXX] [0] zp_zclass_heavy_tank.sma::AddHP (line 104)

Собственно, сам исходник прилагаю.

Добавлено спустя 3 минуты 49 секунд:
Решил написать исходник в развернутом виде, может кому-то лень качать, а так посмотрит:

[spoiler]/*
* -------------------------------------
* -----[ZP] Heavy Tank Zombie Class----
* -------------------------------------
* --------Author: 4eRT (aka pff)-------
* -------------------------------------
* About:
* Made at dimon4g's idea and request.
* -------------------------------------
* Credits:
* - dimon4g - for idea.
* -------------------------------------
* Cvars:
* zp_heavy_tank_give_ap 1 //how many ammo packs will be given? def=1
* zp_heavy_tank_give_ap_freq 15 //how often ammo packs will be given(sec)? def=15.0
* zp_heavy_tank_give_hp 5 //how many health will be given? def=5
* zp_heavy_tank_give_hp_freq 7 //how often hp will be given(sec)? def=7.0
* zp_heavy_tank_aura_radius 15.0 //radius of aura. def=15
* zp_heavy_tank_aura_red 215 // amount of red color(0-255). def=215
* zp_heavy_tank_aura_green 255 // amount of green color(0-255). def=255
* zp_heavy_tank_aura_blue 0 // amount of blue color(0-255). def=0
* -------------------------------------
* History:
* 0.1 (27.03.09)
* First release. Adds 1(cvar) AP every 15(cvar) sec.
* 0.2 (27.03.09)
* Restore 5(cvar) HP every 7(cvar) sec if health < maximum HP. Fun module required.
* 0.3 (27.03.09)
* Added customizable aura.
* 0.4 (03.04.09)
* Fixed bug (after humanizing or choosing another class Heavy Tank powers remains)
*/

#include <amxmodx>
#include <fakemeta>
#include <zombieplague>
#include <fun>

new g_heavy_tank
// Heavy Tank Zombie Attributes
new const zclass_name[] = { "Heavy Tank Zombie" }
new const zclass_info[] = { "HP+++ Knockback-- Speed-" }
new const zclass_model[] = { "zombie_strong" }
new const zclass_clawmodel[] = { "big_knife.mdl" }
const zclass_health = 5000
const zclass_speed = 150
const Float:zclass_gravity = 1.0
const Float:zclass_knockback = 0.4

public plugin_precache()
{
register_plugin("[ZP] Heavy Tank Zombie", "0.4", "4eRT")
register_cvar("zp_heavy_tank_give_ap", "1")
register_cvar("zp_heavy_tank_give_ap_freq", "15.0")
register_cvar("zp_heavy_tank_give_hp", "5")
register_cvar("zp_heavy_tank_give_hp_freq", "7.0")
register_cvar("zp_heavy_tank_aura_radius", "15.0")
register_cvar("zp_heavy_tank_aura_red", "215")
register_cvar("zp_heavy_tank_aura_green", "255")
register_cvar("zp_heavy_tank_aura_blue", "0")
g_heavy_tank = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
}

public zp_user_infected_post(id, infector)
{
if (zp_get_user_zombie_class(id) == g_heavy_tank)
{
set_task(get_cvar_float("zp_heavy_tank_give_ap_freq"), "AddAP", id, _, _, "b")
set_task(get_cvar_float("zp_heavy_tank_give_hp_freq"), "AddHP", id, _, _, "b")
set_task(0.1, "Aura", id, _, _, "b")
}
}

public AddAP(id)
{
if (zp_get_user_zombie(id)) {
if (zp_get_user_zombie_class(id) == g_heavy_tank) {
if (!is_user_alive(id))
return PLUGIN_HANDLED

new user_ap = zp_get_user_ammo_packs(id)
new give_ap = get_cvar_num("zp_heavy_tank_give_ap")

zp_set_user_ammo_packs(id, user_ap + give_ap)
} else {
remove_task(id)
}
} else {
remove_task(id)
}

return PLUGIN_CONTINUE
}

public AddHP(id)
{
if (zp_get_user_zombie(id)) {
if (zp_get_user_zombie_class(id) == g_heavy_tank) {
new cur_hp = get_user_health(id)
new am_hp = get_cvar_num("zp_heavy_tank_give_hp")
new max_hp = zp_get_zombie_maxhealth(id)

if (cur_hp < max_hp) {
set_user_health(id, cur_hp + am_hp)
} else {
return PLUGIN_HANDLED
}
} else {
remove_task(id)
}
} else {
remove_task(id)
}

return PLUGIN_CONTINUE
}

public Aura(id)
{
if (zp_get_user_zombie(id)) {
if (zp_get_user_zombie_class(id) == g_heavy_tank) {
if (!is_user_alive(id))
return PLUGIN_HANDLED

static Float:originF[3]
pev(id, pev_origin, originF)

engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_DLIGHT)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
write_byte(get_cvar_num("zp_heavy_tank_aura_radius"))
write_byte(get_cvar_num("zp_heavy_tank_aura_red"))
write_byte(get_cvar_num("zp_heavy_tank_aura_green"))
write_byte(get_cvar_num("zp_heavy_tank_aura_blue"))
write_byte(2)
write_byte(0)
message_end()
} else {
remove_task(id)
}
} else {
remove_task(id)
}

return PLUGIN_CONTINUE
}[/spoiler]

Добавлено спустя 2 минуты 12 секунд:
104-я строчка это:

set_user_health(id, cur_hp + am_hp)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
lasombras
 
Сообщения: 15
Зарегистрирован: 19 май 2011, 07:07
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше недели

Re: Постоянная ошибка в консоли сервера.

Сообщение Infernus » 15 фев 2012, 03:00

[pawn]
  1. if( is_user_alive( id ) ) {

  2.       set_user_health(id, cur_hp + am_hp)

  3. }
[/pawn]

?

Но по моему вот ето будет логичней.
[pawn]
  1. if (!is_user_alive(id))

  2.             return PLUGIN_HANDLED
[/pawn]

А во, че ет такое?
[pawn]
  1. } else {

  2. remove_task(id)

  3. }

  4. } else {

  5. remove_task(id)

  6. }
[/pawn]

Так нельзя?
[pawn]
  1.  

  2. public AddAP(id) {

  3.      if (zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_heavy_tank){

  4.          if (!is_user_alive(id))

  5.             return PLUGIN_HANDLED

  6.  

  7.          new user_ap = zp_get_user_ammo_packs(id)

  8.          new give_ap = get_cvar_num("zp_heavy_tank_give_ap")

  9.  

  10.          zp_set_user_ammo_packs(id, user_ap + give_ap)

  11.     } else {

  12.          remove_task(id)

  13.     }

  14.     return PLUGIN_CONTINUE

  15. }
[/pawn]

Ты вроде-бы скопировал код из public AddAP(id) и не довел его до конца в public AddHP(id)?
Аватара пользователя
Infernus
 
Сообщения: 22
Зарегистрирован: 15 фев 2012, 02:55
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Языки программирования: C++
HTML & CSS & Javascript
PHP & SQL

Re: Постоянная ошибка в консоли сервера.

Сообщение lasombras » 16 фев 2012, 03:19

Спасибо большое, помог. Я уже замучился с этой ошибкой, в день по 1.5Мб файла лога ошибок получалось из-за неё + консоль ней забита была. Спасибку нажал ;)
Аватара пользователя
lasombras
 
Сообщения: 15
Зарегистрирован: 19 май 2011, 07:07
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше недели


Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5