[Include] easyDialog.inc

¿Encontraste un Plugin que te asombró? ¿Qué opinas de mostrárnoslo? ¡Súbelo y compártelo con los demás! También, encuentra gran cantidad de Includes.

Moderador: Ayudantes

Reglas del Foro
  • Si publicas un Plugin de tu autoría, deberás publicar el código fuente del mismo. No olvides utilizar el BBCode [Pawn]Código aquí[/Pawn].
  • Si no eres el autor del plugin/include o has utilizado códigos de otros autores, recuerda colocar los créditos correspondientes. (El plagio es motivo de sanción).
Responder
Avatar de Usuario
gless
Avanzado
Avanzado
Mensajes: 448
Registrado: 22 Oct 2017 04:10
Ubicación: Soy de una casa versátil.
Reputación: 28

11 Nov 2017 08:43

Me encontré esta librería navegando por forum-samp y me gustaría compartirse-la a todos ustedes, en verdad es muy buena y la estoy usando actualmente y uff! es un nivel.. -shock -shock -good

Ofrece llamado, dialogs con nombre, optimizan y mucho más, por ejemplo;

 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

#define DIALOG_WEAPON (1337)

CMD:weapons(playerid, params[])
{
    ShowPlayerDialog(playerid, DIALOG_WEAPON, DIALOG_STYLE_LIST, "Weapon Menu", "9mm\nSilenced 9mm\nDesert Eagle\nShotgun\nSawn-off Shotgun\nCombat Shotgun", "Select", "Cancel");
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if (dialogid == DIALOG_WEAPON)
    {
        if (response)
        {
            new str[64];
            format(str, 64, "You have selected the '%s'.", inputtext);

            GivePlayerWeapon(playerid, listitem + 22, 500);
            SendClientMessage(playerid, -1, str);
        }
    }
    return 1;
}
  Cantidad de llaves: Abiertas(4)-Cerradas(4) | Lineas Totales: 23
Usando easyDialog te quedará así:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

CMD:weapons(playerid, params[])
{
    Dialog_Show(playerid, WeaponMenu, DIALOG_STYLE_LIST, "Weapon Menu", "9mm\nSilenced 9mm\nDesert Eagle\nShotgun\nSawn-off Shotgun\nCombat Shotgun", "Select", "Cancel");
    return 1;
}

Dialog:WeaponMenu(playerid, response, listitem, inputtext[])
{
    if (response)
    {
        new str[64];
        format(str, 64, "You have selected the '%s'.", inputtext);

        GivePlayerWeapon(playerid, listitem + 22, 500);
        SendClientMessage(playerid, -1, str);
    }
    return 1;
}
  Cantidad de llaves: Abiertas(3)-Cerradas(3) | Lineas Totales: 18
Funciones:

Éste, muestra el dialog al jugador..
 Codigo Pawno:
1

Dialog_Show(playerid, dialog, style, caption[], info[], button1[], button2[]);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1


Éste, cierra el dialog mostrado..
 Codigo Pawno:
1

Dialog_Close(playerid);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Éste, cierra todos los diálogos abiertos
 Codigo Pawno:
1

Dialog_Opened(playerid);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Créditos para emmet, y acá dejo la libreria..
 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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151

/*
	easyDialog.inc - Dialogs made easier!

	With this useful include, scripters can easily create
	dialogs and show them to players.

	This include will prevent dialog spoofing, ID collision
	and a lot more.

	Created by Emmet on Friday, January 24, 2014.
*/

