odiomoratti Posted June 20, 2013 Share Posted June 20, 2013 Hi, there's a way to code a script that can start/stop/pause/ other scripts? I mean.....i write two scripts bb.cs and dd.cs.....the bb.cs script should be able to know if dd.cs is running....and in the case be able to abort or pause it.... Hope you understand my answer. I script in c# and i'm using hazard scripthook. Thanks Link to comment Share on other sites More sharing options...
odiomoratti Posted June 22, 2013 Author Share Posted June 22, 2013 At the end i just used the bind function to create some console command and then i used the sendcommand to control the other script....probably not a clean job, but well....it works. Link to comment Share on other sites More sharing options...
julionib Posted June 22, 2013 Share Posted June 22, 2013 i was about to suggest this but i tought that you dont have access to the other scripts source codes hehe Link to comment Share on other sites More sharing options...
AgentWD40 Posted June 22, 2013 Share Posted June 22, 2013 (edited) found this inside scripthooks dev folder 'for Developers>TestScriptVB>Scripts' also 'for Developers>TestScriptCS>Script'. Imports SystemImports System.Windows.FormsImports GTA' ### This example shall show inter-script-communication using ScriptCommands. ###' ### The first script gets a random Ped and sends it to the second script. ###' ### The second script can then process the Ped as usual. ###Public Class ScriptCommunicationExample1 Inherits Script ' Scripts are identified by GUIDs. Here we store the GUID of our target script into a global variable for later use Private GuidOfScript2 As Guid = New Guid("0652B17E-FB29-11DD-97BB-2E9356D89593") Private Sub ScriptCommunicationExample1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Tick If isKeyPressed(Keys.T) Then SendAPedToScript2() ' Look for Peds every Frame, while T is pressed End Sub Private Sub SendAPedToScript2() Dim p As Ped = World.GetRandomPed(Player.Character.Position, 10.0F) ' get a random Ped If Not Exists(p) Then Return ' make sure that p is valid and not empty SendScriptCommand(GuidOfScript2, "DoSomethingWithPed", p) ' send a command, with our ped attached, to the second script End SubEnd ClassPublic Class ScriptCommunicationExample2 Inherits Script Public Sub New() ' set the script's GUID to enable other scripts to send messages to it. ' IMPORTANT: DO NOT use the same GUID for multiple scripts! Generate a new one instead! ' Google "generate guid" to find an online GUID generator! GUID = New Guid("0652B17E-FB29-11DD-97BB-2E9356D89593") BindScriptCommand("DoSomethingWithPed", AddressOf ThrowAPed) End Sub Private Sub ThrowAPed(ByVal sender As GTA.Script, ByVal Parameter As GTA.ObjectCollection) Dim ped As Ped = Parameter.Convert(Of Ped)(0) If Not Exists(ped) OrElse ped.isInAir Then Return ped.ApplyForce(New Vector3(0.0F, 0.0F, 5.0F), New Vector3(0.0F, 5.0F, 0.0F)) End SubEnd Class using System;using System.Windows.Forms;using GTA;namespace TestScriptCS { // ### This example shall show inter-script-communication using ScriptCommands. ### // ### The first script gets a random Ped and sends it to the second script. ### // ### The second script can then process the Ped as usual. ### public class ScriptCommunicationExample1 : Script { // Scripts are identified by GUIDs. Here we store the GUID of our target script into a global variable for later use Guid GuidOfScript2 = new Guid("0652B17E-FB29-11DD-97BB-2E9356D89593"); public ScriptCommunicationExample1() { this.Tick += new EventHandler(this.ScriptCommunicationExample1_Tick); } private void ScriptCommunicationExample1_Tick(object sender, EventArgs e) { if (isKeyPressed(Keys.T)) SendAPedToScript2(); // Look for Peds every Frame, while T is pressed } private void SendAPedToScript2() { Ped p = World.GetRandomPed(Player.Character.Position, 10.0F); // get a random Ped if (!Exists(p)) return; // make sure that p is valid and not empty SendScriptCommand(GuidOfScript2, "DoSomethingWithPed", p); // send a command, with our ped attached, to the second script } } public class ScriptCommunicationExample2 : Script { public ScriptCommunicationExample2() { // set the script's GUID to enable other scripts to send messages to it. // IMPORTANT: DO NOT use the same GUID for multiple scripts! Generate a new one instead! // Google "generate guid" to find an online GUID generator! GUID = new Guid("0652B17E-FB29-11DD-97BB-2E9356D89593"); BindScriptCommand("DoSomethingWithPed", new ScriptCommandDelegate(ThrowAPed)); } private void ThrowAPed(GTA.Script sender, GTA.ObjectCollection Parameter) { Ped ped = Parameter.Convert<Ped>(0); if (!Exists(ped) || ped.isInAir) return; ped.ApplyForce(new Vector3(0.0F, 0.0F, 5.0F), new Vector3(0.0F, 5.0F, 0.0F)); } }} Edited June 22, 2013 by hardsty1e Link to comment Share on other sites More sharing options...
julionib Posted June 22, 2013 Share Posted June 22, 2013 very nice Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now