PEDIDO DE PLUGIN PARACAIDAS
#1
Exclamación 
Hola gente, les comento tengo este plugins en la cual me permite comprar a traves de un menu skin de indumentaria, quiero cambiarlo a skin de paracaídas. Alguien me podría ayudar a mejorar este codigo por favor.  Cutecry Muchas gracias.

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

#define PLUGIN "PUBNite: Parachute Menu"
#define VERSION "1.0"
#define AUTHOR "EFFEX"

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

#define OFFSET_INTERNALMODELS 126
#define MAX_MODELS_SKINS 25
#define TASK_TURNBACK 83218318

enum cModelsArray
{
 
cModelName[MAX_PLAYERS],
 
cModelFile[MAX_MODEL_LENGTH],
 
iModelPrice
}

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_MODELS_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")
 }
 
 
CC_SetPrefix("")
 
 
register_dictionary("effxs_skinshop.txt")
 
register_dictionary("effxs_battleroyale.txt")
 
 
g_mMessageScreenFade get_user_msgid("ScreenFade")
 
g_nVaultBet nvault_open("PARACHUTE")
 
 
register_forward(FM_AddToFullPack"forward_AddToFullPack"1)
 
RegisterHam(Ham_Spawn"player""ham_PlayerSpawn_Post"1)

 new 
szModelsShop[MAX_PLAYERS], szCommandFmt[35]
 
pubnite_get_command(cModelsShopszModelsShop)
 
formatex(szCommandFmtcharsmax(szCommandFmt), "say %s"szModelsShop)
 
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 
ham_PlayerSpawn_Post(id)
{
 if(
is_user_alive(id) && g_iUserModel[id])
 {
 new 
arrayData[cModelsArray]
 
ArrayGetArray(g_arModelsmin(userItemID(id), ArraySize(g_arModels) - 1), arrayData)
 
cs_set_user_model(idarrayData[cModelFile])
 }
}

public 
cmdModels(id)
{
 static 
szTittle[60]
 
formatex(szTittlecharsmax(szTittle), "PUBNite - Parachute Models^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[iModelPrice], szPricecharsmax(szPrice))

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

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 
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[iModelPrice]
 if(
userItemID(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
 }

 new 
szModel[MAX_MODEL_LENGTH]
 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)
 
formatex(szModelcharsmax(szModel), "models/pubg/itens/%s.mdl"arrayData[cModelFile], arrayData[cModelFile])
 
engfunc(EngFunc_SetModeliEntszModel)
 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
 
 set_pev
(iEntpev_originfOrigin)
 
formatex(szModelcharsmax(szModel), "models/pubg/itens/%s.mdl"arrayData[cModelFile], arrayData[cModelFile])
 
engfunc(EngFunc_SetModeliEntszModel)
 
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] = 30.0
 set_pev
(iEntpev_avelocityfFloatvector)
 }
 }
 else 
 {
 
CC_SendMatched(idCC_COLOR_RED"%L"id"SERVER_YOU_SELECTED"arrayData[cModelName])

 
formatex(szModelcharsmax(szModel), arrayData[cModelFile])
 
setModel(id, (iItem 1), szModel)
 
 
cmdModels(id)
 }
}

askMenu(idiItemID)
{
 static 
szTittle[80]
 
formatex(szTittlecharsmax(szTittle), "PUBNite - Parachute Models^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"turnModelBack"id TASK_TURNBACK)
}

public 
askmenu_handler(idiMenuiItem)
{
 
turnPlayerModelBack(id)
 
remove_task(id TASK_TURNBACK)
 
 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[iModelPrice]))
 
 
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))
 
 
g_bHasModel[id][iItemID] = true
 g_iUserModel
[id] = iItemID 1
 saveData
(id)
 }
 case 
1cmdModels(id)
 }
}

setModel(idiModelID 0szModel[MAX_MODEL_LENGTH] = "")
{
 if(
iModelID)
 {
 
g_iUserModel[id] = iModelID
 saveData
(id)
 }
 
 if(
pubnite_is_in_countdown() && is_user_alive(id))
 {
 if(!
szModel[0])
 {
 new 
arrayData[cModelsArray]
 
ArrayGetArray(g_arModelsuserItemID(id), arrayData)
 
copy(szModelcharsmax(szModel), arrayData[cModelFile])
 }
 
cs_set_user_model(idszModel)
 }
}

public 
turnModelBack(id)
{
 
turnPlayerModelBack(id TASK_TURNBACK)
}

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

 
if(!is_user_connected(id))
 return
 
 
show_menu(id0"^n")
 
 if(
g_iUserModel[id])
 {
 
setModel(id)
 }
 else 
cs_reset_user_model(id)
}

readIniData()
{
 new 
szConfig[MAX_PLAYERS], szIniFile[164]
 
get_configsdir(szConfigcharsmax(szConfig))
 
formatex(szIniFilecharsmax(szIniFile), "%s/pubnite_mod/pubnite_management/pubnite_parachuteskins.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[512], szKey[50], szValue[MAX_MODEL_LENGTH], arrayData[cModelsArray]
 new 
szModelName[MAX_PLAYERS], szModel[MAX_MODEL_LENGTH], szModelFile[MAX_MODEL_LENGTH], szPrice[15]
 
 new 
iFile fopen(szIniFile"rt")
 while(!
feof(iFile) && (ArraySize(g_arModels) < MAX_MODELS_SKINS))
 {
 
fgets(iFileszBuffercharsmax(szBuffer))
 
trim(szBuffer)
 
 if((
szBuffer[0] == EOS) || (szBuffer[0] == ';') || ((szBuffer[0] == '/') && (szBuffer[1] == '/')))
 continue
 
 
trim(szKey)
 
trim(szValue)
 
 
parse
 
(
 
szBuffer
 
szModelNamecharsmax(szModelName), 
 
szModelcharsmax(szModel),
 
szPricecharsmax(szPrice)
 )
 
 
formatex(szModelFilecharsmax(szModelFile), "models/pubg/itens/%s.mdl"szModelszModel)
 if(
file_exists(szModelFile))
 {
 
precacheModel(szModelFile)
 
 
arrayData[cModelName] = szModelName
 arrayData
[cModelFile] = szModel
 arrayData
[iModelPrice] = str_to_num(szPrice)

 
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
}

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_MODELS_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_MODELS_SKINS;i++)
 {
 
formatex(vaultdatacharsmax(vaultdata), "%s %i"vaultdatag_bHasModel[id][i])  
 
}
 
nvault_get(g_nVaultBetvaultkeyvaultdatacharsmax(vaultdata))
 
 new 
Data[MAX_MODELS_SKINS][8]
 
 
// LOL
 
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])
 }

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)