Raised This Month: $51 Target: $400
 12% 

TF2: Possible to spawn a sentry gun?


Post New Thread Reply   
 
Thread Tools Display Modes
BAILOPAN
Join Date: Jan 2004
Old 02-15-2008 , 22:30   Re: TF2: Possible to spawn a sentry gun?
Reply With Quote #21

The later and current versions Metamod:Source 1.6 can load as a VDF, without any gameinfo.txt modifications. This is now documented on the Wiki but we haven't publicized it yet.
__________________
egg
BAILOPAN is offline
Extreme_One
Veteran Member
Join Date: Nov 2006
Old 02-16-2008 , 13:16   Re: TF2: Possible to spawn a sentry gun?
Reply With Quote #22

Quote:
Originally Posted by BAILOPAN View Post
The later and current versions Metamod:Source 1.6 can load as a VDF, without any gameinfo.txt modifications. This is now documented on the Wiki but we haven't publicized it yet.

Oh wow that is great news!
Thank you.
__________________
Extreme_One is offline
chrisO
Junior Member
Join Date: Feb 2008
Old 03-03-2008 , 11:52   Re: TF2: Possible to spawn a sentry gun?
Reply With Quote #23

I tried out your sentry spawn code...and indeed it doesn't shoot. BUT if you spawn as blue, place a sentry, then change to the red team and go to where you build the blue sentry, then it is still there but doesn't shoot at you. But if now as red you spawn a new sentry, it will fire at and destroy the blue sentry. So I am guessing the sentry only fires while the owner still is on the same team.

Tomorrow I will try out your code on an actual server with other players....see if it starts shooting at the enemy then, but I guess it will...
chrisO is offline
Arg!
Veteran Member
Join Date: Jul 2008
Location: Australia
Old 09-17-2008 , 19:37   Re: TF2: Possible to spawn a sentry gun?
Reply With Quote #24

Did anyone get any further on this? would be very cool too see something like this.
__________________
Arg! is offline
The JCS
AlliedModders Donor
Join Date: Jan 2007
Location: Brazil
Old 09-17-2008 , 19:55   Re: TF2: Possible to spawn a sentry gun?
Reply With Quote #25

PHP Code:
BuildSentry(iBuilderFloat:fOrigin[3], Float:fAngle[3], iLevel=1)
{
    new 
Float:fBuildMaxs[3];
    
fBuildMaxs[0] = 24.0;
    
fBuildMaxs[1] = 24.0;
    
fBuildMaxs[2] = 66.0;

    new 
Float:fMdlWidth[3];
    
fMdlWidth[0] = 1.0;
    
fMdlWidth[1] = 0.5;
    
fMdlWidth[2] = 0.0;
    
    new 
String:sModel[64];
    
    new 
iTeam GetClientTeam(iBuilder);
    
    new 
iShellsiHealthiRockets;
    
    
iShells iHealth iRockets;
    
    if(
iLevel == 1)
    {
        
sModel "models/buildables/sentry1.mdl";
        
iShells 100;
        
iHealth 150;
    }
    else if(
iLevel == 2)
    {
        
sModel "models/buildables/sentry2.mdl";
        
iShells 120;
        
iHealth 180;
    }
    else if(
iLevel == 3)
    {
        
sModel "models/buildables/sentry3.mdl";
        
iShells 144;
        
iHealth 216;
        
iRockets 20;
    }
    
    new 
iSentry CreateEntityByName("obj_sentrygun");
    
    
DispatchSpawn(iSentry);
    
    
TeleportEntity(iSentryfOriginfAngleNULL_VECTOR);
    
    
SetEntityModel(iSentry,sModel);
    
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_flAnimTime"),                 51true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_nNewSequenceParity"),         4true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_nResetEventsParity"),         4true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_iAmmoShells") ,                 iShells4true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_iMaxHealth"),                 iHealth4true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_iHealth"),                     iHealth4true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_bBuilding"),                 02true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_bPlacing"),                     02true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_bDisabled"),                 02true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_iObjectType"),                 3true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_iState"),                     1true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_iUpgradeMetal"),             0true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_bHasSapper"),                 02true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_nSkin"),                     (iTeam-2), 1true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_bServerOverridePlacement"),     11true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_iUpgradeLevel"),             iLevel4true);
    
SetEntData(iSentryFindSendPropOffs("CObjectSentrygun","m_iAmmoRockets"),                 iRockets4true);
    
    
SetEntDataEnt2(iSentryFindSendPropOffs("CObjectSentrygun","m_nSequence"), 0true);
    
SetEntDataEnt2(iSentryFindSendPropOffs("CObjectSentrygun","m_hBuilder"),     iBuildertrue);
    
    
SetEntDataFloat(iSentryFindSendPropOffs("CObjectSentrygun","m_flCycle"),                     0.0true);
    
