[Aporte]GPS con puntos personalizados por cada usuario

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
Avatar de Usuario
MattHudson
Moderador Global
Moderador Global
Mensajes: 1666
Registrado: 31 Oct 2015 18:16
Ubicación: Argentina, Buenos Aires, San Miguel.
Contactar:
Reputación: 89

21 Ene 2017 22:36

No te voy a repetir lo que dice el titulo.Ya deberías saber de que trata el aporte con solo leerlo.

Vídeo

Includes usados:
 Codigo Pawno:
1
2
3

#include <a_samp>// Créditos: SA-MP Team.
#include <sscanf2> // Créditos: Emmet_, Y_Less, todos los que trabajaron en esto.
#include <zcmd> // Créditos: ZeeX
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 3
Código:
 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

#define    GEPEESES    (12345)
enum GPSID
{
    Float: pGPSCoordsX[10],
    Float: pGPSCoordsY[10],
    Float: pGPSCoordsZ[10],
    pGPSName0[36],
    pGPSName1[36],
    pGPSName2[36],
    pGPSName3[36],
    pGPSName4[36],
    pGPSName5[36],
    pGPSName6[36],
    pGPSName7[36],
    pGPSName8[36],
    pGPSName9[36]
}
new InfoGPS[MAX_PLAYERS][GPSID];

CMD:ayudagps(playerid, params[])
{
    SendClientMessage(playerid, -1, "SISTEMA DE GPS POR USUARIO- Comandos: /editarmigps - /migps");
}
CMD:editarmigps(playerid, params[])
{
    new Opcion[20], id, Extra[30];
    if(sscanf(params, "s[20]ds[30]", Opcion, id, Extra)) return SendClientMessage(playerid, -1, "USO: /editarmigps [Opcion(Borrar-Crear-Nombre)][Slot][Nombre(Solo en uso de Opcion *Nombre*, default: 0)]");
    if(id < 0 || id > 9) return SendClientMessage(playerid, -1, "{FFFF00}[ERROR]:{FFFFFF} Slot maximo: 9, slot minimo: 0");
    if(strcmp(Opcion, "borrar", true) == 0)
    {
        InfoGPS[playerid][pGPSCoordsX][id] = 0.0;
        InfoGPS[playerid][pGPSCoordsY][id] = 0.0;
        InfoGPS[playerid][pGPSCoordsZ][id] = 0.0;
        new _PSstring[128];
        format(_PSstring, sizeof(_PSstring), "Has borrado el slot #%d de tu GPS.", id);
        SendClientMessage(playerid, -1, _PSstring);
    }
    if(strcmp(Opcion, "crear", true) == 0)
    {
        new Float:X, Float:Y, Float:Z;
        GetPlayerPos(playerid, X, Y, Z);
        InfoGPS[playerid][pGPSCoordsX][id] = X;
        InfoGPS[playerid][pGPSCoordsY][id] = Y;
        InfoGPS[playerid][pGPSCoordsZ][id] = Z;
        switch(id)
        {
            case 0: format(InfoGPS[playerid][pGPSName0], 36, "Punto guardado.");
            case 1: format(InfoGPS[playerid][pGPSName1], 36, "Punto guardado.");
            case 2: format(InfoGPS[playerid][pGPSName2], 36, "Punto guardado.");
            case 3: format(InfoGPS[playerid][pGPSName3], 36, "Punto guardado.");
             case 4: format(InfoGPS[playerid][pGPSName4], 36, "Punto guardado.");
            case 5: format(InfoGPS[playerid][pGPSName5], 36, "Punto guardado.");
            case 6: format(InfoGPS[playerid][pGPSName6], 36, "Punto guardado.");
            case 7: format(InfoGPS[playerid][pGPSName7], 36, "Punto guardado.");
            case 8: format(InfoGPS[playerid][pGPSName8], 36, "Punto guardado.");
            case 9: format(InfoGPS[playerid][pGPSName9], 36, "Punto guardado.");
        }
        new _PSstring[128];
        format(_PSstring, sizeof(_PSstring), "Has creado el slot #%d(%s)de tu GPS.", id, Extra);
        SendClientMessage(playerid, -1, _PSstring);
    }
    if(strcmp(Opcion, "nombre", true) == 0)
    {
        switch(id)
        {
            case 0: format(InfoGPS[playerid][pGPSName0], 36, "%s", Extra);
            case 1: format(InfoGPS[playerid][pGPSName1], 36, "%s", Extra);
            case 2: format(InfoGPS[playerid][pGPSName2], 36, "%s", Extra);
            case 3: format(InfoGPS[playerid][pGPSName3], 36, "%s", Extra);
             case 4: format(InfoGPS[playerid][pGPSName4], 36, "%s", Extra);
            case 5: format(InfoGPS[playerid][pGPSName5], 36, "%s", Extra);
            case 6: format(InfoGPS[playerid][pGPSName6], 36, "%s", Extra);
            case 7: format(InfoGPS[playerid][pGPSName7], 36, "%s", Extra);
            case 8: format(InfoGPS[playerid][pGPSName8], 36, "%s", Extra);
            case 9: format(InfoGPS[playerid][pGPSName9], 36, "%s", Extra);
        }
        new _PSstring[128];
        format(_PSstring, sizeof(_PSstring), "Has cambiado el nombre del slot #%d de tu GPS a *%s*.", id, Extra);
        SendClientMessage(playerid, -1, _PSstring);
    }
    return 1;
}

