AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Suggestions / Requests (https://forums.alliedmods.net/forumdisplay.php?f=12)
-   -   Individual Weapon Models Help (https://forums.alliedmods.net/showthread.php?t=232021)

goodkat 12-24-2013 05:23

Individual Weapon Models Help
 
I have this plugin from http://forums.alliedmods.net/showthread.php?p=867669 and it`s working just fine on my computer. But when i upload it on my server, it just crashes. No error message, no nothing...the server just stops working. Since the owner is not responding to my private message, i`m asking you guys for help. Can someone help me, pls?
Here is the sma file.
Code:

#include <amxmodx>
#include <amxmisc>

#include <hamsandwich>
#include <fakemeta>
#include <engine>

#include <cstrike>

new const Plugin[] = "Individual Weapon Models"
new const Version[] = "1.2"
new const Author[] = "joaquimandrade"

new Trie:WeaponsIDs

const WeaponsLastID = CSW_P90

new Array:WeaponModels[WeaponsLastID+1]
new Array:WeaponShieldModels[WeaponsLastID+1]
new Array:WeaponModelsHasShield[WeaponsLastID+1]
new WeaponModelsNumber[WeaponsLastID+1]

const MaxSlots = 32

new PlayerCurrentWeapon[MaxSlots+1][WeaponsLastID+1]

new WeaponsConfigFile[] = "individualWeaponModels.ini"

const ModelMaxLen = 50

new WeaponCanDropFunctionNames[][] = {"weaponNotDroppableCanDrop","weaponDroppableCanDrop"}

const m_iId = 43
const m_iIdLinuxOffset = 4
const m_fInReload = 54
const m_fInReloadLinuxOffset = 4

new ModelFormat[] = "models/v_%s.mdl"
new ModelShieldFormat[] = "models/shield/v_shield_%s.mdl"
new FullModel[ModelMaxLen + charsmax(ModelFormat) + 1]
new FullShieldModel[ModelMaxLen + charsmax(ModelShieldFormat) + 1]

new BlockNextDropMessage[MaxSlots+1 char]

new WeaponNames[][] =
{
        "",
        "p228",
        "",
        "scout",
        "hegrenade",
        "xm1014",
        "c4",
        "mac10",
        "aug",
        "smokegrenade",
        "elite",
        "fiveseven",
        "ump45",
        "sg550",
        "galil",
        "famas",
        "usp",
        "glock18",
        "awp",
        "mp5navy",
        "m249",
        "m3",
        "m4a1",
        "tmp",
        "g3sg1",
        "flashbang",
        "deagle",
        "sg552",
        "ak47",
        "knife",
        "p90"
}

new WeaponName[] = "weapon_smokegrenade"

public plugin_init()
{       
        register_plugin(Plugin,Version,Author)       
       
        register_cvar("individualWeaponModels",Version,FCVAR_SERVER|FCVAR_SPONLY);
       
        register_message(get_user_msgid("TextMsg"),"textMsg");
        register_event("CurWeapon","curWeapon","be","1=1");
}

isDroppable(weaponName[])
{
        new entity = create_entity(weaponName)
        new droppable = ExecuteHam(Ham_CS_Item_CanDrop,entity)
        remove_entity(entity)
        return droppable;
}

public plugin_precache()
{       
        WeaponsIDs = TrieCreate()
                                                       
        TrieSetCell(WeaponsIDs,WeaponNames[1],1)
       
        formatex(WeaponName[7],charsmax(WeaponName),"%s",WeaponNames[1])
        RegisterHam(Ham_CS_Item_CanDrop,WeaponName,WeaponCanDropFunctionNames[isDroppable(WeaponName)])
        RegisterHam(Ham_Item_Deploy,WeaponName,"deployWeapon",1)
       
        for(new i=3;i<=WeaponsLastID;i++)
        {
                TrieSetCell(WeaponsIDs,WeaponNames[i],i)
       
                formatex(WeaponName[7],charsmax(WeaponName),"%s",WeaponNames[i])
                RegisterHam(Ham_CS_Item_CanDrop,WeaponName,WeaponCanDropFunctionNames[isDroppable(WeaponName)])
                RegisterHam(Ham_Item_Deploy,WeaponName,"deployWeapon",1)
        }

        new configPath[60]
        get_configsdir(configPath,charsmax(configPath))
       
        format(configPath,charsmax(configPath),"%s/%s",configPath,WeaponsConfigFile)
       
        new file = fopen(configPath,"r")
       
        if(file)
        {
                new useDefaultModels = get_pcvar_num( register_cvar("weaponModels_default","1") )
               
                new weapon[sizeof WeaponName - 7]
                new model[ModelMaxLen]
                new line[charsmax(WeaponName) + charsmax(model) + 5]
                new fullModelDefault[sizeof FullModel]
               
                while(fgets(file,line,charsmax(line)))
                {
                        parse(line,weapon,charsmax(weapon),model,charsmax(model))
                       
                        if(weapon[0] && model[0])
                        {
                                new weaponID
                               
                                if(TrieGetCell(WeaponsIDs,weapon,weaponID))
                                {
                                        formatex(FullModel,charsmax(FullModel),ModelFormat,model)
                                       
                                        if(file_exists(FullModel))
                                        {
                                                if(!WeaponModelsNumber[weaponID])
                                                {
                                                        WeaponModels[weaponID] = ArrayCreate(charsmax(FullModel))
                                                        WeaponShieldModels[weaponID] = ArrayCreate(charsmax(FullShieldModel))
                                                        WeaponModelsHasShield[weaponID] = ArrayCreate()
                                                       
                                                        if(useDefaultModels)
                                                        {
                                                                formatex(fullModelDefault,charsmax(fullModelDefault),ModelFormat,weapon)
                                                       
                                                                WeaponModelsNumber[weaponID] = 1
                                                                ArrayPushString(WeaponModels[weaponID],fullModelDefault);
                                                                ArrayPushString(WeaponShieldModels[weaponID],"")
                                                                ArrayPushCell(WeaponModelsHasShield[weaponID],false)
                                                                precache_model(FullModel)
                                                        }
                                                }
                                               
                                                WeaponModelsNumber[weaponID]++
                                               
                                                ArrayPushString(WeaponModels[weaponID],FullModel);
                                                precache_model(FullModel)
                                               
                                                formatex(FullShieldModel,charsmax(FullShieldModel),ModelShieldFormat,model)
                                               
                                                if(file_exists(FullShieldModel))
                                                {
                                                        ArrayPushString(WeaponShieldModels[weaponID],FullShieldModel);
                                                        ArrayPushCell(WeaponModelsHasShield[weaponID],true)                                                               
                                                        precache_model(FullShieldModel)
                                                }
                                                else
                                                {
                                                        ArrayPushString(WeaponShieldModels[weaponID],"");
                                                        ArrayPushCell(WeaponModelsHasShield[weaponID],false)
                                                }
                                               
                                               
                                                server_print("Added model ^"%s^" for weapon ^"%s^"",FullModel,weapon)
                                        }
                                        else
                                        {
                                                server_print("Unable to find model ^"%s^" for weapon ^"%s^"",FullModel,weapon)
                                        }
                                }
                                else
                                {
                                        server_print("Invalid weapon ^"%s^"",weapon)
                                }
                        }
                       
                        weapon[0] = model[0] = 0
                }
               
                fclose(file)
        }       
}

public client_authorized(id)
{
        new array[WeaponsLastID+1]       
        PlayerCurrentWeapon[id] = array
}

checkSetWeaponModel(id,weaponCSW)
{
        if(WeaponModelsNumber[weaponCSW])
        {
                ArrayGetString(WeaponModels[weaponCSW],PlayerCurrentWeapon[id][weaponCSW],FullModel,charsmax(FullModel))
                set_pev(id,pev_viewmodel2,FullModel);
        }
}

checkSetWeaponShieldModel(id,weaponCSW)
{
        if(WeaponModelsNumber[weaponCSW])
        {
                if(ArrayGetCell(WeaponModelsHasShield[weaponCSW],PlayerCurrentWeapon[id][weaponCSW]))
                {
                        ArrayGetString(WeaponShieldModels[weaponCSW],PlayerCurrentWeapon[id][weaponCSW],FullShieldModel,charsmax(FullShieldModel))
                        set_pev(id,pev_viewmodel2,FullShieldModel);
                }
        }
}

validPlayer(id)
{
        return (1 <= id <= MaxSlots) && is_user_alive(id)
}

public deployWeapon(weaponID)
{
        new id = pev(weaponID,pev_owner)
       
        if(validPlayer(id))
        {
                if(!cs_get_user_shield(id))
                {
                        checkSetWeaponModel(id,get_pdata_int(weaponID,m_iId,m_iIdLinuxOffset))
                }
                else
                {
                        checkSetWeaponShieldModel(id,get_pdata_int(weaponID,m_iId,m_iIdLinuxOffset))
                }
        }
}

nextWeaponModel(id,weaponID)
{
        new weaponCSW = get_pdata_int(weaponID,m_iId,m_iIdLinuxOffset)
       
        PlayerCurrentWeapon[id][weaponCSW] = ++PlayerCurrentWeapon[id][weaponCSW] % WeaponModelsNumber[weaponCSW]
       
        ArrayGetString(WeaponModels[weaponCSW],PlayerCurrentWeapon[id][weaponCSW],FullModel,charsmax(FullModel))
       
        ExecuteHam(Ham_Item_Deploy,weaponID)
        set_pev(id,pev_viewmodel2,FullModel);
}

public weaponDroppableCanDrop(weaponID)
{
        new id = pev(weaponID,pev_owner)
       
        new buttons = pev(id,pev_button)
       
        if(validPlayer(id) && (buttons & IN_USE))
        {
                if((WeaponModelsNumber[get_pdata_int(weaponID,m_iId,m_iIdLinuxOffset)] > 1) && !get_pdata_int(weaponID,m_fInReload,m_fInReloadLinuxOffset) && (~buttons & IN_ATTACK))
                {
                        nextWeaponModel(id,weaponID)
                }
               
                BlockNextDropMessage{id} = true
               
                SetHamReturnInteger(0)
                return HAM_OVERRIDE
        }
       
        return HAM_IGNORED
}

public weaponNotDroppableCanDrop(weaponID)
{
        new id = pev(weaponID,pev_owner)
       
        if(validPlayer(id))
        {       
                if((WeaponModelsNumber[get_pdata_int(weaponID,m_iId,m_iIdLinuxOffset)] > 1) && (~pev(id,pev_button) & IN_ATTACK))
                {
                        nextWeaponModel(id,weaponID)
                }
               
                BlockNextDropMessage{id} = true
        }
}

public curWeapon(id)
{       
        if(!cs_get_user_shield(id))
        {
                checkSetWeaponModel(id,read_data(2))
        }
        else
        {
                checkSetWeaponShieldModel(id,read_data(2))
        }
}

public textMsg(msgid,msgDest,id)
{
        if(BlockNextDropMessage{id} && (get_msg_arg_int(1) == 4))
        {
                static const msg[] = "#Weapon_Cannot_Be_Dropped";
                static arg[sizeof msg];
                get_msg_arg_string(2,arg,charsmax(arg));
               
                if(equal(msg,arg))
                {
                        BlockNextDropMessage{id} = false;
                       
                        return PLUGIN_HANDLED;
                }
        }
       
        return PLUGIN_CONTINUE;
}


wickedd 12-24-2013 07:15

Re: Individual Weapon Models Help
 
1.Post your problem in the plugin thread.
2.Never PM someone for help unless they tell you to.

goodkat 12-25-2013 03:14

Re: Individual Weapon Models Help
 
no answer :( pls. can you help?

al3amri 12-25-2013 05:00

Re: Individual Weapon Models Help
 
well, i tried it and its working the server not crashing.
try to compile it if still crashing disable all plugins and enable one after one untill the server crashed and you will know which plugin


All times are GMT -4. The time now is 20:41.

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