-
Notifications
You must be signed in to change notification settings - Fork 0
/
event.js
142 lines (126 loc) · 4.21 KB
/
event.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
//Funciones relacionadas con los posibles eventos que pueden ocurrir en el juego.
var db = require("./mysql").baseP;
const { logError } = require("./debug");
var check = require("./utility");
/**
* Devuelve un evento aleatorio
*/
async function getRandomEvent()
{
//Obtener número de eventos almacenados
let consulta = "SELECT Count(id) FROM events GROUP BY id";
let nElem;
try {
let [rows,fields] = await db.query(consulta);
nElem = rows[0]["Count(id)"];
}
catch(err) {
logError("Error de consulta a la hora de obtener el número de eventos en getRandomEvent: "+err,'event');
return {info:"Error..."};
}
if (nElem > 0){
//Escoger un número aleatorio entre el 1 y el maximo
let r = check.randBetween(1,nElem);
//Mandar consulta pidiendo evento concreto
return getEvent(r);
}
else return {info:"Error...", res:"ups... No hay eventos?"};
}
/**
* Devuelve el evento especificado
* @param {Number} id
*/
async function getEvent(id)
{
if(check.AntiInjectionNumberField(id,"event"))
{
let consulta = "SELECT data from events where id = "+id;
try {
let [rows,fields] = await db.query(consulta);
if(rows.length == 0){
logError("Error, se ha intentado acceder a un evento inexistente.",'event');
return {info:"Incorrecto", res:"Ese evento no existe"};
}
return {info:"Correcto", res:rows[0]["data"]};
}
catch(algo)
{
logError("Error de consulta en getEvent: "+algo, 'event');
return {info:"Error..."};
}
}
else return {info:"Incorrecto", res:"K COÑO ESTÁS INTENTANTO JOPUTA"};
}
/**
* Devuelve una lista con todos los eventos
*/
async function getEvents()
{
let consulta = "SELECT data from events";
try {
let [rows,fields] = await db.query(consulta);
return {info:"Correcto", res:rows};
}
catch(algo)
{
logError("Error de consulta en getEvents: "+algo, 'event');
return {info:"Error..."};
}
}
/**
* Devuelve los datos de los eventos según un criterio alterado por el favor de los dos grupos sociales.
* @param {Number} fCorpo [-255,255] que indica "lo bien que le caes a las corporaciones"
* @param {Number} fGente [-255,255] que indica "lo bien que le caes a los ciudadanos"
*/
async function EventoAleatorioSegunFavor(fCorpo, fGente)
{
//Van a haber como mucho 2 eventos aleatorios a la vez, uno de cada grupo
var maxProb = 128;
var prob1 = getRandomInt(maxProb);
var prob2 = getRandomInt(maxProb);
let consulta = "";
let consulta2 = "";
if(fCorpo > 0 && fCorpo > prob1)
consulta = "SELECT id from events where tipo = 2";
else if(fCorpo < 0 && -fCorpo > prob1)
consulta = "SELECT id from events where tipo = -2";
if(fGente > 0 && fGente > prob2)
consulta2 = "SELECT id from events where tipo = 1";
else if(fGente < 0 && -fGente > prob2)
consulta2 = "SELECT id from events where tipo = -1";
let ev1,ev2;
try {
if(consulta != "") {
corpoIDs = [];
let [rows,fields] = await db.query(consulta);
rows.forEach(elem => { corpoIDs.push(elem["id"]) });
if(corpoIDs.length > 0) {
id1 = getRandomFromArray(corpoIDs);
ev1 = getEvent(id1)["res"];
}
}
if(consulta2 != "") {
genteIDs = [];
let [rows,fields] = await db.query(consulta2);
rows.forEach(elem => { genteIDs.push(elem["id"]) });
if(genteIDs.length > 0) {
id2 = getRandomFromArray(genteIDs);
ev2 = getEvent(id2)["res"];
}
}
return {info:"correcto", res:[ev1,ev2]};
}
catch(err) {
logError("Error de consulta a la hora de obtener los eventos posibles en EventoAleatorioSegunFavor: "+err,'event');
return {info:"Error..."};
}
}
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
function getRandomFromArray(array)
{
return array[getRandomInt(array.length)];
}
module.exports.getEvent = getEvent;
module.exports.getEvents = getEvents;