[MINIJUEGO-FR] GunGame (Juego de armas)

¿Tienes un FilterScript muy bueno y quieres compartirlo con los demás? ¿Qué esperas? ¡Muéstranoslo aquí!

Moderador: Ayudantes

Reglas del Foro
  • Al liberar un FilterScript, debes informar sobre qué trata el código claramente, imágenes o vídeos y la explicación de cómo usarlo.
  • En caso de que quieras publicar un TextDraw que únicamente cumpla una función estética (como ser un TextDraw que muestra el nombre del servidor), es decir, no cumple ninguna función más que decorativa/visual (a diferencia de un TextDraw que realiza la función de velocímetro y contiene los códigos para ello, por ejemplo), debe ir en la sección Guías y Aportes.
  • Si el link de descarga no funciona, el tema será eliminado.
  • Si no eres el autor del FilterScript 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
Eduardo_1
Master
Master
Mensajes: 1535
Registrado: 13 Dic 2016 17:50
Contactar:
Reputación: 104

12 May 2018 15:32

Hola, hice este filterscript llamado "GunGame", tomé la idea de hacerlo de un servidor Freeroam llamado San Fierro Stunt Evolution, funciona perfectamente, si alguien puede mejorar el código puede hacerlo pero respetando los créditos originales.
El filterscript consiste en un minijuego en el cual deben asesinarse para tener un mayor rango para ganar, el ganador se lleva 14k de dinero, si mueres te quitarán un nivel y las todas las armas que tenías (quedándote sólo un cuchillo y el arma actual acorde a tu nivel)
Los tres últimos niveles tienen armas pesadas (Rocket, Rocket launcher & Minigun), actualmente cuenta con catorce niveles
El primero que llegue al nivel 14 ganará y todos serán respawneados.

Funciones:
• Al morir y tu nivel es mayor a cero, este bajará un nivel.
• Si matas tu nivel aumentará uno.
• Cada nivel tiene un rango (pueden ser modificados)

Comandos:
• /gg ó /gungame - Entrar al minijuego
• /gs o /gsalir - Salir del minijuego

Descarga:

Imagen: Imagen

Créditos:

Elaboración del fs: Eduardo_1, alías: $moke
ZCMD: [url=http://forum.sa-mp.com/showthread.php?t=91354]ZeeX ó y_Less[/url[
a_samp: Samp Team
NO ROBAR CRÉDITOS ES AGRADECER -happy


Un sabio escribió: No a todo el mundo se puede ayudar porque siempre hay un mal agradecido que termina pagándote mal. Corrige al sabio y será más sabio, corrige al necio y será tu enemigo.
Anónimo escribió: El orgulloso no reconoce sus defectos, errores o la contradicción. En el fondo su ignorancia es debida a su falta de humildad.
Vendo modo de juego Roleplay (GM-RP): New states sin bugs con PCU (UCP) no responsive (Y-INI). Interesados al imbox.


Avatar de Usuario
Lautaro97
Junior
Junior
Mensajes: 352
Registrado: 16 Feb 2015 15:46
Ubicación: Cordoba, Argentina
Reputación: 10

12 May 2018 23:45

Buen aporte bro, yo cambiaría un par de variables... pero de esta perfecto.

PD: Felicidades por el rango :)
Avatar de Usuario
MrDave
Ayudante
Ayudante
Mensajes: 988
Registrado: 05 Oct 2017 12:13
Reputación: 108

13 May 2018 11:51


¡Buen aporte amigo! ¡Felicidades por el nuevo rango!
Sólo daré algunas observaciones sobre el algoritmo que divulgaste.


1) Para dar un valor por defecto a un arreglo, se lo hace mediante dos formas:
1. Forma:
 Codigo Pawno:
1

new bool:EstaEnGG[MAX_PLAYERS] = {false, ...};
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 1
2. Forma:
 Codigo Pawno:
1
2
3
4

