Quantcast

Jump to content

» «
Photo

Interact with other scripts

4 replies to this topic
odiomoratti
  • odiomoratti

    Pistocchi ama i falli da dietro.

  • Members
  • Joined: 12 Oct 2010

#1

Posted 20 June 2013 - 05:51 PM

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

odiomoratti
  • odiomoratti

    Pistocchi ama i falli da dietro.

  • Members
  • Joined: 12 Oct 2010

#2

Posted 22 June 2013 - 11:43 AM

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.

julionib
  • julionib

    Coder

  • Members
  • Joined: 13 Sep 2012
  • Brazil

#3

Posted 22 June 2013 - 12:18 PM

i was about to suggest this but i tought that you dont have access to the other scripts source codes hehe

hardsty1e
  • hardsty1e

    GLITCHED

  • Members
  • Joined: 02 May 2009
  • None

#4

Posted 22 June 2013 - 03:05 PM Edited by hardsty1e, 22 June 2013 - 03:14 PM.

found this inside scripthooks dev folder 'for Developers>TestScriptVB>Scripts' also 'for Developers>TestScriptCS>Script'.

CODE
Imports System
Imports System.Windows.Forms
Imports 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 Sub

End Class

Public 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 Sub

End Class



CODE
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));
     }

  }

}

julionib
  • julionib

    Coder

  • Members
  • Joined: 13 Sep 2012
  • Brazil

#5

Posted 22 June 2013 - 10:45 PM

very nice




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users