[Aporte] /comprar productos, /n y /inventario

Aprende lo que no sabes de este lenguaje y encuentra herramientas y códigos útiles.

Moderador: Ayudantes

Reglas del Foro
  • Si tu código es corto, no crees un tema nuevo para liberarlo, publica un mensaje en el tema [Funciones] ¡Publica tu código aquí!.
  • Si creas una guía, debes explicar el código claramente. Evita poner la explicación en forma de comentarios dentro del mismo y no olvides utilizar el BBCode correspondiente: [Pawn]Código aquí[/Pawn].
  • No postear códigos sin probar. Publicar códigos con errores (que impidan compilar el script para el cual está destinado) en este apartado es motivo de sanción.
  • Si tu código necesita plugins, includes u otros códigos adicionales para funcionar, debes mencionarlo en el mensaje.
  • Si has utilizado códigos de otros autores, recuerda colocar los créditos correspondientes. (El plagio es motivo de sanción).
  • Si tu aporte es para un GameMode en específico, debes publicar el tema en el apartado "Guías y Aportes para GameModes específicos".
Responder
Captus123
Aprendiz
Aprendiz
Mensajes: 697
Registrado: 28 Sep 2014 09:19
Reputación: 4

03 Nov 2015 01:47

Hola, bienvenidos a mi aporte, antes que nada quiero aclarar que esto no lo hice yo, pero no me acuerdo quien lo creo o de donde lo saque -mfr_lol

Es un sistema de /comprar productos, eso es todo jaja

Editado:AVISO: Bueno el usuario pidio estos 3 temas asi que no quise hacer doble post, por eso pongo aqui los 3, el pedido del usuario

1. Definimos el dialogo y una funcion extra
 Codigo Pawno:
1
2

#define DIALOGO_247 5000 //Es un numero random, les recomiendo poner un numero alto así no se buguee con otros defines
#define PlayerToPoint(%1,%2,%3,%4,%5) IsPlayerInRangeOfPoint(%2,%1,%3,%4,%5)
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 2
2.Creamos el comando
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12

CMD:comprar(playerid,params[]) //Creamos el comando
{
    if(isnull(params)) //Esto es para que tenga que poner /comprar productos y no /comprarproductos
       if(strcmp(params,"productos",true) == 0) //Bueno aca aclaramos productos
    {
        if(PlayerToPoint(20, playerid,X,Y,Z)|| PlayerToPoint(20, playerid,X,Y,Z)) //Esto es las coordenadas en donde va a funcionar el comando, para poner las tuyas solo remplaza el X, Y, Z con las coordenadas.
        {
            return ShowPlayerDialog(playerid, DIALOGO_247, DIALOG_STYLE_LIST, "{DBED15}Productos y servicios (24/7).", "GPS ($1000)\nCondon ($1250)", "Comprar", "Cancelar"); //Esto es el dialogo te dare un ejemplo: Si queres que salga una cosa abajo de la otra tenes que poner \n algo asi: GPS ($1000)\nCondon ($1250)
        }
    }
    return 1;
}
  Cantidad de llaves: Abiertas(4)-Cerradas(4) | Lineas Totales: 12
3.El dialogo
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

if(dialogid == DIALOGO_247) //Esto es la funcion del dialogo osea aqui ponemos que le quite el dinero cuando compra etc
{
    if(response == 1)
    {
        if(listitem == 0) //Esto vendria a ser el GPS ya que es el primero de la lista
        {
            if(Info[playerid][jDinero] <= 1000) //Esto es para saber que tiene el dinero
            {
                //Aqui ya le pones la funcion que le da el GPS y le quita el dinero etc
            }
            else SendClientMessage(playerid,-1,"No tenes dinero pobre de [MALSONANTE].");
             return 1;
        }
        if(listitem == 1) //Esto el condon al ser el segundo
        {
            if(Info[playerid][jDinero] <= 1250)
            {
                //Aqui ya le pones la funcion que le da el GPS y le quita el dinero etc
            }
            else SendClientMessage(playerid,-1,"No tenes dinero pobre de [MALSONANTE].");
            return 1;
        }
    }
}
  Cantidad de llaves: Abiertas(6)-Cerradas(6) | Lineas Totales: 24
Sistema de canal de dudas:

COMANDOS:
 Codigo Pawno:
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

