vtach/detach command [message #436900] |
Thu, 23 September 2010 12:59 |
robbyke
Messages: 348 Registered: September 2010 Location: Belgium
Karma: 0
|
Recruit |
|
|
well i started searching and found the command JFW_CarryAll
now my problem is that i need to attach to a bone but how do i find the bone that i have to attach
its the orca that doing vtach and it should only be up close any help is appreciated
Owner of kambot TT server
kambot.freeforums.org
|
|
|
Re: vtach/detach command [message #436911 is a reply to message #436900] |
Thu, 23 September 2010 22:04 |
|
reborn
Messages: 3231 Registered: September 2004 Location: uk - london
Karma: 0
|
General (3 Stars) |
|
|
robbyke wrote on Thu, 23 September 2010 15:59 | well i started searching and found the command JFW_CarryAll
now my problem is that i need to attach to a bone but how do i find the bone that i have to attach
its the orca that doing vtach and it should only be up close any help is appreciated
|
I once started work some time ago on a carry-all plugin. It never got finished and this doesn't work, but with some time it might...
#include "scripts.h"
#include <stdarg.h>
#ifdef WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#endif
#include "engine.h"
#include "gmmain.h"
#include "CarryAll.h"
bool Activated[128];
bool HasAgreed[128];
ExampleSettingsStruct *ExampleSettings = 0;
void ExampleSettingsStruct::Load()
{
SettingsLoader::Load();
}
int ObjectHookID = 0;
ObjectCreateHookStruct *ObjectHookStruct = 0;
void ObjectHookCall(void *data,GameObject *obj)
{
if(Is_Vehicle(obj))
{
if (strstr(Commands->Get_Preset_Name(obj),"CnC_Nod_Transport") || strstr(Commands->Get_Preset_Name(obj),"CnC_GDI_Transport"))
{
Attach_Script_Once(obj,"CarryAll","");
}
}
else if(Commands->Is_A_Star(obj))
{
Attach_Script_Once(obj,"carryvarsetter","");
}
}
void Plugin_Load()
{
ExampleSettings = new ExampleSettingsStruct("Example.ini");
ObjectHookStruct = new ObjectCreateHookStruct;
ObjectHookStruct->hook = ObjectHookCall;
ObjectHookStruct->data = 0;
ObjectHookID = AddObjectCreateHook(ObjectHookStruct);
}
void CarryAll::Custom(GameObject *obj, int message, int param, GameObject *sender)
{
if (message == CUSTOM_EVENT_VEHICLE_ENTER)
{
if (Get_Vehicle_Owner(obj))
{
Console_Input(StrFormat("ppage %d This vehicle has been modified to be a \"Carry-All\", when you get close to a team-mate's vehicle you'll be able to transport them if they type \"!carryme\" in team chat.", Get_Player_ID(sender)).c_str());
Console_Input(StrFormat("ppage %d To activate the Carry-All and grant permission to carry passengers, you must type \"!activate\" in team chat.", Get_Player_ID(sender)).c_str());
Commands->Start_Timer(obj, this, 1.0f, 1);
}
}
}
void CarryAll::Timer_Expired(GameObject *obj, int number)
{
if(number == 1)
{
GameObject *driver = Get_Vehicle_Owner(obj);
if(driver && Activated[Get_Player_ID(driver)] == true)
{
int team = Get_Object_Type(obj);
Vector3 CurPosition = Commands->Get_Position(obj);
GenericSLNode *x = BaseGameObjList->HeadNode;
while (x)
{
GameObject *o = (GameObject *)x->NodeData;
if (o && As_ScriptableGameObj(o) && Is_Vehicle(o))
{
if (Get_Object_Type(o) == team)
{
printf("Found someone.\n");
Vector3 CurPositiono = Commands->Get_Position(o);
float Dist = Commands->Get_Distance(CurPosition, CurPositiono);
if(Dist <= 10.0f)
{
printf("Found someone in distance.\n");
GameObject *driver2 = Get_Vehicle_Occupant(o, 0);
if(driver2)
{
printf("Found someone in distance and a driver.\n");
if(HasAgreed[Get_Player_ID(driver2)] == true)
{
printf("Found someone in distance and a driver and has agreed.\n");
//do some shit
GameObject *Harness = Commands->Create_Object_At_Bone(obj, "Invisible_Object", "v_fuselage3");
Commands->Set_Model(Harness,"XG_HD_Harness");
Commands->Attach_To_Object_Bone(Harness, obj, "v_fuselage3");
Console_Input(StrFormat("ppage %d You have just picked up aa vehicle, to release the vehicle type \"!release\".", Get_Player_ID(driver2)).c_str());
Destroy_Script();
}
}
}
}
}
x = x->NodeNext;
}
}
Commands->Start_Timer(obj, this, 1.0f, 1);
}
}
ScriptRegistrant<CarryAll> CarryAll_Registrant("CarryAll","");
void carryvarsetter::Killed(GameObject *obj, GameObject *shooter)
{
Activated[Get_Player_ID(obj)] = false;
HasAgreed[Get_Player_ID(obj)] = false;
}
ScriptRegistrant<carryvarsetter> carryvarsetter_Registrant("carryvarsetter","");
void Plugin_Unload()
{
delete ExampleSettings;
RemoveObjectCreateHook(ObjectHookID);
delete ObjectHookStruct;
}
class AChatCommand : public ChatCommandClass {
void Triggered(int ID,const TokenClass &Text,int ChatType)
{
Activated[ID] = true;
Console_Input(StrFormat("ppage %d You have just activated the Carry-All feature of this transport helicopter, any team mates in vehicles who have agreed to be transported can now be carried and wil attach when you approach them.",ID).c_str());
Console_Input(StrFormat("ppage %d To de-activate the Caary-All feature, type \"!deactivate\" in team chat.",ID).c_str());
}
};
ChatCommandRegistrant<AChatCommand> AChatCommandReg("!ACTIVATE;!Activate;!activate",CHATTYPE_ALL,0,GAMEMODE_ALL);
class DChatCommand : public ChatCommandClass {
void Triggered(int ID,const TokenClass &Text,int ChatType)
{
Activated[ID] = false;
Console_Input(StrFormat("ppage %d You have just removed permission for passengers to be carried.",ID).c_str());
}
};
ChatCommandRegistrant<DChatCommand> DChatCommandReg("!DEACTIVATE;!Deactivate;!deactivate",CHATTYPE_ALL,0,GAMEMODE_ALL);
class CMChatCommand : public ChatCommandClass {
void Triggered(int ID,const TokenClass &Text,int ChatType)
{
HasAgreed[ID] = true;
Console_Input(StrFormat("ppage %d You have agreed to be carried by a team mate using a transport helicopter, to remove permission type \"!cancelcarry\".",ID).c_str());
}
};
ChatCommandRegistrant<CMChatCommand> CMChatCommandReg("!carryme;!CARRYME;!Carryme;!CarryMe",CHATTYPE_ALL,0,GAMEMODE_ALL);
class CCChatCommand : public ChatCommandClass {
void Triggered(int ID,const TokenClass &Text,int ChatType)
{
HasAgreed[ID] = false;
Console_Input(StrFormat("ppage %d You have removed permission for you to be carried.",ID).c_str());
}
};
ChatCommandRegistrant<CCChatCommand> CCChatCommandReg("!CANCELCARRY;!cancelcarry;!Cancelcarry;!CancelCarry",CHATTYPE_ALL,0,GAMEMODE_ALL);
extern "C"
{
DLLEXPORT void SSGM_Level_Loaded_Hook()
{
ExampleSettings->Load();
for(int i = 0; i < 128; i++)
{
Activated[i] = false;
HasAgreed[i] = false;
}
}
DLLEXPORT void SSGM_Player_Leave_Hook(int ID)
{
Activated[ID] = false;
HasAgreed[ID] = false;
}
}
|
|
|
Re: vtach/detach command [message #436937 is a reply to message #436900] |
Fri, 24 September 2010 09:30 |
robbyke
Messages: 348 Registered: September 2010 Location: Belgium
Karma: 0
|
Recruit |
|
|
thanks this really helps this gives me an idea of how to do it
if you still check perhaps
i found a way to attach the vehicle but with the bools you made i cant get it detached or even without i think but do you know a way perhaps
i didnt try to continue on your project mainly because im just a starter and cant start own projects yet and didnt have header file wich might have contained neccesary data
Owner of kambot TT server
kambot.freeforums.org
[Updated on: Tue, 28 September 2010 13:39] Report message to a moderator
|
|
|
|
|
Re: vtach/detach command [message #437293 is a reply to message #436900] |
Fri, 01 October 2010 10:19 |
robbyke
Messages: 348 Registered: September 2010 Location: Belgium
Karma: 0
|
Recruit |
|
|
well it works to detach only thing is how do i get the attached veh back on the ground without stucking it in my veh because i "detach" and then set collisions back results in 2 veh stuck into eachother
Owner of kambot TT server
kambot.freeforums.org
|
|
|
|
|
|
|