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

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

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

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

Help - Plagin Vampire

Статус пользователя Ice_MaximuS
сообщение 6.12.2010, 12:33
Сообщение #1
Стаж: 18 лет

Сообщений: 71
Благодарностей: 7
Полезность: 10

Всем привет, ребята помогите пожалуйста модернизировать плагин.

Имею желание реализовать функцию для тех у кого есть флаг "t" (ADMIN_LEVEL_H) т.е. те у кого имеется флаг ограничение по hp 1000, а у остальных 250.
*.sma
Код
/*
*   http://games.qwerty.ru
*
*    AmxModX
*   Vampire plugin
*    by Shalfey
*
*   CVars
*   amx_vampire_hp - hp add for kill
*   amx_vampire_hp_hs - hp add for kill in head
*   amx_vampire_max_hp - max player hp
*
*   Players gets HP for kills.
*/
#include <amxmodx>
#include <fun>

#define PLUGIN_VERSION "1.0c"

new health_add
new health_hs_add
new health_max

new nKiller
new nKiller_hp
new nHp_add
new nHp_max

public plugin_init()
{
   register_plugin("Vampire", PLUGIN_VERSION, "Shalfey")

   health_add = register_cvar("amx_vampire_hp", "15")
   health_hs_add = register_cvar("amx_vampire_hp_hs", "40")
   health_max = register_cvar("amx_vampire_max_hp", "250")

   register_event("DeathMsg", "hook_death", "a", "1>0")     
}

public hook_death()
{
   // Killer id
   nKiller = read_data(1)

   if ( (read_data(3) == 1) && (read_data(5) == 0) )
   {
      nHp_add = get_pcvar_num (health_hs_add)
   }
   else
      nHp_add = get_pcvar_num (health_add)

   nHp_max = get_pcvar_num (health_max)

   // Updating Killer HP
   nKiller_hp = get_user_health(nKiller)
   nKiller_hp += nHp_add

   // Maximum HP check
   if (nKiller_hp > nHp_max) nKiller_hp = nHp_max

   set_user_health(nKiller, nKiller_hp)

   // Hud message "Healed +15/+40 hp"
   set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
   show_hudmessage(nKiller, "Healed +%d hp", nHp_add)

   // Screen fading
   message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, nKiller)
   write_short(1<<10)
   write_short(1<<10)
   write_short(0x0000)
   write_byte(0)
   write_byte(0)
   write_byte(200)
   write_byte(75)
   message_end()
  
}

Я так понял надо где-то добавить эти строчки, но пока что у меня не выходит.


Код
new g_VipHp = ADMIN_LEVEL_H;

if (!access(id, g_VipHp))
    {

health_max = register_cvar("amx_vampire_max_hp", "1000")
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя GODZILLA
сообщение 6.12.2010, 20:15
Сообщение #2


Стаж: 18 лет

Сообщений: 1471
Благодарностей: 440
Полезность: 716

Код
public hook_death()
{
   // Killer id
   nKiller = read_data(1)

   if(!(get_user_flags(nKiller) & ADMIN_LEVEL_H))
         return PLUGIN_HANDLED

   if ( (read_data(3) == 1) && (read_data(5) == 0) )
   {
      nHp_add = get_pcvar_num (health_hs_add)
   }
   else
      nHp_add = get_pcvar_num (health_add)

   nHp_max = get_pcvar_num (health_max)

   // Updating Killer HP
   nKiller_hp = get_user_health(nKiller)
   nKiller_hp += nHp_add

   // Maximum HP check
   if (nKiller_hp > nHp_max) nKiller_hp = nHp_max

   set_user_health(nKiller, nKiller_hp)

   // Hud message "Healed +15/+40 hp"
   set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
   show_hudmessage(nKiller, "Healed +%d hp", nHp_add)

   // Screen fading
   message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, nKiller)
   write_short(1<<10)
   write_short(1<<10)
   write_short(0x0000)
   write_byte(0)
   write_byte(0)
   write_byte(200)
   write_byte(75)
   message_end()
  
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Ice_MaximuS
сообщение 6.12.2010, 22:42
Сообщение #3
Стаж: 18 лет

Сообщений: 71
Благодарностей: 7
Полезность: 10

Вот такую ошибочку выдало при компилировании.

Код
\vampire.sma<81> : warning 209: function "hook_death" should return a value


Отредактировал: Ice_MaximuS, - 6.12.2010, 22:45
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 6.12.2010, 22:56
Сообщение #4
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

Ice_MaximuS,
Это не ошибка, а предупреждение.
Заверши функцию этим:
Код
return PLUGIN_CONTINUE
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Ice_MaximuS
сообщение 6.12.2010, 23:11
Сообщение #5
Стаж: 18 лет

Сообщений: 71
Благодарностей: 7
Полезность: 10

Цитата(STR@TEG @ 6.12.2010, 22:56) *
Ice_MaximuS,
Это не ошибка, а предупреждение.
Заверши функцию этим:
Код
return PLUGIN_CONTINUE



Всмысле вот так да ?

Код
   if(!(get_user_flags(nKiller) & ADMIN_LEVEL_H))
         return PLUGIN_HANDLED
        
         return PLUGIN_CONTINUE



Пишет тоже самое и ещё пару строк loose indentation, блин как сложно все (( нет легкого решения например просто строчку свехру завести и чтоб по определенному флагу весь плагин был доступен ? я бы просто 2 разных плагина бы сделал под эти нужды.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GODZILLA
сообщение 6.12.2010, 23:20
Сообщение #6


Стаж: 18 лет

Сообщений: 1471
Благодарностей: 440
Полезность: 716

Код
public hook_death()
{
   // Killer id
   nKiller = read_data(1)

   if(!(get_user_flags(nKiller) & ADMIN_LEVEL_H))
         return PLUGIN_HANDLED

   if ( (read_data(3) == 1) && (read_data(5) == 0) )
   {
      nHp_add = get_pcvar_num (health_hs_add)
   }
   else
      nHp_add = get_pcvar_num (health_add)

   nHp_max = get_pcvar_num (health_max)

   // Updating Killer HP
   nKiller_hp = get_user_health(nKiller)
   nKiller_hp += nHp_add

   // Maximum HP check
   if (nKiller_hp > nHp_max) nKiller_hp = nHp_max

   set_user_health(nKiller, nKiller_hp)

   // Hud message "Healed +15/+40 hp"
   set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
   show_hudmessage(nKiller, "Healed +%d hp", nHp_add)

   // Screen fading
   message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, nKiller)
   write_short(1<<10)
   write_short(1<<10)
   write_short(0x0000)
   write_byte(0)
   write_byte(0)
   write_byte(200)
   write_byte(75)
   message_end()

  return PLUGIN_CONTINUE
}


А ты думал в сказку попал ? :)

Отредактировал: GODZILLA, - 6.12.2010, 23:21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Ice_MaximuS
сообщение 6.12.2010, 23:40
Сообщение #7
Стаж: 18 лет

Сообщений: 71
Благодарностей: 7
Полезность: 10

crazy.gif да уж я тут как сыр в масле не катаюсь, весь день смотрю в эти коды и пытаюсь понять эти функции...

опять предупреждает

warning 217 loose indentation

Не ну в самом деле есть же плагин отличный mapconfigx, почему нельзя сделать подобный для флагов файл vip-plugins.ini и там //account flags - bit | vip_armor.amxx и т.д.
Я думаю многим угодит.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ckapa6eu
сообщение 7.12.2010, 11:35
Сообщение #8
Стаж: 16 лет

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

warning 217 loose indentation

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