for(new i = 0; i < sizeof(EstaEnGG); i++)
{
	EstaEnGG[i] = false;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 4
3. Forma: (manual)
 Codigo Pawno:
1
2
3
4

EstaEnGG[0] = false;
EstaEnGG[1] = false;
EstaEnGG[2] = false;
//etc...
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 4

2) Cuando son variables globales dinámicas no es necesario proporcionarle un valor nulo, porqué por defecto lo tendrá.
Ejemplo:
 Codigo Pawno:
1

new bool:x;
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1

Sí usted no le da ningún valor a la variable "x", entonces lo hará el compilador, esto quiere decir que el compilador lo traduciría de esta forma:
 Codigo Pawno:
1

new x = false;
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Lo que acabaste de hacer, habría la posibilidad de que haya algún error de sintaxis en otros compiladores, ya que hay uno que son menos exigentes que otros.
 Codigo Pawno:
1

new bool:EstaEnGG[MAX_PLAYERS] = false;//Incorrecto
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
3) Cuando declaras las variables de esta manera, podría causar una ambiguación para las demás personas que verán este algoritmo.
 Codigo Pawno:
1

new bool:EstaEnGG[MAX_PLAYERS], GGNivel[MAX_PLAYERS], PlayerText:GGTD[MAX_PLAYERS];
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Yo prefería efectuarlo de esta forma, para mí se vería más estético:
 Codigo Pawno:
1
2
3

new bool:EstaEnGG[MAX_PLAYERS];
new GGNivel[MAX_PLAYERS];
new PlayerText:GGTD[MAX_PLAYERS];
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 3
4) Hay que tratar de poner bien la "indentación", ya que hace ver el código ilegible.
 Codigo Pawno:
1

if(GGNivel[playerid] > 0) { GGNivel[playerid]--; }
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 1
Sí piensas que por ahorrar líneas hará que un "algoritmo" se ejecute más rápido, estáis equivocado. Prefería de esta manera.
 Codigo Pawno:
1
2
3
4

if(GGNivel[playerid] > 0)
{
	GGNivel[playerid]--;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 4
Y sí no queréis colocar las llaves de apertura y de cierre porqué sólo es una instrucción, la eliminas y ya.
 Codigo Pawno:
1
2

if(GGNivel[playerid] > 0)
	GGNivel[playerid]--;
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 2

5) Todo el código que está dentro de "OnPlayerUpdate" es innecesario, me parece algo ilógico ir actualizando los mismo "textdraw`s" del jugador a cada rato, ¿por qué mejor no efectuarlo en "OnPlayerDeath"?
Así nos evitamos problemas de lentitud a largo plazo, ya que este "callbacks" se llama muy rápido y podría causar "lag" al servidor sí se coloca mucho código dentro de el.
Obviamente el retraso también dependerá de los recursos que tenga el servidor, porqué sí no tiene un buen procesador y gran cantidad de memoria ram, no podrá sostener tantos jugadores y ahí es donde viene los problemas.
Algo así se podría efectuar:
 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