CMD:n(playerid, params[])
{
    new pname[MAX_PLAYER_NAME], string[124];
    new Segs;
    Segs = Muteduda[playerid] % 60;
    new Segs2;
    Segs2 = EnvioDuda[playerid] % 60;
    if(Muteduda[playerid] != 0) //Esto es para que si el jugador esta muteado no le permita hablar por /n
    {
        format(string, 124, "No se te permite hablar por el chat de ayuda. Espera{00cc00} %dm %ds{FFFFFF} para enviar otra consulta al canal de ayuda.", Muteduda[playerid]/60, Segs);
        SendClientMessage(playerid, -1, string);
        return 1;
    }
    if(CanalDuda[playerid] == 0) return SendClientMessage(playerid, -1, "Actualmente tienes el {DBED15}canal de dudas{FFFFFF} desactivado por favor usa {DBED15}/canal dudas{FFFFFF} para usarlo"); //Esto le dice que active el canal
    if(Info[playerid][jAdmin] > 0) return DudaAdmin(playerid, params); //Esto se fija si es admin, si lo es sale con su rango osea saldra asi [ADM]Captus123(4): sadsd
    if(EnvioDuda[playerid] != 0) //Esto es para que solo envie una duda cada 1 minuto
    {
        format(string,sizeof(string),"Espera %d segundos para enviar otra consulta al canal de ayuda.",Segs2);
        SendClientMessage(playerid, COLOR_ORANGE, string);
        return 1;
    }
    if(isnull(params)) return SendClientMessage(playerid, -1, "Uso: {DBED15}/n [Pregunta]{FFFFFF} ejemplo {DBED15}/n ¿Como arranco un coche?{FFFFFF}."); //Este mensaje le aparece si solo puso /n
    if(strfind(params, "fenixzone", true) != -1 || strfind(params, "servidor", true) != -1 || strfind(params, "fz", true) != -1 || strfind(params, "fzrp", true) != -1 || strfind(params, "fenix zone", true) != -1 || strfind(params, "fenixz", true) != -1 || strfind(params, "fzrp2", true) != -1 || strfind(params, "darkzone", true) != -1 || strfind(params, "fenixzone", true) != -1) //Esto es para que no aparesca el mensaje si hiso SPAM, puedes cambiar las palabras por las tuyas
    {
        return 0;
    }
    GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
    EnvioDuda[playerid] = 1*60;
    format(string, 124, "({009966}Canal /n{009999}) [Nivel: %d] %s (%d): %s", Info[playerid][jNivel], GNAME(playerid), playerid, params);
    foreach(Player, n)
    {
    if(CanalDuda[n] == 1)
    {
        SendClientMessage(n, 0x009999FF, string);
    }
    }
    return 1;
}

CMD:canal(playerid, params[]) //comando para desactivar/activar el canal de dudas
{
    new choice[32];
    if(sscanf(params, "s[32]", choice))
    {
        return 1;
    }
    if(strcmp(choice,"dudas",true) == 0)
    {
        if(CanalDuda[playerid])
        {
            CanalDuda[playerid] = 0;
            SendClientMessage(playerid, COLOR_ORANGE, "Desactivaste el canal de dudas /n, ingresa el mismo comando para activarlo.");
        }
        else
        {
            CanalDuda[playerid] = 1;
            SendClientMessage(playerid, COLOR_AZULL, "Activaste el canal de dudas /n, úsalo con cuidado o serás baneado.");
        }
    }
    return 1;
}

CMD:nb(playerid, params[]) //comando para mutear
{
    if(Info[playerid][jAdmin] < 2) return 0;
    new gid, time, reason[64], string[124], pname[MAX_PLAYER_NAME], gname[MAX_PLAYER_NAME];
    if(sscanf(params, "dds[64]", gid, time, reason)) return SendClientMessage(playerid, -1, "Uso: {DBED15}/nb [ID] [Minutos] [Razon]{FFFFFF}.");
    if(!IsPlayerConnected(gid)) return 1;
    if(isnull(reason)) return SendClientMessage(playerid, -1, "Por favor pon una razon");
    GetPlayerName(playerid, pname, sizeof(pname));
    GetPlayerName(gid, gname, sizeof(gname));
    format(string, 124, "A %s no se le permite hablar en el chat de ayuda. Razón: %s.", gname, reason);
    SendClientMessageToAll(COLOR_RED, string);
       format(string, 124, "Tiempo de muteo: {DBED15}%d minutos{FFFFFF}, Administrador: {00CCFF}%s",time,GNAME(playerid));
    MensajeSoloAdmin(string);
    format(string, 124, "Se te descontó $%d por el bloqueo del canal /n", time);
    SendClientMessage(gid, COLOR_ORANGE, string);
    GivePlayerMoney(gid, -time);
    Muteduda[gid] = time*60;
    Info[gid][jMuteos] ++;
    return 1;
}
  Cantidad de llaves: Abiertas(29)-Cerradas(29) | Lineas Totales: 82
FUNCIONES:
 Codigo Pawno:
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

new CanalDuda[MAX_PLAYERS];
new Muteduda[MAX_PLAYERS];
new EnvioDuda[MAX_PLAYERS];
CanalDuda[playerid] = 1; //Esto va en OnPlayerSpawn
forward MuteDudaUpdate();
SetTimer("MuteDudaUpdate", 1000, true); //Esto va en OnGamemodeInit

