Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Creador Automatico de Rejas (By GROVE4L)

Iniciado por Swarlog, Ene 30, 2023, 04:37 PM

Tema anterior - Siguiente tema

Swarlog

Información Adicional:

Se trata de un sistema de creación de rejas dentro del servidor mediante el uso de comandos. De este modo no tendremos que crearlas o modificar las rejas mediante el editor. Muy util, recomendable.

Código:

//------------------------------------------------------//
//------------------------------------------------------//
//------------------------------------------------------//
/*
+-------------------------------------+
|                                     |
|          Creador de Rejas           |
|            Por GROVE4L              |
|                                     |
+-------------------------------------+

*/
//------------------------------------------------------//
//------------------------------------------------------//
//------------------------------------------------------//

#include <a_samp>

new Float:POS[3];
new RejaCreando[2];
new TT[MAX_PLAYERS];
new PASOS[MAX_PLAYERS];
new MueveORota[MAX_PLAYERS];
new Vista[MAX_PLAYERS];
new EstaViendo[MAX_PLAYERS];
new TRotar;
new Float: VP[3];
new Variable = 99;
new Float: POSOR[3];
new RejaV;

public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp("/crearpuerta", cmdtext, true, 10) == 0)
{
    if(PASOS[playerid] == 0)
    {
    TogglePlayerControllable(playerid,0);
ShowPlayerDialog(playerid,650,DIALOG_STYLE_MSGBOX,"Creador de Rejas - GROVE4L","Bienvenido al creador de rejas. FS creador por GROVE4L.\nPara empezar, primero ubique la reja en la\nposicion de reja CERRADA.","Continuar","Salir");
return 1;
}
}
return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 650)
{
    if(response)
    {
        PASOS[playerid] = 1;
GetPlayerPos(playerid,POS[0],POS[1],POS[2]);
GetXYInFrontOfPlayer(playerid,POS[0],POS[1],8);
DestroyObject(RejaCreando[0]);
RejaCreando[0] = CreateObject(969,POS[0],POS[1],POS[2],0.0,0.0,0.0);
RejaV = 1;
ShowPlayerDialog(playerid,651,DIALOG_STYLE_LIST,"Opciones Rejas","Cambiar Objecto\nMover Objeto\nCambiar Rotacion\nVisualizar\nCrear Reja Abierta\nFinalizar","Selecc.","Salir");

}
else
{
PASOS[playerid] = 0;
EstaViendo[playerid] = 0;
KillTimer(TT[playerid]);
KillTimer(TRotar);
MueveORota[playerid] = 0;
Variable = 99;
TogglePlayerControllable(playerid,0);
return 1;
}
}
if(dialogid == 651)
{
    if(response)
    {
    if(listitem == 0)
    {
        EstaViendo[playerid] = 1;
        ShowPlayerDialog(playerid,9999,DIALOG_STYLE_MSGBOX,"Cambiando Objeto","Precione las flechas para elejir otro objeto.\nPulsa Enter para abrir el menu.","OK","Salir");
            GetObjectPos(RejaCreando[0],VP[0],VP[1],VP[2]);
            GetObjectRot(RejaCreando[0],POSOR[0],POSOR[1],POSOR[2]);
            DestroyObject(RejaCreando[0]);
                TT[playerid] = SetTimerEx("Teclas", 75, 1, "i", playerid);
            Variable = 1;
        return 1;
}
else if(listitem == 1)
{
    MueveORota[playerid] = 1;
    ShowPlayerDialog(playerid,9999,DIALOG_STYLE_MSGBOX,"Moviendo Objeto","Precione las flechas para mover el objeto.\nDisparar y Apuntar para la altura del objeto.\nPulsa Enter para abrir el menu.","OK","Salir");
    TT[playerid] = SetTimerEx("Teclas", 75, 1, "i", playerid);
}
else if(listitem == 2)
{
    MueveORota[playerid] = 2;
    TogglePlayerControllable(playerid,0);
    ShowPlayerDialog(playerid,9999,DIALOG_STYLE_MSGBOX,"Rotando Objeto","Precione las flechas para rotar el objeto.\nDisparar y Apuntar para rotar el objeto.\nPulsa Enter para abrir el menu.","OK","Salir");
    TT[playerid] = SetTimerEx("Teclas", 75, 1, "i", playerid);
}
else if(listitem == 3)
{
    Vista[playerid] = 1;
    TogglePlayerControllable(playerid,1);
    ShowPlayerDialog(playerid,9999,DIALOG_STYLE_MSGBOX,"Visualizando","Muevete normalmente para verificar la posicion de la reja.\nPulsa Enter para abrir el menu.","OK","Salir");
}
else if(listitem == 4)
{
    GetObjectPos(RejaCreando[0],VP[0],VP[1],VP[2]);
    GetObjectRot(RejaCreando[0],POSOR[0],POSOR[1],POSOR[2]);
                if(RejaV == 1)
            {
            RejaCreando[1] = CreateObject(969,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(RejaV == 2)
            {
            RejaCreando[1] = CreateObject(971,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(RejaV == 3)
            {
            RejaCreando[1] = CreateObject(975,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(RejaV == 4)
            {
            RejaCreando[1] = CreateObject(976,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(RejaV == 5)
            {
            RejaCreando[1] = CreateObject(989,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(RejaV == 6)
            {
            RejaCreando[1] = CreateObject(980,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
TT[playerid] = SetTimerEx("Teclas", 75, 1, "i", playerid);
PASOS[playerid] = 2;
    ShowPlayerDialog(playerid,9999,DIALOG_STYLE_MSGBOX,"Reja Abierta","El nuevo objeto fue creado.\nAbra el menu con Enter y seleccione las opciones.","OK","Salir");
return 1;
}
else if(listitem == 5)
{
ShowPlayerDialog(playerid,652,DIALOG_STYLE_INPUT,"Guardado de reja - GROVE4L","Escribe con que nombre se guardara la reja","Guardar","Salir");
    return 1;
}
}
else
{
    PASOS[playerid] = 0;
EstaViendo[playerid] = 0;
KillTimer(TT[playerid]);
KillTimer(TRotar);
MueveORota[playerid] = 0;
Variable = 99;
TogglePlayerControllable(playerid,0);
}
}
if(dialogid == 652)
{
    if(response)
    {
        new string[256];
        format(string, sizeof(string), "GRejas/%s.txt", inputtext);
new File: hFile = fopen(string, io_write);
new Float:POSG[6],Float:ROTG[6];
new NString;
GetObjectPos(RejaCreando[0],POSG[0],POSG[1],POSG[2]);
GetObjectPos(RejaCreando[1],POSG[3],POSG[4],POSG[5]);

GetObjectRot(RejaCreando[0],ROTG[0],ROTG[1],ROTG[2]);
GetObjectRot(RejaCreando[1],ROTG[3],ROTG[4],ROTG[5]);
DestroyObject(RejaCreando[0]);
DestroyObject(RejaCreando[1]);
if(RejaV == 1) NString = 969;
else if(RejaV == 2) NString = 971;
else if(RejaV == 3) NString = 975;
else if(RejaV == 4) NString = 976;
else if(RejaV == 5) NString = 989;
else if(RejaV == 6) NString = 980;

if(hFile)
{
    new var[200];
    format(var, 200, "Agregar Arriba de Todo\r\n");fwrite(hFile, var);
    format(var, 200, "new Reja1;\r\n");fwrite(hFile, var);
    format(var, 200, " \r\n");fwrite(hFile, var);
    format(var, 200, "Agregar en OnGameModeInit()\r\n");fwrite(hFile, var);
    format(var, 200, "Reja1 = CreateObject(%d,%f,%f,%f,%f,%f,%f);\r\n",NString,POSG[0],POSG[1],POSG[2],ROTG[0],ROTG[1],ROTG[2]);fwrite(hFile, var);
                format(var, 200, " \r\n");fwrite(hFile, var);
format(var, 200, "Comando para Abrir:\r\n");fwrite(hFile, var);
format(var, 200, "if(strcmp(\"/abrirpuerta\", cmdtext, true, 10) == 0)\r\n");fwrite(hFile, var);
format(var, 200, "{\r\n");fwrite(hFile, var);
    format(var, 200, " MoveObject(Reja1,%f,%f,%f,2.5);\r\n",POSG[3],POSG[4],POSG[5]);fwrite(hFile, var);
    format(var, 200, " return 1;\r\n");fwrite(hFile, var);
    format(var, 200, "}\r\n");fwrite(hFile, var);
    format(var, 200, " \r\n");fwrite(hFile, var);
    format(var, 200, "Comando para Cerrar:\r\n");fwrite(hFile, var);
format(var, 200, "if(strcmp(\"/cerrarpuerta\", cmdtext, true, 10) == 0)\r\n");fwrite(hFile, var);
format(var, 200, "{\r\n");fwrite(hFile, var);
    format(var, 200, " MoveObject(Reja1,%f,%f,%f,2.5);\r\n",POSG[0],POSG[1],POSG[2]);fwrite(hFile, var);
    format(var, 200, " return 1;\r\n");fwrite(hFile, var);
    format(var, 200, "}\r\n");fwrite(hFile, var);
   
    fclose(hFile);
    PASOS[playerid] = 0;
EstaViendo[playerid] = 0;
KillTimer(TT[playerid]);
KillTimer(TRotar);
MueveORota[playerid] = 0;
Variable = 99;
TogglePlayerControllable(playerid,1);
    return 1;
}
}
else
{
    PASOS[playerid] = 0;
EstaViendo[playerid] = 0;
KillTimer(TT[playerid]);
KillTimer(TRotar);
MueveORota[playerid] = 0;
Variable = 99;
TogglePlayerControllable(playerid,0);
return 1;
}
}
return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys == KEY_SECONDARY_ATTACK)
    {
        if(PASOS[playerid] == 0) return 1;

        EstaViendo[playerid] = 0;
KillTimer(TT[playerid]);
KillTimer(TRotar);
MueveORota[playerid] = 0;
Variable = 99;
TogglePlayerControllable(playerid,0);
ShowPlayerDialog(playerid,651,DIALOG_STYLE_LIST,"Opciones Rejas","Cambiar Objecto\nMover Objeto\nCambiar Rotacion\nVisualizar\nCrear Reja Abierta\nFinalizar","Selecc.","Salir");
}
return 1;
}

forward Teclas(playerid);
public Teclas(playerid)
{
    new keys, updown, leftright, Float:OBJ[3], Float:ROBJ[3];
    GetPlayerKeys(playerid, keys, updown, leftright);
    if(PASOS[playerid] == 1)
    {
        if(EstaViendo[playerid] == 1)
        {
            GetObjectRot(RejaCreando[0],POSOR[0],POSOR[1],POSOR[2]);
            if(leftright == KEY_RIGHT)
            {
                Variable ++;
                if(Variable >= 7) Variable = 1;
}
            if(leftright == KEY_LEFT)
            {
                Variable --;
                if(Variable <= 0) Variable = 6;
}
            DestroyObject(RejaCreando[0]);
  if(Variable == 1)
            {
                RejaV = 1;
            RejaCreando[0] = CreateObject(969,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(Variable == 2)
            {
                RejaV = 2;
            RejaCreando[0] = CreateObject(971,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(Variable == 3)
            {
                RejaV = 3;
            RejaCreando[0] = CreateObject(975,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(Variable == 4)
            {
                RejaV = 4;
            RejaCreando[0] = CreateObject(976,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(Variable == 5)
            {
                RejaV = 5;
            RejaCreando[0] = CreateObject(989,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(Variable == 6)
            {
                RejaV = 6;
            RejaCreando[0] = CreateObject(980,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
}
        if(MueveORota[playerid] == 1)
        {
    GetObjectPos(RejaCreando[0],OBJ[0],OBJ[1],OBJ[2]);
    if(leftright == KEY_RIGHT)
    {
        SetObjectPos(RejaCreando[0],OBJ[0]+0.3,OBJ[1],OBJ[2]);
}
else if(leftright == KEY_LEFT)
{
    SetObjectPos(RejaCreando[0],OBJ[0]-0.3,OBJ[1],OBJ[2]);
}

if(keys == KEY_FIRE)
{
    SetObjectPos(RejaCreando[0],OBJ[0],OBJ[1],OBJ[2]+0.3);
}
else if(keys == KEY_HANDBRAKE)
{
    SetObjectPos(RejaCreando[0],OBJ[0],OBJ[1],OBJ[2]-0.3);
}

if(updown == KEY_UP)
{
    SetObjectPos(RejaCreando[0],OBJ[0],OBJ[1]+0.3,OBJ[2]);
}
else if(updown == KEY_DOWN)
{
    SetObjectPos(RejaCreando[0],OBJ[0],OBJ[1]-0.3,OBJ[2]);
}
}
else if(MueveORota[playerid] == 2)
{
    GetObjectRot(RejaCreando[0],ROBJ[0],ROBJ[1],ROBJ[2]);
    if(leftright == KEY_RIGHT)
    {
        SetObjectRot(RejaCreando[0],ROBJ[0]+0.5,ROBJ[1],ROBJ[2]);
}
else if(leftright == KEY_LEFT)
{
    SetObjectRot(RejaCreando[0],ROBJ[0]-0.5,ROBJ[1],ROBJ[2]);
}

if(keys == KEY_FIRE)
{
SetObjectRot(RejaCreando[0],ROBJ[0],ROBJ[1],ROBJ[2]+1);
}
else if(keys == KEY_HANDBRAKE)
{
    SetObjectRot(RejaCreando[0],ROBJ[0],ROBJ[1],ROBJ[2]-1);
}

if(updown == KEY_UP)
{
    SetObjectRot(RejaCreando[0],ROBJ[0],ROBJ[1]+0.5,ROBJ[2]);
}
else if(updown == KEY_DOWN)
{
    SetObjectRot(RejaCreando[0],ROBJ[0],ROBJ[1]-0.5,ROBJ[2]);
}
}
}
if(PASOS[playerid] == 2)
    {
        if(EstaViendo[playerid] == 1)
        {
            GetObjectRot(RejaCreando[1],POSOR[0],POSOR[1],POSOR[2]);
            if(leftright == KEY_RIGHT)
            {
                Variable ++;
                if(Variable >= 7) Variable = 1;
}
            if(leftright == KEY_LEFT)
            {
                Variable --;
                if(Variable <= 0) Variable = 6;
}
            DestroyObject(RejaCreando[1]);
  if(Variable == 1)
            {
                RejaV = 1;
            RejaCreando[1] = CreateObject(969,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(Variable == 2)
            {
                RejaV = 2;
            RejaCreando[1] = CreateObject(971,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(Variable == 3)
            {
                RejaV = 3;
            RejaCreando[1] = CreateObject(975,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(Variable == 4)
            {
                RejaV = 4;
            RejaCreando[1] = CreateObject(976,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(Variable == 5)
            {
                RejaV = 5;
            RejaCreando[1] = CreateObject(989,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
else if(Variable == 6)
            {
                RejaV = 6;
            RejaCreando[1] = CreateObject(980,VP[0],VP[1],VP[2],POSOR[0],POSOR[1],POSOR[2]); // RX
}
}
        if(MueveORota[playerid] == 1)
        {
    GetObjectPos(RejaCreando[1],OBJ[0],OBJ[1],OBJ[2]);
    if(leftright == KEY_RIGHT)
    {
        SetObjectPos(RejaCreando[1],OBJ[0]+0.5,OBJ[1],OBJ[2]);
}
else if(leftright == KEY_LEFT)
{
    SetObjectPos(RejaCreando[1],OBJ[0]-0.5,OBJ[1],OBJ[2]);
}

if(keys == KEY_FIRE)
{
    SetObjectPos(RejaCreando[1],OBJ[0],OBJ[1],OBJ[2]+0.5);
}
else if(keys == KEY_HANDBRAKE)
{
    SetObjectPos(RejaCreando[1],OBJ[0],OBJ[1],OBJ[2]-0.5);
}

if(updown == KEY_UP)
{
    SetObjectPos(RejaCreando[1],OBJ[0],OBJ[1]+0.5,OBJ[2]);
}
else if(updown == KEY_DOWN)
{
    SetObjectPos(RejaCreando[1],OBJ[0],OBJ[1]-0.5,OBJ[2]);
}
}
else if(MueveORota[playerid] == 2)
{
    GetObjectRot(RejaCreando[1],ROBJ[0],ROBJ[1],ROBJ[2]);
    if(leftright == KEY_RIGHT)
    {
        SetObjectRot(RejaCreando[1],ROBJ[0]+0.5,ROBJ[1],ROBJ[2]);
}
else if(leftright == KEY_LEFT)
{
    SetObjectRot(RejaCreando[1],ROBJ[0]-0.5,ROBJ[1],ROBJ[2]);
}

if(keys == KEY_FIRE)
{
SetObjectRot(RejaCreando[1],ROBJ[0],ROBJ[1],ROBJ[2]+0.5);
}
else if(keys == KEY_HANDBRAKE)
{
    SetObjectRot(RejaCreando[1],ROBJ[0],ROBJ[1],ROBJ[2]-0.5);
}

if(updown == KEY_UP)
{
    SetObjectRot(RejaCreando[1],ROBJ[0],ROBJ[1]+0.5,ROBJ[2]);
}
else if(updown == KEY_DOWN)
{
    SetObjectRot(RejaCreando[1],ROBJ[0],ROBJ[1]-0.5,ROBJ[2]);
}
}
}
return 1;
}

GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
{
new Float:a;

GetPlayerPos(playerid, x, y, a);
GetPlayerFacingAngle(playerid, a);

if (GetPlayerVehicleID(playerid)) {
    GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
}

x += (distance * floatsin(-a, degrees));
y += (distance * floatcos(-a, degrees));
}

//   Creador de Rejas por GROVE4L