PUBG: Recuento de victorias

P

Buenas os propongo una idea para escribirles todos a pubg.Ya que el ranking se resetea no sabes cuantas partidas has ganado en todo el tiempo que has jugado, y se me a ocurrido de que pueden poner una camiseta con un pollo y que ponga el numero de tus victorias y se vaya cambiando cada vez que ganes una partida tanto en solo duo o squad.
Que os parece la idea?

ZorkaHearts

https://documentation.playbattlegrounds.com/en/players-endpoint.html tal vez te interesa. pero la información la tienen

2 respuestas
P

Eso que es exactamente?

1 respuesta
ZorkaHearts

#3 Es la API de desarrolladores de PUGB, la información de pugb es "publica", por lo que si simplemente quieres saber tus estadísticas puedes usar sus herramientas para saberlo, tu idea de incluir un contador de partidas ganadas totales a mi personalmente no me parece util, y no se si ellos lo implementen algún día. Por lo que si lo quieres y no quieres ir sumando cada vez que quieras saberlo, lo mejor es que te hagas un programita fácil que te sume por ti accediendo a su API.

RandomZ

#2

2 2 respuestas
ZorkaHearts

#5 Mis dieses.

Luego intento explicarme mejor que ando en el trabajo. (Puede ser un buen inicio para que algunos entren en el maravilloso mundo de la programación)

P

Ok gracias ya me dices

B

#5 Qué no entiendes de eso? has programado alguna vez?

fracarro

soy programador.. asdsahhre kmasdiomjnn dehoi ui " " hds

1
gfcn

Y que mas da las partidas que ganes? Tambien que salga como las ganas, si eres una rata setera o vas a lo rambo.

2 respuestas
wiFlY

#10 y contra que clase de gente ganas también. Y con que armas y cuantos fps... Pedazo marcador iba a salir.

Yo lo que no vería mal es un starttack en las armas. Con lo que la gente se ralla con el tema de las kills creo que podría gustar.

2 respuestas
Pintado
#11wiFlY:

es un starttack

Para que quieres uno de estos encima de un arma? En serio a veces no hay quien os entienda o soy mu mayor para estas cosas quizas.....

2 1 respuesta
wiFlY

#12 joder, para los cierres de los círculos que a veces estoy en una casa rateando y me entra el hambre...

1
ZorkaHearts

#11 https://documentation.playbattlegrounds.com/en/telemetry-events.html#telemetry-events con esto también podrías sacartelo.

1 respuesta
P

#10 yo solo e dao una idea que pienso que estaria bien,no solo por ver tu marcador si no el de los demas si llevasen la camiseta...yo pienso que estaria bien,y de eso de ganar como una rata es una mierda todos emos sido nobs y sabemos que asi no se gana,hay que ir a cuello.Pero bueno si eres rambo o una rata la ganas da igual que mates 1 5 o 10 ya es una victoria por sobrevivir#10

P

#14 si ya se que se puede averiguar asi si me da igual saberlo solo es que estaria bien lo de las camisetas,por ejemplo matas a uno que lleva 50,100 partidas ganadas y sabes que estas matando a una persona que lleva horas jugadas y es bueno...porque aun hay gente que lleva meses y no a ganado ni una

abE

https://pubg.op.gg/ lo mismo que pone #2 ""MAS O MENOS"" si no has estudiao pogramasión.

PD: no?

P

Pero hay no sale el total..de las ganadas desde la primera partida ese es el mismo marcador que el juego

1 respuesta
wiFlY

#18 tendrías que sumar todas las temporadas.

Si mal no recuerdo en esa web no aparecen las Kills que llevas y en el juego si, pero es básicamente porque han decidido que esos stats son los que deben poner.

ZorkaHearts

Bueno voy a explicar ligeramente más en profundidad mi comentario de antes, no voy ha hacer el código pero con lo que te ponga aquí, y si quieres le pongas un mínimo de ganas lo sacas seguro! son conocimientos de HTML y Javascript por lo que no te costara mucho encontrar mil cosas por Internet para ayudarte.

Primero lo que tendremos que hacer es conseguir nuestra propia API key aqui, tendrás que registrarte y ahí podrás obtener la pestaña my apps cuando estés conectado tu API key

después con un editor de texto o con tu propio IDE en caso de que tengas alguno creas un archivo con extension HTML, por ejemplo "index.html"

y ahí empiezas a crear tu código.
Estructura basica de un HTML

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Tu titulo aqui</title>

    <script type="text/javascript">
    AQUI TU SCRIPT JS
    </script>
</head>

<body>
   AQUI TU HTML
</body>
</html>

Ahora como concepto necesitas tu playerID que para bluehole no es tu nick como te puedes imaginar. Pero por suerte tenemos esta ruta de la API: "https://api.playbattlegrounds.com/shards/pc-eu/players?filter[playerNames]=tuNick" (Ojo cambiar el shard en caso de que no seas jugador de pc en eu, tan simple como pc-na o xbox-eu como ejemplo de otros shards)

La salida sera algo como:

spoiler

De esa salida necesitamos el id