SetEntDataFloat(iSentryFindSendPropOffs("CObjectSentrygun","m_flPlaybackRate"),             1.0true);
    
SetEntDataFloat(iSentryFindSendPropOffs("CObjectSentrygun","m_flPercentageConstructed"),     1.0true);
    
    
SetEntDataVector(iSentryFindSendPropOffs("CObjectSentrygun","m_vecOrigin"),             fOrigintrue);
    
SetEntDataVector(iSentryFindSendPropOffs("CObjectSentrygun","m_angRotation"),         fAngletrue);
    
SetEntDataVector(iSentryFindSendPropOffs("CObjectSentrygun","m_vecBuildMaxs"),         fBuildMaxstrue);
    
SetEntDataVector(iSentryFindSendPropOffs("CObjectSentrygun","m_flModelWidthScale"),     fMdlWidthtrue);
    
    
SetVariantInt(iTeam);
    
AcceptEntityInput(iSentry"TeamNum", -1, -10);

    
SetVariantInt(iTeam);
    
AcceptEntityInput(iSentry"SetTeam", -1, -10); 

Based on this topic
The JCS is offline
Send a message via MSN to The JCS
naris
AlliedModders Donor
Join Date: Dec 2006
Old 09-17-2008 , 21:15   Re: TF2: Possible to spawn a sentry gun?
Reply With Quote #26

Quote:
Originally Posted by The JCS View Post
PHP Code:
    new iShellsiHealthiRockets;
    
    
iShells iHealth iRockets
The assignment doesn't do anything.
naris is offline
The JCS
AlliedModders Donor
Join Date: Jan 2007
Location: Brazil
Old 09-18-2008 , 13:50   Re: TF2: Possible to spawn a sentry gun?
Reply With Quote #27

Quote:
Originally Posted by naris View Post
The assignment doesn't do anything.
Oh, sorry, this is an old version of the script, it should set all those vars to 0
The JCS is offline
Send a message via MSN to The JCS
pheadxdll
AlliedModders Donor
Join Date: Jun 2008
Old 09-19-2008 , 08:48   Re: TF2: Possible to spawn a sentry gun?
Reply With Quote #28

I took the code from this topic and put a plugin on my server. We had everyone building towers and forts with sentries. It was hilarious, to say to the least. Actually..I have a screenshot here:

To the top of the skybox!
http://teklinks.org/ag.jpg
Outnumbered spy:
http://teklinks.org/ag2.jpg
__________________
pheadxdll is offline
naris
AlliedModders Donor
Join Date: Dec 2006
Old 09-23-2008 , 23:27   Re: TF2: Possible to spawn a sentry gun?
Reply With Quote #29

I have used this code to also spawn dispensers and teleporters:
Code:
enum objects { dispenser, teleporter_entry, teleporter_exit, sentrygun, sapper, unknown };

stock BuildDispenser(iBuilder, Float:fOrigin[3], Float:fAngle[3], iDisabled=0)
{
    new Float:fBuildMaxs[3] = { 24.0, 24.0, 66.0 };
    //new Float:fMdlWidth[3] = { 1.0, 0.5, 0.0 };

    new iTeam = GetClientTeam(iBuilder);

    new iHealth = 150;
    new iMetal = 1000;

    new iDispenser = CreateEntityByName("obj_dispenser");

    DispatchSpawn(iDispenser);

    TeleportEntity(iDispenser, fOrigin, fAngle, NULL_VECTOR);

    SetEntityModel(iDispenser,"models/buildables/dispenser_light.mdl");

    //SetEntProp(iDispenser, Prop_Send, "m_flAnimTime",                         51);
    SetEntProp(iDispenser, Prop_Send, "m_nNewSequenceParity",                 4, 4);
    SetEntProp(iDispenser, Prop_Send, "m_nResetEventsParity",                 4, 4);
    SetEntProp(iDispenser, Prop_Send, "m_iMaxHealth",                         iHealth, 4);
    SetEntProp(iDispenser, Prop_Send, "m_iHealth",                             iHealth, 4);
    SetEntProp(iDispenser, Prop_Send, "m_iAmmoMetal",                         iMetal, 4);
    SetEntProp(iDispenser, Prop_Send, "m_bBuilding",                         0, 2);
    SetEntProp(iDispenser, Prop_Send, "m_bPlacing",                         0, 2);
    SetEntProp(iDispenser, Prop_Send, "m_bDisabled",                         iDisabled, 2);
    SetEntProp(iDispenser, Prop_Send, "m_iObjectType",                         _:dispenser, 1);
    SetEntProp(iDispenser, Prop_Send, "m_bHasSapper",                         0, 2);
    SetEntProp(iDispenser, Prop_Send, "m_nSkin",                             (iTeam-2), 1);
    SetEntProp(iDispenser, Prop_Send, "m_bServerOverridePlacement",         1, 1);

    SetEntPropEnt(iDispenser, Prop_Send, "m_nSequence",                     0);
    SetEntPropEnt(iDispenser, Prop_Send, "m_hBuilder",                      iBuilder);

    SetEntPropFloat(iDispenser, Prop_Send, "m_flCycle",                     0.0);
    SetEntPropFloat(iDispenser, Prop_Send, "m_flPlaybackRate",                 1.0);
    SetEntPropFloat(iDispenser, Prop_Send, "m_flPercentageConstructed",     1.0);
    SetEntPropFloat(iDispenser, Prop_Send, "m_flModelWidthScale",             1.0);

    SetEntPropVector(iDispenser, Prop_Send, "m_vecOrigin",                     fOrigin);
    SetEntPropVector(iDispenser, Prop_Send, "m_angRotation",                 fAngle);
    SetEntPropVector(iDispenser, Prop_Send, "m_vecBuildMaxs",                fBuildMaxs);

    SetVariantInt(iTeam);
    AcceptEntityInput(iDispenser, "TeamNum", -1, -1, 0);

    SetVariantInt(iTeam);
    AcceptEntityInput(iDispenser, "SetTeam", -1, -1, 0);

    new Handle:event = CreateEvent("player_builtobject");
    if (event != INVALID_HANDLE)
    {
        SetEventInt(event, "userid", GetClientUserId(iBuilder));
        SetEventInt(event, "object", _:dispenser);
        FireEvent(event);
    }
    return iDispenser;
}

