4 de janeiro de 2021

SAMP: Navio Pirata controlável com comandos (command-controlled pirate ship)

 O seguinte script recria o navio pirata de Las Venturas com alguns enfeites e controlado por comandos na caixa de texto do chat.

Sem limites de distância ou filtros de classe para operar o navio.

EN: The following script remakes the pirate ship of Las Venturas with a few ornament and controlled by commands in the chat. No class-filters or distance limits for control.

The followiong lines are used in OnGameModeInit()

{ // NAVIO PIRATA

- comentarios em portugues and comments in english

new Npirata = CreateObject(8493, 365.0259,-2125.4492,17.0, 0,0,0); // 19 nesse caso eh o id de objeto, a o numero desse objeto apos todos os outros, deve ser lembrado para substituir para o especifico do seu script mais aa frente. Essas coordenadas colocam o navio na roda gigante de Santa Maria Beach.

// 19 - nineteen is the objectid, remind to replace by the order in which this object is created. The coordinates are for Santa Maria Beach ferris wheel.

new pirataVelas = CreateObject(9159, 365.0259,-2111.4492,15.0, 0,0,0); 

new pirataCordas = CreateObject(8981, 365.0259,-2111.4492,15.0, 0,0,0);

         // sails and ropes are created and attached. Feel free to attach anything else you find necessary BELOW this line

        //as cordas e as velas sao adicionadas, senta-se aa vontade para colocar o que mais quiser ABAIXO dessa linha

AttachObjectToObject(pirataVelas, Npirata, 0,0,0, 0,0,0, 1);

AttachObjectToObject(pirataCordas, Npirata, -0.6,-6.2,-0.5, 0,0,0, 1);

}

The following lines are used in OnPlayerCommandText()

//                      COMANDOS DO NAVIO PIRATA


  //

// GUINADA DO  navio pirata - YAWING

if(strcmp(cmdtext,"/npd")==0) // para a direita - TO THE RIGHT

// a partir desta linha substitua o numero em "(19" pelo numero de objeto do casco no seu script

//from this line all the way to the end of the script replace the number in '(19' by the objectid of your hull: new Npirata

{

new Float:RotX, Float:RotY, Float:RotZ;

new Float:x, Float:y, Float:z;

GetObjectPos(19, x, y, z); 

GetObjectRot(19, RotX, RotY, RotZ);

switch(RotZ)

{

case 180.0:

{

MoveObject(19, x-20, y-20, z, 0.9, RotX, RotY, 90);

}

case 270.0:

{

MoveObject(19, x+20, y-20, z, 0.9, RotX, RotY, 180);

}

case 0.0:

{

MoveObject(19, x+20, y+20, z, 0.9, RotX, RotY, 270);

}

case 90.0:

{

MoveObject(19, x-20, y+20, z, 0.9, RotX, RotY, 0);

}


}//switch

SendClientMessageToAll(-1, "proa para estibordo, NP"); 

//uma mensagem para que todos os jogadores do servidor saibam o que o navio esta fazendo

// this is a message for all players stating what the ship is doing

return 1;

}//direita


if(strcmp(cmdtext,"/npe")==0) // para a esquerda // yawing to the left

{

new Float:RotX, Float:RotY, Float:RotZ;

new Float:x, Float:y, Float:z;

GetObjectPos(19, x, y, z);

GetObjectRot(19, RotX, RotY, RotZ);

switch(RotZ)

{

case 180.0:

{

MoveObject(19, x+20, y-20, z, 0.9, RotX, RotY, 270);

}

case 270.0:

{

MoveObject(19, x+20, y+20, z, 0.9, RotX, RotY, 0);

}

case 0.0:

{

MoveObject(19, x-20, y+20, z, 0.9, RotX, RotY, 90);

}

case 90.0:

{

MoveObject(19, x-20, y+20, z, 0.9, RotX, RotY, 180);

}


}//switch

SendClientMessageToAll(-1, "proa para bombordo, NP");

return 1;

}//esquerda


if(strcmp(cmdtext,"/npf")==0) //comando do  navio pirata devagar para a frente - slow ahead

{

new Float:RotX, Float:RotY, Float:RotZ, Float:x, Float:y, Float:z;

GetObjectPos(19, x, y, z);

GetObjectRot(19, RotX, RotY, RotZ);

SendClientMessageToAll(-1, "Devagar a frente, NP");

switch (RotZ) // soma  ou subtrai x ou y dependendo da proa do  navio pirata

  {

  case 270.0: // proa em graus

  {

MoveObject(19, x+10000, y, z, 2.0);

return 1;

}

case 0.0:

{

MoveObject(19, x, y+10000, z, 2.0);

return 1;

}

case 90.0:

{

MoveObject(19, x-10000, y, z, 2.0);

return 1;

}

case 180.0:

{

MoveObject(19, x, y-10000, z, 2.0);

return 1;

}

}//switch

/////////////////////////////////////

} // IF a frente



if(strcmp(cmdtext,"/npff")==0) //comando do  navio pirata para frente - mid speed ahead

