I making division on Grenade trails for TF2, for different classes, but its nor working and equiped items in this category dont saving, what i do wrong?
Items.txt
Code:
...
"Grenade Trails"
{
"Medic projectiles"
{
"Thin Beam[medic]"
{
"material" "materials/sprites/combineball_trail_black_1.vmt"
"price" "1"
"type" "grenadetrail"
"color" "255 0 255 255"
"slot" "1"
}
"Squiggly Beam[medic]"
{
"material" "materials/sprites/hydragutbeam.vmt"
"price" "1"
"type" "grenadetrail"
"color" "255 0 255 255"
"slot" "1"
}
"Medium Beam[medic]"
{
"material" "materials/sprites/orangelight1.vmt"
"price" "1"
"type" "grenadetrail"
"color" "255 0 255 255"
"slot" "1"
}
"Large Beam[medic]"
{
"material" "materials/sprites/spotlight.vmt"
"price" "120"
"type" "grenadetrail"
"color" "255 0 255 255"
"slot" "1"
}
"Red Laserbeam[medic]"
{
"material" "materials/sprites/laserbeam.vmt"
"price" "120"
"type" "grenadetrail"
"color" "255 0 0 255"
"unique_id" "grenadetrail_laserbeam_red_medic"
"slot" "1"
}
"Blue Laserbeam[medic]"
{
"material" "materials/sprites/laserbeam.vmt"
"price" "1"
"type" "grenadetrail"
"color" "0 0 255 255"
"unique_id" "grenadetrail_laserbeam_blue_medic"
"slot" "1"
}
}
"Soldier projectiles"
{
"RocketBeam[soldier]"
{
"material" "materials/sprites/spotlight.vmt"
"price" "1"
"type" "grenadetrail"
"color" "255 0 255 255"
"unique_id" "grenadetrail_laserbeam_red_sold"
"slot" "0"
}
}
"Engineer projectiles"
{
"RocketBeam[engineer]"
{
"material" "materials/sprites/spotlight.vmt"
"price" "1"
"type" "grenadetrail"
"color" "255 0 255 255"
"unique_id" "grenadetrail_laserbeam_red_engineer"
"slot" "2"
}
}
"Pyro projectiles"
{
"RocketBeam[pyro]"
{
"material" "materials/sprites/spotlight.vmt"
"price" "1"
"type" "grenadetrail"
"color" "255 0 255 255"
"unique_id" "grenadetrail_laserbeam_red_pyro"
"slot" "4"
}
}
"Demoman projectiles"
{
"Thin Beam[demoman]"
{
"material" "materials/sprites/combineball_trail_black_1.vmt"
"price" "1"
"type" "grenadetrail"
"color" "255 0 255 255"
"slot" "3"
}
"Medium Beam[demoman]"
{
"material" "materials/sprites/orangelight1.vmt"
"price" "1"
"type" "grenadetrail"
"color" "255 0 255 255"
"slot" "3"
}
"Large Beam[demoman]"
{
"material" "materials/sprites/spotlight.vmt"
"price" "1"
"type" "grenadetrail"
"color" "255 0 255 255"
"slot" "3"
}
"Red Laserbeam[demoman]"
{
"material" "materials/sprites/laserbeam.vmt"
"price" "1"
"type" "grenadetrail"
"color" "255 0 0 255"
"unique_id" "grenadetrail_laserbeam_red_demo"
"slot" "3"
}
"Blue Laserbeam[demoman]"
{
"material" "materials/sprites/laserbeam.vmt"
"price" "120"
"type" "grenadetrail"
"color" "0 0 255 255"
"unique_id" "grenadetrail_laserbeam_blue_demo"
"slot" "3"
}
}
}
Modified grentrails.sp
Code:
#if defined STANDALONE_BUILD
#include <sourcemod>
#include <sdktools>
#include <store>
#include <zephstocks>
#include <sdkhooks>
#endif
enum GrenadeTrail
{
String:szMaterial[PLATFORM_MAX_PATH],
String:szWidth[16],
String:szColor[16],
Float:fWidth,
iColor[4],
iSlot,
iCacheID
}
new g_eGrenadeTrails[STORE_MAX_ITEMS][GrenadeTrail];
new g_iGrenadeTrails = 0;
#if defined STANDALONE_BUILD
public OnPluginStart()
#else
public GrenadeTrails_OnPluginStart()
#endif
{
#if !defined STANDALONE_BUILD
// This is not a standalone build, we don't want grenade trails to kill the whole plugin for us
if(GetExtensionFileStatus("sdkhooks.ext")!=1)
{
LogError("SDKHooks isn't installed or failed to load. Grenade Trails will be disabled. Please install SDKHooks. (https://forums.alliedmods.net/showthread.php?t=106748)");
return;
}
#endif
Store_RegisterHandler("grenadetrail", "material", GrenadeTrails_OnMapStart, GrenadeTrails_Reset, GrenadeTrails_Config, GrenadeTrails_Equip, GrenadeTrails_Remove, true);
}
public GrenadeTrails_OnMapStart()
{
for(new i=0;i<g_iGrenadeTrails;++i)
{
g_eGrenadeTrails[i][iCacheID] = PrecacheModel2(g_eGrenadeTrails[i][szMaterial], true);
Downloader_AddFileToDownloadsTable(g_eGrenadeTrails[i][szMaterial]);
}
}
public GrenadeTrails_Reset()
{
g_iGrenadeTrails = 0;
}
public GrenadeTrails_Config(&Handle:kv, itemid)
{
Store_SetDataIndex(itemid, g_iGrenadeTrails);
KvGetString(kv, "material", g_eGrenadeTrails[g_iGrenadeTrails][szMaterial], PLATFORM_MAX_PATH);
KvGetString(kv, "width", g_eGrenadeTrails[g_iGrenadeTrails][szWidth], 16, "10.0");
g_eGrenadeTrails[g_iGrenadeTrails][fWidth] = KvGetFloat(kv, "width", 10.0);
KvGetString(kv, "color", g_eGrenadeTrails[g_iGrenadeTrails][szColor], 16, "255 255 255 255");
KvGetColor(kv, "color", g_eGrenadeTrails[g_iGrenadeTrails][iColor][0], g_eGrenadeTrails[g_iGrenadeTrails][iColor][1], g_eGrenadeTrails[g_iGrenadeTrails][iColor][2], g_eGrenadeTrails[g_iGrenadeTrails][iColor][3]);
g_eGrenadeTrails[g_iGrenadeTrails][iSlot] = KvGetNum(kv, "slot");
PrintToServer("+grenade trail");
if(FileExists(g_eGrenadeTrails[g_iGrenadeTrails][szMaterial], true))
{
++g_iGrenadeTrails;
return true;
}
return false;
}
public GrenadeTrails_Equip(client, id)
{
return 0;
}
public GrenadeTrails_Remove(client, id)
{
return 0;
}
#if defined STANDALONE_BUILD
public OnEntityCreated(entity, const String:classname[])
#else
public GrenadeTrails_OnEntityCreated(entity, const String:classname[])
#endif
{
if(g_iGrenadeTrails == 0)
return;
if(StrContains(classname, "_projectile")>0)
SDKHook(entity, SDKHook_SpawnPost, GrenadeTrails_OnEntitySpawnedPost);
}
public GrenadeTrails_OnEntitySpawnedPost(entity)
{
new client = GetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity");
if(!(0<client<=MaxClients))
return;
new slot = 0;
switch(TF2_GetPlayerClass(client))
{
case TFClass_Soldier:
slot = 0;
case TFClass_Medic:
slot = 1;
case TFClass_Engineer:
slot = 2;
case TFClass_DemoMan:
slot = 3;
case TFClass_Pyro:
slot = 4;
}
new m_iEquipped = Store_GetEquippedItem(client, "grenadetrail", slot);
PrintToChat(client, "item = %d", m_iEquipped);
PrintToChat(client, "slot = %d", slot);
if(m_iEquipped < 0)
return;
new m_iData = Store_GetDataIndex(m_iEquipped);
// Ugh...
decl m_iColor[4];
PrintToChatAll("shooting");
m_iColor[0] = g_eGrenadeTrails[m_iData][iColor][0];
m_iColor[1] = g_eGrenadeTrails[m_iData][iColor][1];
m_iColor[2] = g_eGrenadeTrails[m_iData][iColor][2];
m_iColor[3] = g_eGrenadeTrails[m_iData][iColor][3];
TE_SetupBeamFollow(entity, g_eGrenadeTrails[m_iData][iCacheID], 0, 2.0, g_eGrenadeTrails[m_iData][fWidth], g_eGrenadeTrails[m_iData][fWidth], 10, m_iColor);
TE_SendToAll();
}