#if !defined isnull
	#define isnull(%1) \
		((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
#endif

#define Dialog:%0(%1) \
	forward dialog_%0(%1); public dialog_%0(%1)

#define Dialog_Show(%0,%1, \
	Dialog_Open(%0, #%1,

#define Dialog_Opened(%0) \
	(CallRemoteFunction("Dialog_IsOpened", "i", (%0)))

static
	s_DialogName[MAX_PLAYERS][32 char],
	s_DialogOpened[MAX_PLAYERS]
;

forward OnDialogPerformed(playerid, dialog[], response, success);

forward @dialog_format(); @dialog_format() {
	format("", 0, "");
}

forward Dialog_IsOpened(playerid);
public Dialog_IsOpened(playerid)
{
	return (s_DialogOpened[playerid]);
}

stock Dialog_Close(playerid)
{
	s_DialogName[playerid]{0} = 0;
	s_DialogOpened[playerid] = 0;

	return ShowPlayerDialog(playerid, -1, DIALOG_STYLE_MSGBOX, " ", " ", " ", "");
}

stock Dialog_Open(playerid, function[], style, caption[], info[], button1[], button2[], {Float,_}:...)
{
	static
	    string[4096],
		args
	;

	if (!strlen(info))
	{
	    return 0;
	}
	if ((args = numargs()) > 7)
	{
	    while (--args >= 7)
		{
			#emit LCTRL 5
			#emit LOAD.alt args
			#emit SHL.C.alt 2
			#emit ADD.C 12
			#emit ADD
			#emit LOAD.I
			#emit PUSH.pri
		}
		#emit PUSH.S info
		#emit PUSH.C 4096
		#emit PUSH.C string

		#emit LOAD.S.pri 8
		#emit CONST.alt 16
		#emit SUB
		#emit PUSH.pri

		#emit SYSREQ.C format
		#emit LCTRL 5
		#emit SCTRL 4

		ShowPlayerDialog(playerid, 32700, style, caption, string, button1, button2);
	}
	else
	{
		ShowPlayerDialog(playerid, 32700, style, caption, info, button1, button2);
	}
	s_DialogOpened[playerid] = 1;

	strpack(s_DialogName[playerid], function, 32 char);

	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	static
		s_Public = cellmax;

	if (s_Public == cellmax)
	{
	    s_Public = funcidx("OnDialogPerformed");
	}

	// Sanitize inputs.
	for (new i = 0, l = strlen(inputtext); i < l; i ++)
	{
	    if (inputtext[i] == '%')
		{
			inputtext[i] = '#';
		}
	}
	if (dialogid == 32700 && strlen(s_DialogName[playerid]) > 0)
	{
		new
		    string[40];

		strcat(string, "dialog_");
		strcat(string, s_DialogName[playerid]);

		Dialog_Close(playerid);

		if ((s_Public == -1) || (CallLocalFunction("OnDialogPerformed", "dsdd", playerid, string[7], response, funcidx(string) != -1)))
		{
	 		CallLocalFunction(string, "ddds", playerid, response, listitem, (!inputtext[0]) ? ("\1") : (inputtext));
		}
	}
	#if defined DR_OnDialogResponse
	    return DR_OnDialogResponse(playerid, dialogid, response, listitem, inputtext);
	#else
	    return 0;
	#endif
}

#if defined _ALS_OnDialogResponse
	#undef OnDialogResponse
#else
	#define _ALS_OnDialogResponse
#endif

#define OnDialogResponse DR_OnDialogResponse

#if defined DR_OnDialogResponse
	forward DR_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
#endif
  Cantidad de llaves: Abiertas(16)-Cerradas(16) | Lineas Totales: 151
 Codigo Pawno:
1

return printf("HASTA PRONTO WORLD!");
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Productor músical
Programador
Editor Gráfico
Compositor
Cantante
Editor Audiovisual
AMX Booster
Mastering
Webmaster
Scripter
Y odioso, jeje..

Perdí mi facebook, cualquier problema hablarme por privado..

Liberaciones y aportes qué recuerdo.....

[AFK System Pause]: Ir a el sistema
[Pawno y sus funciones] [GUÍA]: Ir a la guía
[Include easyDialog]: Ir a la librería
Tunear vehículo vía comando]: Ir a el sistema
Include foreach: Ir a la librería
Declaraciones ¡RECOMENDADO!: Ir a la guía
Depuraciones y crasheos ¡RECOMENDADO! Ir a la guía
Ordenador policial para OZ: Ir al aporte
Cambiar personaje cómo GTA V: Ir al filterscript
Gamemode Stories of Sa: Ir al gamemode
Mensajes aleatorios: Ir al aporte
Sistema de administración BÁSICO: Ir a el sistema
Modifica tu servidor desde un comando: Ir al aporte
Mapa VC Para GTA.. Ir al aporte

"Pensemos en la modalidad de ayudar al prójimo y no en la competencia.."


Avatar de Usuario
MrDave
Ayudante
Ayudante
Mensajes: 998
Registrado: 05 Oct 2017 12:13
Reputación: 109

12 Nov 2017 12:25

¿Que estaría optimizando?
Lo único que hace esta librería es crear un diálogo por nombre, en lugar de hacerlo con un ID.

- Temporalmente estoy retirado de SA-MP; por lo tanto no me envíen propuestas de proyectos.
- No respondo dudas por privado, usa la sección de preguntas.
Avatar de Usuario
gless
Avanzado
Avanzado
Mensajes: 448
Registrado: 22 Oct 2017 04:10
Ubicación: Soy de una casa versátil.
Reputación: 28

12 Nov 2017 19:55

Depende cómo lo uses... usando está librería he optimizado la mayoría de mis dialogos.. Tiene muchas más funciones y características qué dialogresponse no tiene..
Productor músical
Programador
Editor Gráfico
Compositor
Cantante
Editor Audiovisual
AMX Booster
Mastering
Webmaster
Scripter
Y odioso, jeje..

Perdí mi facebook, cualquier problema hablarme por privado..

Liberaciones y aportes qué recuerdo.....

[AFK System Pause]: Ir a el sistema
[Pawno y sus funciones] [GUÍA]: Ir a la guía
[Include easyDialog]: Ir a la librería
Tunear vehículo vía comando]: Ir a el sistema
Include foreach: Ir a la librería
Declaraciones ¡RECOMENDADO!: Ir a la guía
Depuraciones y crasheos ¡RECOMENDADO! Ir a la guía
Ordenador policial para OZ: Ir al aporte
Cambiar personaje cómo GTA V: Ir al filterscript
Gamemode Stories of Sa: Ir al gamemode
Mensajes aleatorios: Ir al aporte
Sistema de administración BÁSICO: Ir a el sistema
Modifica tu servidor desde un comando: Ir al aporte
Mapa VC Para GTA.. Ir al aporte

"Pensemos en la modalidad de ayudar al prójimo y no en la competencia.."


Lolito
Mensajes: 222
Registrado: 11 Oct 2017 18:09
Ubicación: Narnia
Reputación: -6

05 Dic 2017 17:34

Amigo me puedes pasar el .inc porfavor y muchas gracias de ante mano -good
Avatar de Usuario
gless
Avanzado
Avanzado
Mensajes: 448
Registrado: 22 Oct 2017 04:10
Ubicación: Soy de una casa versátil.
Reputación: 28

06 Dic 2017 12:28

Sì revisas bien el tema, podràs verlo.. està en còdigo pawn..
Productor músical
Programador
Editor Gráfico
Compositor
Cantante
Editor Audiovisual
AMX Booster
Mastering
Webmaster
Scripter
Y odioso, jeje..

Perdí mi facebook, cualquier problema hablarme por privado..

Liberaciones y aportes qué recuerdo.....

[AFK System Pause]: Ir a el sistema
[Pawno y sus funciones] [GUÍA]: Ir a la guía
[Include easyDialog]: Ir a la librería
Tunear vehículo vía comando]: Ir a el sistema
Include foreach: Ir a la librería
Declaraciones ¡RECOMENDADO!: Ir a la guía
Depuraciones y crasheos ¡RECOMENDADO! Ir a la guía
Ordenador policial para OZ: Ir al aporte
Cambiar personaje cómo GTA V: Ir al filterscript
Gamemode Stories of Sa: Ir al gamemode
Mensajes aleatorios: Ir al aporte
Sistema de administración BÁSICO: Ir a el sistema
Modifica tu servidor desde un comando: Ir al aporte
Mapa VC Para GTA.. Ir al aporte

