Screeps #HO | MMO para programadores en JavaScript

MartiONE

#210 La memoria la puedes asignar en la memoria persistente (Memory) y accederla desde ahí.

1 respuesta
n3krO

#211 Pero asi no tiene gracia :(

Yo quiero crear una colonia con machos y hembras y que cuando el Room Controller este al nivel maximo las mujeres empiecen a hacer huelgas porque quieren mas derechos xddddd

1 respuesta
MartiONE

#212 Te deseo suerte en tu cruzada xD

Eso si, el juego cuando lo cargas en local chupa que da gusto eh, el portátil ha empezado a tirar humo xD

Postmortem

Como se supone que me puedo unir al Slack?

y una preguntilla, acabo de empezar right now y me interesa tener 1 lugar de memoria compartida que persista a través de todos los Ticks, seguramente eso sea el Memory, y el punto de hacer un

Memory.laPropiedadQueMeDe = "yokse";

No está malote, pero no soy capaz de acceder a la memoria de forma parametrizada, seguramente porque no la entienda, algo en plan

var propiedad = "laPorpiedadQueMeDe";
Memory[propiedad] = "yokse";

Alguien me resuelve la dudilla? supongo que es por no haber tratado nunca ni con JS ni con JSON

2 respuestas
n3krO

#214 var propiedad = Memory.laPropiedadQueMeDe;
propiedad = "yokse" ?

Es que Memory es un struct mientras que Game.creeps es un Dictionary<String,creep>

Al menos eso es lo que entendi.

1 respuesta
Postmortem

#215 no quiero acceder al valor de la variable, quiero parametrizar "laPropiedadQueMeDe" para poner yo el nombre que quiera, estoy experimentando ya con la RawMemory porque el objeto Memory en si no parece que me provea de ningún método para lo que necesito

edit: entonces igual estoy confundiendo lo que es Memory, me interesa tener un diccionario igual que creeps pero pudiendo meter yo nuevos valores y accediendo después claro

1 respuesta
AikonCWD

#216 Prueba con: Memory.mierda = {hola : 'adios', puta : 'peste'} Si no funciona, cambia los {} por []. Éste tipo de cosas se resuelven rápidamente en el slack. Entra en el link y pon tu mail y password deseado, en 2 minutos estarás dentro.

#214 Mandame tu mail por MP

1 respuesta
Postmortem

Finalmente lo que he conseguido de Memory es asignarle un diccionario el cual me sirve para lo que quería hacer, os dejo aquí el código de prueba por si a alguien más le ocurre

    Memory.sharedMemory = new Array();
    var myId = "15212";
    Memory.sharedMemory[myId] = 0;
    console.log('El valor es ' + Memory.sharedMemory[myId]);

El objetivo de esto es poder compartir información entre los creeps para que tengan conocimiento del juego en general y sean capaces de asignarse recursos o desasignárselos ellos mismos

1 respuesta
Amazon

#217 o en telegram

XD

1 respuesta
AikonCWD

#219 A coño, te refieres a utilizar telegram desde el desktop? xD

1 respuesta
PaCoX

para que veáis como va eso de la memoria y tal os pongo el ejemplo que queríais hacer en la pag anterior:

spoiler
Amazon

#220 claro xD

Lecherito

La verdad es que me gusta el juego y he intentado otra vez usar js pero es que me puede mi odio hacia él. Y encima está muy verde respecto a otros lenguajes que compilan a JS como Kotlin y tampoco puedo usarlo con Kotlin

AikonCWD

Para ayudar un poco más con el tema de la memoria global:

Game.spawns.Spawn1.createCreep([WORK,WORK,CARRY,MOVE], undefined, {role: 'minero', raza: 'negro', derechos_y_libertades: 'jaja no me hagas reir. No tiene'});

    Memory.esqueleto = {
        QuienEsElMejor : 'AikonCWD',
        dia : 'lunes',
        cm_de_pene : 30,
        esclavos : Game.creeps
    }

Éste código se traduce en:

Espero que se entienda el ejemplo

1 1 respuesta
Amazon