//
public MuteDudaUpdate()
{
    for(new i ; i < MAX_PLAYERS ; i++)
    {
        if(Muteduda[i] != 0)
        {
            Muteduda[i]--;
        }
        if(EnvioDuda[i] != 0)
        {
            EnvioDuda[i]--;
        }
    }
}
//

//
function DudaAdmin(playerid, params[])
{
    if(isnull(params)) return SendClientMessage(playerid, -1, "Uso: {DBED15}/n [Pregunta]{FFFFFF} ejemplo {DBED15}/n ¿Como arranco un vehiculo?{FFFFFF}.");
    {
    new string[256], rango[64];
    switch(Info[playerid][jAdmin])
    {
    case 1: rango = "[Ayudante]";
    case 2: rango = "[Moderador]";
    case 3: rango = "[Moderador]";
    case 4: rango = "[Moderador]";
    case 5: rango = "[ADM]";
    case 6: rango = "[ADM]";
    default: rango = "???";
    }
    format(string, sizeof(string), "({009966}Canal /n{009999}) %s %s (%d): %s", rango, GNAME(playerid),playerid,params);
    foreach(Player, n)
    {
    if(CanalDuda[n] == 1)
    {
                SendClientMessage(n, 0x009999FF, string);
    }
    }
    }
    return 1;
}
//
  Cantidad de llaves: Abiertas(15)-Cerradas(15) | Lineas Totales: 52
SISTEMA DE INVENTARIO:
1.Definimos el dialogo
 Codigo Pawno:
1

#define INVENTARIO 5010
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
2.El comando
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10