CMD:migps(playerid, params[]) 
{
    new dialog[36*10], string[128];
    new nombre[300], Nombre2[36];
    for(new i = 0; i < 10; i++)
    {
        switch(i)
        {
               case 0: format(Nombre2, 36, "%s", InfoGPS[playerid][pGPSName0]);
            case 1: format(Nombre2, 36, "%s", InfoGPS[playerid][pGPSName1]);
            case 2: format(Nombre2, 36, "%s", InfoGPS[playerid][pGPSName2]);
            case 3: format(Nombre2, 36, "%s", InfoGPS[playerid][pGPSName3]);
             case 4: format(Nombre2, 36, "%s", InfoGPS[playerid][pGPSName4]);
            case 5: format(Nombre2, 36, "%s", InfoGPS[playerid][pGPSName5]);
            case 6: format(Nombre2, 36, "%s", InfoGPS[playerid][pGPSName6]);
            case 7: format(Nombre2, 36, "%s", InfoGPS[playerid][pGPSName7]);
            case 8: format(Nombre2, 36, "%s", InfoGPS[playerid][pGPSName8]);
            case 9: format(Nombre2, 36, "%s", InfoGPS[playerid][pGPSName9]);
        }
        if(InfoGPS[playerid][pGPSCoordsX][i] == 0.0 && InfoGPS[playerid][pGPSCoordsY][i] == 0.0 && InfoGPS[playerid][pGPSCoordsZ][i] == 0.0)
        {
            format(string, sizeof(string), "\n{FFFFFF}%d| Slot sin uso", i);
            strcat(dialog, string);
        }
        else
        {
            format(string, sizeof(string), "\n{FFFFFF}%d| %s [a %0.2f mts.]", i, Nombre2, GetPlayerDistanceFromPoint(playerid, InfoGPS[playerid][pGPSCoordsX][i], InfoGPS[playerid][pGPSCoordsY][i], InfoGPS[playerid][pGPSCoordsZ][i]));
            strcat(dialog, string);
        }
    }
    format(nombre, sizeof(nombre), "GPS");
    ShowPlayerDialog(playerid, GEPEESES, DIALOG_STYLE_LIST, nombre, dialog, "Sacar", "Salir");
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == GEPEESES)
    {
          if(!response)
        {
               return 1;
        }
           new i = listitem;
           if(i >= 0 && i <= 9)
           {
               if(InfoGPS[playerid][pGPSCoordsX][i] == 0.0 && InfoGPS[playerid][pGPSCoordsY][i] == 0.0 && InfoGPS[playerid][pGPSCoordsZ][i] == 0.0) return SendClientMessage(playerid, -1, "Este slot no esta creado");
            new Float:Flotantes[3];
            Flotantes[0] = InfoGPS[playerid][pGPSCoordsX][i];
            Flotantes[1] = InfoGPS[playerid][pGPSCoordsY][i];
            Flotantes[2] = InfoGPS[playerid][pGPSCoordsZ][i];
            SetPlayerCheckpoint(playerid, Flotantes[0], Flotantes[1], Flotantes[2], 5.0);
            SendClientMessage(playerid, -1, "Has seleccionado un punto de tu GPS. Coordenadas marcadas en el mapa.");
           }
    }
    return 1;
}
  Cantidad de llaves: Abiertas(21)-Cerradas(21) | Lineas Totales: 140