{

new Float:RotX, Float:RotY, Float:RotZ, Float:x, Float:y, Float:z;

GetObjectPos(19, x, y, z);

GetObjectRot(19, RotX, RotY, RotZ);

    SendClientMessageToAll(-1, "Velocidade mediana a frente, NP");

switch (RotZ) // soma  ou subtrai x ou y dependendo da proa do  navio1

  {

case 270.0: // proa em graus

    {

MoveObject(19, x+10000, y, z, 9.0);

return 1;

}

case 0.0:

{

MoveObject(19, x, y+10000, z, 9.0);

return 1;

}

case 90.0:

{

MoveObject(19, x-10000, y, z, 9.0);

return 1;

}

case 180.0:

{

MoveObject(19, x, y-10000, z, 9.0);

return 1;

}

}//switch


/////////////////////////////////////

} // IF a frente


if(strcmp(cmdtext,"/npfff")==0) //comando do  navio pirata rapido para frente - full speed ahead

{

new Float:RotX, Float:RotY, Float:RotZ, Float:x, Float:y, Float:z;

GetObjectPos(19, x, y, z);

GetObjectRot(19, RotX, RotY, RotZ);

    SendClientMessageToAll(-1, "Toda velocidade a frente, NP");

switch (RotZ) // soma  ou subtrai x ou y dependendo da proa do  navio1

  {

case 270.0: // proa em graus

    {

MoveObject(19, x+10000, y, z, 15.0);

return 1;

}

case 0.0:

{

MoveObject(19, x, y+10000, z, 15.0);

return 1;

}

case 90.0:

{

MoveObject(19, x-10000, y, z, 15.0);

return 1;

}

case 180.0:

{

MoveObject(19, x, y-10000, z, 15.0);

return 1;

}

}//switch

} //IF muito a frente


if(strcmp(cmdtext,"/npr")==0) //comando do  navio pirata para trás - reverse

{

new Float:RotX, Float:RotY, Float:RotZ, Float:x, Float:y, Float:z;

GetObjectPos(19, x, y, z);

GetObjectRot(19, RotX, RotY, RotZ);

    SendClientMessageToAll(-1, "Reversao, NP");

switch (RotZ) // soma  ou subtrai x ou y dependendo da proa do  navio pirata

  {

  case 270.0: // proa em graus

    {

MoveObject(19, x-10000, y, z, 2.0);

return 1;

}

case 0.0:

{

MoveObject(19, x, y-10000, z, 2.0);

return 1;

}

case 90.0:

{

MoveObject(19, x+10000, y, z, 2.0);

return 1;

}

case 180.0:

{

MoveObject(19, x, y+10000, z, 2.0);

return 1;

}

}//switch

} // IF a ré


if(strcmp(cmdtext,"/npld")==0) //comando do  navio pirata derivar a direita - SWAY to the right

{

new Float:RotX, Float:RotY, Float:RotZ, Float:x, Float:y, Float:z;

GetObjectPos(19, x, y, z);

GetObjectRot(19, RotX, RotY, RotZ);

SendClientMessageToAll(-1, "Derivando a estibordo, NP");

switch (RotZ) // soma  ou subtrai x ou y dependendo da proa do  navio pirata

  {

case 270.0: // proa em graus

    {

MoveObject(19, x, y-100, z, 1.0);

return 1;

}

case 0.0:

{

MoveObject(19, x+100, y, z, 1.0);

return 1;

}

case 90.0:

{

MoveObject(19, x, y+100, z, 1.0);

return 1;

}

case 180.0:

{

MoveObject(19, x-100, y, z, 1.0);

return 1;

}

}//switch

} // IF a lateral direita


if(strcmp(cmdtext,"/nple")==0) //comando do  navio pirata derivar aa esquerda - SWAY to the left

{

new Float:RotX, Float:RotY, Float:RotZ, Float:x, Float:y, Float:z;

GetObjectPos(19, x, y, z);

GetObjectRot(19, RotX, RotY, RotZ);

SendClientMessageToAll(-1, "Derivando a bombordo, NP");

switch (RotZ) // soma  ou subtrai x ou y dependendo da proa do  navio pirata

  {

  case 270.0: // proa em graus

    {

MoveObject(19, x, y+100, z, 1.0);

return 1;

}

case 0.0:

{

MoveObject(19, x-100, y, z, 1.0);

return 1;

}

case 90.0:

{

MoveObject(19, x, y-100, z, 1.0);

return 1;

}

case 180.0:

{

MoveObject(19, x+100, y, z, 1.0);

return 1;

}

}//switch

} // IF a lateral esquerda


if(strcmp(cmdtext,"/npp")==0) //comando do  navio pirata PARAR - STOP

{

new Float:x, Float:y, Float:z;

GetObjectPos(19, x, y, z);

MoveObject(19, x, y, z, 0.5);

SendClientMessageToAll(-1, "Cessando movimento, NP");

return 1;

} // IF PARADO

//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////

// FIM DOS COMANDOS DO  navio pirata

//--------------------------------------------------------------------

//--------------------------------------------------------------------

SAMP

 Estive criando meu próprio servidor de SAMP para jogar entre amigos. Recentemente voltei a jogar e descobri que o forum e a wiki não existem mais. Para evitar esses inconvenientes e manter algum legado das minhas criações estarei incluindo nesse blog algumas informações pertinentes a San Andreas MultiPlayer.