Como hacer un tutorial con estos TextDraw
#1

Buenas, necesito hacerle un tutorial a mi sv RP con los siguientes TextDraw que lo saque de una Gm que tenнa en mi Pc hace mucho tiempo;

Код:
		case 1:
		{
			TextDrawShowForPlayer(playerid, BOXTuto[0]);
			TextDrawShowForPlayer(playerid, BOXTuto[1]);
			PlayerTextDrawShow(playerid, TituloTuto);
			PlayerTextDrawShow(playerid, InfoTuto[0]);
			PlayerTextDrawShow(playerid, InfoTuto[1]);
			PlayerTextDrawShow(playerid, InfoTuto[2]);
		    SetPlayerInterior(playerid,0);

			SetPlayerCameraPos(playerid,CamaraAeropuerto);
			SetPlayerCameraLookAt(playerid,CamaraAeropuertoAt);
			PlayerTextDrawSetString(playerid,TituloTuto,"Bienvenido a ~p~PRUEBA!");
			PlayerTextDrawSetString(playerid,InfoTuto[0],"Bienvenido a PRUEBA RP, en este servidor nos preocupamos por los usuarios");
			PlayerTextDrawSetString(playerid,InfoTuto[1],"y mas que nada, que disfrute jugando en nuestro servidor! Ahora pasamos a un breve tutorial");
			PlayerTextDrawSetString(playerid,InfoTuto[2],"donde le mostraremos la ciudad. Pulse 'Click'  para ir hacia la siguiente pagina!");

		}
		case 2:
		{
			LimpiarPantalla(playerid,10);
			InterpolateCameraPos(playerid,CamaraAeropuerto,CamaraLSPD,4000,CAMERA_MOVE);
			InterpolateCameraLookAt(playerid,CamaraAeropuertoAt,CamaraLSPDAt,4000,CAMERA_MOVE);
			SetPlayerPos(playerid,POS_LSPD);
			PlayerTextDrawSetString(playerid,TituloTuto,"Comisaria");
			PlayerTextDrawSetString(playerid,InfoTuto[0],"La policia de la ciudad... aqui vas a poder conseguir ayuda policial las 24 horas,");
			PlayerTextDrawSetString(playerid,InfoTuto[1],"tambien podras comunicarte con ellos llamando al 101 y dejas los datos que te piden.");
			PlayerTextDrawSetString(playerid,InfoTuto[2],"Entre otros privilegios, la policia te atendera denuncias de todo tipo:robos, secuestros, etc.");
		}
		case 3:
		{
			LimpiarPantalla(playerid,10);
			InterpolateCameraPos(playerid,CamaraClinica,CamaraCamioneros,3000,CAMERA_MOVE);
			InterpolateCameraLookAt(playerid,CamaraClinicaAt,CamaraCamionerosAt,3000,CAMERA_MOVE);
			SetPlayerPos(playerid,CamaraCamioneros+3);
			PlayerTextDrawSetString(playerid,TituloTuto,"Trabajos");
			PlayerTextDrawSetString(playerid,InfoTuto[0],"Puedes firmar un contrato para conseguir un trabajo, como por ejemplo ~r~camionero");
			PlayerTextDrawSetString(playerid,InfoTuto[1],"y asi ganar dinero, ya que practicamente, este modo (roleplay) consiste en ganarte la vida,");
			PlayerTextDrawSetString(playerid,InfoTuto[2],"comprar casas, vehiculos etc, usa /ayuda trabajos para ver los comandos/trabajos disponibles");
		}
		case 4:
		{
			InterpolateCameraPos(playerid,CamaraGrotti,CamaraAutosUsados,3000,CAMERA_MOVE);
			InterpolateCameraLookAt(playerid,CamaraGrottiAt,CamaraAutosUsadosAt,3000,CAMERA_MOVE);
			SetPlayerPos(playerid,POS_AUTOSUSADOS);

			LimpiarPantalla(playerid,10);
			PlayerTextDrawSetString(playerid,TituloTuto,"Compra y venta de autos usados");
			PlayerTextDrawSetString(playerid,InfoTuto[0],"Aqui, se pueden comprar los autos usados deportivos que estan puestos por administradores");
			PlayerTextDrawSetString(playerid,InfoTuto[1],"usted puede comprar un auto en la consecionaria, y si ya no lo nesesitas venderlo aqui");
			PlayerTextDrawSetString(playerid,InfoTuto[2],"aunque requerira de nivel 2 (jugar 5 horas al menos en el servidor) para comprar uno.");
		}
		case 5:
		{
	 		InterpolateCameraPos(playerid,CamaraLSTV,CamaraSurenos,6000,CAMERA_MOVE);
			InterpolateCameraLookAt(playerid,CamaraLSTVAt,CamaraSurenosAt,6000,CAMERA_MOVE);
			SetPlayerPos(playerid,POS_SURENOS);
			LimpiarPantalla(playerid,10);
			PlayerTextDrawSetString(playerid,TituloTuto,"Familias");
			PlayerTextDrawSetString(playerid,InfoTuto[0],"Tambien, existe las familias. Estas, se crean dentro del juego, compran una casa");
			PlayerTextDrawSetString(playerid,InfoTuto[1],"y autos para todos, por ejemplo Hay familias pasivas, y familias mafiosas. Ademas");
			PlayerTextDrawSetString(playerid,InfoTuto[2],"puedes agregar tus autos a tu familia, para que lo usen los miembros, entre otras cosas");
		}
		case 6:
		{
	 		InterpolateCameraPos(playerid,CamaraSurenos,CamaraAlhambra,5000,CAMERA_MOVE);
			InterpolateCameraLookAt(playerid,CamaraSurenosAt,CamaraAlhambraAt,5000,CAMERA_MOVE);
			SetPlayerPos(playerid,POS_ALHAMBRA);
			LimpiarPantalla(playerid,10);
			PlayerTextDrawSetString(playerid,TituloTuto,"Boliches");
			PlayerTextDrawSetString(playerid,InfoTuto[0],"Te gusta la noche, la joda, el alcohol? Este es tu lugar");
			PlayerTextDrawSetString(playerid,InfoTuto[1],"El club nocturno alhambra es para venir a pasar un buen rato con tus amigos, bailar");
			PlayerTextDrawSetString(playerid,InfoTuto[2],"divertirse, tomar alcohol, chapar minas y mas! disfruta de este lugar!");
		}