public OnPlayerDeath(playerid, killerid, reason)
{
    if(EstaEnGG[playerid] == true)
    {
        if(GGNivel[playerid] > 0)
	{
		GGNivel[playerid]--;
	}
        if(killerid != INVALID_PLAYER_ID && EstaEnGG[killerid] == true)
        {
            GGNivel[killerid]++;
            GivePlayerMoney(killerid, GGNivel[killerid]*1000);
            GivePlayerWeapon(killerid, ggArmas[GGNivel[killerid]], 9999);
            new Float:vida;
	    GetPlayerHealth(killerid, vida);
            if(vida < 100)
	    {
		 SetPlayerHealth(killerid, vida+15);
	    }
   	    if(GGNivel[killerid] == 14) //Ganador
            {
            	new gw_str[146], gw_nick[24];
		GetPlayerName(killerid, gw_nick, 24);
            	format(gw_str, sizeof(gw_str), "• {FFFFFF}El jugador {A60BDD}%s(%d) {FFFFFF}es el ganador del {A60BDD}'GunGame' {FFFFFF}(Rango: %s - Nivel: 14)", gw_nick, killerid, GGRango(14));
            	SendClientMessageToAll(0xA60BDDFF, gw_str);
            	GivePlayerMoney(killerid, 14000);
            	for(new i = 0, j = GetPlayerPoolSize()+1; i < j; i++)
            	{
			if(IsPlayerConnected(i) != 0 && EstaEnGG[i] == true)
			{
				 SalirDeGG(i);
			}
		 }
                 return 1;
            }
   			new gt_str[90], arma[24];
			GetWeaponName(GetPlayerWeapon(killerid), arma, 24);
        	        format(gt_str, sizeof(gt_str), "~b~Arma: ~w~%s~n~~b~Nivel actual: ~w~%d~n~~b~Rango: ~w~%s", arma, GGNivel[killerid], GGRango(GGNivel[killerid]));
        	PlayerTextDrawSetString(killerid, GGTD[killerid], gt_str);
        }
    }
    return 1;
}
  Cantidad de llaves: Abiertas(13)-Cerradas(13) | Lineas Totales: 43

Cada vez que el jugador asesine a otro usuario, le actualizamos su nivel actual y su respectivo rango, así sería algo más "optimizado".
Cuando el jugador llegue al último nivel (14), el minijuego finalizará.


6) Yo sé que esto es equivalente:
 Codigo Pawno:
1

if(EstaEnGG[playerid])
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
A esto:
 Codigo Pawno:
1

if(EstaEnGG[playerid] == true)
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1

Pero más inteligible se vería especificando con que valor se está comparando el "EstaEnGG[playerid]".
OJO: No estoy diciendo que está mal, sólo que habrá personas nuevas y no sabrán porqué se lo coloca así, entonces para evitarnos esos inconvenientes, lo haríamos detallando con su respectivo valor "booleano".
Bueno, hay otras cosas que se podían mejorar, la variable "EstaEnGG" esta de más, con la var GGNivel se puede detectar prácticamente todo, incluyendo sí el jugador está en un minijuego o no. Sólo es cuestión de saber emplear los "flags" en las variables, es decir, a cada valor que almacene la variable, le daremos una interpretación.
Ejemplo:
GGNivel guardará 15 valores.
valor 0 = NO_MINIJUEGO.
valor 1 = NOVATO.
Así sucesivamente...
Aquí te dejo un ejemplo más claro:
 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

#include <Pawn.CMD.inc>
#define NO_MINIJUEGO \
	(0) //Cuando no está en un minijuego
#define NOVATO \
	(1)
	
new Nivel[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
	Nivel[playerid] = NO_MINIJUEGO;
	return 1;
}

public OnPlayerCommandReceived(playerid, cmd[], params[], flags)
{
	if(Nivel[playerid] >= 1)
	{
	    if(strcmp(cmd, "salirm", true) != 0 || strcmp(cmd, "salirgg", true) != 0 || strcmp(cmd, "sminigame", true) != 0)
	    {
	    	SendClientMessage(playerid, -1, "* Usted no puede usar comandos estando en un minijuego, use /salir, /salirgg o /sminigame.");
	    	return 0;
	    }
	}
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	if(killerid != INVALID_PLAYER_ID)
	{
	    if(Nivel[killerid] >= 1) //Si el nivel es mayor o igual a 1, lo detectamos que el jugador está en un minijuego.
	    {
	        Nivel[killerid]++;
	        GivePlayerMoney(killerid, (Nivel[killerid]*1000));
	        //demás sentencias...
	    }
	}
	return 1;
}

alias:minijuego("gg", "gungame", "minigame");
cmd:minijuego(playerid)
{
	Nivel[playerid] = NOVATO;
	//demás instrucciones...
	return 1;
}

