Detection of right click

bajaist

Member
Reaction score
4
I got 2 rooms that are same, and i made a trigger that instantly move player's unit between rooms (to the same position where unit was in previous room), but i dont want player to notice the switch between rooms. So if player was moving his unit around the room, when switch occurred, i want that unit to move to the same place like it was orderd in previous room. Basically all i need is to detect point of right click, i know right click is "smart" order, also i tried rally point, but just can't figure it out.
Thanks
 

bajaist

Member
Reaction score
4
I did, thats not a problem, problem would be, to what point do I set angle and distance.
 

KaerfNomekop

Swim, fishies. Swim through the veil of steel.
Reaction score
613
If your rooms are rectangular, you could use regions, with the center of the region being the reference point from which you derive all other offsets.

Say your unit is 650 units away from the center of the room it's in, at an angle of 240 degrees. Use the distance from the unit to the current center, and 180 + the angle from the unit to the center, as your variables for the offset from the center of the new room.
 

bajaist

Member
Reaction score
4
I know that, and i set it allready, but my problem is when player use right-click to move, i want to set angle and distance to the point of the right-click, and i cant detect right click.
 

KaerfNomekop

Swim, fishies. Swim through the veil of steel.
Reaction score
613
Trigger:
  • Untitled Trigger 001
    • Events
      • Unit - A unit Is issued an order targeting a point
    • Conditions
      • (Issued order) Equal to (Order(smart))
    • Actions
      • Set TempPoint = (Target point of issued order)
 

bajaist

Member
Reaction score
4
Ok, thanks, but how do i implement that in the middle of my trigger.

2 regions
I've shortened trigger:

Trigger:
  • For each (Integer A) from 1 to 2, do (Actions)
    • Loop - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (region[(Integer A)] contains (Position of Holloway 0012 <gen>)) Equal to True
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Current order of Holloway 0012 <gen>) Equal to (Order(smart))
            • Then - Actions
              • Set unit_move_distance_1[1] = (Distance between (Center of region[(Integer A)]) and (???rightclick???))
              • Set unit_move_angle_1[1] = (Angle from (Center of region[(Integer A)]) to (???rightclick???))
            • Else - Actions
              • Do nothing
          • Set unit_room_position_1[1] = (Integer A)
          • Set unit_switch_distance_1[1] = (Distance between (Center of region[(Integer A)]) and (Position of Holloway 0012 <gen>))
          • Set unit_switch_angle_1[1] = (Angle from (Center of region[(Integer A)]) to (Position of Holloway 0012 <gen>))
        • Else - Actions
          • Do nothing
    • For each (Integer A) from 1 to 2, do (Actions)
      • Loop - Actions
        • -------- This moves unit instantly to the same position in other room --------
        • Unit - Move Holloway 0012 instantly to ((Center of region[unit_room_position_1[(Integer A)]]) offset by unit_switch_distance_1[(Integer A)] towards unit_switch_angle_1[(Integer A)] degrees)
        • -------- This should order unit to move(walk) to the same point as order in previous room --------
        • Unit - Order Holloway 0012 to Move To ((Center of test1[unit_room_position_1[(Integer A)]]) offset by unit_move_distance_1[(Integer A)] towards unit_move_angle_1[(Integer A)] degrees)

Edit:
I mean it doesnt just work if I set it like:
Trigger:
  • If - Conditions
    • (Current order of Holloway 0012 <gen>) Equal to (Order(smart))
    • Then - Actions
      • Set unit_move_distance_1[1] = (Distance between (Center of region[(Integer A)]) and (target point of issued order))
      • Set unit_move_angle_1[1] = (Angle from (Center of region[(Integer A)]) to (target point of issued order))
 

KaerfNomekop

Swim, fishies. Swim through the veil of steel.
Reaction score
613
The event needs to be [Is issued an order] for there to be a [Target point of issued order]. You could have a new trigger that sets a variable to the last right-clicked location, and use that instead.

Also, this one trigger is causing plenty of memory leaks.
1). Read this tutorial.
2). Never use Do Nothing actions. They call a function that takes up memory but literally Does Nothing.
 

bajaist

Member
Reaction score
4
Thanks I think that it will work.

I know about memory leaks with points, but as i said Ive shortened trigger.
Didn't know about "Do Nothing" :(

Allready +rep, but Ill give you more as soon as I could.
Regards
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top