Entidad 3D :: Creación de juegos en 3D sin programar

Foro de Entidad 3D
 
PortalÍndiceBuscarMiembrosGrupos de UsuariosFAQChatAnalisisRegistrarseConectarse
. . . . . . . . . . . . . . . . . . . . . . . .
Visita el sitio oficial de Entidad 3D para descargar la última versión!
Si encuentras un bug en la útlima versión de Entidad 3D, comunícaselo directamente al autor de Entidad 3D, Jordi Perez via correo electronico. Si no estás seguro si es un bug o no, consúltalo con la gente del foro!
Si eres un usuario nuevo preséntate en el subforo de saludos y despedidas para asegurar tu cuenta! (Los usuarios que tengan 0 mensajes pasados los primeros 10 días de creada su cuenta serán eliminados como política de limpieza del foro)

Comparte | 
 

 Interprete de comandos entidad 3d en javascript

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
estantaya
Avanzado
Avanzado
avatar

Último Juego : Sur Survival
Sexo : Masculino
Mensajes : 273
Edad : 30
Localización : Mi casa

MensajeTema: Interprete de comandos entidad 3d en javascript   Dom Mayo 29, 2016 11:06 am

Es la primer implementación de este lenguaje de script Razz
lo pienso usar para la consola de mi juego en unity 3d
aun no lo termino
pero en teoria funciona
le agregue algunas cosas como por ejemplo ELSE IF
y mas operadores >= <= != ==
tambien le agregue OR || a los enunciados IF
me olvide de agregar ACCI a los comandos y talvez sea mejor
es opcional pero se puede encerrar texto en comillas

aqui un ejemplo:
PONE a=4
IF COND llave=1 OR llave==%mi_llave%
TEXT "      hola      " // "     hola     "
TEXT       hola      // "hola"
ELSE IF && balas_%objeto%>=50 && recargando = false
PONE a+=3
TEXT %a%    //"7"
ENDIF

aqui se ve mejor el codigo: [Tienes que estar registrado y conectado para ver este vínculo]