alias:salir("salirm", "salirgg", "sminigame");
cmd:salir(playerid)
{
	if(Nivel[playerid] == NO_MINIJUEGO)
	    return SendClientMessage(playerid, -1, "* Usted no está en ningún minijuego.");
	Nivel[playerid] = NO_MINIJUEGO;
	SpawnPlayer(playerid);
	//demás instrucciones...
	return 1;
}
  Cantidad de llaves: Abiertas(9)-Cerradas(9) | Lineas Totales: 59

- 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
Eduardo_1
Master
Master
Mensajes: 1535
Registrado: 13 Dic 2016 17:50
Contactar:
Reputación: 104

14 May 2018 15:43

Spoiler:
MrDave escribió:
13 May 2018 11:51

¡Buen aporte amigo! ¡Felicidades por el nuevo rango!
Sólo daré algunas observaciones sobre el algoritmo que divulgaste.


1) Para dar un valor por defecto a un arreglo, se lo hace mediante dos formas:
1. Forma:
 Codigo Pawno:
1

new bool:EstaEnGG[MAX_PLAYERS] = {false, ...};
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 1
2. Forma:
 Codigo Pawno:
1
2
3
4

for(new i = 0; i < sizeof(EstaEnGG); i++)
{
	EstaEnGG[i] = false;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 4
3. Forma: (manual)
 Codigo Pawno:
1
2
3
4

EstaEnGG[0] = false;
EstaEnGG[1] = false;
EstaEnGG[2] = false;
//etc...
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 4

2) Cuando son variables globales dinámicas no es necesario proporcionarle un valor nulo, porqué por defecto lo tendrá.
Ejemplo:
 Codigo Pawno:
1

new bool:x;
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1

Sí usted no le da ningún valor a la variable "x", entonces lo hará el compilador, esto quiere decir que el compilador lo traduciría de esta forma:
 Codigo Pawno:
1

new x = false;
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Lo que acabaste de hacer, habría la posibilidad de que haya algún error de sintaxis en otros compiladores, ya que hay uno que son menos exigentes que otros.
 Codigo Pawno:
1

new bool:EstaEnGG[MAX_PLAYERS] = false;//Incorrecto
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
3) Cuando declaras las variables de esta manera, podría causar una ambiguación para las demás personas que verán este algoritmo.
 Codigo Pawno:
1

new bool:EstaEnGG[MAX_PLAYERS], GGNivel[MAX_PLAYERS], PlayerText:GGTD[MAX_PLAYERS];
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
Yo prefería efectuarlo de esta forma, para mí se vería más estético:
 Codigo Pawno:
1
2
3

new bool:EstaEnGG[MAX_PLAYERS];
new GGNivel[MAX_PLAYERS];
new PlayerText:GGTD[MAX_PLAYERS];
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 3
4) Hay que tratar de poner bien la "indentación", ya que hace ver el código ilegible.
 Codigo Pawno:
1

if(GGNivel[playerid] > 0) { GGNivel[playerid]--; }
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 1
Sí piensas que por ahorrar líneas hará que un "algoritmo" se ejecute más rápido, estáis equivocado. Prefería de esta manera.
 Codigo Pawno:
1
2
3
4

if(GGNivel[playerid] > 0)
{
	GGNivel[playerid]--;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 4
Y sí no queréis colocar las llaves de apertura y de cierre porqué sólo es una instrucción, la eliminas y ya.
 Codigo Pawno:
1
2

if(GGNivel[playerid] > 0)
	GGNivel[playerid]--;
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 2

5) Todo el código que está dentro de "OnPlayerUpdate" es innecesario, me parece algo ilógico ir actualizando los mismo "textdraw`s" del jugador a cada rato, ¿por qué mejor no efectuarlo en "OnPlayerDeath"?
Así nos evitamos problemas de lentitud a largo plazo, ya que este "callbacks" se llama muy rápido y podría causar "lag" al servidor sí se coloca mucho código dentro de el.
Obviamente el retraso también dependerá de los recursos que tenga el servidor, porqué sí no tiene un buen procesador y gran cantidad de memoria ram, no podrá sostener tantos jugadores y ahí es donde viene los problemas.
Algo así se podría efectuar:
 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

