Raised This Month: $ Target: $400
 0% 

Dynamic Array Fun


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
Doc-Holiday
AlliedModders Donor
Join Date: Jul 2007
Old 09-19-2011 , 00:17   Dynamic Array Fun
Reply With Quote #1

So im trying to create a plugin that will read from a text file add the info to an array then to a menu. From that menu i choose a weapon and it should give me that weapon.. Any ideas on ArrayCreate(#) blank only does 1 char but the weapon names arenot all the same there fore ArrayCreate(5) on USP would be USP_ _ (_ are blank spaces).

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#include <fun>

enum _:CHOICES
{
    
OPTION_NEW,
    
OPTION_OLD,
    
OPTION_SAVE
}

new const 
g_szOptions[][] =
{
    
"New Guns",
    
"Previous Guns",
    
"Previous + Save"
}

new 
g_WeaponBPAmmo[] =
{
    
052090132110090112010010090909010012030,
    
12020032901209023590900100
};

new 
g_szPWepFile[256], g_szSwepFile[256];
new 
g_pFilePointerg_sFilePointer;
new 
g_pWeaponMenug_sWeaponMenug_SpawnMenu;

new Array:
g_PrimaryWeapons, Array:g_SecondaryWeapons;

public 
plugin_init()
{
    
register_plugin("Weapon Menu""0.0.1""SavSin");
    
    
RegisterHam(Ham_Spawn"player""fwdPlayerSpawn"1);
    
    
CreatePrimaryArray();
    
CreateSecondaryArray();
    
    new 
szNum[3];
    
g_SpawnMenu menu_create("Spawn Menu""HandleSpawnMenu");
    
    for(new 
0sizeof(g_szOptions); i++)
    {
        
num_to_str(iszNumcharsmax(szNum));
        
menu_additem(g_SpawnMenug_szOptions[i], szNum0);
    }    
}

public 
fwdPlayerSpawn(id)
{
    if(
is_user_alive(id))
    {
        
menu_display(idg_SpawnMenu);
    }
}

public 
HandleSpawnMenu(idiMenuiItem)
{
    new 
szKey[3], Dummy;
    
menu_item_getinfo(iMenuiItemDummyszKey2""0Dummy);
    
    switch(
str_to_num(szKey))
    {
        case 
OPTION_NEWmenu_display(idg_pWeaponMenu);
        case 
OPTION_OLDmenu_display(idg_pWeaponMenu);
        case 
OPTION_SAVEmenu_display(idg_pWeaponMenu);
    }
}

public 
CreatePrimaryArray()
{
    
get_configsdir(g_szPWepFilecharsmax(g_szPWepFile));
    
format(g_szPWepFilecharsmax(g_szPWepFile), "%s/DM_PrimaryWeapons.txt"g_szPWepFile);
    
g_pFilePointer fopen(g_szPWepFile"r");
    
g_PrimaryWeapons ArrayCreate(0);
    if(
g_pFilePointer)
    {
        new 
szPrimaryData[32];
        while(!
feof(g_pFilePointer))
        {
            
fgets(g_pFilePointerszPrimaryDatacharsmax(szPrimaryData));
            
ArrayPushArray(g_PrimaryWeaponsszPrimaryData);
        }
    }
    
    
g_pWeaponMenu menu_create("Primary Weapon Menu""HandlePrimaryWeapons");
    new 
iSize ArraySize(g_PrimaryWeapons), szNum[3], szData[32];
    for(new 
0iSizei++)
    {
        
ArrayGetArray(g_PrimaryWeaponsiszData);
        
num_to_str(iszNumcharsmax(szNum));
        
menu_additem(g_pWeaponMenuszDataszNum0);
    }
    
    
fclose(g_pFilePointer);
}

public 
HandlePrimaryWeapons(idiMenuiItem)
{
    new 
szKey[3], iSelectedWeaponDummy;
    
menu_item_getinfo(iMenuiItemDummyszKey2""0Dummy);
    
    
iSelectedWeapon str_to_num(szKey);
    
    new 
WeaponName[32], szArrayData[32];
    
ArrayGetArray(g_PrimaryWeaponsiSelectedWeaponszArrayData);
    
    
format(WeaponNamecharsmax(WeaponName), "weapon_%s"szArrayData);
    
GiveWeapons(idWeaponName);
    
    
menu_display(idg_sWeaponMenu);
}

public 
CreateSecondaryArray()
{
    
get_configsdir(g_szSwepFilecharsmax(g_szSwepFile));
    
format(g_szSwepFilecharsmax(g_szSwepFile), "%s/DM_SecondaryWeapons.txt"g_szSwepFile);
    
g_sFilePointer fopen(g_szSwepFile"r");
    
g_SecondaryWeapons ArrayCreate(0);
    if(
g_sFilePointer)
    {
        new 
szSecondaryData[32];
        while(!
feof(g_sFilePointer))
        {
            
fgets(g_sFilePointerszSecondaryDatacharsmax(szSecondaryData));
            
ArrayPushArray(g_SecondaryWeaponsszSecondaryData);
        }
    }
    
    
g_sWeaponMenu menu_create("Secondary Weapon Menu""HandleSecondaryWeapons");
    new 
iSize ArraySize(g_SecondaryWeapons), szNum[3], szData[32];
    for(new 
0iSizei++)
    {
        
ArrayGetArray(g_SecondaryWeaponsiszData);
        
num_to_str(iszNumcharsmax(szNum));
        
menu_additem(g_sWeaponMenuszDataszNum0);
    }
    
    
fclose(g_pFilePointer);
}

public 
HandleSecondaryWeapons(idiMenuiItem)
{
    new 
szKey[3], iSelectedWeaponDummy;
    
menu_item_getinfo(iMenuiItemDummyszKey2""0Dummy);
    
    
iSelectedWeapon str_to_num(szKey);
    
    new 
WeaponName[32], szArrayData[32];
    
ArrayGetArray(g_SecondaryWeaponsiSelectedWeaponszArrayData);
    
    
format(WeaponNamecharsmax(WeaponName), "weapon_%s"szArrayData);
    
GiveWeapons(idWeaponName);
}

stock GiveWeapons(idszWeapon[])
{
    new 
iWeaponId get_weaponid(szWeapon);
    
give_item(idszWeapon);
    
cs_set_user_bpammo(idiWeaponIdg_WeaponBPAmmo[iWeaponId]);

Edit:: I needed to use trim(lineitem); and has been fixed.

Fixed Code below: Its a work in progress
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#include <fun>

enum _:CHOICES
{
    
OPTION_NEW,
    
OPTION_OLD,
    
OPTION_SAVE
}

new const 
g_szOptions[][] =
{
    
"New Guns",
    
"Previous Guns",
    
"Previous + Save"
}

new 
g_WeaponBPAmmo[] =
{
    
052090132110090112010010090909010012030,
    
12020032901209023590900100
};

new 
g_szPWepFile[256], g_szSwepFile[256];
new 
g_pFilePointerg_sFilePointer;
new 
g_pWeaponMenug_sWeaponMenug_SpawnMenu;

new Array:
g_PrimaryWeapons, Array:g_SecondaryWeapons;

public 
plugin_init()
{
    
register_plugin("Weapon Menu""0.0.1""SavSin");
    
    
RegisterHam(Ham_Spawn"player""fwdPlayerSpawn"1);
    
    
CreatePrimaryArray();
    
CreateSecondaryArray();
    
    new 
szNum[3];
    
g_SpawnMenu menu_create("Weapon Menu""HandleSpawnMenu");
    
    for(new 
0sizeof(g_szOptions); i++)
    {
        
num_to_str(iszNumcharsmax(szNum));
        
menu_additem(g_SpawnMenug_szOptions[i], szNum0);
    }    
}

public 
fwdPlayerSpawn(id)
{
    if(
is_user_alive(id))
    {
        
menu_display(idg_SpawnMenu);
    }
}

public 
HandleSpawnMenu(idiMenuiItem)
{
    new 
szKey[3], Dummy;
    
menu_item_getinfo(iMenuiItemDummyszKey2""0Dummy);
    
    switch(
str_to_num(szKey))
    {
        case 
OPTION_NEWmenu_display(idg_pWeaponMenu);
        case 
OPTION_OLDmenu_display(idg_pWeaponMenu);
        case 
OPTION_SAVEmenu_display(idg_pWeaponMenu);
    }
}

public 
CreatePrimaryArray()
{
    
get_configsdir(g_szPWepFilecharsmax(g_szPWepFile));
    
format(g_szPWepFilecharsmax(g_szPWepFile), "%s/DM_PrimaryWeapons.txt"g_szPWepFile);
    
g_pFilePointer fopen(g_szPWepFile"r");
    
g_PrimaryWeapons ArrayCreate(15);
    new 
szPrimaryData[32];
    if(
g_pFilePointer)
    {
        while(!
feof(g_pFilePointer))
        {
            
fgets(g_pFilePointerszPrimaryDatacharsmax(szPrimaryData));
            
trim(szPrimaryData);
            
ArrayPushArray(g_PrimaryWeaponsszPrimaryData);
        }
    }
    
    
g_pWeaponMenu menu_create("Primary Weapon Menu""HandlePrimaryWeapons");
    new 
iSize ArraySize(g_PrimaryWeapons), szNum[3];
    for(new 
0iSizei++)
    {
        
ArrayGetArray(g_PrimaryWeaponsiszPrimaryData);
        
num_to_str(iszNumcharsmax(szNum));
        
menu_additem(g_pWeaponMenuszPrimaryDataszNum0);
    }
    
    
fclose(g_pFilePointer);
}

public 
HandlePrimaryWeapons(idiMenuiItem)
{
    new 
szKey[3], iSelectedWeaponDummy;
    
menu_item_getinfo(iMenuiItemDummyszKey2""0Dummy);
    
    
iSelectedWeapon str_to_num(szKey);
    
    new 
WeaponName[32], szArrayData[32];
    
ArrayGetArray(g_PrimaryWeaponsiSelectedWeaponszArrayData);
    
replace_all_fixed(szArrayDatacharsmax(szArrayData), " """);
    
format(WeaponNamecharsmax(WeaponName), "weapon_%s"szArrayData);
    
strtolower(WeaponName);
    
GiveWeapons(idWeaponName);
    
    
menu_display(idg_sWeaponMenu);
}

public 
CreateSecondaryArray()
{
    
get_configsdir(g_szSwepFilecharsmax(g_szSwepFile));
    
format(g_szSwepFilecharsmax(g_szSwepFile), "%s/DM_SecondaryWeapons.txt"g_szSwepFile);
    
g_sFilePointer fopen(g_szSwepFile"r");
    
g_SecondaryWeapons ArrayCreate(15);
    new 
szSecondaryData[32];
    if(
g_sFilePointer)
    {
        while(!
feof(g_sFilePointer))
        {
            
fgets(g_sFilePointerszSecondaryDatacharsmax(szSecondaryData));
            
trim(szSecondaryData);
            
ArrayPushArray(g_SecondaryWeaponsszSecondaryData);
        }
    }
    
    
g_sWeaponMenu menu_create("Secondary Weapon Menu""HandleSecondaryWeapons");
    new 
iSize ArraySize(g_SecondaryWeapons), szNum[3];
    for(new 
0iSizei++)
    {
        
ArrayGetArray(g_SecondaryWeaponsiszSecondaryData);
        
num_to_str(iszNumcharsmax(szNum));
        
menu_additem(g_sWeaponMenuszSecondaryDataszNum0);
    }
    
    
fclose(g_pFilePointer);
}

public 
HandleSecondaryWeapons(idiMenuiItem)
{
    new 
szKey[3], iSelectedWeaponDummy;
    
menu_item_getinfo(iMenuiItemDummyszKey2""0Dummy);
    
    
iSelectedWeapon str_to_num(szKey);
    
    new 
WeaponName[32], szArrayData[32];
    
ArrayGetArray(g_SecondaryWeaponsiSelectedWeaponszArrayData);
    
replace_all_fixed(szArrayDatacharsmax(szArrayData), " """);
    
strtolower(szArrayData);
    
format(WeaponNamecharsmax(WeaponName), "weapon_%s"szArrayData);
    
GiveWeapons(idWeaponName);
}

stock GiveWeapons(idszWeapon[])
{
    new 
iWeaponId get_weaponid(szWeapon);
    
give_item(idszWeapon);
    
cs_set_user_bpammo(idiWeaponIdg_WeaponBPAmmo[iWeaponId]);
}

stock replace_all_fixed(string[], len, const what[], const with[])
{
    new 
pos 0;
    
    if ((
pos contain(stringwhat)) == -1)
    {
        return 
0;
    }
    
    new 
total 0;
    new 
with_len strlen(with);
    new 
diff strlen(what) - with_len;
    new 
total_len strlen(string);
    new 
temp_pos 0;
    
    while (
replace(string[pos], len poswhatwith) != 0)
    {
        
total++;
        
/* jump to position after replacement */
        
pos += with_len;
        
        
/* update cached length of string */
        
total_len -= diff;
        
        
/* will the next call be operating on the last character? */
        
if (pos >= total_len)
        {
            break;
        }
        
        
/* find the next position from our offset */
        
temp_pos contain(string[pos], what);
        
        
/* if it's invalid, we're done */
        
if (temp_pos == -1)
        {
            break;
        }
        
        
/* otherwise, reposition and update counters */
        
pos += temp_pos;
    }
    
    return 
total;


Last edited by Doc-Holiday; 09-19-2011 at 01:03.
Doc-Holiday is offline
 


Thread Tools
Display Modes

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 19:40.


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