Author Topic: Inpoly [Command]  (Read 894 times)

Motley

  • Full Member
  • ***
  • Posts: 247
  • Karma: +32/-33
    • View Profile
Inpoly [Command]
« on: November 14, 2016, 01:52:33 pm »
I never really seen any simple helpful commands for inpoly, So I created one to help me in the server.

This is not something that was intended to be really pretty, as well judged for its arrays, only really! useful.

I really hope this command helps others as it has with me, These commands have really saved me from a headache/ meltdown  ;D


Code: [Select]
x1 <- array(GetMaxPlayers(), 0);
y1 <- array(GetMaxPlayers(), 0);
x2 <- array(GetMaxPlayers(), 0);
y2 <- array(GetMaxPlayers(), 0);
x3 <- array(GetMaxPlayers(), 0);
y3 <- array(GetMaxPlayers(), 0);
x4 <- array(GetMaxPlayers(), 0);
y4 <- array(GetMaxPlayers(), 0);

function onPlayerCommand( player, cmd, text )
{
    if (cmd == "poly" )
    {
           if (text == "1")
           {
               x1[player.ID] = player.Pos.x;
               y1[player.ID] = player.Pos.y;
            }
       
            if (text == "2")
            {
                x2[player.ID] = player.Pos.x;
                y2[player.ID] = player.Pos.y;
            }

            if (text == "3")
            {
                 x3[player.ID] = player.Pos.x;
                 y3[player.ID] = player.Pos.y;
             }

             if (text == "4")
             {
                  x4[player.ID] = player.Pos.x;
                  y4[player.ID] = player.Pos.y;
             }
       
             if (text == "print")
             {
                 MessagePlayer("InPoly(player.Pos.x, player.Pos.y, "+x1[player.ID]+", "+y1[player.ID]+", "+x2[player.ID]+", "+y2[player.ID]+", "+x3[player.ID]+", "+y3[player.ID]+", "+x4[player.ID]+", "+y4[player.ID]+"); ", player, Colour(255, 255, 0));
                 print("InPoly(player.Pos.x, player.Pos.y, "+x1[player.ID]+", "+y1[player.ID]+", "+x2[player.ID]+", "+y2[player.ID]+", "+x3[player.ID]+", "+y3[player.ID]+", "+x4[player.ID]+", "+y4[player.ID]+"); " );
              }
       
              if ( text == "clear")
              {
                   x1[player.ID] = 0;
                   y1[player.ID] = 0;
                    x2[player.ID] = 0;
                    y2[player.ID] = 0;
                    x3[player.ID] = 0;
                    y3[player.ID] = 0;
                    x4[player.ID] = 0;
                    y4[player.ID] = 0;
        }
    }

    if (cmd == "help" )
    {
                MessagePlayer("/poly 1. pos.x1, pos.y1", player, Colour(255, 112, 0));
                MessagePlayer("/poly 2. pos.x2, pos.y2", player Colour(255, 112, 0));
                MessagePlayer("/poly 3. pos.x3, pos.y3", player Colour(255, 112, 0));
                MessagePlayer("/poly 4. pos.x4, pos.y4", player Colour(255, 112, 0));
MessagePlayer("/poly print. Message, print for stored poly", player Colour(255, 112, 0));       
                MessagePlayer("/poly clear.  Clears the arrays", player, Colour(255, 255, 0));
    }

}
« Last Edit: November 14, 2016, 01:57:25 pm by Mötley »

JamesConway

  • Newbie
  • *
  • Posts: 38
  • Karma: +9/-3
    • View Profile
Re: Inpoly [Command]
« Reply #1 on: November 14, 2016, 01:56:43 pm »
Isn't InPoly used to check whether someone is in a predefined polygon?

Motley

  • Full Member
  • ***
  • Posts: 247
  • Karma: +32/-33
    • View Profile
Re: Inpoly [Command]
« Reply #2 on: November 14, 2016, 01:58:11 pm »
Yes, Why do you ask? Just curious.

JamesConway

  • Newbie
  • *
  • Posts: 38
  • Karma: +9/-3
    • View Profile
Re: Inpoly [Command]
« Reply #3 on: November 14, 2016, 02:52:09 pm »
What are you trying to do with your script?

Motley

  • Full Member
  • ***
  • Posts: 247
  • Karma: +32/-33
    • View Profile
Re: Inpoly [Command]
« Reply #4 on: November 14, 2016, 04:06:55 pm »
It's funny that you ask  :)

Well, I have learned that when using CreateClientSphere  along with CreateSphere the sphere ids alter, affecting issues like showing a gui for for my gas script, This really alters the driving missions for the security car to much more. with adding this tiny validation the sphere IDs no longer get confused


Example:
Code: [Select]
/* anything that is not the fuel script */
if (!InPoly(player.Pos.x, player.Pos.y, 1136.8, -59.77, 1136.6, -98.87, 1184.9, -101.91, 1184.9, -59.7));

/* The fuel script */
if (InPoly(player.Pos.x, player.Pos.y, 1136.8, -59.77, 1136.6, -98.87, 1184.9, -101.91, 1184.9, -59.7));
Returns a great validation, I found that to be rather charming honestly.

This is really complicated to describe without showing you a entire mission script.
In general I find using InPoly a safe way of using spheres with client spheres while running the server.
Im also using it inside of the bank  :P

Maybe the garages as well


« Last Edit: November 14, 2016, 04:09:46 pm by Mötley »

JamesConway

  • Newbie
  • *
  • Posts: 38
  • Karma: +9/-3
    • View Profile
Re: Inpoly [Command]
« Reply #5 on: November 14, 2016, 04:51:41 pm »
Ah, nice job. I always used to check if they are within a predefined amount of distance of a vector. 

Motley

  • Full Member
  • ***
  • Posts: 247
  • Karma: +32/-33
    • View Profile
Re: Inpoly [Command]
« Reply #6 on: November 14, 2016, 04:56:56 pm »
Thats really interesting too, Something really told me to use inpoly.

I'm happy I did, Also happy due to that command,

Any other method for creating a poly like printing Pos.x, Pos.y multiple times is a nightmare

This way if used correctly you have something going on, I thought about adding a command to alter the players distance to forward, This way you could have stronger polys by having the exact distance and angle but,  ::) laziness  :D..

 

© Liberty Unleashed Team.