Home   Help Search Login Register  

Author Topic: Joining Units When They Find Each Other  (Read 1262 times)

0 Members and 1 Guest are viewing this topic.

Offline westy159

  • Members
  • *
Joining Units When They Find Each Other
« on: 04 Oct 2006, 20:19:05 »
In my MP mission a number of players will be randomly lost on the island. Enemy patrols everywhere and hinds flying over naturally. Using nothing but their navigation skills each player has to get back to the friendly base. If players decide to (or unintentionally) find each other I want them to get grouped together. The join command wont work as it is activated automatically. I want units to be grouped only if they happen to find each other (say, be a distance of 10 metres or so apart).

Is this possible?

Cheers.

Offline The-Architect

  • Former Staff
  • ****
  • Bite my shiny metal...
    • Bob's Un-official Flashpoint Page
Re: Joining Units When They Find Each Other
« Reply #1 on: 05 Oct 2006, 00:37:44 »
Yes, you use

Distance

But you'll have to write a script. Have it loop with a distance command in between each loop. When the Distance question is met, have the script go to a new section where you'll join the groups.

#Loop
? Distance Man1 <= 25 : GoTo "Join"
GoTo "Loop"

#Join
Man2 join mygrp
~5
Exit

Something like that. You'll have to check the syntax.
James Andrew Wilkinson 1977 - 2005 R.I.P.
"If it ain't the friggin' incoming it's the friggin' outgoing. Only difference is who gets the friggin' grease, and that ain't no friggin' difference at all."

Offline DEADRABBIT

  • Members
  • *
Re: Joining Units When They Find Each Other
« Reply #2 on: 05 Oct 2006, 00:53:56 »
Quote
The join command wont work as it is activated automatically.

I quite don't understand your remark here. The join command works fine in MP, as far as I know. It is possible to make something like you requested.
But I wouldn't use a distance boolean. I would use the knowsAbout command.

I suppose the script would look something like this:

Code: [Select]
;; I assume all units are players
;; Example: [[P1,P2,P3,P4,P5]] exec "thisscript.sqs"

;; Contains all the player units
_units = _this select 0

? not local player : exit

_units = _units - [player]

#loop
@({player knowsAbout _x >= 0.105} count _units > 0 Or {alive _x} count _units == 0 Or not alive player)

? not alive player : exit

_i = 0
_amount_units = count _units
while (_i < _amount_units) do {if (player knowsAbout (_units select _i) >= 0.105) then {[player] join (group (_units  select _i)); _units = _units - [(_units select _i)]; _amount_units = _amount_units - 1}}

? (_amount_units > 0) : goto "loop"

exit

I don't know if it is bug free (can't test it on a machine that can't run OFP). But the code looks pretty solid to me.

Edit: found a small flaw in the script, fixed it.

Offline JasonO

  • OFPEC Patron
  • ****
  • Oh no...
    • The New Life RPG
Re: Joining Units When They Find Each Other
« Reply #3 on: 05 Oct 2006, 16:10:07 »
Whats wrong with the distance command?

Also:
Code: [Select]
? Distance Man1 <= 25 : GoTo "Join"
Wouldnt you need to say what is meant to be 25 distance from Man1? Ive always had unknown operator errors if I remember correctly.

Offline DEADRABBIT

  • Members
  • *
Re: Joining Units When They Find Each Other
« Reply #4 on: 05 Oct 2006, 19:12:00 »
Whats wrong with the distance command?

Also:
Code: [Select]
? Distance Man1 <= 25 : GoTo "Join"
Wouldnt you need to say what is meant to be 25 distance from Man1? Ive always had unknown operator errors if I remember correctly.


If you're in a forest and one player is in the radius of another player, without either of them knowing either's position, then it makes no sense to join each other's group, wouldn't it?

And yes, the command should be like ? man1 distance man2 <= 25 : goto "Join"