¿Porque lo hice?: Estaba aburrido.
¿Porque lo libero?: Pos porque pa liberarlo lo hice.
Idea: Andaba en google y encontré "Advanced GPS System", a lo que me vino la lamparita de ideas, e hice esto bien básico.
Última edición por MattHudson el 22 Ene 2017 10:25, editado 1 vez en total.
Avatar de Usuario
DeadGuy1
Aprendiz
Aprendiz
Mensajes: 132
Registrado: 07 Ene 2016 16:08
Reputación: 0

21 Ene 2017 22:56

Nada mal -good Gran aporte para los que lo necesiten -clapping
• Usuario de PawnScript

Diseñador Web
————

Michaell
Baneado
Baneado
Mensajes: 361
Registrado: 27 Oct 2016 09:58
Ubicación: Republica Dominicana - Santo Domingo
Contactar:
Reputación: 4

22 Ene 2017 11:33

Buen Aporte! -hi
¡Hola! ¿Te Gustaría Entrar?
Michaell_Gomez
HostName: | DarkGaming Roleplay | [Stats Registro]
Address: cloud1.hostingsamp.com:9006
Players: 63 / 105 -mu
Ping: 118 -fisch
Mode: DG:RP - [Versión 1.20]
Language: Español - Spanish
JoseJoaquinZc
Avanzado
Avanzado
Mensajes: 1286
Registrado: 07 Jul 2014 10:32
Reputación: 40

25 Ene 2017 17:31

Muy básico pero le servirá a los nuevos.
SandK1ng
Aprendiz
Aprendiz
Mensajes: 9
Registrado: 01 Abr 2017 00:20
Reputación: 0

01 Abr 2017 01:03

La direccion se puede guardar con un nombre personalizado?
Avatar de Usuario
MattHudson
Moderador Global
Moderador Global
Mensajes: 1666
Registrado: 31 Oct 2015 18:16
Ubicación: Argentina, Buenos Aires, San Miguel.
Contactar:
Reputación: 89

03 Abr 2017 18:04

SandK1ng escribió:
01 Abr 2017 01:03
La direccion se puede guardar con un nombre personalizado?
/editarmigps nombre [Inserta slot que quieres modificar con un nombre personalizado aquí] [Inserta nombre personalizado aquí]
JoseJoaquinZc escribió:Muy básico pero le servirá a los nuevos.
Es algo sencillo que nunca vi(o vi pocas veces) rondando en los servidores o en el mismo Google, por ello lo hice.
Kvanii_
Aprendiz
Aprendiz
Mensajes: 4
Registrado: 04 Abr 2017 20:56
Reputación: 0

04 Abr 2017 21:06

Con mejoras este sistema podría quedar muy bien en un servidor RP.
SandK1ng
Aprendiz
Aprendiz
Mensajes: 9
Registrado: 01 Abr 2017 00:20
Reputación: 0

10 Abr 2017 18:17

MattHudson escribió:
03 Abr 2017 18:04
/editarmigps nombre [Inserta slot que quieres modificar con un nombre personalizado aquí] [Inserta nombre personalizado aquí]

Está buenísimo bro, cómo te doy puntos de reputación?
Avatar de Usuario
MattHudson
Moderador Global
Moderador Global
Mensajes: 1666
Registrado: 31 Oct 2015 18:16
Ubicación: Argentina, Buenos Aires, San Miguel.
Contactar:
Reputación: 89

10 Abr 2017 18:38

SandK1ng escribió:
10 Abr 2017 18:17
Está buenísimo bro, cómo te doy puntos de reputación?
No puedes por dos razones:

-El sistema de reputación no esta disponible actualmente.
-No tienes mas de 100 mensajes.
Matias_Fretes
Aprendiz
Aprendiz
Mensajes: 23
Registrado: 18 Mar 2017 19:29
Ubicación: Argentina Formosa, Laguna Blanca (puse hay mi id de facebook)
Contactar:
Reputación: 0

20 Abr 2017 12:42

PARA QUE ES
Aprendiendo Poco a poco

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

22 Abr 2017 07:11

Está bueno pero muy básico, algunas mejoras más guardar las ubicaciones por SQLITE sería muy bueno.

Algunas mejoras que yo haría;

* Cambiar el máximo de ubicaciones que puede tener un jugador desde una linea.
* Agregar ciudad y nombre de zona de las ubicaciones.
* Cambiar los puestos de control a con Streamer Plugin(para tener múltiples ubicaciones al mismo tiempo).
* Optimizar el código y la principal; agregar un sistema para guardar los datos(SQLITE/MySQL).
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.
Avatar de Usuario
FailLout
Avanzado
Avanzado
Mensajes: 1385
Registrado: 10 Abr 2014 14:09
Ubicación: Estados Unidos
Contactar:
Reputación: 40

28 Abr 2017 12:01

Bastante bueno le hare algunas mejoras para añadirle algo de rol

-hi
[img]http://i.imgur.com/ewTFkYP.jpg[/img]

[url=http://pawnscript.com/foro/viewtopic.php?f=41&t=7263&p=42268#p42268]Roleplay Base v0.2 Beta[/url]

Innovando, Imaginando y creando así nacen los mejores sistemas
Luego vienen los bugs
Nacion Zombie RPG
Battlerine Royale SA-MP

Avatar de Usuario
MattHudson
Moderador Global
Moderador Global
Mensajes: 1666
Registrado: 31 Oct 2015 18:16
Ubicación: Argentina, Buenos Aires, San Miguel.
Contactar:
Reputación: 89

28 Abr 2017 12:40

JuanS escribió:
22 Abr 2017 07:11
Está bueno pero muy básico, algunas mejoras más guardar las ubicaciones por SQLITE sería muy bueno.

Algunas mejoras que yo haría;

* Cambiar el máximo de ubicaciones que puede tener un jugador desde una linea.
* Agregar ciudad y nombre de zona de las ubicaciones.
* Cambiar los puestos de control a con Streamer Plugin(para tener múltiples ubicaciones al mismo tiempo).
* Optimizar el código y la principal; agregar un sistema para guardar los datos(SQLITE/MySQL).
Juraría que ya respondí esto antes, pero el mensaje no esta -mfr_lol

- El máximo de ubicaciones no lo toque por el hecho de cada variable respecto al nombre de la misma, y no tener que crear variables de mas para usar solo la mitad de las creadas. De todas formas, lo hubiera hecho de un tirón si hubiese usado arrays de 4 dimensiones, cosa que no hice por la poca gente que dispone de su uso.
- La ciudad y nombre de las zonas de las ubicaciones es un buen tip, no lo hice porque no se me ocurrió, quizás luego haga una guía de algún que otro truco para hacerlo(como es usar includes con ese fin de obtener nombre de zonas)
- Los puntos de control no los use con algún plugin Streamer ya que pocos usan mas de un punto a la vez, por ello lo vi innecesario, pero cada quien es libre de cambiarlo(a fin y a cabo es agregar una linea y modificar una)
- Considere optimizarlo, pero el código que aporto al foro siempre sera "amigable" al usuario/programador con el fin de explicar bien cada cosa(aunque sea básica), y bueno... optimizarlo generaría algunas dudas mayores en la cabeza de los que empiezan a programar en este lenguaje, por lo que quise hacerlo simple y apto para el publico mas inexperto que pueda leerlo. Sobre lo del guardado y cargado de datos, simplemente no tenia ganas de hacerlo a pesar de que son pocas cosas, para que complicarla si probablemente los que lo usen lo mezclen con el guardado de datos por usuario que utilicen.

Buenos tips -good

FailLout escribió: Bastante bueno le haré algunas mejoras para añadirle algo de rol

-hi
Tenk iu
Responder