Greasemonkey script para comprar territorios en ‘Guerra de Pandillas’

November 8th, 2008 | Tags: , , ,

Hace unas semanas varios contactos me invitaron a participar en un nuevo juego que se había publicado en Facebook, “Guerra de Pandillas“. Tras rechazar varias veces las invitaciones, uno, que no se puede resistir a estas tonterías, acabé entrando en el juego.

Una de las opciones que te da el juego para ir prosperando y ganar dinero (como no), es la de comprar territorios (esquinas, tiendas, gimnasios, casinos…). Cada territorio tiene un coste que aumenta con el tiempo y da un beneficio Y cada hora, por ejemplo:

  Esquina Tienda Ciber-Café
Ganancias $50 (por hora) $100 (por hora) $500 (por hora)
Precio $4,000 $8,000 $38,250

A medida que se adquieren propiedades de un mismo tipo, éstas van aumentando su precio. Consecuentemente, y como ocurre con todo, hay que vigilar en que se invierte y cuál es el retorno de la inversión.

Como puede verse en la tabla, en este momento, es lo mismo comprar 1 tienda que 2 esquinas ya que tanto el coste como el rendimiento es el mismo, pero nos salé más beneficioso invertir en un ciber-café que en 5 tiendas o 10 esquinas.

Bueno, al fin y al cabo todo esto se reduce a obtener un sencillo ratio entre precio y ganancias, e invertir siempre en aquellos territorios con un ratio inferior:

  Esquina Tienda Ciber-Café
Ganancias $50 (por hora) $100 (por hora) $500 (por hora)
Precio $4,000 $8,000 $38,250
Ratio Pre/Gan 80 80 76.5

Vemos claramente que el ratio del ciber-café es inferior, por lo tanto ese ha de ser nuestra inversión. dicho ratio también nos indica la cantidad de horas que han de pasar para recuperar la inversión hecha.

Una vez comprado el ciber-café los números cambian, y debemos volver a invertir en esquinas y tiendas (en el juego hay muchas más opciones):

  Esquina Tienda Ciber-Café
Ganancias $50 (por hora) $100 (por hora) $500 (por hora)
Precio $4,000 $8,000 $40,500
Ratio Pre/Gan 80 80 81

Para facilitar las tareas y no tener que hacer cálculos mentales o con una calculadora he programado un pequeño script para Greasemonkey que simplemente añade dicho ratio al lado del precio del territorio y así podemos ver rápidamente dónde debe ir a parar el dinero.

// ==UserScript==
// @name          Guerra de Pandillas - Ratio Territorio
// @namespace     http://biete.com
// @description   get ratio of price and gains
// @description   with getting the ratio of the price of territory and the gains you get from having it, you can
// @description   evaluate what territory you should invest on to maximize your hourly gains. Less the ratio, best investment.
// @include       http://apps.facebook.com/guerra-de-pandillas/*
// ==/UserScript==

var allDivs, thisDiv, text, node, price, gain;

var Territorio = new Array();
	Territorio[0] = 'Esquina';
	Territorio[1] = 'Tienda';
	Territorio[2] = 'Ciber-caf';
	Territorio[3] = 'Gimnasio';
	Territorio[4] = 'Bar';
	Territorio[5] = 'Restaurante';
	Territorio[6] = 'Discoteca';
	Territorio[7] = 'Prost';
	Territorio[8] = 'Centro comercial';
	Territorio[9] = 'Hotel';
	Territorio[10] = 'Casino';

