[DUDA]Como hacer este codigo mas simple
#1

Hola gente de samp, hoy pensando como hacer un concesionario se me ocurrio pero es demasiado codigo y seria muy lento y muy pesado, nose si alguno sabe hacerlo mas rapido de lo que lo estoy haciendo una forma simple de hacer un concesionario os dejo el codigo:
pawn Код:
#include <a_samp>

#define DIALOG_VEHICLE 5
#define FILTERSCRIPT

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    AddStaticVehicle(602,564.5000000,-1290.4000200,17.1000000,0.0000000,93,27); //Alpha-ID 1
    AddStaticVehicle(402,558.2999900,-1290.0999800,17.1000000,0.0000000,105,30); //Buffalo-ID 2
    //AddStaticVehicle(429,561.2000100,-1290.4000200,17.0000000,0.0000000,245,245); //Banshee-ID 3
    //AddStaticVehicle(541,555.4000200,-1290.0999800,16.9000000,0.0000000,156,156); //Bullet-ID 4
    //AddStaticVehicle(415,552.4000200,-1290.1999500,17.0000000,0.0000000,109,108); //Cheetah-ID 5
    //AddStaticVehicle(480,549.5000000,-1290.3000500,17.1000000,0.0000000,157,152); //Comet-ID 6
    //AddStaticVehicle(587,546.5000000,-1290.3000500,17.0000000,0.0000000,32,32); //Euros-ID 7
    //AddStaticVehicle(411,543.5000000,-1290.0000000,16.9000000,0.0000000,164,167); //Infernus-ID 8
    //AddStaticVehicle(603,540.2999900,-1289.9000200,17.2000000,0.0000000,88,89); //Phoenix-ID 9
    //AddStaticVehicle(506,537.0000000,-1289.6999500,17.0000000,0.0000000,76,117); //Super GT-ID 10
    //AddStaticVehicle(451,533.9000200,-1289.6999500,17.0000000,0.0000000,32,32); //Turismo-ID 11
    //AddStaticVehicle(477,530.2000100,-1289.8000500,17.1000000,0.0000000,105,30); //ZR-350-ID 12
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

#else

main()
{
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
}

#endif

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER && GetPlayerVehicleID(playerid) == 1) // Player entered a vehicle as a driver
    {
        ShowPlayerDialog(playerid, DIALOG_VEHICLE, DIALOG_STYLE_MSGBOX, "Alpha", "їQuieres comprate este coche? \nSu precio son 200000$", "Si", "No");
    }
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(response)
    {
    switch(dialogid)
        {
        case DIALOG_VEHICLE:
            {
                if(GetPlayerMoney(playerid) < 200000)
                {
                SendClientMessage(playerid, 0xFFFFFF, "No tienes suficiente dinero julandron");
                RemovePlayerFromVehicle(playerid);
                return 1;
                }
                {
                if(GetPlayerMoney(playerid) > 200000)
                {
                GivePlayerMoney(playerid, -200000);
                CreateVehicle(602,557.5,-1266.0,17.24,82.2873,0,1,0);
                return RemovePlayerFromVehicle(playerid);
                }
                }
            }
        }
    }
return RemovePlayerFromVehicle(playerid);
}
Reply
#2

La verdad es que lo tienes bien hecho, podria mejorarse un poco pero es nulo el rendimiento comparado con el mejorado seria tabular bien
Reply
#3

identacion e tienes { } a mas

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(response)
    {
        switch(dialogid)
        {
            case DIALOG_VEHICLE:
            {
                if(GetPlayerMoney(playerid) < 200000)
                {
                    SendClientMessage(playerid, 0xFFFFFF, "No tienes suficiente dinero julandron");
                    RemovePlayerFromVehicle(playerid);
                    return 1;
                }
                if(GetPlayerMoney(playerid) >= 200000)
                {
                    GivePlayerMoney(playerid, -200000);
                    CreateVehicle(602,557.5,-1266.0,17.24,82.2873,0,1,0);
                    return RemovePlayerFromVehicle(playerid);
                }
            }
        }
    }
    return RemovePlayerFromVehicle(playerid);
}
Reply
#4