"Pensemos en la modalidad de ayudar al prójimo y no en la competencia.."


Avatar de Usuario
Miwi
Baneado
Baneado
Mensajes: 502
Registrado: 02 Nov 2016 17:54
Ubicación: nicaragua
Contactar:
Reputación: 55

11 Dic 2017 00:30

creo que no me sirven los lentes por que no veo la optimizacion
Aportes y Liberaciones de script

[GM] Whaler Streep 1.8 viewtopic.php?f=41&t=23746
[FS] /emisoras con posibilidad de transmitir en vivo viewtopic.php?f=81&t=23747
[GM] Whaler Streep version final viewtopic.php?f=41&t=24317
[Aporte] /duda en dialogos viewtopic.php?f=40&t=22784
[Aporte] /vendertodas viewtopic.php?f=40&t=24331
[Aporte-Guía] Sistema de armas en el cuerpo viewtopic.php?f=40&t=24580
[GM] New States viewtopic.php?f=41&t=24645
[Aporte] Despendedora sistema único viewtopic.php?f=40&t=24660
[Aporte] /computadora para LSPD viewtopic.php?f=40&t=24789
[Aporte] Anti-Cbug Avanzado viewtopic.php?f=40&t=24839
[Guía] Explicación [TAG] En las variables viewtopic.php?f=40&t=25156
[Gamemode] Zombie vs Humanos Version Miwi viewtopic.php?f=41&t=25411&p=128322#p128322
[Guía] Alterar distancia de cargado de objetos streamer viewtopic.php?f=40&t=25970
[Guía] Actualizar seguridad y activar el corta fuegos VPS Linux viewtopic.php?f=40&t=26572
[Guía] Permitir el transito de datos en tu VPS Linux Ubuntu viewtopic.php?f=40&t=26595


