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

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

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

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

Money HUD Effect

, исправьте баг в плагине
Статус пользователя CaMa3BaH
сообщение 15.11.2012, 14:26
Сообщение #1
Стаж: 17 лет

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

Доброго времени суток!
Суть плагина делать анимацию денег при убавление и прибавление
Хочу попросить вас исправить баг в этом плагине.


БАГ: по истечению нескольких раундов когда у тебя с 800$ до 16000$ доходит то просто становиться 0$ в следующем раунде. ну даже при нуле можно закупаться.
Нужно сделать что бы при накапливание 16000$ деньги не пропадали в следующем раунде [Пропадают визуально]


С меня +++

Плагин с forums.alliedmods.net

Код
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

new money

new plr_money[33]
new plr_cur_money[33]
new bool:plr_prespawn[33]

new onoff,speed_per_sec

public plugin_init() {
    register_plugin("Money HUD Effect","0.9","Sh!nE")
    
    register_event("Money","update_money","b")
    
    onoff = register_cvar("amx_mhe_money","1")
    speed_per_sec = register_cvar("amx_mhe_money_speed","10")
    
    RegisterHam(Ham_Spawn,"player","player_prespawn",0)
    RegisterHam(Ham_Spawn,"player","player_spawn",1)
    
    money = get_user_msgid("Money")
    
    register_message(money,"hook_money")
}

public client_disconnect(id) {
    plr_money[id]=0
    plr_cur_money[id]=0
    plr_prespawn[id]=false
    
    remove_task(id)
}

public player_prespawn(id) {
    if(get_pcvar_num(onoff) && is_user_connected(id)) {
        plr_prespawn[id]=true
        
        plr_money[id]=get_pdata_int(id,115,5)
        plr_cur_money[id]=0
        
        set_pdata_int(id,115,0,5)
        
        set_plr_money(id,0)
    }
}

public player_spawn(id) {
    if(get_pcvar_num(onoff) && is_user_connected(id)) {
        plr_prespawn[id]=false
        
        set_pdata_int(id,115,plr_money[id],5)
        
        set_plr_money(id,plr_money[id])
    }
}

public update_money(id) {
    if(!get_pcvar_num(onoff) || !is_user_connected(id) || plr_prespawn[id]) return PLUGIN_HANDLED
    
    new cur_money=read_data(1)
    
    if(cur_money!=plr_money[id]) {
        plr_money[id]=cur_money

        if(!task_exists(id)) set_task(0.1,"money_effect",id,_,_,"b")
        
        set_plr_money(id,plr_cur_money[id])
    }
    return PLUGIN_HANDLED
}

public hook_money(msg_id,msg_dest,id) {
    if(!get_pcvar_num(onoff)) return PLUGIN_CONTINUE
        
    new cash = get_msg_arg_int(1)
    
    if(plr_cur_money[id]!=cash) return PLUGIN_HANDLED
    
    return PLUGIN_CONTINUE
}

public money_effect(id) {
    static Add
    
    if(plr_cur_money[id]==plr_money[id]) {
        remove_task(id)
        plr_cur_money[id]=plr_money[id]
        
        return PLUGIN_HANDLED
    }
    else if(plr_cur_money[id] < plr_money[id]) {
        Add=(plr_money[id]-plr_cur_money[id])/get_pcvar_num(speed_per_sec)
        
        if(!Add) Add=1
        
        plr_cur_money[id]+=Add
    }
    else {
        Add=(plr_cur_money[id]-plr_money[id])/get_pcvar_num(speed_per_sec)
        
        if(!Add) Add=1
        
        plr_cur_money[id]-=Add
    }
    
    set_plr_money(id,plr_cur_money[id])
    
    return PLUGIN_CONTINUE
}

set_plr_money(id,Money,flash=0) {
    message_begin(MSG_ONE_UNRELIABLE,money,_,id)
    write_long(Money)
    write_byte(flash)
    message_end()
}


Отредактировал: CaMa3BaH, - 15.11.2012, 14:27
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 15.11.2012, 16:06
Сообщение #2
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

CaMa3BaH,
прикол в том, что при спавне, вы используете:

Код
public player_spawn(id) {
    if(get_pcvar_num(onoff) && is_user_connected(id)) {
        plr_prespawn[id]=false
        
        set_pdata_int(id,115,plr_money[id],5)
        
        set_plr_money(id,plr_money[id])
    }
}


а именно, вы даёте игроку, plr_money[id] денег.
т.е. проблема в том, что plr_money[id] = 0 когда вы получаете (ну или over 90000000000000000) ...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя CaMa3BaH
сообщение 16.11.2012, 6:29
Сообщение #3
Стаж: 17 лет

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

Цитата(Orty_Hart @ 15.11.2012, 20:06) *
CaMa3BaH,
прикол в том, что при спавне, вы используете:

Код
public player_spawn(id) {
    if(get_pcvar_num(onoff) && is_user_connected(id)) {
        plr_prespawn[id]=false
        
        set_pdata_int(id,115,plr_money[id],5)
        
        set_plr_money(id,plr_money[id])
    }
}


а именно, вы даёте игроку, plr_money[id] денег.
т.е. проблема в том, что plr_money[id] = 0 когда вы получаете (ну или over 90000000000000000) ...



Ты можешь сделать? или объяснить на доступном мне языке как сделать.

Отредактировал: CaMa3BaH, - 16.11.2012, 6:31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя CaMa3BaH
сообщение 17.11.2012, 2:19
Сообщение #4
Стаж: 17 лет

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

up!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 17.11.2012, 14:07
Сообщение #5
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

CaMa3BaH,
ладно.
В конце раунда, вы получаете все деньги всех игроков в plr_money[id] в виде числа.
В начале раунда, вы выдаёте им деньги, которые внесены в plr_money[id].

Например если plr_money[id] будет равено 1000.
То при начале раунда, будет 1000$.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя CaMa3BaH
сообщение 18.11.2012, 9:03
Сообщение #6
Стаж: 17 лет

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

Цитата(Orty_Hart @ 17.11.2012, 18:07) *
CaMa3BaH,
ладно.
В конце раунда, вы получаете все деньги всех игроков в plr_money[id] в виде числа.
В начале раунда, вы выдаёте им деньги, которые внесены в plr_money[id].

Например если plr_money[id] будет равено 1000.
То при начале раунда, будет 1000$.


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