Raised This Month: $ Target: $400
 0% 

Players Drop Money


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
El Abuelo Loco
Senior Member
Join Date: Jun 2020
Old 11-03-2020 , 00:25   Players Drop Money
Reply With Quote #1

I am testing this plugin, the thing that I want to reduce the money that falls on the ground is going well.

example: when a player is killed, 4 or more tickets come out, I would like to reduce it to 1 single ticket

PHP Code:
#include <amxmodx>
#include <fakemeta>

#define PLUGIN    "Players Drop Money"
#define AUTHOR    "Sh!nE*"
#define VERSION    "1.7"

#if cellbits == 32
#define OFFSET_CSMONEY  115
#else
#define OFFSET_CSMONEY  140
#endif

#define OFFSET_LINUX      5

#define MAXENTS 1500

new moneybox[MAXENTS]
new 
model[] = "models/w_money_new.mdl"
new money_sound1[] = "money/money_sound.wav"

new methodisonm_amountran_moneyrandom_numsmoney_dropmoney_drop_afadeonmoney_sounddivideforce
//new method6
new g_msgScreenFade
new bool:can_pickup[33]

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
ison register_cvar("amx_dropmoney","1")
    
method register_cvar("amx_dropmethod","1")
    
divide register_cvar("amx_moneydivide","2")
    
m_amount register_cvar("amx_dropamount","300")
    
ran_money register_cvar("amx_droprandom","300 500 700")
    
random_nums register_cvar("amx_droprandomnums","300 7500")
    
money_drop register_cvar("amx_playerdrop","1")
    
money_drop_a register_cvar("amx_playerdropamount","1000")
    
fadeon register_cvar("amx_moneyfade","1")
    
money_sound register_cvar("amx_moneysound","1")
    
force register_cvar("amx_dropforce","10")
    
g_msgScreenFade get_user_msgid("ScreenFade")
    
    
register_clcmd("drop","hook_drop")
    
    
register_event("DeathMsg""deatha""a")
    
register_forward(FM_Touch,"player_Touch")
    
register_logevent("round_start"2"1=Round_Start")
}

public 
client_connect(id)    can_pickup[id]=true
public client_disconnected(id)    can_pickup[id]=false

public plugin_precache() {
    
precache_model(model)
    
precache_sound(money_sound1)
}

public 
hook_drop(id) {
    if(!
get_pcvar_num(ison) || !get_pcvar_num(money_drop))    return PLUGIN_CONTINUE
    
new weapon,clip,ammo,money,Float:velo[3]
    
weapon get_user_weapon(id,clip,ammo)
    if(
weapon == CSW_KNIFE) {
        if(
fm_get_user_money(id) < get_pcvar_num(money_drop_a))
            
money fm_get_user_money(id)
        else
            
money get_pcvar_num(money_drop_a)
        
        
fm_set_user_money(id,fm_get_user_money(id) - money)
        
can_pickup[id] = false
        set_task
(0.3,"reset_pick",id)
        new 
start_velo get_pcvar_num(force) * 15
        
new end_velo get_pcvar_num(force) * 50
        velocity_by_aim
(id,random_num(start_velo,end_velo),velo)
        
make_money(id,money,velo)
        return 
PLUGIN_HANDLED
    
}
    return 
PLUGIN_CONTINUE
}

public 
reset_pick(id)    can_pickup[id] = true

public deatha() {
    if(!
get_pcvar_num(ison))    return PLUGIN_CONTINUE
    
    
new moneyFloat:velo[3]
    new 
victim read_data(2)
    new 
killer read_data(1)
    
    if(
killer && killer != victim)
        
fm_set_user_money(killer,fm_get_user_money(killer) - 300)
    
    switch(
get_pcvar_num(method)) {
        case 
1:{
            
money get_pcvar_num(m_amount)
            if(
fm_get_user_money(victim) < money) {
                
money fm_get_user_money(victim)
                
fm_set_user_money(victim,0)
            }
            else    
fm_set_user_money(victim,fm_get_user_money(victim) - get_pcvar_num(m_amount))
            }
        case 
2:{
            new 
tempmoney fm_get_user_money(victim)
            if(
money != 1) {
                
money = (tempmoney get_pcvar_num(divide))
                
fm_set_user_money(victim,fm_get_user_money(victim) - money)
            }
            else {
                
fm_set_user_money(victim,0)
                
money 1
            
}
        }
        case 
3:{
            new 
maxmoney fm_get_user_money(victim)
            
money random_num(1,maxmoney)
            
fm_set_user_money(victim,fm_get_user_money(victim) - money)
        }
        case 
4:{
            new 
tempmoney2[32]
            
get_pcvar_string(ran_money,tempmoney2,31)
            new 
tempmoney[3][6]
            
parse(tempmoney2tempmoney[0], sizeof tempmoney[] - 1,tempmoney[1], sizeof tempmoney[] - 1,tempmoney[2], sizeof tempmoney[] - 1)
            new 
num random_num(1,3)
            switch(
num) {
                case 
1:{
                    
money str_to_num(tempmoney[0])
                }
                case 
2:{
                    
money str_to_num(tempmoney[1])
                }
                case 
3:{
                    
money str_to_num(tempmoney[2])
                }
            }
            if(
fm_get_user_money(victim) < money) {
                
fm_set_user_money(victim,0)
                
money fm_get_user_money(victim)
            }
            else    
fm_set_user_money(victim,fm_get_user_money(victim) - money)
            }
        case 
5:{
            new 
tempmoney22[32], num_fromnum_to
            get_pcvar_string
(random_nums,tempmoney22,31)
            new 
tempmoney1[2][6]
            
parse(tempmoney22tempmoney1[0], sizeof tempmoney1[] - 1,tempmoney1[1], sizeof tempmoney1[] - 1)
            
num_from str_to_num(tempmoney1[0])
            
num_to str_to_num(tempmoney1[1])
            if(
num_to 16000)    num_to 16000
            
if(num_from 0)    num_to 0
            money 
random_num(num_from,num_to)
            
            if(
fm_get_user_money(victim) < money) {
                
fm_set_user_money(victim,0)
                
money fm_get_user_money(victim)
            }
            else    
fm_set_user_money(victim,fm_get_user_money(victim) - money)
            }
    }
    
make_money(victim,money,velo)
    return 
PLUGIN_CONTINUE
}