stock BuildTeleporterEntry(iBuilder, Float:fOrigin[3], Float:fAngle[3], iDisabled=0)
{
    new Float:fBuildMaxs[3] = { 28.0, 28.0, 66.0 };
    //new Float:fMdlWidth[3] = { 1.0, 0.5, 0.0 };

    new iTeam = GetClientTeam(iBuilder);

    new iHealth = 150;

    new iTeleporter = CreateEntityByName("obj_teleporter_entrance");

    DispatchSpawn(iTeleporter);

    TeleportEntity(iTeleporter, fOrigin, fAngle, NULL_VECTOR);

    SetEntityModel(iTeleporter,"models/buildables/teleporter_light.mdl");

    //SetEntProp(iTeleporter, Prop_Send, "m_flAnimTime",                         51);
    SetEntProp(iTeleporter, Prop_Send, "m_nNewSequenceParity",                 4, 4);
    SetEntProp(iTeleporter, Prop_Send, "m_nResetEventsParity",                 4, 4);
    SetEntProp(iTeleporter, Prop_Send, "m_iMaxHealth",                         iHealth, 4);
    SetEntProp(iTeleporter, Prop_Send, "m_iHealth",                         iHealth, 4);
    SetEntProp(iTeleporter, Prop_Send, "m_bBuilding",                         0, 2);
    SetEntProp(iTeleporter, Prop_Send, "m_bPlacing",                         0, 2);
    SetEntProp(iTeleporter, Prop_Send, "m_bDisabled",                         iDisabled, 2);
    SetEntProp(iTeleporter, Prop_Send, "m_iObjectType",                     _:teleporter_entry, 1);
    SetEntProp(iTeleporter, Prop_Send, "m_bHasSapper",                         0, 2);
    SetEntProp(iTeleporter, Prop_Send, "m_nSkin",                             (iTeam-2), 1);
    SetEntProp(iTeleporter, Prop_Send, "m_bServerOverridePlacement",         1, 1);
    SetEntProp(iTeleporter, Prop_Send, "m_iState",                             1, 1);

    SetEntPropEnt(iTeleporter, Prop_Send, "m_nSequence",                    0);
    SetEntPropEnt(iTeleporter, Prop_Send, "m_hBuilder",                     iBuilder);

    SetEntPropFloat(iTeleporter, Prop_Send, "m_flCycle",                     0.0);
    SetEntPropFloat(iTeleporter, Prop_Send, "m_flPlaybackRate",             1.0);
    SetEntPropFloat(iTeleporter, Prop_Send, "m_flPercentageConstructed",     1.0);
    SetEntPropFloat(iTeleporter, Prop_Send, "m_flModelWidthScale",             1.0);

    SetEntPropVector(iTeleporter, Prop_Send, "m_vecOrigin",                 fOrigin);
    SetEntPropVector(iTeleporter, Prop_Send, "m_angRotation",                 fAngle);
    SetEntPropVector(iTeleporter, Prop_Send, "m_vecBuildMaxs",                 fBuildMaxs);

    SetVariantInt(iTeam);
    AcceptEntityInput(iTeleporter, "TeamNum", -1, -1, 0);

    SetVariantInt(iTeam);
    AcceptEntityInput(iTeleporter, "SetTeam", -1, -1, 0); 

    new Handle:event = CreateEvent("player_builtobject");
    if (event != INVALID_HANDLE)
    {
        SetEventInt(event, "userid", GetClientUserId(iBuilder));
        SetEventInt(event, "object", _:teleporter_entry);
        FireEvent(event);
    }
    return iTeleporter;
}