JuanS
Avanzado
Avanzado
Mensajes: 821
Registrado: 05 Sep 2014 08:14
Reputación: 37

25 Dic 2017 13:31

MrDave escribió:
12 Nov 2017 12:25
¿Que estaría optimizando?
Lo único que hace esta librería es crear un diálogo por nombre, en lugar de hacerlo con un ID.
Miwi escribió:
11 Dic 2017 00:30
creo que no me sirven los lentes por que no veo la optimizacion
Lo único correcto en tu comentario, es que no optimiza algo en relación con los diálogos, está de más la palabra "optimización" en la publicación, tampoco es que el código vaya a ser más lento si utilizan ésto, es básicamente lo mismo, usando la manera nativa y ésta, el proceso tendrá una velocidad identica, insignificante para nosotros, si quieren notar una diferencia de velocidad, deben procesar 100 mil diálogos en un segundo y la diferencia serán microsegundos, lo que ofrece esta librería, es funciones extras y lo más importante, hacer más legible y ordenado el código, lo hará por el hecho de poder agregar la función que hace el diálogo directamente por un nombre y también por poder agregar esa función en cualquier parte del código (fuera de funciones y no necesariamente en OnDialogResponse).

No crea los diálogos por nombre, los diálogos se crean igual, lo qué hace es crear una función publica por cada diálogo y llamarla con "CallRemoteFunction" en OnDialogResponse, así es posible agregar el código de la función que hace cada diálogo, fuera de OnDialogResponse.

--

Lo único negativo es que EasyDialog utiliza directivas que pueden hacer crash en el compilador y también es posible que no sea compatible con Plugin JIT

Imagen
Servicio de scriping Pawn profesional.

Beneficios:

• Código estructurado y bien escrito.
• Variables y funciones debidamente nombrados.
• Código optimo y eficiente.
• Uso adecuado de la lengua inglés.
• Servicio rápido.


Importante:

Al comprar el código es completamente suyo.
No hay créditos necesarios y la edición/liberación es completamente su problema.


Enviame un pm aquí, con información y el propósito de tu script y yo voy a responder con la información requerida en tu mensaje.
Responder