їCуmo lo hago?
#1

Buenas, esto de creaciуn de gamemodes desde 0 es un poco fastidioso, pero divertido. Cree un comando para editar todas las funciones de los negocios(interior, dinero, ect) y vender un negocio comprado, el punto es que lo vende perfectamente, lo que pasa es que quiero hacer que al vender el negocio antes de que se venda busque con el nombre del dueсo del negocio y la variable de Negocio que almacena la ID del negocio se ponga en 0, me explico;

Cuando un usuario compra un negocio se le guarda en la cuenta en el campo Negocio la ID del negocio, asн cuando vaya a editar su negocio si el nъmero que estб ahн es la ID del negocio te deje, es la detecciуn, bueno quiero que eso se ponga en 0, este es el comando у mбs bien una parte, el comando es muy largo y lo que importa es esta parte;

Код:
	else if(!strcmp(params[0], "vender", true))
	{
		for(new h = 0; h < sizeof(NegocioInfo); h ++)
		{
			if(IsPlayerInRangeOfPoint(playerid, 5.0, NegocioInfo[h][nPosX], NegocioInfo[h][nPosY], NegocioInfo[h][nPosZ]))
			{
				NegocioInfo[h][nEstado] = 0, NegocioInfo[h][nPuerta] = 0;
				strmid(NegocioInfo[h][nPropietario], "El Estado", 0, strlen("El Estado"), 255);
				GuardarNegocio_(h), ActualizarTextoNegocio(h);
				return 1;
			}
		}
		SendClientMessage(playerid, COLOR_ROJO, "* No estбs cerca de ningъn negocio.");
	}
Cuando compras un negocio, esto sucede con el campo Negocio;

Код:
PlayerInfo[playerid][pNegocio] = NegocioInfo[h][nSQLID];
new
      Query[80];
format(Query, 80, "UPDATE cuentas SET Negocio = %d WHERE Nombre = '%s'", PlayerInfo[playerid][pNegocio], NombreJugador(playerid));
mysql_function_query(TuberiaMYSQL, Query, true, "OnQueryFinish_", "ii", 0, playerid);
Reply
#2

El bucle estб de mбs:

Код:
else if(!strcmp(params[0], "vender", true))
{
	new negocio = PlayerInfo[playerid][pNegocio];
	if(!IsPlayerInRangeOfPoint(playerid, 5.0, NegocioInfo[negocio][nPosX], NegocioInfo[negocio][nPosY], NegocioInfo[negocio][nPosZ])) return SendClientMessage(playerid, COLOR_ROJO, "* No estбs cerca de ningъn negocio.");
	{
		PlayerInfo[playerid][pNegocio] = 0;
		NegocioInfo[negocio][nEstado] = 0, NegocioInfo[negocio][nPuerta] = 0;
		strmid(NegocioInfo[negocio][nPropietario], "El Estado", 0, strlen("El Estado"), 255);
		GuardarNegocio_(negocio), ActualizarTextoNegocio(negocio);
                new Query[80];
		format(Query, 80, "UPDATE cuentas SET Negocio = %d WHERE Nombre = '%s'", PlayerInfo[playerid][pNegocio], NombreJugador(playerid));
                mysql_function_query(TuberiaMYSQL, Query, true, "OnQueryFinish_", "ii", 0, playerid);
		return 1;
	}
}
Estб de mбs porque, como bien decнs, la variable pNegocio ya almacena el SQLID del negocio, por ende, lo mбs factible es usar su valor para poder conseguir el valor del negocio, y asн no tener que usar ningъn bucle innecesario.
Reply
#3

PHP код:
    else if(!strcmp(params[0], "vender"true))
    {
        new 
h;
        if((
NegocioCercano(playerid)) == -1)
            return 
SendClientMessage(playeridCOLOR_ROJO"* No estбs cerca de ningъn negocio.");
        new 
name[MAX_PLAYER_NAME+1];
        
GetPlayerName(playeridnamesizeof(name));
        
        if(
strcmp(NegocioInfo[h][nPropietario], nametrue))
            return 
SendClientMessage(playeridCOLOR_ROJO"* Este no es tu negocio!");
        
NegocioInfo[h][nEstado] = 0NegocioInfo[h][nPuerta] = 0;
        
        
format(NegocioInfo[h][nPropietario], MAX_PLAYER_NAME"El Estado");
        
ActualizarTextoNegocio(h);
        
        
GuardarNegocio_(h);
        return 
1;
    }
stock NegocioCercano(playerid)
{
    for(new 
0sizeof(NegocioInfo); ++) if(IsPlayerInRangeOfPoint(playerid5.0NegocioInfo[h][nPosX], NegocioInfo[h][nPosY], NegocioInfo[h][nPosZ])) {
         return 
h;
    }
    return -
1;

Yo opino que los bucles a pesar de que puedan verse demбs, son necesarios, por si un negocio se elimina asн no hay que estar reseteando variables (pensando en si estб desconectado) y luego suceden bugs de que quedan llaves entre manos, en cambio asн el sistema estб separado de una cuenta nada mбs por el nombre (y con eso suficiente).
Reply
#4

Lo que pasa es que ese no es el comando del usuario, es un comando administrativo... es un comando para que el administrador venda el negocio de cualquier usuario por si acaso este es baneado o algo, me entienden? el de vender de usuarios lo tengo y funciona genial, pero tengo la duda es con el de administrativo.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)