Member
|
03-17-2015
, 02:52
Re: [Help] Spawning Rocket (TF2)
|
#33
|
Quote:
Originally Posted by Chdata
How are you testing it?
|
Full Code:
PHP Code:
#include <sourcemod> #include <clients> #include <console> #include <events> #include <tf2> #include <tf2_stocks> #include <string> #include <entity_prop_stocks> #include <sdkhooks> #include <sdktools_trace> #include <sdktools_engine> #include <handles>
public Plugin:myinfo = { name = "New Plugin", author = "Your Lord and Saviour", description = "Test", version = "1.0", url = "http://www.sourcemod.net/" };
public OnPluginStart() { for(new i; i <= MAXPLAYERS; i++) { if(IsValidEntity(i)) { SDKHook(i, SDKHook_OnTakeDamage, ontakedamage); PrecacheModel("models/props_farm/wooden_barrel.mdl"); PrecacheModel("models/weapons/w_models/w_rocket.mdl") } } }
public Action:ontakedamage(client, &attacker, &inflictor, &Float:damage, &damagetype) { PrintToServer("DamageTaken"); if(damagetype & DMG_FALL) { PrintToServer("IsFallDamage"); new TFClassType:playerclass = TF2_GetPlayerClass(client); if(playerclass==TFClass_Pyro) { damage=damage*3; PrintToServer("IsPyro"); return Plugin_Changed; } } return Plugin_Continue; }
public Action:TF2_CalcIsAttackCritical(client, weapon, String:weaponname[], &bool:result) { PrintToServer("Tick"); new Float:vectorfloat[3]; new String:vecstring[10]; new String:vecstring2[10]; new TFClassType:playerclass = TF2_GetPlayerClass(client); GetClientEyeAngles(client, Float:vectorfloat); Format(vecstring, sizeof(vecstring), "%.5f", vectorfloat[0]); Format(vecstring2, sizeof(vecstring2), "%.0f", vectorfloat[1]); PrintToServer(vecstring); PrintToServer(vecstring2); new Float:lateraljetpackvelocity=64.0; new Float:verticaljetpackvelocity=64.0; if(playerclass==TFClass_Heavy) { if(GetEntityFlags(client) & FL_ONGROUND) { lateraljetpackvelocity=4000.0; verticaljetpackvelocity=0.0; PrintToServer("Heavy Knockback"); } else { lateraljetpackvelocity=0.0; verticaljetpackvelocity=0.0; PrintToServer("Heavy In Air") } } new Float:LateralEyeAngle=DegToRad(vectorfloat[1]); new Float:VerticalEyeAngle=DegToRad(vectorfloat[0]); new Float:velocityvector[3]; new Float:zvelocity = verticaljetpackvelocity*Sine(VerticalEyeAngle); new Float:xvelocity = lateraljetpackvelocity*Cosine(VerticalEyeAngle)*Sine(LateralEyeAngle); new Float:yvelocity = lateraljetpackvelocity*Cosine(VerticalEyeAngle)*Cosine(LateralEyeAngle); GetEntPropVector(client, Prop_Data, "m_vecVelocity", velocityvector); velocityvector[2] += zvelocity; velocityvector[1] -= xvelocity; velocityvector[0] -= yvelocity; TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, velocityvector);
if(playerclass==TFClass_DemoMan) { PrintToServer("Demoman Shot"); new String:demomanweapon[30]; new String:grenadelauncher[30]="tf_weapon_grenadelauncher"; GetClientWeapon(client, demomanweapon, 30); PrintToServer(demomanweapon); PrintToServer(grenadelauncher); if(StrEqual(demomanweapon, grenadelauncher, true)) { PrintToServer("Pipe Shot"); } }
if(playerclass==TFClass_Engineer) { PrintToServer("Engy Shot"); new ActiveWeapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); new String:ActiveWeaponClassname[100]; GetEdictClassname(ActiveWeapon, ActiveWeaponClassname, sizeof(ActiveWeaponClassname)); if(StrEqual(ActiveWeaponClassname, "tf_weapon_pistol", true)) { PrintToServer("Pistol Fired"); if(vectorfloat[0]<=-88) { PrintToServer("DummyEngy"); new barrel=CreateEntityByName("prop_physics_multiplayer"); new Float:barrelpos[3]; GetClientAbsOrigin(client, barrelpos); barrelpos[2]+=128; SetEntityModel(barrel, "models/props_farm/wooden_barrel.mdl"); DispatchSpawn(barrel); TeleportEntity(barrel, barrelpos, NULL_VECTOR, NULL_VECTOR); } } }
if(playerclass==TFClass_Soldier) { new rocketfired=FindEntityByClassname(-1, "tf_projectile_rocket"); new Deflected=GetEntProp(rocketfired, Prop_Send, "m_iDeflected", 4, 0); new Critical=GetEntProp(rocketfired, Prop_Send, "m_bCritical", 1, 0); new String:DeflectedString[4]; new String:CriticalString[4]; Format(DeflectedString, sizeof(DeflectedString), "%i", Deflected); Format(CriticalString, sizeof(CriticalString), "%i", Critical); PrintToServer("Deflected:"); PrintToServer(DeflectedString); PrintToServer("Crit:"); PrintToServer(CriticalString); } if(playerclass==TFClass_Sniper) { PrintToServer("Sniper Shot"); new ActiveWeapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); new String:ActiveWeaponClassname[100]; GetEdictClassname(ActiveWeapon, ActiveWeaponClassname, sizeof(ActiveWeaponClassname)); if(StrEqual(ActiveWeaponClassname, "tf_weapon_sniperrifle", true)) { PrintToServer("Rifle Fired"); new Float:endpoint[3]; TraceRayEnd(client, endpoint); new Float:zrocketpos = 64*Sine(VerticalEyeAngle); new Float:xrocketpos = 64*Cosine(VerticalEyeAngle)*Sine(LateralEyeAngle); new Float:yrocketpos = 64*Cosine(VerticalEyeAngle)*Cosine(LateralEyeAngle); new Float:rocketvel[3]; rocketvel[0]=yrocketpos; rocketvel[1]=xrocketpos; rocketvel[2]=-zrocketpos; new String:rocketvel0[10]; new String:rocketvel1[10]; new String:rocketvel2[10]; new Float:rocketpos[3]; rocketpos[0]=endpoint[0]-yrocketpos; rocketpos[1]=endpoint[1]-xrocketpos; rocketpos[2]=endpoint[2]+zrocketpos; Format(rocketvel0, sizeof(rocketvel0), "%.5f", rocketvel[0]); Format(rocketvel1, sizeof(rocketvel1), "%.5f", rocketvel[1]); Format(rocketvel2, sizeof(rocketvel2), "%.5f", rocketvel[2]); PrintToServer(rocketvel0); PrintToServer(rocketvel1); PrintToServer(rocketvel2); new rocket_entity = CreateEntityByName("tf_projectile_rocket"); new team=GetClientTeam(client); SetEntProp(rocket_entity, Prop_Send, "m_hOwnerEntity", client, 21, 0); SetEntProp(rocket_entity, Prop_Send, "m_iTeamNum", team, true); SetEntDataFloat(rocket_entity, FindSendPropOffs("CTFProjectile_Rocket", "m_iDeflected") + 4, 100.0, true); SetEntProp(rocket_entity, Prop_Send, "m_bCritical", 1, 1, 0); DispatchSpawn(rocket_entity); TeleportEntity(rocket_entity, rocketpos, vectorfloat, rocketvel); } } return Plugin_Continue; }
public bool:rayhitplayer(entity,mask,any:data) { if(entity==data) { return false; } else { return true; } }
public TraceRayEnd(client, Float:endpoint[3]) { new Float:origin[3]; new Float:angles[3]; GetClientEyePosition(client, origin); GetClientEyeAngles(client, angles); TR_TraceRayFilter(origin, angles, MASK_SHOT, RayType_Infinite, rayhitplayer, client); if(TR_DidHit(INVALID_HANDLE)) { TR_GetEndPosition(endpoint, INVALID_HANDLE); } return; }
I fire my rifle as sniper in the server, rocket spawns, doesnt hurt me or any bots i spawn in
Last edited by Inhib; 03-17-2015 at 02:52.
|
|