Here is my code, everythings works well except the fact the rocket doesnt do any damage when it explodes, if any one knows why...
PHP Code:
public Action spawndemo(client, args)
{
float epos[3], eyangl[3];
GetClientEyePosition(client, epos);
GetClientEyeAngles(client, eyangl);
fireProjectile(epos, eyangl, 1100.0, 90.0, GetClientTeam(client), PROJECTILE_ROCKET, true);
}
int fireProjectile(Float:vPosition[3], Float:vAngles[3] = NULL_VECTOR, Float:flSpeed = 1100.0, Float:flDamage = 90.0, iTeam = 1, iType = PROJECTILE_ROCKET, bool:bCritical = false)
{
new String:strClassname[32] = "";
new String:strEntname[32] = "";
switch (iType)
{
case PROJECTILE_ROCKET:
{
strClassname = "CTFProjectile_Rocket";
strEntname = "tf_projectile_rocket";
}
case PROJECTILE_ROCKET_SENTRY:
{
strClassname = "CTFProjectile_SentryRocket";
strEntname = "tf_projectile_sentryrocket";
}
default:
{
return -1;
}
}
new iRocket = CreateEntityByName(strEntname);
if(!IsValidEntity(iRocket))
{
return -1;
}
decl Float:vVelocity[3];
decl Float:vBuffer[3];
GetAngleVectors(vAngles, vBuffer, NULL_VECTOR, NULL_VECTOR);
vVelocity[0] = vBuffer[0]*flSpeed;
vVelocity[1] = vBuffer[1]*flSpeed;
vVelocity[2] = vBuffer[2]*flSpeed;
TeleportEntity(iRocket, vPosition, vAngles, vVelocity);
SetEntData(iRocket, FindSendPropInfo(strClassname, "m_nSkin"), (iTeam-2), 1, true);
if (iType == PROJECTILE_ROCKET)
{
SetEntData(iRocket, FindSendPropInfo(strClassname, "m_bCritical"), bCritical, true);
} else {
}
SetEntDataFloat(iRocket, FindSendPropInfo(strClassname, "m_iDeflected") + 4, flDamage, true); // Credit to voogru
SetVariantInt(iTeam);
AcceptEntityInput(iRocket, "TeamNum", -1, -1, 0);
SetVariantInt(iTeam);
AcceptEntityInput(iRocket, "SetTeam", -1, -1, 0);
if (iType == PROJECTILE_ROCKET_SENTRY)
{
new iVisModel = CreateEntityByName("tfdb_nukeskin");
SetEntityModel(iVisModel, NUKE_MODEL);
SetEntityModel(iRocket, NUKE_MODEL);
SetVariantString("!activator");
AcceptEntityInput(iVisModel, "SetParent", iRocket);
new Float:vOrigin[3] = {0.0, 0.0, 0.0};
TeleportEntity(iVisModel, vOrigin, vAngles, NULL_VECTOR);
SetEntData(iVisModel, FindSendPropInfo(strClassname, "m_nSkin"), (iTeam-2), 1, true);
SetVariantInt(iTeam);
AcceptEntityInput(iVisModel, "TeamNum", -1, -1, 0);
SetVariantInt(iTeam);
AcceptEntityInput(iVisModel, "SetTeam", -1, -1, 0);
DispatchKeyValue(iVisModel, "solid", "0");
DispatchSpawn(iVisModel);
SetEntityRenderMode(iRocket, RENDER_TRANSCOLOR);
SetEntityRenderColor(iRocket, 255, 255, 255, 0);
}
DispatchSpawn(iRocket);
return iRocket;
}