public OnPlayerDeath(playerid, killerid, reason)
{
    if(EstaEnGG[playerid] == true)
    {
        if(GGNivel[playerid] > 0)
	{
		GGNivel[playerid]--;
	}
        if(killerid != INVALID_PLAYER_ID && EstaEnGG[killerid] == true)
        {
            GGNivel[killerid]++;
            GivePlayerMoney(killerid, GGNivel[killerid]*1000);
            GivePlayerWeapon(killerid, ggArmas[GGNivel[killerid]], 9999);
            new Float:vida;
	    GetPlayerHealth(killerid, vida);
            if(vida < 100)
	    {
		 SetPlayerHealth(killerid, vida+15);
	    }
   	    if(GGNivel[killerid] == 14) //Ganador
            {
            	new gw_str[146], gw_nick[24];
		GetPlayerName(killerid, gw_nick, 24);
            	format(gw_str, sizeof(gw_str), "• {FFFFFF}El jugador {A60BDD}%s(%d) {FFFFFF}es el ganador del {A60BDD}'GunGame' {FFFFFF}(Rango: %s - Nivel: 14)", gw_nick, killerid, GGRango(14));
            	SendClientMessageToAll(0xA60BDDFF, gw_str);
            	GivePlayerMoney(killerid, 14000);
            	for(new i = 0, j = GetPlayerPoolSize()+1; i < j; i++)
            	{
			if(IsPlayerConnected(i) != 0 && EstaEnGG[i] == true)
			{
				 SalirDeGG(i);
			}
		 }
                 return 1;
            }
   			new gt_str[90], arma[24];
			GetWeaponName(GetPlayerWeapon(killerid), arma, 24);
        	        format(gt_str, sizeof(gt_str), "~b~Arma: ~w~%s~n~~b~Nivel actual: ~w~%d~n~~b~Rango: ~w~%s", arma, GGNivel[killerid], GGRango(GGNivel[killerid]));
        	PlayerTextDrawSetString(killerid, GGTD[killerid], gt_str);
        }
    }
    return 1;
}
  Cantidad de llaves: Abiertas(13)-Cerradas(13) | Lineas Totales: 43

Cada vez que el jugador asesine a otro usuario, le actualizamos su nivel actual y su respectivo rango, así sería algo más "optimizado".
Cuando el jugador llegue al último nivel (14), el minijuego finalizará.


6) Yo sé que esto es equivalente:
 Codigo Pawno:
1

if(EstaEnGG[playerid])
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1
A esto:
 Codigo Pawno:
1

if(EstaEnGG[playerid] == true)
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1

Pero más inteligible se vería especificando con que valor se está comparando el "EstaEnGG[playerid]".
OJO: No estoy diciendo que está mal, sólo que habrá personas nuevas y no sabrán porqué se lo coloca así, entonces para evitarnos esos inconvenientes, lo haríamos detallando con su respectivo valor "booleano".
Bueno, hay otras cosas que se podían mejorar, la variable "EstaEnGG" esta de más, con la var GGNivel se puede detectar prácticamente todo, incluyendo sí el jugador está en un minijuego o no. Sólo es cuestión de saber emplear los "flags" en las variables, es decir, a cada valor que almacene la variable, le daremos una interpretación.
Ejemplo:
GGNivel guardará 15 valores.
valor 0 = NO_MINIJUEGO.
valor 1 = NOVATO.
Así sucesivamente...
Aquí te dejo un ejemplo más claro:
 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

#include <Pawn.CMD.inc>
#define NO_MINIJUEGO \
	(0) //Cuando no está en un minijuego
#define NOVATO \
	(1)
	
new Nivel[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
	Nivel[playerid] = NO_MINIJUEGO;
	return 1;
}

