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

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

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

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

Нужно исправить баг в плагине)

Статус пользователя iLLuSioN
сообщение 12.8.2009, 8:28
Сообщение #1
Иконка группы

Стаж: 19 лет

Сообщений: 6911
Благодарностей: 7990
Полезность: 1639

плагину уже пол года а баг присутствует, а если ето не баг то обьясните принцип работы

вообщем есть дополнение к Zombie Plague, возможность купить HP за определенное количество ammo packs

В этом плагине если указать стоимость 5 ap то снимает 5 + 5 ap тоесть 10. получается цена стоит одна а снимает всегда на 5 больше.

смотрите исходник

Код
#include <amxmodx>
#include <fun>
#include <zombieplague>

new const item_name[] = "Buy HP!"
new g_itemid_buyhp
new hpamount

public plugin_init()
{
    register_plugin("[ZP] Buy Health Points", "1.0", "T[h]E Dis[as]teR")
    hpamount = register_cvar("zp_buyhp_amount", "1000")
    g_itemid_buyhp = zp_register_extra_item(item_name, 5, ZP_TEAM_HUMAN & ZP_TEAM_ZOMBIE)
}
public zp_extra_item_selected(id,itemid)
{
    if(!is_user_alive(id))
    
    return PLUGIN_HANDLED;
    
    if(itemid==g_itemid_buyhp)
    {
        if(zp_get_user_ammo_packs(id) < 5)
        {
            client_print(id, print_chat,"[ZP] Not enough Ammopacks!");
            return PLUGIN_HANDLED;
        }
        else
        {
            set_user_health(id,get_user_health(id)+get_pcvar_num(hpamount));
            zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - 5);
            client_print(id, print_chat,"[ZP] You Bought HP!");
        }
    }
    return PLUGIN_CONTINUE;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang3082\\ f0\\ fs16 \n\\ par }
*/

Прикрепленные файлы:
Прикрепленный файл  zp_buy_health_points.rar ( 690 байт ) Кол-во скачиваний: 9


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
MastaMan
сообщение 12.8.2009, 13:18
Сообщение #2
Стаж: 17 лет

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

Попробуй дописать return PLUGIN_HANDLED;, может поможет

Оригинальный код
Код
else
        {
            set_user_health(id,get_user_health(id)+get_pcvar_num(hpamount));
            zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - 5);
            client_print(id, print_chat,"[ZP] You Bought HP!");
        }


Измененный код

Код
else
        {
            set_user_health(id,get_user_health(id)+get_pcvar_num(hpamount));
            zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - 5);
            client_print(id, print_chat,"[ZP] You Bought HP!");
                        
               return PLUGIN_HANDLED;
        }


Отредактировал: MastaMan, - 12.8.2009, 13:19
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Fedcomp
сообщение 12.8.2009, 14:00
Сообщение #3
Стаж: 17 лет

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

Дополню что return PLUGIN_HANDLED это отмена вызова процедуры т.е
Если например пихнуть в (псевдокод)
set_user_health(id){
return PLUGIN_HANDLED
BECb KOg Hu}l{e blablabla ....
}
то добавление игроку хп и весь код ниже не будет выполнен

Отредактировал: Fedcomp, - 12.8.2009, 14:01
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя iLLuSioN
сообщение 12.8.2009, 14:27
Сообщение #4
Иконка группы

Стаж: 19 лет

Сообщений: 6911
Благодарностей: 7990
Полезность: 1639

MastaMan,
не помогло


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Makzz
сообщение 12.8.2009, 15:21
Сообщение #5


Стаж: 18 лет

Сообщений: 2198
Благодарностей: 1365
Полезность: 1080

Попробуйте
Код
zp_stats_save 0


Хотя всёже странно, в исходнике правильно всё написано....

Отредактировал: Makzz, - 12.8.2009, 15:25
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
MastaMan
сообщение 12.8.2009, 15:28
Сообщение #6
Стаж: 17 лет

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

К сожалению у меня нету ZP, и можно только догадываться в чем проблема,
Пробуй изменить значение 5 на 20 к примеру в этой строчке, и посмотри что будет...,

Код
g_itemid_buyhp = zp_register_extra_item(item_name, 5, ZP_TEAM_HUMAN & ZP_TEAM_ZOMBIE)


Это походу API функция ZP, и что она делает трудно сказать, если изменение значения что то даст, то можно поменять к примеру на 1 или 0, может в этом вся соль

Отредактировал: MastaMan, - 12.8.2009, 15:29
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Leo
сообщение 12.8.2009, 15:34
Сообщение #7


Стаж: 18 лет

Сообщений: 1347
Благодарностей: 594
Полезность: 848

Код
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 5);

добавь после
Код
public zp_extra_item_selected(id,itemid)
{


Просто по-умолчанию g_itemid_buyhp = zp_register_extra_item(item_name, 5, ZP_TEAM_HUMAN & ZP_TEAM_ZOMBIE) уже снимает 5 паков.


Разработка сайтов - http://leonid.pro/
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя iLLuSioN
сообщение 12.8.2009, 15:53
Сообщение #8
Иконка группы

Стаж: 19 лет

Сообщений: 6911
Благодарностей: 7990
Полезность: 1639

Цитата(Leo @ 12.8.2009, 16:34) *
Код
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 5);

добавь после
Код
public zp_extra_item_selected(id,itemid)
{


Просто по-умолчанию g_itemid_buyhp = zp_register_extra_item(item_name, 5, ZP_TEAM_HUMAN & ZP_TEAM_ZOMBIE) уже снимает 5 паков.

помогло) спасибо)


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя tavot
сообщение 19.8.2009, 11:02
Сообщение #9


Стаж: 17 лет

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

iLLuSioN
У тебя какая версия плагуе стоит?
если 4,3
то везде где в исходнике стоит "5"
поменяй на 0
в конфиге zp_extraitems.ini
добавь ( если само не добавилось ) :

[Buy HP!]
NAME = Buy HP!
COST = 10
TEAMS = ZOMBIE

Стомость 10 и покупать могут только зомби, если надо чтоб люди тоже могли покупать добавь ", HUMAN" возможно что в место "," нужно будет поставить "/" точно не помню, но должно создаться с ценой 5 и зомби и люди покупать сразу могут.
Это самое правильное. Тоже бился с этой фишкой...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kentavrius
сообщение 13.12.2009, 15:58
Сообщение #10


Стаж: 17 лет

Сообщений: 951
Благодарностей: 167
Полезность: 423

Цитата(Leo @ 12.8.2009, 20:34) *
Код
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 5);

добавь после
Код
public zp_extra_item_selected(id,itemid)
{


Просто по-умолчанию g_itemid_buyhp = zp_register_extra_item(item_name, 5, ZP_TEAM_HUMAN & ZP_TEAM_ZOMBIE) уже снимает 5 паков.

Теперь все вещи со скидкой 5 паков :biggrin:
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Accelerator
сообщение 2.11.2010, 5:54
Сообщение #11


Стаж: 16 лет

Сообщений: 142
Благодарностей: 45
Полезность: 252

Можно сделать куда проще, чтобы не снимало ammopacks в 2 раза больше:
Меняем
Код
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - 5);
на
Код
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id));

Хоть и тема уже старая, но всё же, вдруг кому пригодится :)

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