CMD:inventario(playerid,params[]) //comando
{
    new ID;
    if(sscanf(params, "d", ID)) return Inventario(playerid);
    if(Info[playerid][jAdmin] > 3)
    {
        Inventario2(ID,playerid);
    }
    return 1;
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 10
3.Las funciones
 Codigo Pawno:
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

stock Inventario(playerid) //Esto le sale al usuario normal
{
    new string[500];
    format(string, 500,"{FFFFFF}Dinero: {2BFF00}$%d{FFFFFF}",Info[playerid][jDinero]);
    if(Info[playerid][jAF] > 0)
    {
    format(string, 500,"%s\nAF: {2BFF00}%d{FFFFFF}",string,Info[playerid][jAF]);
    }
    if(Info[playerid][jMedicamentos] > 0)
    {
    format(string, 500,"%s\nMedicamentos: {2BFF00}%d{FFFFFF}",string,Info[playerid][jMedicamentos]);
    }
    if(Info[playerid][jCrack] > 0)
    {
    format(string, 500,"%s\nCrack: {EB0000}%d{FFFFFF}",string,Info[playerid][jCrack]);
    }
    if(Info[playerid][jMateriales] > 0)
    {
    format(string, 500,"%s\nPiezas de armas: {EB0000}%d{FFFFFF}",string,Info[playerid][jMateriales]);
    }
    if(Info[playerid][jArmas0] > 0 || Info[playerid][jArmas1] > 0 || Info[playerid][jArmas2] > 0||Info[playerid][jArmas3] > 0||Info[playerid][jArmas4] > 0||Info[playerid][jArmas5] > 0||Info[playerid][jArmas6] > 0||Info[playerid][jArmas7] > 0||Info[playerid][jArmas8] > 0||Info[playerid][jArmas9] > 0||Info[playerid][jArmas10] > 0||Info[playerid][jArmas11] > 0||Info[playerid][jArmas12] > 0)
    {
         format(string, 500,"%s\nArmas: %s%s%s%s%s%s%s%s%s%s%s%s%s",string, NombreArma[Info[playerid][jArmas0]],NombreArma[Info[playerid][jArmas1]],NombreArma[Info[playerid][jArmas2]],NombreArma[Info[playerid][jArmas3]],NombreArma[Info[playerid][jArmas4]],NombreArma[Info[playerid][jArmas5]],NombreArma[Info[playerid][jArmas6]],NombreArma[Info[playerid][jArmas7]]
         ,NombreArma[Info[playerid][jArmas8]],NombreArma[Info[playerid][jArmas9]],NombreArma[Info[playerid][jArmas10]],NombreArma[Info[playerid][jArmas11]],NombreArma[Info[playerid][jArmas12]]);
    }
    if(Info[playerid][jRadio] > 0)
    {
    format(string,500,"%s\nRadio comunicador",string);
    }
    ShowPlayerDialog(playerid, INVENTARIO, DIALOG_STYLE_MSGBOX,"Inventario",string,"Ok","");
    return 1;
}

stock Inventario2(ID,targetid) //Esto es para admins, asi poder ver los inventarios de los demas /inventario [ID]
{
    new string[500];
    format(string, 500,"{FFFFFF}Dinero: {2BFF00}$%d{FFFFFF}",Info[ID][jDinero]);
    if(Info[ID][jAF] > 0)
    {
    format(string, 500,"%s\nAF: {2BFF00}%d{FFFFFF}",string,Info[ID][jAF]);
    }
    if(Info[ID][jMedicamentos] > 0)
    {
    format(string, 500,"%s\nMedicamentos: {2BFF00}%d{FFFFFF}",string,Info[ID][jMedicamentos]);
    }
    if(Info[ID][jCrack] > 0)
    {
    format(string, 500,"%s\nCrack: {EB0000}%d{FFFFFF}",string,Info[ID][jCrack]);
    }
    if(Info[ID][jMateriales] > 0)
    {
    format(string, 500,"%s\nPiezas de armas: {EB0000}%d{FFFFFF}",string,Info[ID][jMateriales]);
    }
    if(Info[ID][jArmas0] > 0 || Info[ID][jArmas1] > 0 || Info[ID][jArmas2] > 0||Info[ID][jArmas3] > 0||Info[ID][jArmas4] > 0||Info[ID][jArmas5] > 0||Info[ID][jArmas6] > 0||Info[ID][jArmas7] > 0||Info[ID][jArmas8] > 0||Info[ID][jArmas9] > 0||Info[ID][jArmas10] > 0||Info[ID][jArmas11] > 0||Info[ID][jArmas12] > 0)
    {
         format(string, 500,"%s\nArmas: %s%s%s%s%s%s%s%s%s%s%s%s%s ",string, NombreArma[Info[ID][jArmas0]],NombreArma[Info[ID][jArmas1]],NombreArma[Info[ID][jArmas2]],NombreArma[Info[ID][jArmas3]],NombreArma[Info[ID][jArmas4]],NombreArma[Info[ID][jArmas5]],NombreArma[Info[ID][jArmas6]],NombreArma[Info[ID][jArmas7]]
         ,NombreArma[Info[ID][jArmas8]],NombreArma[Info[ID][jArmas9]],NombreArma[Info[ID][jArmas10]],NombreArma[Info[ID][jArmas11]],NombreArma[Info[ID][jArmas12]]);
    }
    if(Info[ID][jRadio] > 0)
    {
    format(string,500,"%s\nRadio comunicador",string);
    }
    ShowPlayerDialog(targetid, INVENTARIO, DIALOG_STYLE_MSGBOX,"Inventario",string,"Ok","");
    return 1;
}
  Cantidad de llaves: Abiertas(36)-Cerradas(36) | Lineas Totales: 65
NOTA: En el comando y las funciones hay cosas mías de radios AF etc, bórrenlas y pongan las suyas, otra cosa el INVENTARIO2 esta por que los ADM pueden ver el inventario de los demás poniendo /inventario [ID]

CREDITOS:
 Codigo Pawno:
1
2
3
4
5

Comprar productos - Nose quien lo hiso pero yo no lo hice :'(

Sistema de canal dudas - Esto lo hice yo pero con ayuda de usuarios de PS uno de ellos fue Hermes.

Inventario - Lo saque de la GM DZ o MC
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 5
Bueno eso es todo, si hay un error o algo me avisan, esto mas que nada lo hice por un pedido que hiso un usuario, así que nos vemos y gracias por ver.

NO SE OLVIDEN DE QUE TIENEN QUE CAMBIAR POR SUS VARIABLES, TAMBIEN SI NECESITAN ALGUNA FUNCION QUE APARECE ACA COMO GNAME U OTRA ME AVISAN
Próximamente un nuevo DM

IvanAtr14
Aprendiz
Aprendiz
Mensajes: 1
Registrado: 19 Feb 2019 12:50
Reputación: 0

22 Mar 2019 16:11

Tengo un error en if(Info[playerid][jDinero] <= 1000) //Esto es para saber que tiene el dinero, que hago -beg
Avatar de Usuario
Dji_
Baneado
Baneado
Mensajes: 224
Registrado: 17 Oct 2017 06:37
Reputación: 9

23 Mar 2019 15:42

No me gusto mucho, pero bien, buen trabajo.
Volviendo...
 Codigo Pawno:
1
2
3
4
5
6
7
8
9

CMD:hablidades(playerid,params[])
{
if(PlayerInfo[playerid][pKanope] < 666) return SendClientMessage(playerid, -1, "No perteneces a mi gang.");
SendClientMessage(playerid, COLOR_KANOPE, "Scripter: 82%");
SendClientMessage(playerid, COLOR_KANOPE, "Maper: 70%");
SendClientMessage(playerid, COLOR_KANOPE, "PHP: 15%");
SendClientMessage(playerid, COLOR_KANOPE, "HTML: 20%");
SendClientMessage(playerid, COLOR_KANOPE, "Vivir al límite: 100%");
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 9

Responder