El problema esque tendria que hacer... pensando que son cerca de 250 vehiculos en venta serian 250 codigos iguales, creo que se podria hacer para que cada uno tubiera su precio y tal pero nose como simplificarlo...
buscare si se me ocurre lo posteo y hago un tuto XD
Reply
#5

Yo lo que hice fue esto cuando hice el sistema de coches por catalogo

Cree una funciуn propia:

pawn Код:
forward CrearVehiculo(playerid,IdAuto, Float:PosX, Float:PosY, Float:PosZ ,Float:Angulo, Color1, Color2, Valor);
public CrearVehiculo(playerid, IdAuto, Float:PosX, Float:PosY, Float:PosZ ,Float:Angulo, Color1, Color2, Valor)
{

    return 1;
}
Y para llamarlo podrнas usar algo asн:

pawn Код:
CrearVehiculo(playerid, 602, x, y, z ,Angulo, Color1, Color2, 200000);//200000 es el valor
Код:
playerid//El jugador que esta comprando el coche
602//Id del coche a comprar
x//Posicion X (la obtiene del jugador, si quieres indicar una es cosa tuya)
y//Posicion Y (la obtiene del jugador, si quieres indicar una es cosa tuya)
z//Posicion Z (la obtiene del jugador, si quieres indicar una es cosa tuya)
Angulo//Angulo (la obtiene del jugador, si quieres indicar una es cosa tuya)
Color1//Color random (puedes definir los colores que quieras)
Color2//Color random (puedes definir los colores que quieras)
200000//Precio (Definelo a tu gusto)
El OndialogResponde lo dejarнa asн:

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(response)
    {
    switch(dialogid)
    {
    case DIALOG_VEHICLE:
    {
    new Float:x, Float:y, Float:z, Float:Angulo;
    new Color1= random (100);//No recuerdo el maximo de colores...
    new Color2= random(100);//No recuerdo el maximo de colores...
    GetPlayerPos(playerid, x, y, z);
    CrearVehiculo(playerid, 602, x, y, z ,Angulo, Color1, Color2, 200000);//200000 es el valor
    }
    }
    }
    return 1;
}

Y para ahorrar algunas lineas el public que te pasй quedarнa asн:

pawn Код:
forward CrearVehiculo(playerid,IdAuto, Float:PosX, Float:PosY, Float:PosZ ,Float:Angulo, Color1, Color2, Valor);
public CrearVehiculo(playerid, IdAuto, Float:PosX, Float:PosY, Float:PosZ ,Float:Angulo, Color1, Color2, Valor)
{
    if(GetPlayerMoney(playerid) > Valor)
    {
    CrearVehiculo(playerid, 602, PosX, PosY, PosZ ,Angulo, Color1, Color2, Valor);//200000 es el valor
    SendClientMessage(playerid, 0xFFFFFF, "Felicidades!, tu nuevo auto esta listo para usarse.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid, 0xFFFFFF, "No tienes suficiente dinero julandron");
    RemovePlayerFromVehicle(playerid);
    }
    return 1;
}
Reply
#6

De todas formas la funcion que has hecho requeriria una por cada coche del catalogo, unas 200 y ademas no aсadiria al .ini del jugador el coche que tiene.
Aun ando pensando como hacerlo pero no se me ocurre nada
Reply
#7

No necesariamente:

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(response)
    {
    switch(dialogid)
    {
    case DIALOG_VEHICLE:
    {
    new Float:x, Float:y, Float:z, Float:Angulo;
    new Color1= random (100);//No recuerdo el maximo de colores...
    new Color2= random(100);//No recuerdo el maximo de colores...
    GetPlayerPos(playerid, x, y, z);
    switch(DIALOG_VEHICLE)
    {
    case 400:    CrearVehiculo(playerid, 400, x, y, z ,Angulo, Color1, Color2, 200000);//200000 es el valor
    case 401:    CrearVehiculo(playerid, 401, x, y, z ,Angulo, Color1, Color2, 200000);//200000 es el valor
    }
    }
    }
    }
    return 1;
}
Lo del guardado depende de tu gm.
Reply
#8

Pero el dialogo esta hecho para solo un coche ahi tambien tendria el problema, sea el coche que sea me saltaria el mismo comentario
Reply
#9

Claro, por eso el switch, se obtendrнa la id y de hay pasarнa al case de la ID que tu definas.