Reply
#2

amigo acб no van pedidos, aquн no te darбn todo echo ya, debes hacerlo tu mismo
Reply
#3

pero quй quieres hacer, bъscate unos Textdraws y ponles el nombre de la definiciуn que tienen esos ya que eso es un tutorial, no son los Textdraws.

PD: Porquй le dicen "la gm"?
Reply
#4

por DesingMyCry.

pawn Код:
#include <a_samp>
/*
#undef MAX_PLAYERS
#define MAX_PLAYERS 1
*/


/*||        Demas globales                  ||*/
forward callbackTutorial(jugadorid);
forward callbackTutorialInicio(jugadorid);
forward callbackTutorialTermino(jugadorid);
#define TUTORIAL_TIEMPO 12000 //Milisegundos que demorarб en pasar al otro tutorial
#define TUTORIAL_MAX_TAM 256 //Mбximo tamaсo de las cadenas que se mostrarбn

/*||        Variables                       ||*/
new bool:jTutorial[MAX_PLAYERS]; //Dice si el jugador esta en tutorial o nу
new numeroTutorial[MAX_PLAYERS]; //El ID del tutorial en el que esta
new tiempoTutorial[MAX_PLAYERS]; //Para usar con SetTimer y SetTimerEx
enum EnumInfoTutorial
{
    tut_id,
    tut_ms,
    tut_info[TUTORIAL_MAX_TAM],
    Float:tut_posCamara[3],
    Float:tut_posJugador[3]
}
new infoTutorial[][EnumInfoTutorial] =
{
    {   0, TUTORIAL_TIEMPO, "Primera parte del tutorial", {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}      },
    {   1, TUTORIAL_TIEMPO, "Segunda parte del tutorial", {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}      }
};

/*||        Funciones principales           ||*/
        //Iniciar el tutorial
