This site is a testing version, but all data is shared with the live forum.


Raised This Month: $ Target: $400
 0% 

How to spawn a working CTFProjectile_Rocket?


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
#Barracuda
Junior Member
Join Date: May 2008
Location: Germany
Old 07-28-2008 , 18:23   How to spawn a working CTFProjectile_Rocket?
Reply With Quote #1

Hi, I'm currently working on a rocket tennis map for Team Fortress 2 (watch this video for a rocket tennis example) and I like to replace the barely used soldier with a SourceMod-plugin.

So I need to spawn a rocket manually, since it isn't possible to give the pyro a foreign weapon anymore.
This is what I got so far:

PHP Code:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>

new ent_rocket = -1;
new 
float:rocket_speed 800.0;

public 
Plugin:myinfo =
{
    
name "Rocketspawner",
    
author "Barracuda",
    
description "",
    
version "1.0",
    
url ""
};

public 
OnPluginStart()
{
    
RegConsoleCmd("rocket_spawn"Command_Spawn);
}

public 
Action:Command_Spawn(clientargs)
{
    
CreateTimer(1.0SpawnRocketclient);
    return 
Plugin_Handled;    
}

public 
Action:SpawnRocket(Handle:timerany:client)
{
    new 
Float:ori[3];
    new 
Float:ang[3];
    
    
GetClientEyeAngles(clientang); 
    
GetClientAbsOrigin(clientori);
    
    
ori[2] += 10;

    
ent_rocket CreateEntityByName("tf_projectile_rocket");
    
    
SetEntDataEnt(ent_rocketFindSendPropInfo("CTFProjectile_Rocket""m_hOwnerEntity"), clienttrue);
    
SetEntData(ent_rocketFindSendPropInfo("CTFProjectile_Rocket""m_bCritical"), 11true);
    
SetEntData(ent_rocketFindSendPropInfo("CTFProjectile_Rocket""m_iTeamNum"), GetClientTeam(client), true);
    
SetEntDataVector(ent_rocketFindSendPropInfo("CTFProjectile_Rocket""m_angRotation"), angtrue); 
    
    
DispatchSpawn(ent_rocket);
    
TeleportEntity(ent_rocketoriNULL_VECTORNULL_VECTOR);
}

public 
OnGameFrame()
{
    if(!
IsValidEntity(ent_rocket))
        return;

    new 
Float:ang[3], Float:fwd[3], Float:right[3], Float:up[3];

    
GetEntDataVector(ent_rocketFindSendPropInfo("CTFProjectile_Rocket""m_angRotation"), ang);
    
GetAngleVectors(angfwdrightup);
    
ScaleVector(fwdrocket_speed);

    
TeleportEntity(ent_rocketNULL_VECTORNULL_VECTORfwd);

First, I tried without the OnGameFrame()-forward. The rocket appeared correctly, but was just hovering above the ground, doing nothing. I also tried to change m_vInitialVelocity and some other vectors, but without success.

Then I found this thread and reused the code to move the rocket manually with each frame, now the rocket actually flies but it doesn't do any damage on impact.

Does anybody know how to spawn a rocket projectile that is moving for itself and actually does damage?

Here's an entity dump of a flying CTFProjectile_Rocket:

Code:
CTFProjectile_Rocket.baseclass.baseclass.baseclass.AnimTimeMustBeFirst.m_flAnimTime = 1142536028
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_flSimulationTime = 1142570926
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_vecOrigin = -1627.249023,2342.623779,-306.239075
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_nModelIndex = -65325
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_Collision.m_vecMins = 0.000000,0.000000,0.000000
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_Collision.m_vecMaxs = 0.000000,0.000000,0.000000
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_Collision.m_nSolidType = 2
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_Collision.m_usSolidFlags = 105709568
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_Collision.m_nSurroundType = 512
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_Collision.m_triggerBloat = 0
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_Collision.m_vecSpecifiedSurroundingMins = 0.000000,0.000000,0.000000
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_Collision.m_vecSpecifiedSurroundingMaxs = 0.000000,0.000000,0.000000
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_nRenderFX = 13828096
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_nRenderMode = -16723200
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_fEffects = 16
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_clrRender = -1
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_iTeamNum = 2
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_CollisionGroup = 24
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_flElasticity = 1.000000
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_flShadowCastDistance = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_hOwnerEntity = 1490945
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_hEffectEntity = -1
CTFProjectile_Rocket.baseclass.baseclass.baseclass.moveparent = -1
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_iParentAttachment = -16645120
CTFProjectile_Rocket.baseclass.baseclass.baseclass.movetype = -65020
CTFProjectile_Rocket.baseclass.baseclass.baseclass.movecollide = -254
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_angRotation = 2.892962,176.146378,0.000000
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_iTextureFrameIndex = 256
CTFProjectile_Rocket.baseclass.baseclass.baseclass.predictable_id.m_PredictableID = 0
CTFProjectile_Rocket.baseclass.baseclass.baseclass.predictable_id.m_bIsPlayerSimulated = 0
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_bSimulatedEveryTick = 1
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_bAnimatedEveryTick = 0
CTFProjectile_Rocket.baseclass.baseclass.baseclass.m_bAlternateSorting = 0
CTFProjectile_Rocket.baseclass.baseclass.m_nForceBone = 0
CTFProjectile_Rocket.baseclass.baseclass.m_vecForce = 0.000000,0.000000,0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_nSkin = 0
CTFProjectile_Rocket.baseclass.baseclass.m_nBody = 0
CTFProjectile_Rocket.baseclass.baseclass.m_nHitboxSet = 0
CTFProjectile_Rocket.baseclass.baseclass.m_flModelWidthScale = 1.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.000 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.001 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.002 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.003 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.004 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.005 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.006 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.007 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.008 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.009 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.010 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.011 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.012 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.013 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.014 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.015 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.016 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.017 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.018 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.019 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.020 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.021 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.022 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flPoseParameter.023 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_nSequence = 0
CTFProjectile_Rocket.baseclass.baseclass.m_flPlaybackRate = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flEncodedController.000 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flEncodedController.001 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flEncodedController.002 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flEncodedController.003 = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_bClientSideAnimation = 0
CTFProjectile_Rocket.baseclass.baseclass.m_bClientSideFrameReset = 0
CTFProjectile_Rocket.baseclass.baseclass.m_nNewSequenceParity = 0
CTFProjectile_Rocket.baseclass.baseclass.m_nResetEventsParity = 0
CTFProjectile_Rocket.baseclass.baseclass.m_nMuzzleFlashParity = 0
CTFProjectile_Rocket.baseclass.baseclass.m_hLightingOrigin = -1
CTFProjectile_Rocket.baseclass.baseclass.m_hLightingOriginRelative = -1
CTFProjectile_Rocket.baseclass.baseclass.serveranimdata.m_flCycle = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_fadeMinDist = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_fadeMaxDist = 0.000000
CTFProjectile_Rocket.baseclass.baseclass.m_flFadeScale = 0.000000
CTFProjectile_Rocket.baseclass.m_vInitialVelocity = -1096.114258,73.834381,-55.517281
CTFProjectile_Rocket.baseclass.m_vecOrigin = -1627.249023,2342.623779,-306.239075
CTFProjectile_Rocket.baseclass.m_angRotation = 2.892962,176.146378,0.000000
CTFProjectile_Rocket.baseclass.m_iReflected = 0
CTFProjectile_Rocket.m_bCritical = 0

Last edited by #Barracuda; 07-28-2008 at 18:25. Reason: Grammar ^^
#Barracuda is offline
 



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 20:01.


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