| Doc-Holiday |
09-19-2011 00:17 |
Dynamic Array Fun
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[] = { 0, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100 };
new g_szPWepFile[256], g_szSwepFile[256]; new g_pFilePointer, g_sFilePointer; new g_pWeaponMenu, g_sWeaponMenu, g_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 i = 0; i < sizeof(g_szOptions); i++) { num_to_str(i, szNum, charsmax(szNum)); menu_additem(g_SpawnMenu, g_szOptions[i], szNum, 0); } }
public fwdPlayerSpawn(id) { if(is_user_alive(id)) { menu_display(id, g_SpawnMenu); } }
public HandleSpawnMenu(id, iMenu, iItem) { new szKey[3], Dummy; menu_item_getinfo(iMenu, iItem, Dummy, szKey, 2, "", 0, Dummy); switch(str_to_num(szKey)) { case OPTION_NEW: menu_display(id, g_pWeaponMenu); case OPTION_OLD: menu_display(id, g_pWeaponMenu); case OPTION_SAVE: menu_display(id, g_pWeaponMenu); } }
public CreatePrimaryArray() { get_configsdir(g_szPWepFile, charsmax(g_szPWepFile)); format(g_szPWepFile, charsmax(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_pFilePointer, szPrimaryData, charsmax(szPrimaryData)); ArrayPushArray(g_PrimaryWeapons, szPrimaryData); } } g_pWeaponMenu = menu_create("Primary Weapon Menu", "HandlePrimaryWeapons"); new iSize = ArraySize(g_PrimaryWeapons), szNum[3], szData[32]; for(new i = 0; i < iSize; i++) { ArrayGetArray(g_PrimaryWeapons, i, szData); num_to_str(i, szNum, charsmax(szNum)); menu_additem(g_pWeaponMenu, szData, szNum, 0); } fclose(g_pFilePointer); }
public HandlePrimaryWeapons(id, iMenu, iItem) { new szKey[3], iSelectedWeapon, Dummy; menu_item_getinfo(iMenu, iItem, Dummy, szKey, 2, "", 0, Dummy); iSelectedWeapon = str_to_num(szKey); new WeaponName[32], szArrayData[32]; ArrayGetArray(g_PrimaryWeapons, iSelectedWeapon, szArrayData); format(WeaponName, charsmax(WeaponName), "weapon_%s", szArrayData); GiveWeapons(id, WeaponName); menu_display(id, g_sWeaponMenu); }
public CreateSecondaryArray() { get_configsdir(g_szSwepFile, charsmax(g_szSwepFile)); format(g_szSwepFile, charsmax(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_sFilePointer, szSecondaryData, charsmax(szSecondaryData)); ArrayPushArray(g_SecondaryWeapons, szSecondaryData); } } g_sWeaponMenu = menu_create("Secondary Weapon Menu", "HandleSecondaryWeapons"); new iSize = ArraySize(g_SecondaryWeapons), szNum[3], szData[32]; for(new i = 0; i < iSize; i++) { ArrayGetArray(g_SecondaryWeapons, i, szData); num_to_str(i, szNum, charsmax(szNum)); menu_additem(g_sWeaponMenu, szData, szNum, 0); } fclose(g_pFilePointer); }
public HandleSecondaryWeapons(id, iMenu, iItem) { new szKey[3], iSelectedWeapon, Dummy; menu_item_getinfo(iMenu, iItem, Dummy, szKey, 2, "", 0, Dummy); iSelectedWeapon = str_to_num(szKey); new WeaponName[32], szArrayData[32]; ArrayGetArray(g_SecondaryWeapons, iSelectedWeapon, szArrayData); format(WeaponName, charsmax(WeaponName), "weapon_%s", szArrayData); GiveWeapons(id, WeaponName); }
stock GiveWeapons(id, szWeapon[]) { new iWeaponId = get_weaponid(szWeapon); give_item(id, szWeapon); cs_set_user_bpammo(id, iWeaponId, g_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[] = { 0, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100 };
new g_szPWepFile[256], g_szSwepFile[256]; new g_pFilePointer, g_sFilePointer; new g_pWeaponMenu, g_sWeaponMenu, g_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 i = 0; i < sizeof(g_szOptions); i++) { num_to_str(i, szNum, charsmax(szNum)); menu_additem(g_SpawnMenu, g_szOptions[i], szNum, 0); } }
public fwdPlayerSpawn(id) { if(is_user_alive(id)) { menu_display(id, g_SpawnMenu); } }
public HandleSpawnMenu(id, iMenu, iItem) { new szKey[3], Dummy; menu_item_getinfo(iMenu, iItem, Dummy, szKey, 2, "", 0, Dummy); switch(str_to_num(szKey)) { case OPTION_NEW: menu_display(id, g_pWeaponMenu); case OPTION_OLD: menu_display(id, g_pWeaponMenu); case OPTION_SAVE: menu_display(id, g_pWeaponMenu); } }
public CreatePrimaryArray() { get_configsdir(g_szPWepFile, charsmax(g_szPWepFile)); format(g_szPWepFile, charsmax(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_pFilePointer, szPrimaryData, charsmax(szPrimaryData)); trim(szPrimaryData); ArrayPushArray(g_PrimaryWeapons, szPrimaryData); } } g_pWeaponMenu = menu_create("Primary Weapon Menu", "HandlePrimaryWeapons"); new iSize = ArraySize(g_PrimaryWeapons), szNum[3]; for(new i = 0; i < iSize; i++) { ArrayGetArray(g_PrimaryWeapons, i, szPrimaryData); num_to_str(i, szNum, charsmax(szNum)); menu_additem(g_pWeaponMenu, szPrimaryData, szNum, 0); } fclose(g_pFilePointer); }
public HandlePrimaryWeapons(id, iMenu, iItem) { new szKey[3], iSelectedWeapon, Dummy; menu_item_getinfo(iMenu, iItem, Dummy, szKey, 2, "", 0, Dummy); iSelectedWeapon = str_to_num(szKey); new WeaponName[32], szArrayData[32]; ArrayGetArray(g_PrimaryWeapons, iSelectedWeapon, szArrayData); replace_all_fixed(szArrayData, charsmax(szArrayData), " ", ""); format(WeaponName, charsmax(WeaponName), "weapon_%s", szArrayData); strtolower(WeaponName); GiveWeapons(id, WeaponName); menu_display(id, g_sWeaponMenu); }
public CreateSecondaryArray() { get_configsdir(g_szSwepFile, charsmax(g_szSwepFile)); format(g_szSwepFile, charsmax(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_sFilePointer, szSecondaryData, charsmax(szSecondaryData)); trim(szSecondaryData); ArrayPushArray(g_SecondaryWeapons, szSecondaryData); } } g_sWeaponMenu = menu_create("Secondary Weapon Menu", "HandleSecondaryWeapons"); new iSize = ArraySize(g_SecondaryWeapons), szNum[3]; for(new i = 0; i < iSize; i++) { ArrayGetArray(g_SecondaryWeapons, i, szSecondaryData); num_to_str(i, szNum, charsmax(szNum)); menu_additem(g_sWeaponMenu, szSecondaryData, szNum, 0); } fclose(g_pFilePointer); }
public HandleSecondaryWeapons(id, iMenu, iItem) { new szKey[3], iSelectedWeapon, Dummy; menu_item_getinfo(iMenu, iItem, Dummy, szKey, 2, "", 0, Dummy); iSelectedWeapon = str_to_num(szKey); new WeaponName[32], szArrayData[32]; ArrayGetArray(g_SecondaryWeapons, iSelectedWeapon, szArrayData); replace_all_fixed(szArrayData, charsmax(szArrayData), " ", ""); strtolower(szArrayData); format(WeaponName, charsmax(WeaponName), "weapon_%s", szArrayData); GiveWeapons(id, WeaponName); }
stock GiveWeapons(id, szWeapon[]) { new iWeaponId = get_weaponid(szWeapon); give_item(id, szWeapon); cs_set_user_bpammo(id, iWeaponId, g_WeaponBPAmmo[iWeaponId]); }
stock replace_all_fixed(string[], len, const what[], const with[]) { new pos = 0; if ((pos = contain(string, what)) == -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 - pos, what, with) != 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; }
|