stock iniciarTutorial(jugadorid, desdeID = 0)
{
    //Si ya esta en el tutorial
    if(jTutorial[jugadorid] == true) return 2;
   
    //Dice que esta en el tutorial
    jTutorial[jugadorid] = true;
   
    //Congela al jugador
    TogglePlayerControllable(jugadorid, false);
   
    //Dice que inicia el tutorial desde el punto "desdeID" (por defecto, el principio)
    numeroTutorial[jugadorid] = desdeID;
   
    //Posiciona la cбmara del jugador
    SetPlayerCameraPos(jugadorid, infoTutorial[numeroTutorial[jugadorid]][tut_posCamara][0], infoTutorial[numeroTutorial[jugadorid]][tut_posCamara][1], infoTutorial[numeroTutorial[jugadorid]][tut_posCamara][2]);
    SetPlayerCameraLookAt(jugadorid, infoTutorial[numeroTutorial[jugadorid]][tut_posJugador][0], infoTutorial[numeroTutorial[jugadorid]][tut_posJugador][1], infoTutorial[numeroTutorial[jugadorid]][tut_posJugador][2]);

    //Lleva al jugador a la posiciуn
    SetPlayerPos(jugadorid, infoTutorial[numeroTutorial[jugadorid]][tut_posJugador][0], infoTutorial[numeroTutorial[jugadorid]][tut_posJugador][1], infoTutorial[numeroTutorial[jugadorid]][tut_posJugador][2]);

    //Envia el mensaje
    GameTextForPlayer(jugadorid, infoTutorial[numeroTutorial[jugadorid]][tut_info], infoTutorial[numeroTutorial[jugadorid]][tut_ms], 3);
   
    //Crea el tiempo para pasar a la siguiente
    KillTimer(tiempoTutorial[jugadorid]);
    tiempoTutorial[jugadorid] = SetTimerEx("callbackTutorial", infoTutorial[numeroTutorial[jugadorid]][tut_ms], false, "i", jugadorid);
   
    //Llama a la callback
    CallLocalFunction("callbackTutorialInicio", "i", jugadorid);
   
    return 1;
}
        //Saber si un jugador esta en el tutorial o nу
stock bool:enTutorial(jugadorid) return jTutorial[jugadorid];

public callbackTutorial(jugadorid)
{
    //Aumenta la informaciуn
    ++numeroTutorial[jugadorid];

    if(numeroTutorial[jugadorid] >= sizeof(infoTutorial))
    {
        //Terminу el tutorial
       
        //Descongela al jugador
        TogglePlayerControllable(jugadorid, true);
       
        //Cбmara
        SetCameraBehindPlayer(jugadorid);
       
        //Dice que no esta en el tutorial
        jTutorial[jugadorid] = false;
       
        //Llama a la callback
        CallLocalFunction("callbackTutorialTermino", "i", jugadorid);
       
        return 1;
    }
    else
    {
        //Aun no termina el tutorial
       
        //Posiciona la cбmara del jugador
        SetPlayerCameraPos(jugadorid, infoTutorial[numeroTutorial[jugadorid]][tut_posCamara][0], infoTutorial[numeroTutorial[jugadorid]][tut_posCamara][1], infoTutorial[numeroTutorial[jugadorid]][tut_posCamara][2]);
        SetPlayerCameraLookAt(jugadorid, infoTutorial[numeroTutorial[jugadorid]][tut_posJugador][0], infoTutorial[numeroTutorial[jugadorid]][tut_posJugador][1], infoTutorial[numeroTutorial[jugadorid]][tut_posJugador][2]);

        //Lleva al jugador a la posiciуn
        SetPlayerPos(jugadorid, infoTutorial[numeroTutorial[jugadorid]][tut_posJugador][0], infoTutorial[numeroTutorial[jugadorid]][tut_posJugador][1], infoTutorial[numeroTutorial[jugadorid]][tut_posJugador][2]);

        //Envia el mensaje
        GameTextForPlayer(jugadorid, infoTutorial[numeroTutorial[jugadorid]][tut_info], infoTutorial[numeroTutorial[jugadorid]][tut_ms], 3);

        //Crea el tiempo para pasar a la siguiente
        KillTimer(tiempoTutorial[jugadorid]);
        tiempoTutorial[jugadorid] = SetTimerEx("callbackTutorial", infoTutorial[numeroTutorial[jugadorid]][tut_ms], false, "i", jugadorid);
       
        return 1;
    }
}