public OnPlayerCommandReceived(playerid, cmd[], params[], flags)
{
	if(Nivel[playerid] >= 1)
	{
	    if(strcmp(cmd, "salirm", true) != 0 || strcmp(cmd, "salirgg", true) != 0 || strcmp(cmd, "sminigame", true) != 0)
	    {
	    	SendClientMessage(playerid, -1, "* Usted no puede usar comandos estando en un minijuego, use /salir, /salirgg o /sminigame.");
	    	return 0;
	    }
	}
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	if(killerid != INVALID_PLAYER_ID)
	{
	    if(Nivel[killerid] >= 1) //Si el nivel es mayor o igual a 1, lo detectamos que el jugador está en un minijuego.
	    {
	        Nivel[killerid]++;
	        GivePlayerMoney(killerid, (Nivel[killerid]*1000));
	        //demás sentencias...
	    }
	}
	return 1;
}

alias:minijuego("gg", "gungame", "minigame");
cmd:minijuego(playerid)
{
	Nivel[playerid] = NOVATO;
	//demás instrucciones...
	return 1;
}

alias:salir("salirm", "salirgg", "sminigame");
cmd:salir(playerid)
{
	if(Nivel[playerid] == NO_MINIJUEGO)
	    return SendClientMessage(playerid, -1, "* Usted no está en ningún minijuego.");
	Nivel[playerid] = NO_MINIJUEGO;
	SpawnPlayer(playerid);
	//demás instrucciones...
	return 1;
}
  Cantidad de llaves: Abiertas(9)-Cerradas(9) | Lineas Totales: 59
Man, gracias por la súper crítica constructiva que me has dado -shock. lo tomaré en cuenta para el próximo aporte que haga.

Un sabio escribió: No a todo el mundo se puede ayudar porque siempre hay un mal agradecido que termina pagándote mal. Corrige al sabio y será más sabio, corrige al necio y será tu enemigo.
Anónimo escribió: El orgulloso no reconoce sus defectos, errores o la contradicción. En el fondo su ignorancia es debida a su falta de humildad.
Vendo modo de juego Roleplay (GM-RP): New states sin bugs con PCU (UCP) no responsive (Y-INI). Interesados al imbox.


DarksitoYT
Aprendiz
Aprendiz
Mensajes: 11
Registrado: 25 May 2017 10:42
Reputación: 0

22 May 2018 05:34

¿Se puede aplicar para una GameMode Roleplay? O sea, referencia a que solamente se pueda usar como FileScript y que cada vez que uno quiere lo activa para que puedan entrar?
Script: 30%

Mapp: 56%

WebMaster: 25%

Nunnca digas nunca ante un problema que es imposible, recuerda que lo imposible puede ser posible


Aportes a la comunidad:


Proyectos:

HostName: [ESP] BlackCity RP | Re-Apertura proximamente
Address: samp.blackcity.es
Players: x / 200
Ping: x
Mode: Roleplay
Language: Español

HostName: [FoC] Force of Champion - TDM [Proximamente]
Address: tdm.forceofchampion.tk
Players: x / 100
Ping: x
Mode: FoC V1.0
Language: Español-Spanish

Avatar de Usuario
Eduardo_1
Master
Master
Mensajes: 1535
Registrado: 13 Dic 2016 17:50
Contactar:
Reputación: 104

22 May 2018 08:04

DarksitoYT escribió:
22 May 2018 05:34
¿Se puede aplicar para una GameMode Roleplay? O sea, referencia a que solamente se pueda usar como FileScript y que cada vez que uno quiere lo activa para que puedan entrar?
Pues claro que se puede -nosweat

Un sabio escribió: No a todo el mundo se puede ayudar porque siempre hay un mal agradecido que termina pagándote mal. Corrige al sabio y será más sabio, corrige al necio y será tu enemigo.
Anónimo escribió: El orgulloso no reconoce sus defectos, errores o la contradicción. En el fondo su ignorancia es debida a su falta de humildad.
Vendo modo de juego Roleplay (GM-RP): New states sin bugs con PCU (UCP) no responsive (Y-INI). Interesados al imbox.


Responder