Blockland Forums > Modification Help
Homing Script
<< < (3/3)
Port:

--- Quote from: otto-san on January 22, 2012, 02:06:20 PM ---if(%mgo == %mco == 1)

is that even a valid if statement or is this another weird torque syntax thing i dont know about

--- End quote ---

It is equally valid as something like this:

if( isFunction( %function = "func_" @ getRandom( 0, 5 ) ) )
        call( %function, collapseEscape( "\\x" @ %val SPC "\\\\" ) );
else
        %this.success = %this.parent.success = %success = false;

TorqueScript is a very "flexible" language.
Uristqwerty:

--- Quote from: takato14 on January 22, 2012, 02:00:18 PM ---
--- Code: --- while(1)
{
%search=containerSearchNext();
if(%prj.client==%search.client)
{
continue;
}

%mg=%prj.client.minigame;
%mc=%search.client.minigame;
%mgo=isObject(%mg);
%mco=isObject(%mco);

if(%mgo == %mco == 1)
{
if(%mg!$=%mc)
{
continue;
}
}

if(isObject(%search))
{
%obj=%search;
}
break;

}

--- End code ---

--- End quote ---

Looks excessively complicated, though it could have grown that way due to subtle unexpected engine behaviour. I highly doubt it, so would suggest the alternative:


--- Code: ---    while((%found = containerSearchNext()))
    {
        if(%prj.client.minigame == %found.client.minigame)
        {
            %obj = %found;
            break;
        }
    }

--- End code ---



"%mco=isObject(%mco);" is clearly a typo, intended to be "%mco=isObject(%mc);"
"%mgo == %mco == 1" is likely the same as "(%mgo == %mco) == 1", which is redundant. At first I thought it may have been an attempt to imitate a logical XOR through awkward syntax, but "%mg!$=%mc" clearly expects them to both either be objects or not objects.

Ah, but the layout of that makes me think that there was a problem with minigames  that no longer existed, and the solution used seems to be overly complex. So...



--- Code: ---    while((%found = containerSearchNext()))
    {
        %mg = %prj.client.minigame;
        %mc = %found.client.minigame;

        if((!isObject(%mc) && !isObject(%mg)) || %mc == %mg)
        {
            %obj = %found;
            break;
        }
    }

--- End code ---

Edit: Oops, missed the part about not targeting self, so it would be



--- Code: ---    while((%search = containerSearchNext()))
    {
        if(%prj.client == %search.client)
        {
            continue;
        }

        %mg = %prj.client.minigame;
        %mc = %search.client.minigame;

        if((!isObject(%mc) && !isObject(%mg)) || %mc == %mg)
        {
            %obj = %search;
            break;
        }
    }

--- End code ---
Navigation
Message Index
Previous page

Go to full version