Seria ir subiendo los cases y las ids de los coches. Ejemplo:

pawn Код:
case 400:    CrearVehiculo(playerid, 400, x, y, z ,Angulo, Color1, Color2, 200000);//200000 es el valor
case 401:    CrearVehiculo(playerid, 401, x, y, z ,Angulo, Color1, Color2, 200000);//200000 es el valor
case 402:    CrearVehiculo(playerid, 402, x, y, z ,Angulo, Color1, Color2, 200000);//200000 es el valor
case 403:    CrearVehiculo(playerid, 403, x, y, z ,Angulo, Color1, Color2, 200000);//200000 es el valor
//Y asн sucesivamente.
Reply
#10

Que mas puedes pedir...

pawn Код:
#include <a_samp>

#define DIALOG_VEHICLE 5

new check_ids[2];

public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    check_ids[0] = AddStaticVehicle(602,564.5000000,-1290.4000200,17.1000000,0.0000000,93,27); //Alpha-ID 1
    AddStaticVehicle(402,558.2999900,-1290.0999800,17.1000000,0.0000000,105,30); //Buffalo-ID 2
    AddStaticVehicle(429,561.2000100,-1290.4000200,17.0000000,0.0000000,245,245); //Banshee-ID 3
    AddStaticVehicle(541,555.4000200,-1290.0999800,16.9000000,0.0000000,156,156); //Bullet-ID 4
    AddStaticVehicle(415,552.4000200,-1290.1999500,17.0000000,0.0000000,109,108); //Cheetah-ID 5
    AddStaticVehicle(480,549.5000000,-1290.3000500,17.1000000,0.0000000,157,152); //Comet-ID 6
    AddStaticVehicle(587,546.5000000,-1290.3000500,17.0000000,0.0000000,32,32); //Euros-ID 7
    AddStaticVehicle(411,543.5000000,-1290.0000000,16.9000000,0.0000000,164,167); //Infernus-ID 8
    AddStaticVehicle(603,540.2999900,-1289.9000200,17.2000000,0.0000000,88,89); //Phoenix-ID 9
    AddStaticVehicle(506,537.0000000,-1289.6999500,17.0000000,0.0000000,76,117); //Super GT-ID 10
    AddStaticVehicle(451,533.9000200,-1289.6999500,17.0000000,0.0000000,32,32); //Turismo-ID 11
    check_ids[1] = AddStaticVehicle(477,530.2000100,-1289.8000500,17.1000000,0.0000000,105,30); //ZR-350-ID 12
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{

    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER) // Player entered a vehicle as a driver
    {
        new d =  GetPlayerVehicleID(playerid);

        if(d >= check_ids[0] && d <= check_ids[1]) // Es un vehнculo en concesionario..
            ShowPlayerDialog(playerid, DIALOG_VEHICLE, DIALOG_STYLE_MSGBOX, "Alpha", "їQuieres comprate este coche? \nSu precio son 200000$", "Si", "No");
    }
    return 1;
}

stock GetPriceByModel( modelid )
{
    switch(modelid)
    {
        case 602: return 200000; // El precio es 200000
        case 402: return 200000;
        case 429: return 200000;
        case 541: return 200000;
        case 415: return 200000;
        case 480: return 200000;
        case 587: return 200000;
        case 411: return 200000;
        case 603: return 200000;
        case 506: return 200000;
        case 451: return 200000;
        case 477: return 200000;
       
        default: return -1; // Vehiculo sin precio
    }
    return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(response)
    {
        switch(dialogid)
        {
            case DIALOG_VEHICLE:
            {
                new modelo_vehiculo = GetVehicleModel(GetPlayerVehicleID(playerid));
                new costo_vehiculo = GetPriceByModel(modelo_vehiculo);
               
                if(GetPlayerMoney(playerid) < costo_vehiculo)
                {
                    SendClientMessage(playerid, 0xFFFFFF, "No tienes suficiente dinero julandron");
                    RemovePlayerFromVehicle(playerid);
                    return 1;
                }
               
                GivePlayerMoney(playerid, -costo_vehiculo);
                CreateVehicle(modelo_vehiculo,557.5,-1266.0,17.24,82.2873,0,1,0);
                RemovePlayerFromVehicle(playerid);
                return 1;

            }
        }
    }
    return 0;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)