public OnPlayerConnect(playerid)
{
    //Dice que esta en el principio del tutorial
    numeroTutorial[playerid] = 0;
   
    //Dice que no esta en el tutorial
    jTutorial[playerid] = false;
   
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    //Si esta en el tutorial y se desconecta, elimina el tiempo
    if(enTutorial(playerid)) KillTimer(tiempoTutorial[playerid]);
   
    return 1;
}
Te explico basicamente como hacerlo.

pawn Код:
forward callbackTutorialInicio(jugadorid);
forward callbackTutorialTermino(jugadorid);
Esas 2 callbacks tienen un nombre obvio no crees?

pawn Код:
#define TUTORIAL_TIEMPO 12000 //Milisegundos que demorarб en pasar al otro tutorial
#define TUTORIAL_MAX_TAM 256 //Mбximo tamaсo de las cadenas que se mostrarбn
La primera linea es el tiempo por defecto de todas las informaciones, aunque cada una debe tener una propia.
La segunda es el tamaсo mбximo de la informaciуn que pondrбs, yo puse 256 para prevenir.


pawn Код:
new infoTutorial[][EnumInfoTutorial] =
{
    {   0, TUTORIAL_TIEMPO, "Primera parte del tutorial", {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}      },
    {   1, TUTORIAL_TIEMPO, "Segunda parte del tutorial", {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}      }
};
1.- ID; te recomiendo que lo utilizes de buena forma, no afecta en nada el nъmero que uses ahн pero es mejor que mantengas un orden siempre.
2.- Milisegundos; este es el tiempo en milisegundos que demorarб o se mostrarб el mensaje en la pantalla.
3.- Mensaje; obviamente, el mensaje que se mostrarб.
4.- Camara; la posiciуn de la cбmara.
5.- MCamara; donde mirarб la cбmara, ademбs de la posiciуn donde estarб el jugador mientras esta en esta parte del tutorial.

Para agregar mas simplemente agrega mas lineas, como una simple variable.


pawn Код:
native iniciarTutorial(jugadorid, desdeID = 0);
native bool:enTutorial(jugadorid);
La primera es para iniciar el tutorial, retornarб 2 si el jugador ya estaba en el tutorial y 1 si se iniciу correctamente.
La segunda es para saber si esta en el tutorial o nу.

Reply
#5

Otacon, gracias por ayudarme pero al final de todo me saco estos errores;

Код:
C:\Users\MaikelRincon\Documents\ZONALATINARP\pawno\include\morphinc.inc(5) : warning 219: local variable "x" shadows a variable at a preceding level
C:\Users\MaikelRincon\Documents\ZONALATINARP\pawno\include\morphinc.inc(5) : warning 219: local variable "y" shadows a variable at a preceding level
C:\Users\MaikelRincon\Documents\ZONALATINARP\pawno\include\morphinc.inc(5) : warning 219: local variable "z" shadows a variable at a preceding level
C:\Users\MaikelRincon\Documents\ZONALATINARP\pawno\include\progressbar.inc(63) : warning 219: local variable "x" shadows a variable at a preceding level
C:\Users\MaikelRincon\Documents\ZONALATINARP\pawno\include\progressbar.inc(63) : warning 219: local variable "y" shadows a variable at a preceding level
C:\Users\MaikelRincon\Documents\ZONALATINARP\gamemodes\ZonaLatinaRP.pwn(241) : error 021: symbol already defined: "jTutorial"
C:\Users\MaikelRincon\Documents\ZONALATINARP\gamemodes\ZonaLatinaRP.pwn(294) : error 028: invalid subscript (not an array or too many subscripts): "jTutorial"
C:\Users\MaikelRincon\Documents\ZONALATINARP\gamemodes\ZonaLatinaRP.pwn(312) : error 028: invalid subscript (not an array or too many subscripts): "jTutorial"
C:\Users\MaikelRincon\Documents\ZONALATINARP\gamemodes\ZonaLatinaRP.pwn(312) : warning 215: expression has no effect
C:\Users\MaikelRincon\Documents\ZONALATINARP\gamemodes\ZonaLatinaRP.pwn(312) : error 001: expected token: ";", but found "]"
C:\Users\MaikelRincon\Documents\ZONALATINARP\gamemodes\ZonaLatinaRP.pwn(312) : error 029: invalid expression, assumed zero
C:\Users\MaikelRincon\Documents\ZONALATINARP\gamemodes\ZonaLatinaRP.pwn(312) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


6 Errors.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)