їPor quй? OnPlayerKeyState
#1

Buenas(os) dнas/tardes/noches comunidad, tengo una pregunta... he elaborado y terminado el sistema de negocios dinбmicos y sus funciones, entre todo hay un ъnico bug, el cual les contarй y espero que alguien me ayude... en verdad, esto me tiene fastidiado, disculpen las molestias y darй +rep a quiйn me ayude con lo siguiente.

Para entrar y salir de negocios lo tengo en OnPlayerKeyState asн cuando presionas la "Y" ingresas y sales del mismo, esto funciona perfectamente, la cosa estб en que cuando te desconectas dentro del interior de un negocio y tratas de salir no pasa absolutamente nada, no te sale ni nada... entonces dejarй el cуdigo, en rojo marcarй en donde tiene que estar el error ya que es lo que detecta si estбs dentro del negocio para salir.

Код:
			for(new n = 0; n < sizeof(InformacionNegocio_); n ++)
			{
				if(IsPlayerInRangeOfPoint(playerid, 1.5, InformacionNegocio_[n][nPosX], InformacionNegocio_[n][nPosY], InformacionNegocio_[n][nPosZ]))
				{
					if(!InformacionNegocio_[n][nPuerta]) return GameTextForPlayer(playerid, "~r~Cerrado", 500, 1);
					if(InformacionJugador_[playerid][pAdmin] != 0 || InformacionNegocio_[n][nSQLID] != InformacionJugador_[playerid][pNegocio][0] && InformacionNegocio_[n][nSQLID] != InformacionJugador_[playerid][pNegocio][1] && InformacionNegocio_[n][nSQLID] != InformacionJugador_[playerid][pNegocio][2] && InformacionNegocio_[n][nSQLID] != InformacionJugador_[playerid][pNegocio][3])
					{
						if(GetPlayerMoney(playerid) < InformacionNegocio_[n][nPrecioEntrada]) return SendClientMessage(playerid, COLOR_ROJO, "* No tienes dinero suficiente para ingresar a este negocio.");
						QuitarDineroPlayer_(playerid, InformacionNegocio_[n][nPrecioEntrada]);
					}
					new Query[126];
					if(InformacionNegocio_[n][nDinero] < 50000)
					{
					    InformacionNegocio_[n][nDinero] += InformacionNegocio_[n][nPrecioEntrada];
						format(Query, sizeof(Query), "UPDATE ev_negocios SET nDinero = %d WHERE nSQLID = %d", InformacionNegocio_[n][nDinero], InformacionNegocio_[n][nSQLID]);
						mysql_function_query(MySQL, Query, true, "OnQueryFinish_", "ii", 0, playerid);
					}
					CargarObjetos(playerid), InformacionJugador_[playerid][pEnNegocio] = n;

					_SetPlayerPosEx(playerid, InformacionNegocio_[n][nIntX], InformacionNegocio_[n][nIntY], InformacionNegocio_[n][nIntZ], 0, InformacionNegocio_[n][nInterior], InformacionNegocio_[n][nSQLID]);
					
					format(Query, sizeof(Query), "UPDATE ev_cuentas SET EnNegocio = %d WHERE Nombre = '%s'", InformacionNegocio_[n][nSQLID], NombreJugador(playerid));
					mysql_function_query(MySQL, Query, true, "OnQueryFinish_", "ii", 0, playerid);
					return 1;
				}
				else if(IsPlayerInRangeOfPoint(playerid, 2.0, InformacionNegocio_[n][nIntX], InformacionNegocio_[n][nIntY], InformacionNegocio_[n][nIntZ]) && InformacionNegocio_[n][nInterior] == GetPlayerInterior(playerid) && InformacionNegocio_[n][nSQLID] == GetPlayerVirtualWorld(playerid))
				{
					if(!InformacionNegocio_[n][nPuerta]) return GameTextForPlayer(playerid, "~r~Cerrado", 500, 1);
					CargarObjetos(playerid), InformacionJugador_[playerid][pEnNegocio] = -1;

					new Query[90];
					format(Query, sizeof(Query), "UPDATE ev_cuentas SET EnNegocio = -1 WHERE Nombre = '%s'", NombreJugador(playerid));
					mysql_function_query(MySQL, Query, true, "OnQueryFinish_", "ii", 0, playerid);

					_SetPlayerPosEx(playerid, InformacionNegocio_[n][nPosX], InformacionNegocio_[n][nPosY],InformacionNegocio_[n][nPosZ], 0, 0, 0);

					InformacionJugador_[playerid][pInterior] = 0, InformacionJugador_[playerid][pVirtualWorld] = 0;
					return 1;
				}
			}
Reply
#2

Estas guardando el world en el que se encuenta el jugador?? puede ser que al momento de conectarte el jugador aparesca en el world 0 y por eso no pasa nada
Reply
#3

Quote:
Originally Posted by FelipeAndres
Посмотреть сообщение
Estas guardando el world en el que se encuenta el jugador?? puede ser que al momento de conectarte el jugador aparesca en el world 0 y por eso no pasa nada
Sн, guarda el VirtualWorld y lo asigna.
Reply
#4

Код:
else if(IsPlayerInRangeOfPoint(playerid, 2.0, InformacionNegocio_[n][nIntX], InformacionNegocio_[n][nIntY], InformacionNegocio_[n][nIntZ]) && InformacionNegocio_[n][nInterior] == GetPlayerInterior(playerid) && InformacionNegocio_[n][nSQLID] == GetPlayerVirtualWorld(playerid)
eso deberia ser asi ?, solo pregunto por que ahi dice SQLID, en vez de algo como nMundo o similar
Reply
#5

Te explico, a la hora de que el jugador entre a un interior y desconecte, deberнa de guardar la ID & que estб dentro de un interior, para asн cuando conecte, este pueda salir tranquilamente.
Reply
#6

Quote:
Originally Posted by Zo0mer
Посмотреть сообщение
Te explico, a la hora de que el jugador entre a un interior y desconecte, deberнa de guardar la ID & que estб dentro de un interior, para asн cuando conecte, este pueda salir tranquilamente.
Es que lo guarda compaсero!
Reply
#7

Quote:
Originally Posted by mcreed
Посмотреть сообщение
Код:
else if(IsPlayerInRangeOfPoint(playerid, 2.0, InformacionNegocio_[n][nIntX], InformacionNegocio_[n][nIntY], InformacionNegocio_[n][nIntZ]) && InformacionNegocio_[n][nInterior] == GetPlayerInterior(playerid) && InformacionNegocio_[n][nSQLID] == GetPlayerVirtualWorld(playerid)
eso deberia ser asi ?, solo pregunto por que ahi dice SQLID, en vez de algo como nMundo o similar
Sн, ya que el virtualworld del jugador del negocio es el mismo que el de la base de datos(id)
Reply
#8

Lo solucionй, el error estaba acб InformacionJugador_[playerid][pEnNegocio] = n;

en vez de n; que le asignaba el negocio 0 le puse InformacionNegocio_ bla bla nSQLID y listo... ya funciona todo. gracias
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)