#224 el undefined asigna un nombre random? (Solo he hecho las 2 primeras partes del tuto)

1 1 respuesta
AikonCWD

#225 Sí, meteme en ese grupo de Telegram. A ver si tiene mas exito que el de Slack. Mi nick imagino que lo adivinarás.

1 respuesta
Amazon

#226 no, no te encuentro... no te lo has hecho aún? xD

Si sí tienes, asígnate un alias en config

Ardi

Diossss tuve el año pasado ingieneria de software en teleco un proyecto de base de datos en java y me pongo a leer los comentarios y me dan ganas de ponerme pero le cogi una mania a java de cojones a ver si para el dia 5 que acabo los examenes lo pruebo y recuerdo un poco el tema

1 respuesta
Amazon

#228 es que esto es javascript no java

D:

1 respuesta
ZaO

#218 Ese código tiene errores, te dejo un ejemplo para lo que quieres hacer.

var creeps = {};
var name = 'name1';

creeps[name] = {energy:5, role: 'soldier'};

name = 'name2';

creeps[name] = {energy:1, role: 'healer'};

Con esto el objecto creeps tiene 2 creep con clave name1, name2 y su correspondientes objectos.

Deigaz

¿Hay alguna forma de ejecutar código fuera del loop?

1 respuesta
MartiONE

#231 Cuando declaras los require solo se ejecuta una vez, asi que supongo que fuera del loop es un 1-time.

2 respuestas
Deigaz

#232 estube mirando eso, pero los logs de consola en esa zona me los pasaba cada poco :/

Ardi

#229 yaya pero por lo que vais posteando y tal no es igual pero mucha de la sintaxis es la misma y antes he leido lo de las "hashtable" que eso si que me dio dolores de cabeza en su dia xD, aun asi para mi me parece un buen juego para picarse si sabes programar

1 respuesta
EnderFX

#232 Sólo se ejecuta una vez porque se cachea, subsecuentes llamadas devolverán la instancia cacheada del módulo requerido.

OjO, que he estado leyendo por ahí, y los requires son de lo que más CPU time consume. En un mundo ideal estaría guay montarlo por carpetas y tal, pero me temo que vamos a tener que ponernos como objetivo la eficiencia por encima del bonitismo.

#234 La sintaxis es parecida pero no. JS es débilmente tipado. No haces int x, haces var x, que puede ser un int ahora, y un string más adelante. No declaras el tipo de retorno de las funciones, sólo pones funciton(), y una hashtable al final no es más que un objeto. x = {a: 1, b: 2} y ya puedes hacer x.a y x.b, como si de un objeto (instancia de clase Java) se tratase, así como iterar por las keys. Por último, hay pocos tipos primitivos (int es Number, y float es Number también), y prácticamente todo es un objeto, hasta una función.

1 respuesta
AikonCWD

Llevo 30 minutos con un error y resulta que estaba haciendo:

var hola = [];
hola.push = "camiones";

//En lugar de:
hola.push("camiones");

Lo jodido es que la consola no devolvía error y me he vuelto loco :psyduck:

#235 En tu definición del JS te has olvidado mencionar que JS es una puta mierda.

2 respuestas
EnderFX

#236 Eso pensaba yo hace tres añitos. Date un par de semanas y me cuentas :D

Btw, este finde no voy a poder avanzar mucho, y sigo bastante pez en el juego, pero si puedo echar una mano a alguien con JS no tengo problema :)

1 respuesta
Saiko9

#236 Google no opina lo mismo.

JS en temas de eficiencia y demás creo que es bastante mierda (o eso dicen al compararlo con otros) pero ni me he informado ni me voy a informar, en el tema de have fun with coding es el puto mejor lenguaje sin duda alguna.

1 respuesta
n3krO

#238 A mi no me divierte definir "var" para todo >_>

AikonCWD

#237 Ayudame plz, quiero llenar una zona de la memoria con los sources disponibles en el mapa, lo intento así:

    for(var n in sources) {
        Memory.colony.sources = {
            sources[n].id : 'sin minero'
        }
    }

Quiero que el nombre de la key sea dinámico. Somo se tendría que hacer?

1 respuesta