stock BuildTeleporterExit(iBuilder, Float:fOrigin[3], Float:fAngle[3], iDisabled=0)
{
    new Float:fBuildMaxs[3] = { 28.0, 28.0, 66.0 };
    //new Float:fMdlWidth[3] = { 1.0, 0.5, 0.0 };

    new iTeam = GetClientTeam(iBuilder);

    new iHealth = 150;

    new iTeleporter = CreateEntityByName("obj_teleporter_exit");

    DispatchSpawn(iTeleporter);

    TeleportEntity(iTeleporter, fOrigin, fAngle, NULL_VECTOR);

    SetEntityModel(iTeleporter,"models/buildables/teleporter_light.mdl");

    //SetEntProp(iTeleporter, Prop_Send, "m_flAnimTime",                     51);
    SetEntProp(iTeleporter, Prop_Send, "m_nNewSequenceParity",                 4, 4 );
    SetEntProp(iTeleporter, Prop_Send, "m_nResetEventsParity",                 4, 4 );
    SetEntProp(iTeleporter, Prop_Send, "m_iMaxHealth",                         iHealth, 4);
    SetEntProp(iTeleporter, Prop_Send, "m_iHealth",                         iHealth, 4);
    SetEntProp(iTeleporter, Prop_Send, "m_bBuilding",                         0, 2);
    SetEntProp(iTeleporter, Prop_Send, "m_bPlacing",                         0, 2);
    SetEntProp(iTeleporter, Prop_Send, "m_bDisabled",                         iDisabled, 2);
    SetEntProp(iTeleporter, Prop_Send, "m_iObjectType",                     _:teleporter_exit, 1);
    SetEntProp(iTeleporter, Prop_Send, "m_bHasSapper",                         0, 2);
    SetEntProp(iTeleporter, Prop_Send, "m_nSkin",                             (iTeam-2), 1);
    SetEntProp(iTeleporter, Prop_Send, "m_bServerOverridePlacement",         1, 1);
    SetEntProp(iTeleporter, Prop_Send, "m_iState",                             1, 1);

    SetEntPropEnt(iTeleporter, Prop_Send, "m_nSequence",                    0);
    SetEntPropEnt(iTeleporter, Prop_Send, "m_hBuilder",                     iBuilder);

    SetEntPropFloat(iTeleporter, Prop_Send, "m_flCycle",                     0.0);
    SetEntPropFloat(iTeleporter, Prop_Send, "m_flPlaybackRate",             1.0);
    SetEntPropFloat(iTeleporter, Prop_Send, "m_flPercentageConstructed",     1.0);
    SetEntPropFloat(iTeleporter, Prop_Send, "m_flModelWidthScale",             1.0);

    SetEntPropVector(iTeleporter, Prop_Send, "m_vecOrigin",                 fOrigin);
    SetEntPropVector(iTeleporter, Prop_Send, "m_angRotation",                 fAngle);
    SetEntPropVector(iTeleporter, Prop_Send, "m_vecBuildMaxs",                 fBuildMaxs);

    SetVariantInt(iTeam);
    AcceptEntityInput(iTeleporter, "TeamNum", -1, -1, 0);

    SetVariantInt(iTeam);
    AcceptEntityInput(iTeleporter, "SetTeam", -1, -1, 0); 

    new Handle:event = CreateEvent("player_builtobject");
    if (event != INVALID_HANDLE)
    {
        SetEventInt(event, "userid", GetClientUserId(iBuilder));
        SetEventInt(event, "object", _:teleporter_exit);
        FireEvent(event);
    }
    return iTeleporter;
}
Unfortunately, I have not been able to get them to work

Does anybody know how to spawn a functioning dispenser and/or teleporters?
naris is offline
skatelouis
Member
Join Date: Aug 2008
Old 09-24-2008 , 18:47   Re: TF2: Possible to spawn a sentry gun?
Reply With Quote #30

I got an error at the last line of all your plugin, for the sentry :
/home/groups/sourcemod/upload_tmp/textlGrtFS.sp(84) : warning 203: symbol is never used: "BuildSentry"
/home/groups/sourcemod/upload_tmp/textlGrtFS.sp(84) : error 013: no entry point (no public functions)

Dispensers, teleporters, sentry :
/home/groups/sourcemod/upload_tmp/textVBqOzb.sp(179) : error 013: no entry point (no public functions)
skatelouis is offline
Reply



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 12:15.


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