class E3DCommand {

var command:String;
var view:boolean;
var params:String[];
var conds:E3DCond[];

function E3DCommand(v:boolean){
view=v;
//conds=new E3DCond();
}

function Cond() {

for (c=0;c<conds.length;++c) {
if (view) {
if (conds[c].type=="&&"||conds[c].type=="COND") view=false;
else if (conds[c].type=="||"||conds[c].type=="OR") break;
}

if (conds[c].operator=="="||conds[c].operator=="==") {
//if (conds[c].param1==conds[c].param2) conds[c].verdadero=true;
if (conds[c].param1==conds[c].param2)  view=true;
} else if (conds[c].operator=="!"||conds[c].operator=="!=") {
if (conds[c].param1!=conds[c].param2) view=true;
} else if (conds[c].operator==">") {
if (float.Parse(conds[c].param1)>float.Parse(conds[c].param2)) view=true;
} else if (conds[c].operator==">=") {
if (float.Parse(conds[c].param1)>=float.Parse(conds[c].param2)) view=true;
} else if (conds[c].operator=="<") {
if (float.Parse(conds[c].param1)} else if (conds[c].operator=="<=") {
if (float.Parse(conds[c].param1)<=float.Parse(conds[c].param2)) view=true;
}

}

return view;

}

}
class E3DCond{

var type:String;
var param1:String;
var operator:String;
var param2:String;
//var veradero:boolean;

function E3DCond(t:String){
type=t;
}

}

class E3DVariable{

var nombre:String;
var valor:String;

}

//class E3DCommand extends String{

var customVariables:E3DVariable;
//var tipoComando:E3DCOMANDOS;

function E3DParser(data:String) {
var line:int=0;
var param:int=0;
//var lines:E3DCommand[];
var rawData:Array;
var paramData:Array;
for (var ascii in data) {

if (""+ascii!="\n"[0]) {
if (param==0) paramData=new Array("");
else if (param==param.length) {
if (""+ascii==" "||""+ascii=="\t"[0]) continue;
else paramData.Add("");
}

if (!_string) {
if (""+ascii=="\""[0]||""+ascii=="\'"[0]) {
param++;
_string=true;
} else if (""+ascii==" "||""+ascii=="\t"[0]) {
param++;
} else if (""+ascii=="!") {
paramData[param]+=""+ascii;
param++;
}  else if (""+ascii==">") {
paramData[param]+=""+ascii;
param++;
}  else if (""+ascii=="<") {
paramData[param]+=""+ascii;
param++;
}  else if (""+ascii=="=") {
if (paramData[param-1]=="!") paramData[param-1]+=""+ascii;
else if (paramData[param-1]==">") paramData[param-1]+=""+ascii;
else if (paramData[param-1]=="<") paramData[param-1]+=""+ascii;
else if (paramData[param-1]=="=") paramData[param-1]+=""+ascii;
else if (paramData[param-1]=="+") paramData[param-1]+=""+ascii;
else if (paramData[param-1]=="*") paramData[param-1]+=""+ascii;
else if (paramData[param-1]=="-") paramData[param-1]+=""+ascii;
else if (paramData[param-1]=="/") paramData[param-1]+=""+ascii;
else {
paramData[param]+=""+ascii;
param++;
}
}  else if (""+ascii=="==") {
paramData[param]+=""+ascii;
param++;
}  else if (""+ascii=="*") {
paramData[param]+=""+ascii;
param++;
}  else if (""+ascii=="+") {
paramData[param]+=""+ascii;
param++;
}  else if (""+ascii=="/") {
paramData[param]+=""+ascii;
param++;
}  else if (""+ascii=="-") {
paramData[param]+=""+ascii;
param++;
} else paramData[param]+=""+ascii;
} else {
if (""+ascii=="\""[0]||""+ascii=="\'"[0]) {
param++;
_string=false;
} else paramData[param]+=""+ascii;
}

if (line==0) rawData=new Array(new E3DCommand(true));
else if (line==rawData.length) rawData.Add(new E3DCommand(true));

//else rawData[line].command+=""+ascii;
} else if (line!=0) {
//rawData[line].params=paramData.ToBuiltin(String);
/*if (paramData.length==1) {
//comandos de 1 solo parametro
rawData[line].command=paramData[0];
} else if (paramData.length==2) {
rawData[line].command=paramData[0];
rawData[line].params=new String[1];
rawData[line].params[0]=paramData[1];
} else if (paramData.length==3) {

} else {
}
if (rawData[line].command=="IF"||rawData[line].command=="ELSE IF") {

}*/
//if (line!=0) {
rawData[line].params=paramData.ToBuiltin(String);
[Tienes que estar registrado y conectado para ver este vínculo] E3DCommand(true));
//paramData=new Array("");
line++;
param=0;
//}
}
}

if (rawData!=null) {
if (paramdata!=null&&rawData[line].params==null) rawData[line].params=paramData.ToBuiltin(String);
var lines:E3DCommand[]=rawData.ToBuiltin(E3DCommand);
} else return "el archivo no tenia nada";

for (var line in lines) {
var _else:boolean;
var _cond:boolean;
var cond:int;
//var cond_param:int;
var condData:Array;
for (p=0;pif (_cond) {
if (line.params[p]=="COND") {
//if (cond==0) condData=new Array(new E3DCond("NULL"));
if (cond==0) condData=new Array(new E3DCond("COND"));
else condData.Add(new E3DCond("COND"));
} else if (paramData[p]=="OR") {
if (cond==0) condData=new Array(new E3DCond("COND"));
else condData.Add(new E3DCond("COND"));
} else (conData!=null) {
if (line.params[p+2]!=null) {
conData[cond].param1=line.params[p];
conData[cond].operator=line.params[p+1];
conData[cond].param2=line.params[p+2];
cond++;
p+=3;
//cond_param=0;
} else {
//condicion mal escrita
p=line.params.length;
}
//cond_param++;
} else p=line.params.length;
//p=line.params.length;
} else {
if (line.params[p]=="IF") {
if (_else) {
line.command="ELSE IF";
_else=false;
} else {
line.command="IF";
}
_cond=true;
} else if (line.params[p]=="ELSE") {
_else=true;
line.command="ELSE";
} else {
line.command=line.params[0];
p=line.params.length;
//_param=true;
}
}
}
if (condData!=null) line.conds=condData.ToBuiltin(E3DCond);
// rawData[line].conds=condData.ToBuiltin(E3DCond);
}

var herarchy:Array=new Array(1);
herarchy[0]=0;
//var statement:int=0;
var level:int=0;
for (i=0;i
//if (level==herarchy.length) herarchy.Add(0);

if (lines[i].command=="IF") {
level++;
herarchy.Add(Cond(lines[i]));
} else (lines[i].command=="ELSE IF") {
if (herarchy[level]) continue;
herarchy[level]=Cond(lines[i]);
} else if (lines[i].command=="ELSE") {
if (!herarchy[level]) herarchy[level]=true;
continue;
} else if (lines[i].command=="ENDIF") {
level--;
}

//the trick
if (!herarchy[level]) continue;

if (lines[i].command=="PONE") {
var newVariable:Array=new Array(customVariables);
newVariable.Add(new E3DVariable(Solucionar(lines[i].param1),Solucionar(lines[i].param2)));
customVariables=newVariable.ToBuiltin(E3DVariable);
} else if (lines[i].command=="SONF") {
audio.clip=GetClip(lines[i].params);
audio.loop=true;
audio.Play();
} else if (lines[i].command=="SONP") {
audio.Pause();
} else if (lines[i].command=="SONR") {
audio.loop=true;
audio.Play();
} else if (lines[i].command=="SONI") {
effect.clip=GetClip(lines[i].params);
effect.loop=false;
effect.Play();
} else if (lines[i].command=="SON0") {
var audioSource:AudioSource=GetAudio(lines[i].params[2]);
audioSource.Stop();
} else if (lines[i].command=="SON1") {
var audioSource:AudioSource=GetAudio(lines[i].params[2]);
audioSource.Play();
} else if (lines[i].command=="SODF") {
ambient.clip=GetClip(lines[i].params[2]);
ambient.volume=lines[i].params[3];
ambient.loop=true;
ambient.Play();
} else if (lines[i].command=="SODP") {
ambient.Pause();
} else if (lines[i].command=="SODR") {
ambient.loop=true;
ambient.Play();
} else if (lines[i].command=="TEXT") {
infoGui.mostrarTexto+=5.0;
infoGui.texto="";
for (t=2;tif (lines[i].params[t][0]=="%") {
lines[i].params[t]=GetVar(lines[i].params[t]);
}
infoGui.texto+=lines[i].params[t];
}
} else if (lines[i].command=="DIAL") {
infoGui.mostrarDialogo+=5.0;
infoGui.dialogo=GetDial(lines[i].params[2]);
} else if (lines[i].command=="TEXTO_CONSOLA") {
for (t=2;tif (lines[i].params[t][0]=="%") {
lines[i].params[t]=GetVar(lines[i].params[t]);
}
infoGui.consola+=lines[i].params[t];
}
[Tienes que estar registrado y conectado para ver este vínculo]
} else if (lines[i].command=="DAME_OBJETO_INVENTARIO") {
SetVar(lines[i].params[2],lines[i].params[3]);
} else if (lines[i].command=="OPE+") {
var resultado:float=Solucionar(lines[i].params2)+Solucionar(lines[i].params[3]);
SetVar(lines[i].params[2],resultado);
} /*else if () {
etc...
} else if () {

} else if () {

} else if () {

} else if () {

} else if () {

}*/
}

}
Volver arriba Ir abajo
Ver perfil de usuario http://33.media.tumblr.com/04ce0ed37cbf34da18782f49a8b3765d/tumb
ogrk
Amateur
Amateur


Sexo : Masculino
Mensajes : 154
Edad : 27
Localización : Madrid, España

MensajeTema: Re: Interprete de comandos entidad 3d en javascript   Lun Jul 11, 2016 6:20 am

Genial, estas haciendo un proyecto en Unity 3D? Yo también tenia pensado hacer algo en unity 3d en donde implementara algo parecido a entidades para que la gente pueda crear juegos al mas puro estilo de entidad 3d pero con las capacidades de unity 3d Laughing . Aun no me informo de todo sobre la interacción de interfaz con scripts pero me encontré unos tutoriales muy buenos. Ahora que me comentas de un sistema que te traduzca un lenguaje por otro seria también algo excelente Cool . Espero ver tu proyecto Cool
Volver arriba Ir abajo
Ver perfil de usuario
 

Interprete de comandos entidad 3d en javascript

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

 Temas similares

-
» comandos de chatbox
» ¿Como adjuntais archivos javascript a vuestro foro?
» [Duda] ¿Se Pueden agregar nuevos comandos?
» Quien me dice todos los comandos
» Codigos/Comandos de Mensajes

Permisos de este foro:No puedes responder a temas en este foro.
Entidad 3D :: Creación de juegos en 3D sin programar :: Off-Topic :: Otros Proyectos-