● 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