allDivs = document.evaluate('//div[@class="mod_info"]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

for (var i = 0; i < allDivs.snapshotLength; i++) {
	for (var x = 0; x < Territorio.length; x++) {
		if (allDivs.snapshotItem(i).innerHTML.indexOf(Territorio[x]) != -1) {
			thisDiv = allDivs.snapshotItem(i);
			for (var j = 0; j < thisDiv.childNodes.length; j++) {
				node = thisDiv.childNodes[j];
				if (node.nodeName == 'SPAN') {
					if (node.textContent.indexOf('(') != -1) {
						gain = node.textContent.substring(1,node.textContent.indexOf('('));
						gain = gain.replace(/,/g,'');
					}
					else {
						price = node.textContent.substring(1);
						price = price.replace(/,/g,'');
						node.textContent = node.textContent + ' Ratio: ' + eval (price + ' / ' + gain);
					}
				}
			}
		}
	}
}

Espero que os sea de ayuda.

  1. Nico
    November 25th, 2008 at 18:34
    Reply | Quote | #1

    Como pongo esto en el Greasemonkey? 😐
    Gracias!

  2. November 25th, 2008 at 20:31
    Reply | Quote | #2

    En pocos pasos está hecho (asumo que tienes GreaseMonkey instalado en el Firefox):
    – Selecciona la parte de código, desde el // ==UserScript== hasta la última }
    – Botón derecho copiar y luego lo pegas en un documento nuevo del Notepad.
    – Desde el Notepad, “Archivo->Guardar como” y lo guardas con el nombre “pandillas.user.js” en cualquier sitio (p.e. c:\greasemonkey\).
    – Abres el Firefox y desde la carpeta donde has guardado el archivo lo arrastras encima del firefox.
    – Te debe salir una ventana diciendo que ha detectado que estás intentando instalar un nuevo script de GreaseMonkey. Aceptas la instalación y ya está.

    Sólo te falta ir a la página de Territorios en Guerra de Pandillas y recargarla. Deberías ver unos nuevos números en verde que indican el ratio al lado de cada elemento.

    Espero que te sirva.

  3. Nico
    November 25th, 2008 at 23:04
    Reply | Quote | #3

    Gracias! =)
    Ya me funciona :)

    Te hago una consulta, un script para mandar invitaciones a mi pandilla tenes?? :$
    Quería saber si sabías algo de eso, y para el mafia wars (para tener gente en tu mafia) también :$

    Desde ya muchisimas gracias :)

    saludos!

  4. November 26th, 2008 at 08:08
    Reply | Quote | #4

    Me alegro que ya te funcione. No tengo nada más, este lo hice para que me fuera más cómodo saber que debo comprar pero sinceramente no estoy nada metido en el juego (de hecho voy a dejarlo). Cuando busqué en su momento no encontré nada.

    Saludos.

  5. Jose Orozco
    December 21st, 2008 at 06:08
    Reply | Quote | #5

    Le hice unas modificaciones
    Espero les sirva

    // ==UserScript==
    // @name Guerra de Pandillas – Ratio Territorio
    // @namespace http://biete.com
    // @description get ratio of price and gains
    // @description with getting the ratio of the price of territory and the gains you get from having it, you can
    // @description evaluate what territory you should invest on to maximize your hourly gains. Less the ratio, best investment.
    // @include http://apps.new.facebook.com/guerra-de-pandillas/property.php
    // @include http://apps.facebook.com/guerra-de-pandillas/property.php
    // ==/UserScript==

    var allDivs, thisDiv, text, node, price, gain, money;

    var Territorio = new Array();
    Territorio[0] = ‘Esquina’;
    Territorio[1] = ‘Tienda’;
    Territorio[2] = ‘Ciber-caf’;
    Territorio[3] = ‘Gimnasio’;
    Territorio[4] = ‘Bar’;
    Territorio[5] = ‘Restaurante’;
    Territorio[6] = ‘Discoteca’;
    Territorio[7] = ‘Prost’;
    Territorio[8] = ‘Centro comercial’;
    Territorio[9] = ‘Hotel’;
    Territorio[10] = ‘Casino’;

    allDivs = document.evaluate(‘//div[@class=”profilebox_item”]’, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

    for (var i = 0; i < allDivs.snapshotLength; i++) {
    if (allDivs.snapshotItem(i).innerHTML.indexOf(‘Dinero’) != -1) {
    thisDiv = allDivs.snapshotItem(i);
    for (var j = 0; j < thisDiv.childNodes.length; j++) {
    node = thisDiv.childNodes[j];
    if (node.nodeName == ‘SPAN’) {
    if (node.textContent.indexOf(‘$’) != -1) {
    money = node.textContent.substring(node.textContent.indexOf(‘$’) + 1);
    money = money.replace(/,/g,”);
    }
    }
    }
    }
    }

    allDivs = document.evaluate(‘//div[@class=”mod_info”]’, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

    for (var i = 0; i < allDivs.snapshotLength; i++) {
    for (var x = 0; x < Territorio.length; x++) {
    if (allDivs.snapshotItem(i).innerHTML.indexOf(Territorio[x]) != -1) {
    thisDiv = allDivs.snapshotItem(i);
    for (var j = 0; j < thisDiv.childNodes.length; j++) {
    node = thisDiv.childNodes[j];
    if (node.nodeName == ‘SPAN’) {
    if (node.textContent.indexOf(‘(‘) != -1) {
    gain = node.textContent.substring(1,node.textContent.indexOf(‘(‘));
    gain = gain.replace(/,/g,”);
    }
    else {
    price = node.textContent.substring(1);
    price = price.replace(/,/g,”);
    node.innerHTML = node.innerHTML + ‘ Ratio: ‘ + eval (price + ‘ / ‘ + gain) + ” + ‘Faltan: $’ + eval ( price + ‘ – ‘ + money ) ;
    }
    }
    }
    }
    }
    }

  6. March 2nd, 2009 at 19:00
    Reply | Quote | #6

    Muy bueno, lástima que no compre automáticamente la del mejor ratio hasta que no quede dinero. Acortaría las cosas.
    Otro script chulo sería uno que, cuando se atacara a alguien, repitiera el ataque mientras fuese posible (es decir, mientras quede estamina, salud,…)

  7. March 2nd, 2009 at 19:47
    Reply | Quote | #7

    Lo que comentas estaría bien, pero la idea no era hacer un script que realizara acciones por si solo, sino simplemente ayudar con algunas indicaciones visuales. Particularmente nunca he sido partidario de automatizar tareas (en lo que se refiere a juegos online) que proporciones una ventaja al usuario que lo tenga frente a otro. De hecho en muchos de los MMORPG está prohibida cualquier automatización.

    PD: dejé de jugar al guerra de pandillas hace tiempo, considero que es un juego que evoluciona muy mal.

    Saludos.

  8. Johan
    May 23rd, 2009 at 17:33
    Reply | Quote | #8

    Hola esta muy bueno el script, pero me gustaria saber si hay uno para comprar automaticamente territorios colocar la cantidad de teritorios a comprar o algo asi, porque es muy tedioso comprar de uno por uno, en vez de comprar unos 10 de una vez XD

  9. May 25th, 2009 at 20:31
    Reply | Quote | #9

    Hola Johan.

    En su momento (dejé el juego hace ya muchos meses) no había ninguno, y tampoco quise hacerlo que comprara automáticamente, ya que habitualmente la automatización de scripts está prohibida. Algunos otros comentaron lo mismo y no sé si alguien lo llegó a modificar (no creo que sea muy difícil).