Para sacar tus kills tendremos que navegar por la información de todas las season. para eso tendremos que usar esta ruta: "https://api.playbattlegrounds.com/shards/pc-eu/players/tuPlayerId/seasons/laSeasonQueBuscas"

la salida sera algo tipo:

spoiler

te ayudo dándote ya todas las IDs de las seasons

	var seasonsId = ["division.bro.official.2017-beta",
	                 "division.bro.official.2017-pre1",
	                 "division.bro.official.2017-pre2",
	                 "division.bro.official.2017-pre3",
	                 "division.bro.official.2017-pre4",
	                 "division.bro.official.2017-pre5",
	                 "division.bro.official.2017-pre6",
	                 "division.bro.official.2017-pre7",
	                 "division.bro.official.2017-pre8",
	                 "division.bro.official.2017-pre9",
	                 "division.bro.official.2018-01",
	                 "division.bro.official.2018-02",
	                 "division.bro.official.2018-03",
	                 "division.bro.official.2018-04",
	                 "division.bro.official.2018-05",
	                 ]; 

Ahora los conocimientos que necesitas,

peticiones AJAX

llamada = 0;
function enviarPeticionAJAX() {
		xhr = new XMLHttpRequest();
		xhr.onload= gestionarRespuesta;
		xhr.open('GET', 'https://api.playbattlegrounds.com/shards/pc-eu/players/' + playerId + '/seasons/' + seasonsId[llamada], true);
		xhr.setRequestHeader("Accept", "application/vnd.api+json");
		xhr.setRequestHeader("Authorization", "Bearer " + apiKey);
		xhr.send(null);
		llamada++
	}
	function gestionarRespuestaPlayerId(evento) {		
		if(xhr.status==200 || xhr.status==304){
			var respuesta_json = xhr.responseText;

		var objeto_json = JSON.parse(xhr.responseText);
		
		AQUI PONES LO QUE QUIERAS HACER CON LAS LLAMADAS
	}
	else{
		AQUI TE HA FALLADO LA RESPUESTA
	}
	
}

Conocimiento de objetos, el objeto_json sera un objeto que tiene la respuesta de la llamada, usando . accedes a las propiedades. por ejemplo para acceder a tus wins en duofpp, tendrias que hacer objeto_json.data.attributes.gameModeStats.duo-fpp.wins (Es muy sencillo)

Conocimiento de variables globales y locales. una variable solo esta accesible desde su entorno y los hijos de este, por lo que si quieres hacer un sumatorio de wins por ejemplo tendras que:


//Inicias tu variable fuera de la funcion
var winsTotales = 0;
//tu funcion anterior
function gestionarRespuestaPlayerId(evento) {		
		if(xhr.status==200 || xhr.status==304){
			var respuesta_json = xhr.responseText;

		var objeto_json = JSON.parse(xhr.responseText);
		
                    //Al no crearla usa la variable winsTotales que creaste fuera, el signo += es solo para sumar a la variable lo que quieras. equivalente a winsTotals 
                    // = winsTotales + loQueQuierasSumar
		winsTotales += objeto_json.data.attributes.gameModeStats.duo-fpp.wins +
                                              objeto_json.data.attributes.gameModeStats.squad-fpp.wins +
                                              objeto_json.data.attributes.gameModeStats.solo-fpp.wins +
                                              objeto_json.data.attributes.gameModeStats.solo.wins +
                                              objeto_json.data.attributes.gameModeStats.duo.wins +
                                              objeto_json.data.attributes.gameModeStats.squad.wins;

	}
	else{
		AQUI TE HA FALLADO LA RESPUESTA
	}
	
}

como lanzar una funcion en el HTML:

	<input id='botonStats' type='button' onclick='enviarPeticionAJAX();'
		value="Obtener stats" />

Como modificar el DOM (el html que estas viendo) desde JS:

En tu HTML

	<div id='total'></div>

En tu JS:

	document.getElementById('total').innerHTML = winsTotales;

Hay mil formas de hacer esto, con mas y menos estilo de código, y lo que he dicho no es dogma, pero si no tienes experiencia puede ser un buen primer proyecto de inicio a la programación web, si te falla algo coméntame por aquí

PD1: Cuidado que te permiten en un principio 10 llamadas al minuto, puede que te peten llamadas por eso.
PD2: En caso de que hagan bien su trabajo, tendrán algún tipo de middleware Cors(No voy a explicar esto que es), pero si estas abriendo la web desde tu explorador de archivo haciendo doble click puede que te penten las llamadas por algo que diga algo así como no Origin compatible o por el estilo, me comentas por aquí si te pasa. abriendo la consola de desarrolladores desde tu explorador web antes de que hagas la llamada te saldra el error.

3 1 respuesta
SpiuK

#20 igual me animo mañana a hacerlo que tengo todo esto muy aparcado y me encantaría refrescar... Pero nunca he tocado ajax

1 1 respuesta
ZorkaHearts

#21 Si por lo que sea te surge alguna duda o problemilla no dudes en enviarme un PM o contestar por aquí ;)

Mucho animo