Allied Modders en español
Plugin Comprar Paracaídas - Versión para impresión

+- Allied Modders en español (https://amxmodx-es.com)
+-- Foro: AMX Mod X - Plugins (https://amxmodx-es.com/Forum-AMX-Mod-X-Plugins)
+--- Foro: Pedido de Plugins (https://amxmodx-es.com/Forum-Pedido-de-Plugins)
+--- Tema: Plugin Comprar Paracaídas (/Thread-Plugin-Comprar-Paraca%C3%ADdas)



Plugin Comprar Paracaídas - Axon - 09/01/2020

Hola, tengo este plugins en la cual puedo comprar model de cuchillos pero me gustaría que si lo pueden modificar para que se pueda comprar model de paracaídas.

Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <engine>
#include <fakemeta>
#include <cromchat>
#include <pubnite_mod>
#include <nvault>

#define PLUGIN                 "PUBNite: Knife Skins"
#define VERSION             "1.0"
#define AUTHOR                 "EFFEX"

#define validEntity(%1)            (g_iEntityID[%1] && pev_valid(g_iEntityID[%1]))

#define MAX_MODEL_LENGTH        64
#define m_pPlayer            41
#define XTRA_OFS_WEAPON            4

#define TASK_REMOVE_MODEL            73613711
#define MAX_KNIFE_SKINS            25

enum cModelsArray
{
    
cModelName[MAX_MODEL_LENGTH MAX_PLAYERS],
    
cViewModel[MAX_MODEL_LENGTH],
    
cPlayerModel[MAX_MODEL_LENGTH],
    
cDeploySound[MAX_MODEL_LENGTH],
    
cHitWall1Sound[MAX_MODEL_LENGTH],
    
cSlash1Sound[MAX_MODEL_LENGTH],
    
cSlash2Sound[MAX_MODEL_LENGTH],
    
cStabSound[MAX_MODEL_LENGTH],
    
iKnifePrice
}

new const 
g_szBuySound[] = "pubg/effects/model_buy_sound.wav"

new Array:g_arModels
new g_nVaultBetg_mMessageScreenFade

new bool:g_bHasModel[MAX_PLAYERS 1][MAX_KNIFE_SKINS]
new 
g_iUserModel[MAX_PLAYERS 1], g_iEntityID[MAX_PLAYERS 1]

public 
plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    if(
is_plugin_loaded("BattleRoyale Mod") == -1)
    {
        
set_fail_state("MOD DISABLED")
    }
    
    
register_dictionary("effxs_skinshop.txt")
    
register_dictionary("effxs_battleroyale.txt")
    
    
CC_SetPrefix("&x04[EFFx S]&x01:")

    
g_mMessageScreenFade get_user_msgid("ScreenFade")
    
g_nVaultBet nvault_open("AXES")
    
    
register_forward(FM_EmitSound"EmitSound")
    
register_forward(FM_AddToFullPack"forward_AddToFullPack"1)
    
    
RegisterHam(Ham_Item_Deploy"weapon_knife""ham_KnifeDeploy_Post"1)
    
    new 
szKnifeShop[MAX_PLAYERS], szCommandFmt[35]
    
pubnite_get_command(cKnifeShopszKnifeShop)
    
formatex(szCommandFmtcharsmax(szCommandFmt), "say %s"szKnifeShop)
    
register_clcmd(szCommandFmt"cmdModels")
}

public 
plugin_end()
{
    
nvault_close(g_nVaultBet)
}

public 
plugin_precache()
{
    
g_arModels ArrayCreate(cModelsArray)
    
    
precache_sound(g_szBuySound)
    
readIniData()
}

public 
client_connect(id)
{
    if(!
is_user_bot(id))
    {
        
loadData(id)
    }
}

public 
forward_AddToFullPack(es_handleeiEntiHosthostflagsplayerpSet)
{    
    if(
is_user_alive(iEnt) || !pev_valid(iEnt))
        return 
FMRES_IGNORED
        
    
if(is_user_alive(iHost) && validEntity(iHost))
    {
        static 
iOwner;iOwner pev(iEntpev_owner)
        if(
is_user_connected(iOwner)
        && (
iOwner == iHost
        && (
iEnt == g_iEntityID[iHost]))
        {
            
set_es(es_handleES_RenderAmt255)
        }
    }
    return 
FMRES_IGNORED
}

public 
EmitSound(idchannelsample[])
{
    if(!
is_user_alive(id) || !user_has_weapon(idCSW_KNIFE) || pubnite_is_knockedout(id))
        return 
FMRES_IGNORED
    
    
if(containi(sample"weapons/knife_") == -1)
        return 
FMRES_IGNORED
        
    
new arrayData[cModelsArray]
    
ArrayGetArray(g_arModelsg_iUserModel[id], arrayData)
        
    if(
equal(sample"weapons/knife_deploy1.wav"))
    {    
        
emit_sound(idCHAN_ITEMarrayData[cDeploySound], VOL_NORMATTN_NORM0PITCH_NORM)
        return 
FMRES_SUPERCEDE
    
}        
    else if(
equal(sample"weapons/knife_hitwall1.wav"))
    {
        
emit_sound(idCHAN_ITEMarrayData[cHitWall1Sound], VOL_NORMATTN_NORM0PITCH_NORM)
        return 
FMRES_SUPERCEDE
    
}        
    else if(
equal(sample"weapons/knife_slash1.wav"))
    {
        
emit_sound(idCHAN_ITEMarrayData[cSlash1Sound], VOL_NORMATTN_NORM0PITCH_NORM)
        return 
FMRES_SUPERCEDE
    
}        
    else if(
equal(sample"weapons/knife_slash2.wav"))
    {
        
emit_sound(idCHAN_ITEMarrayData[cSlash2Sound], VOL_NORMATTN_NORM0PITCH_NORM)
        return 
FMRES_SUPERCEDE
    
}        
    else if((
containi(sample"weapons/knife_hit") != -1) || equal(sample"weapons/knife_stab.wav"))
    {
        
emit_sound(idCHAN_ITEMarrayData[cStabSound], VOL_NORMATTN_NORM0PITCH_NORM)
        return 
FMRES_SUPERCEDE
    
}
    return 
FMRES_IGNORED
}

public 
ham_KnifeDeploy_Post(const iKnife)
{
    static 
idid get_pdata_cbase(iKnifem_pPlayerXTRA_OFS_WEAPON)
    if(
is_user_connected(id))
    {        
        new 
arrayData[cModelsArray]
        
ArrayGetArray(g_arModelsg_iUserModel[id], arrayData)
        
        
set_pev(idpev_viewmodel2arrayData[cViewModel])
        
set_pev(idpev_weaponmodel2arrayData[cPlayerModel])
    }
}

public 
cmdModels(id)
{
    static 
szTittle[60]
    
formatex(szTittlecharsmax(szTittle), "PUBNite - Modelos de cuchillos^n\dVBucks: %d"pubnite_get_user_vbucks(id))
    
    new 
iMenu menu_create(szTittle"handler_models")
    for(new 
iszPrice[10], arrayData[cModelsArray], szItemFormat[55];ArraySize(g_arModels);i++)
    {
        
ArrayGetArray(g_arModelsiarrayData)
        
num_to_str(arrayData[iKnifePrice], szPricecharsmax(szPrice))

        
formatex
        
(
            
szItemFormatcharsmax(szItemFormat), 
            
"%s - [\r%s%s]"
            
arrayData[cModelName], 
            
g_bHasModel[id][i] ? (g_iUserModel[id] == i) ? "\yEN USO\w" "\rUSAR\w" szPrice
            
g_bHasModel[id][i] ? "" " \rVBucks\w"
        
)
        
menu_additem(iMenuszItemFormat)
    }
    
menu_display(idiMenu)
    return 
PLUGIN_HANDLED
}

public 
handler_models(idiMenuiItem)
{
    if((
iItem == MENU_EXIT))
    {
        
menu_destroy(iMenu)
        return
    }
    
    new 
arrayData[cModelsArray]
    
ArrayGetArray(g_arModelsiItemarrayData)
    
    new 
iUserVBucks pubnite_get_user_vbucks(id), iPrice arrayData[iKnifePrice]
    if(
g_iUserModel[id] == iItem)
    {
        
CC_SendMatched(idCC_COLOR_RED"%L"id"SERVER_ALREADY_HAVE_SKIN"arrayData[cModelName])
        
menu_display(idiMenu)
        return
    }
    else if(!
g_bHasModel[id][iItem] && (iUserVBucks iPrice))
    {
        
CC_SendMatched(idCC_COLOR_RED"%L"id"SERVER_NOT_ENOUGH_VBUCKS"arrayData[cModelName])
        
menu_display(idiMenu)
        return
    }
    
    if(!
g_bHasModel[id][iItem])
    {
        
askMenu(idiItem)
        
        new 
Float:fOrigin[3], iEnt
        originUnitsAhead
(idfOrigin110)

        if(
validEntity(id))
        {
            
iEnt g_iEntityID[id]

            
set_pev(iEntpev_originfOrigin)
            
engfunc(EngFunc_SetModeliEntarrayData[cViewModel])
            return
        }
    
        if(
isInvalidPlace(fOriginid))
        {
            
CC_SendMatched(idCC_COLOR_RED"%L"id"SERVER_INVALID_PLACE_TO_USE")
            
client_cmd(id"spk buttons/button11")
            return
        }
            
        
iEnt create_entity("info_target")
        if(
pev_valid(iEnt))
        {
            
g_iEntityID[id] = iEnt
                
            fOrigin
[2] += 15.0
            set_pev
(iEntpev_originfOrigin)
                
            
engfunc(EngFunc_SetModeliEntarrayData[cViewModel])
            
set_pev(iEntpev_solidSOLID_NOT)
            
set_pev(iEntpev_ownerid)
            
set_pev(iEntpev_movetypeMOVETYPE_NOCLIP)
                
            
set_pev(iEntpev_rendermodekRenderTransAlpha)
            
set_pev(iEntpev_renderamt0.0)
                
            static 
Float:fFloatvector[3]
            
fFloatvector[1] = 20.0
            set_pev
(iEntpev_avelocityfFloatvector)
        }
    }
    else 
    {
        
g_iUserModel[id] = iItem
        
if(get_user_weapon(id) == CSW_KNIFE && is_user_alive(id))
        {
            
set_pev(idpev_viewmodel2arrayData[cViewModel])
            
set_pev(idpev_weaponmodel2arrayData[cPlayerModel])
        }
                
        
cmdModels(id)
        
CC_SendMatched(idCC_COLOR_RED"%L"id"SERVER_YOU_SELECTED"arrayData[cModelName])
    }
}

askMenu(idiItemID)
{
    static 
szTittle[80]
    
formatex(szTittlecharsmax(szTittle), "PUBNite - Modelos de jugador^n\d%L^n\dVBucks: %d"id"SERVER_QUESTION_MENU"pubnite_get_user_vbucks(id))
    
    new 
iMenu menu_create(szTittle"askmenu_handler"), szItemID[10], szItemFmt[15]
    
num_to_str(iItemIDszItemIDcharsmax(szItemID))
    
    
formatex(szItemFmtcharsmax(szItemFmt), "\y%L"id"SERVER_YES")
    
menu_additem(iMenuszItemFmtszItemID)
    
    
formatex(szItemFmtcharsmax(szItemFmt), "\r%L"id"SERVER_NO")
    
menu_additem(iMenuszItemFmt)
    
    
menu_display(idiMenu)
    
    
set_task(10.0"removeKnifeModel"id TASK_REMOVE_MODEL)
}

public 
askmenu_handler(idiMenuiItem)
{
    
removeModel(id)
    
remove_task(id TASK_REMOVE_MODEL)
    
    switch(
iItem)
    {
        case 
MENU_EXIT:
        {
            
menu_destroy(iMenu)
        }
        case 
0:
        {
            new 
szData[10], szItemName[MAX_MODEL_LENGTH], _accessitem_callback
            menu_item_getinfo
(iMenuiItem_accessszData,charsmax(szData), szItemNamecharsmax(szItemName), item_callback)
            
            new 
iItemID str_to_num(szData), arrayData[cModelsArray], iPrice
            ArrayGetArray
(g_arModelsiItemIDarrayData)
                
            
CC_SendMatched(idCC_COLOR_RED"%L"id"SERVER_YOU_BOUGHT"arrayData[cModelName], (iPrice arrayData[iKnifePrice]))
                
            
g_iUserModel[id] = iItemID
            g_bHasModel
[id][iItemID] = true
                
            message_begin
(MSG_ONEg_mMessageScreenFade, .player id)
            
write_short(4300)
            
write_short(0)
            
write_short(0)
            
write_byte(255)
            
write_byte(255
            
write_byte(255
            
write_byte(65
            
message_end()
                
            
client_cmd(id"spk ^"%s^""g_szBuySound)
            
pubnite_set_user_vbucks(id, (pubnite_get_user_vbucks(id) - iPrice))
        
            
saveData(id)
            if(
get_user_weapon(id) == CSW_KNIFE && is_user_alive(id))
            {
                
set_pev(idpev_viewmodel2arrayData[cViewModel])
                
set_pev(idpev_weaponmodel2arrayData[cPlayerModel])
            }
        }
        case 
1cmdModels(id)
    }
}

public 
removeKnifeModel(id)
{
    
removeModel(id TASK_REMOVE_MODEL)
}

removeModel(id)
{
    if(
validEntity(id))
    {
        
remove_entity(g_iEntityID[id])
    }
    
g_iEntityID[id] = 0

    
    
if(is_user_connected(id))
    {
        
show_menu(id0"^n")
    }
}

readIniData()
{
    new 
szConfig[MAX_PLAYERS], szIniFile[164]
    
get_configsdir(szConfigcharsmax(szConfig))
    
formatex(szIniFilecharsmax(szIniFile), "%s/pubnite_mod/pubnite_management/pubnite_knifemodels.ini"szConfig)
    if(!
file_exists(szIniFile)) 
    {
        
log_to_file("pubnite_log.log""[PUBNite Mod]: %L"LANG_SERVER"SERVER_NO_CONFIG_FILE"szIniFile)
        return
    }

    new 
szBuffer[MAX_MODEL_LENGTH MAX_PLAYERS]
    new 
szKey[MAX_PLAYERS], szValue[MAX_MODEL_LENGTH], arrayData[cModelsArray]
    
    new 
iFile fopen(szIniFile"rt"), iModelsNum 0
    
while(!feof(iFile) && (iModelsNum MAX_KNIFE_SKINS))
    {
        
fgets(iFileszBuffercharsmax(szBuffer))
        
trim(szBuffer)
        
        if((
szBuffer[0] == EOS) || (szBuffer[0] == ';') || ((szBuffer[0] == '/') && (szBuffer[1] == '/')))
            continue
            
        if(
szBuffer[0] == '[')
        {
            if(
szBuffer[strlen(szBuffer) - 1] == ']')
            {
                if(
iModelsNum)
                {
                    
ArrayPushArray(g_arModelsarrayData)
                }
    
                
iModelsNum++
                
                
replace(szBuffercharsmax(szBuffer), "[""")
                
replace(szBuffercharsmax(szBuffer), "]""")
                
                
arrayData[cModelName] = szBuffer
            
}
            else continue
        }
        else
        {
            
strtok(szBufferszKeycharsmax(szKey), szValuecharsmax(szValue), '=')
            
            
trim(szKey)
            
trim(szValue)
            

            if(
equal(szKey"KNIFE_PRICE"))
            {
                
arrayData[iKnifePrice] = str_to_num(szValue)
            }
            else if(
equal(szKey"KNIFE_VIEW_MODEL"))
            {
                if(
precacheModel(szValue))
                {
                    
arrayData[cViewModel] = szValue
                
}
            }
            else if(
equal(szKey"KNIFE_PLAYER_MODEL"))
            {
                if(
precacheModel(szValue))
                {
                    
arrayData[cPlayerModel] = szValue
                
}
            }
            else if(
equal(szKey"KNIFE_DEPLOY_SOUND"))
            {
                if(
precacheSound(szValue))
                {
                    
arrayData[cDeploySound] = szValue
                
}
            }
            else if(
equal(szKey"KNIFE_HITWALL1_SOUND"))
            {
                if(
precacheSound(szValue))
                {
                    
arrayData[cHitWall1Sound] = szValue
                
}
            }
            else if(
equal(szKey"KNIFE_SLASH1_SOUND"))
            {
                if(
precacheSound(szValue))
                {
                    
arrayData[cSlash1Sound] = szValue
                
}
            }
            else if(
equal(szKey"KNIFE_SLASH2_SOUND"))
            {
                if(
precacheSound(szValue))
                {
                    
arrayData[cSlash2Sound] = szValue
                
}
            }
            else if(
equal(szKey"KNIFE_STAB_SOUND"))
            {
                if(
precacheSound(szValue))
                {
                    
arrayData[cStabSound] = szValue
                
}
            }
        }
    }
    
    if(
iModelsNum)
    {
        
ArrayPushArray(g_arModelsarrayData)
    }
    
fclose(iFile)
}

precacheModel(szModel[])
{
    if(
file_exists(szModel))
    {
        
precache_model(szModel)

        
// Quick&Dirty Fix
        
new temp[80]
        
copy(temp, (strlen(szModel) - 4), szModel)
        
formatex(tempcharsmax(temp), "%st.mdl"temp)
        if(
file_exists(temp))
        {
            
precache_model(temp)
            return 
true
        
}
        
copy(temp, (strlen(szModel) - 4), szModel)
        
formatex(tempcharsmax(temp), "%sT.mdl"temp)
        if(
file_exists(temp))
        {
            
precache_model(temp)
            return 
true
        
}
        return 
true
    
}
    return 
false
}

precacheSound(szSound[])
{
    if(
equal(szSound[strlen(szSound) - 4], ".mp3")) 
    {
        if(
file_exists(szSound))
        {
            
precache_generic(szSound)
            return 
true
        
}
    }
    else 
    {
        return 
precache_sound(szSound)
    }
    return 
false
}

saveData(id)
{
    new 
szSteam[35]
    
get_user_authid(idszSteamcharsmax(szSteam)) 
    
    new 
vaultkey[64], vaultdata[64]
    
format(vaultkeycharsmax(vaultkey), "%s-Save"szSteam)  
    
format(vaultdatacharsmax(vaultdata), "%i"g_iUserModel[id])
    
    for(new 
i;MAX_KNIFE_SKINS;i++)
    {
        
formatex(vaultdatacharsmax(vaultdata), "%s %i"vaultdatag_bHasModel[id][i])    
    }
    
    
nvault_set(g_nVaultBetvaultkeyvaultdata)
}

loadData(id
{
    new 
szSteam[35]
    
get_user_authid(idszSteamcharsmax(szSteam)) 
    
    new 
vaultkey[64], vaultdata[64]
    
format(vaultkeycharsmax(vaultkey), "%s-Save"szSteam)
    
format(vaultdatacharsmax(vaultdata), "%i"g_iUserModel[id])
    
    for(new 
i;MAX_KNIFE_SKINS;i++)
    {
        
formatex(vaultdatacharsmax(vaultdata), "%s %i"vaultdatag_bHasModel[id][i])  
    }
    
nvault_get(g_nVaultBetvaultkeyvaultdatacharsmax(vaultdata))
    
    new 
Data[MAX_KNIFE_SKINS][8]
    
    
// WTF
    
parse(vaultdataData[0], charsmax(Data), Data[1], charsmax(Data), Data[2], charsmax(Data), Data[3], charsmax(Data), Data[4], charsmax(Data), Data[5], charsmax(Data),
    
Data[6], charsmax(Data), Data[7], charsmax(Data), Data[8], charsmax(Data), Data[9], charsmax(Data), Data[10], charsmax(Data), Data[11], charsmax(Data), Data[12], charsmax(Data),
    
Data[13], charsmax(Data), Data[14], charsmax(Data), Data[15], charsmax(Data), Data[16], charsmax(Data), Data[17], charsmax(Data), Data[18], charsmax(Data), Data[19], charsmax(Data),
    
Data[20], charsmax(Data), Data[21], charsmax(Data), Data[22], charsmax(Data), Data[23], charsmax(Data), Data[24])
    
    for(new 
i;sizeof Data;i++)
    {
        if(
0)
        {
            
g_bHasModel[id][1] = bool:str_to_num(Data[i])
        }
        else 
g_iUserModel[id] = str_to_num(Data[i])
    }