public 
round_start() {
    new 
money_ent
    
while((money_ent=engfunc(EngFunc_FindEntityByString,money_ent,"classname","pdm_money")) != 0){
        
engfunc(EngFunc_RemoveEntity,money_ent)
    }
}


public 
make_money(id,money,Float:velo[]) {
    new 
moneybags money/1000
    
new moneyleft money
    
new Float:origin[3]
    new 
Float:angles[3]
    new 
Float:mins[3] = {-2.79, -0.0, -6.14}
    new 
Float:maxs[3] = {2.421.996.35}
    
    if((
moneybags 1000) < money)    moneybags++
    
    for(new 
0moneybags; ++i) {
        new 
newent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString,"info_target"))
        if(!
is_user_alive(id)) {
            
velo[0] = random_float(1.0,150.0)
            
velo[1] = random_float(1.0,150.0)
            
velo[2] = random_float(1.0,150.0)
        }
        else 
            
velo[2] += 100
        
        pev
(newent,pev_angles,angles)
        
angles[1] += random_num(1,360)
        
pev(id,pev_origin,origin)
        
set_pev(newentpev_originorigin)
        
set_pev(newentpev_classname"pdm_money")
        
engfunc(EngFunc_SetModelnewentmodel)
        
engfunc(EngFunc_SetSize,newent,mins,maxs)
        
set_pev(newent,pev_angles,angles)
        
set_pev(newentpev_solidSOLID_TRIGGER)
        
set_pev(newent,pev_movetype,MOVETYPE_TOSS)
        
set_pev(newentpev_velocity,velo)
        
engfunc(EngFunc_DropToFloor,newent)
        
        if(
moneyleft == 0)    return FMRES_IGNORED
        
        
if(moneyleft 1000) {
            
moneybox[newent]=moneyleft
            moneyleft 
0
            
return FMRES_IGNORED
        
}
        
moneyleft -= 1000
        moneybox
[newent]=1000
    
}
    return 
FMRES_IGNORED
}

public 
player_Touch(touchedtoucher) { 
    
    if (!
pev_valid(touched) || !is_user_alive(toucher) ||  !get_pcvar_num(ison) || !can_pickup[toucher])
        return 
FMRES_IGNORED
    
    
new classname[32]
    
pev(touchedpev_classnameclassnamesizeof classname 1)
    
    if (
equali(classname"pdm_money")) {
        if(
fm_get_user_money(toucher) == 16000)    return FMRES_IGNORED
        
else if((fm_get_user_money(toucher)+moneybox[touched]) > 16000)        fm_set_user_money(toucher,16000)
        else    
fm_set_user_money(toucher,fm_get_user_money(toucher) + moneybox[touched])
            
        if(
get_pcvar_num(money_sound))    client_cmd(toucher,"spk %s",money_sound1)
        
        if(
pev_valid(touched))
            
engfunc(EngFunc_RemoveEntity,touched)
        
        if(
get_pcvar_num(fadeon))
            
screen_fade(toucher)
    }
    
    return 
FMRES_IGNORED
}


public 
screen_fade(id) {
    
message_begin(MSG_ONEg_msgScreenFade, {0,0,0}, id
    
write_short(1<<12)
    
write_short(1<<12)
    
write_short(1<<12)
    
write_byte(0)
    
write_byte(200)
    
write_byte(0)
    
write_byte(20)
    
message_end()
}


//XxAvalanchexX Stocks
stock fm_set_user_money(id,money,flash=0)
{
    
set_pdata_int(id,OFFSET_CSMONEY,money,OFFSET_LINUX);
    
    
message_begin(MSG_ONE,get_user_msgid("Money"),{0,0,0},id);
    
write_long(money);
    
write_byte(flash);
    
message_end();
}




stock fm_get_user_money(id)
{
    return 
get_pdata_int(id,OFFSET_CSMONEY,OFFSET_LINUX);

El Abuelo Loco is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 14:13.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode