[AYUDA] Cuestionario de Rol
#1

Hola, como dije en anterior post estoy creando un servidor Roleplay, pero queremos que sуlo entre gente con verdadero rol, al menos con un 60% de calificaciуn en rol. Por ello, querнamos crear un pequeсo formulario con 10 preguntas pero con un limite de 50. A ver si me explico, una persona entra al servidor y hace 10 preguntas pero al entrar otra persona le tocarб hacer otras 10 preguntas ajenas a las del otro jugador. Es decir con un Random si no me equivoco, si me podrнan decir cуmo crear un formulario o algъn link que estй aquн de referencia, muchas gracias.
Reply
#2

Buenas, yo estoy desarrollando el servidor junto a Rayco y me ha parecido buena idea dejar aquн el cуdigo del tutorial que tiene el GM, el cuestionario vendrнa justo despuйs del tutorial pero he intentado poner los Dialogs y tira muchos errores, por eso querrнamos saber cуmo y despuйs de quй lнnea habrнa que empezar a poner los Dialogs.

Gracias de antemano.

pawn Код:
function Tutorial_Inside(i) // Tutorial optimizado
{
    new string[512];
    if(TutStep[i] == 1)
    {
        if(TutTime[i] >= 1)
        {
            switch (TutTime[i])
            {
                case 1:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    ClearChatbox(i);
                    TextDrawShowForPlayer(i, TextTut[i]);
                    for(new p = 1; p < 5; p++)
                    {
                        TextDrawShowForPlayer(i, TutTxt[p]);
                    }
                    gOoc[i] = 1; gNews[i] = 1; gFam[i] = 1; gNewbie[i]=1;
                    SetPlayerCameraPos(i,1462.0864,-1723.2189,13.6610);
                    SetPlayerCameraLookAt(i,1480.3210,-1782.5449,39.5468);
                    SetPlayerPos(i,1496.9926,-1665.6772,14.0469);
                    SetPlayerVirtualWorld(i, 800);
                    TogglePlayerControllable(i, 0);
                    format(string, sizeof(string),      "Bienvenido, este servidor es un modo de juego Roleplay y es muy importante~n~\
                                                         que te registres y visites nuestro foro para poder superar el cuestionario posterior al tutorial si eres nuevo.~n~\
                                                         Tambiйn recuerda que tenemos ayudantes que pueden ayudarte en~n~\
                                                         cualquier duda que tengas, el comando para solicitarlos es ~b~/ayudame.~n~\
                                                         ~w~ЎEsperamos que te diviertas y que invites a tus amigos!"
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 2:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    SetPlayerCameraPos(i,1256.5342,-2156.3215,83.8667);
                    SetPlayerCameraLookAt(i,1357.3175,-2099.8274,54.6453);
                    SetPlayerPos(i,1176.0361,-2182.2996,58.6712);
                    format(string, sizeof(string),      "Bien, comenzemos con algo sencillo y que de repente hasta el momento te has~n~\
                                                        preguntado. Que es Role Play? Aqui la respuesta, Roleplay es el modo de juego~n~\
                                                        de este servidor y se basa en dar vida a tu personaje, simular la vida real~n~\
                                                        y comportarte tal como quieres que sea tu personaje."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 3:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    SetPlayerCameraPos(i,2079.2710,-1777.4927,26.1454);
                    SetPlayerCameraLookAt(i,2105.4841,-1821.9220,18.2734);
                    SetPlayerPos(i,2106.8579,-1806.2799,13.5547);
                    format(string, sizeof(string),      "Existen muchas formas de generar dinero con los trabajos disponibles que~n~\
                                                        tiene la ciudad.~n~\
                                                        Puedes buscar trabajos con ~r~/buscarjob.~n~~n~\
                                                        ~w~Para ver la informacion de cada trabajo usa ~r~/ayudajob."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 4:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    SetPlayerCameraPos(i,2098.2043,-1613.8120,32.3267);
                    SetPlayerCameraLookAt(i,2060.1519,-1547.7297,16.6530);
                    SetPlayerPos(i,2079.7817,-1581.7488,13.4535);
                    format(string, sizeof(string),      "Las familias y bandas nacen dentro de la ciudad, puedes aplicar para una~n~\
                                                         en el foro, solo sigue los pasos dados.~n~\
                                                         Ellos siempre estan pendientes en obtener la posiciуn de los puntos de venta de droga y~n~\
                                                         materiales. Puedes ser parte de ellos buscбndolos en el juego y teniendo un personaje que se adapte a este estilo de rol."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 5:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    SetPlayerCameraPos(i,539.0887,-1238.4155,20.8649);
                    SetPlayerCameraLookAt(i,545.0177,-1293.3966,25.3480);
                    SetPlayerPos(i,562.0253,-1256.7560,26.7422);
                    format(string, sizeof(string),      "Hay concesionarios donde puedes comprar un vehнculo cuando tengas dinero,~n~\
                                                         solo tienes que subir a un vehiculo del lugar y seguir las indicaciones~w~.~n~\
                                                         Es posible tener dos vehнculos, recuerda que existen seguros que puedes comprar~n~\
                                                         en las tiendas ~y~24/7~w~."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 6:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    SetPlayerPos(i,1368.9191,-1295.9468,34.2421);
                    SetPlayerCameraPos(i,1332.8048,-1271.0814,12.8059);
                    SetPlayerCameraLookAt(i,1365.8594,-1286.4556,24.6687);
                    format(string, sizeof(string),      "їAburrido? Diviйrtete con tus amigos en el Paintball que se encuentra en la 2da~n~\
                                                         planta del Ammunation, solo necesitas comprar fichas para ingresar y canjearlas~n~\
                                                         por armas.~n~~n~\
                                                         ~w~Nota: ~r~Recuerda que tienes restriccion de armas las 2 primeras horas de juego."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 7:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    SetPlayerPos(i,2257.7620,-1642.6335,19.2262);
                    SetPlayerCameraPos(i,2264.7561,-1654.0725,16.3083);
                    SetPlayerCameraLookAt(i,2245.9846,-1665.2828,19.2262);
                    format(string, sizeof(string),      "Si necesitas cambiarte de ropa o quieres accesorios puedes buscar las tiendas de~n~\
                                                         ropa, hay muchas tiendas de ropa, puedes diferenciarlas por el icono de un~n~\
                                                         Jersey azul de cada tienda.~n~~n~\
                                                         ~b~Comandos: ~w~/cropa y /ctoys."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 8:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    Streamer_UpdateEx(i, 1554.3381,-1675.5692,16.1953);
                    SetPlayerPos(i, 1554.3381,-1675.5692,-10.0);
                    SetPlayerCameraPos(i, 1514.7783,-1700.2913,36.7506);
                    SetPlayerCameraLookAt(i, 1554.3381,-1675.5692,16.1953);
                    format(string, sizeof(string),      "Las fuerzas de la ley estan disponibles para la tranquilidad de cada ciudadano,~n~\
                                                         si cometes un crimen puedes quedar como buscado en el sistema del gobierno o~n~\
                                                         ser arrestado, puedes contactar ~b~(Nick Azul) ~w~con ellos en el juego.~n~~n~\
                                                         Tambien puedes aplicar en el foro para ser parte de ellos."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 9:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 8000, 0, "d", i);
                    Streamer_UpdateEx(i,1175.5581,-1324.7922,18.1610);
                    SetPlayerPos(i, 1188.4574,-1309.2242,-10.0);
                    SetPlayerCameraPos(i, 1207.39, -1294.71, 24.61);
                    SetPlayerCameraLookAt(i, 1181.72, -1322.65, 13.58);
                    format(string, sizeof(string),      "Si tъ resultas herido puedes usar /aceptar muerte o /servicios medicos y esperar~n~\
                                                         por una ambulancia de LAMD. Ellos confiscaran tus armas.~n~\
                                                         Puedes unirte a ellos contactбndolos ~h~~r~(Nick Rosado) ~w~en el juego.~n~~n~\
                                                         Tambien puedes aplicar en el foro para ser parte de ellos."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 10:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 8000, 0, "d", i);
                    TogglePlayerControllable(i, 0);
                    Streamer_UpdateEx(i,-2679.5342,1639.0643,65.8865);
                    SetPlayerPos(i, -2679.5342,1639.0643,-10.0);
                    SetPlayerCameraPos(i,-2734.3477,1520.4971,87.1810);
                    SetPlayerCameraLookAt(i,-2679.5342,1639.0643,65.8865);
                    format(string, sizeof(string),      "~r~Reglas - Resumen~n~\
                                                         ~w~| No DeathMatch - No matar personas sin razуn ni rol alguno.~n~\
                                                         | No PowerGaming - No hacer cosas ilуgicas o sin cabida dentro de un determinado rol y/o forzar rol.~n~\
                                                         | No evadir rol. Esto podrнa acarrear un baneo permanente."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 11:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 8000, 0, "d", i);
                    TogglePlayerControllable(i, 0);
                    Streamer_UpdateEx(i,-2679.5342,1639.0643,65.8865);
                    SetPlayerPos(i, -2679.5342,1639.0643,-10.0);
                    SetPlayerCameraPos(i,-2734.3477,1520.4971,87.1810);
                    SetPlayerCameraLookAt(i,-2679.5342,1639.0643,65.8865);
                    format(string, sizeof(string),      "~r~i-Store - Informacion~n~\
                                                         ~w~Contamos con una tienda online donde podras comprar todo.~n~\
                                                         tipo de beneficio para ti, recuerda que con esta compra estas.~n~\
                                                         ayudando con los gastos del servidor."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 12:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 8000, 0, "d", i);
                    Streamer_UpdateEx(i,-2679.5342,1639.0643,65.8865);
                    SetPlayerPos(i, -2679.5342,1639.0643,-10.0);
                    SetPlayerCameraPos(i,-2734.3477,1520.4971,87.1810);
                    SetPlayerCameraLookAt(i,-2679.5342,1639.0643,65.8865);
                    format(string, sizeof(string),      "~w~Equipo de desarrollo: Antxon Echevarria, Dereck Dawson, Brandon Murray.");
                    TextDrawSetString(TextTut[i], string);
                }
                case 13:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 8000, 0, "d", i);
                    Streamer_UpdateEx(i,-2679.5342,1639.0643,65.8865);
                    SetPlayerPos(i, -2679.5342,1639.0643,-10.0);
                    SetPlayerCameraPos(i,-2734.3477,1520.4971,87.1810);
                    SetPlayerCameraLookAt(i,-2679.5342,1639.0643,65.8865);
                    format(string, sizeof(string),      "Fin del tutorial, esperamos que tengas una idea de como funciona este servidor~n~\
                                                         y como puedes aprovechar al maximo la experiencia del roleplay.~n~\
                                                         Si tienes otra duda puedes ingresar a nuestro foro que esta abajo.~n~\
                                                         Si ves algъn jugador sospechoso no dudes en reportarlo, usando el comando~n~\
                                                         ~y~/re id razуn~w~."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 14:
                {
                    PuedeP[i] = 0;
                    TextDrawHideForPlayer(i, TextTut[i]);
                    for(new p = 1; p < 5; p++)
                    {
                        TextDrawHideForPlayer(i, TutTxt[p]);
                    }
                    gOoc[i] = 0;    gNews[i] = 0;
                    gFam[i] = 0;    TutStep[i] = 0;
                    gNewbie[i]=0;    Muted[i] = 0;
                    TutTime[i] = 0;
                    SetPosEx(i, 1743.2155,-1862.1309,13.5767,0,0,0);
                    SendClientMessageEx(i, COLOR_GENERAL, "Ya has visto el tutorial, ahora tendrбs que superar un cuestionario para poder jugar en el servidor.");
                    SendClientMessageEx(i, -1, "Debes responder las preguntas correctamente, en caso contrario el servidor de kickearб.");
                    SendClientMessageEx(i, -1, "Si no sabes responder a las preguntas, te recomendamos mirar las guнas en el foro para poder superarlas.");
//Aquн es donde yo intentй poner los Dialogs, pero daba errores al compilar.
                    Info[i][pWRestricted] = 1;
                    Info[i][pTut] = 1;
                    Info[i][pTimePayDay] = 0;
                    Info[i][pLevel] = 1;
                    Info[i][pNMute] = 0;
                    TogglePlayerControllable(i, 1);
                    SetPlayerVirtualWorld(i, 0);
                    ClearAnimations(i);
                    GivePlayerCash(i, 2000);
                    SetCameraBehindPlayer(i);
                    format(string, sizeof(string), "~y~Bienvenido~n~%s", GetPlayerNameEx(i));
                    GameTextForPlayer(i, string, 4000, 1);
                    OnPlayerSavedStats(i);
                    TextDrawShowForPlayer(i, ZenonCity);
                   
                }
            }
        }
    }
    return 1;
}
Reply
#3

Usa switch y random, por ejemplo

pawn Код:
stock Preguntas(playerid)
{
    switch (random(3))
    {
        case 0:
        {
            //10 preguntas
            //Ejemplo
            ShowPlayerDialog(playerid, 255, DIALOG_STYLE_INPUT, "Pregunta 1", "їComo se llama este servidor?", "Siguiente", "Cancelar");
            //Pregunta 2
            //Pregunta 3...etc etc
        }
        case 1:
        {
            //Otras 10 preguntas
            //Ejemplo
            ShowPlayerDialog(playerid, 255, DIALOG_STYLE_INPUT, "Pregunta 1", "їQue es DM?", "Siguiente", "Cancelar");
            //Pregunta 2
            //Pregunta 3...etc etc
        }
        case 2:
        {
            //Otras 10 preguntas
            //Ejemplo
            ShowPlayerDialog(playerid, 255, DIALOG_STYLE_INPUT, "Pregunta 1", "їQue es OOC?", "Siguiente", "Cancelar");
            //Pregunta 2
            //Pregunta 3...etc etc
        }
    }
    return 1;
}
Solo es un ejemplo, para verificar lo que ponen los jugadores es en public OnDialogResponse
Reply
#4

Ese serнa un cuadro de texto, pero nosotros lo que queremos es por ejemplo seleccionar la pregunta nosotros y ellos tener que escoger entre varias respuestas, por ejemplo.

Pregunta 1 - Estбs en unity, vienen mбs de diez pandilleros y se acercan a tн. їQuй harнas?

A) Tomar mi arma y dispararles, total, nadie me viу.
B) Irme del lugar discretamente.
C) LLamar a la policia, mi vida estб en peligro.
D) Hablar con ellos, total, si me matan los reporto por Death Match.

Asн es lo que queremos hacer, me parece que lo tu has puesto era para que respondan los usuarios como poner la contrasсea, si no me equivoico. Y por ejemplo si eligen la B pasa la prueba y si elige la A pasa la prueba pero descontandole puntos, tienen que tener un 60 por ciento para llegar al final
Reply
#5

Quote:
Originally Posted by Rayco
Посмотреть сообщение
Ese serнa un cuadro de texto, pero nosotros lo que queremos es por ejemplo seleccionar la pregunta nosotros y ellos tener que escoger entre varias respuestas, por ejemplo.
Guнate de este ejemplo.

#define PREGUNTA1 220

pawn Код:
ShowPlayerDialog(playerid, PREGUNTA1, DIALOG_STYLE_LIST, "Pregunta 1 - Estбs en unity, vienen mбs de diez pandilleros y se acercan a tн. їQuй harнas?", "A) Tomar mi arma y dispararles, total, nadie me viу.\nB) Irme del lugar discretamente. \nC) LLamar a la policia, mi vida estб en peligro.\nD) Hablar con ellos, total, si me matan los reporto por Death Match.", "Seleccionar", "Salir");
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch (dialogid)
    {
        case PREGUNTA1:
        {
            if (response)
            {
                switch (listitem)
                {
                    case 3: // Esta es si seleccionan la respuesta D) Hablar con ellos, total, si me matan los reporto por Death Match.
                    {
                        //Respondio correctamente
                    }

                    default:
                    {
                        //Respondio incorrectamente
                    }
                }
            }
            else
            {
                //No quiso responder y le dio a salir
            }
        }
    }
}
Reply
#6

He copiado y adaptado el cuestionario en el cual aparece esa pregunta y ha quedado algo asн, pero me da un error en la lнnea despuйs de terminar el dialogid de ANTES_PREGUNTAS

pawn Код:
if (dialogid == ANTES_PREGUNTAS)
    {
             if(!response){
                SendClientMessageEx(playerid, COLOR_RED, "Usted ha sido expulsado automбticamente del servidor. Razуn: Cancelar el examen de rol.");
                Kick(playerid);
            }
            if(response){
                ShowPlayerDialog(playerid,PREGUNTA1,DIALOG_STYLE_LIST,"1- Estбs en una pelea, їcuбndo debes rolear las heridas?","Antes de la pelea, para no interrumpir.\nDespuйs de la pelea, para no interrumpir y hacerlo de acuerdo al resultado.\nA cada golpe, justo despuйs de recibirlo.\nNo es obligatorio, el juego ya las representa adecuadamente.","Continuar","Salir");
            }
            return 1;
        }
    switch(listitem){
       
        case PREGUNTA1:{
            if(!response){
                SendClientMessageEx(playerid, COLOR_RED, "Usted ha sido expulsado automбticamente del servidor. Razуn: Cancelar el examen de rol.");
                Kick(playerid);
            }
            if(response){
                if(listitem == 1) { Correctas[playerid] += 1; SendClientMessageEx(playerid, COLOR_YELLOW, "La pregunta #1 ha sido contestada de forma correcta."); }
                ShowPlayerDialog(playerid,PREGUNTA2,DIALOG_STYLE_LIST,"2. Asaltas un comercio y el asalto se prolonga, їquй debes hacer?","Llamar a la policнa, roleando ser un tercero que os ha visto.\nAcabar con todos los testigos y huir, no importa si hay gente en la calle.\nEl dependiente llama a la policнa con rol de entorno, le matas por ello.\nMe suicido, total, la policнa no me encontrarб.","Continuar","Salir");
            }
            return 1;
        }
        case PREGUNTA2:{
            if(!response){
                SendClientMessageEx(playerid, COLOR_RED, "Usted ha sido expulsado automбticamente del servidor. Razуn: Cancelar el examen de rol.");
                Kick(playerid);
            }
            if(response){
                if(listitem == 0) { Correctas[playerid] += 1; SendClientMessageEx(playerid, COLOR_YELLOW, "La pregunta #2 ha sido contestada de forma correcta."); }
                ShowPlayerDialog(playerid,PREGUNTA3,DIALOG_STYLE_LIST,"3. Pintas un grafiti en una calle transitada, їquй debes hacer?","Ir rбpido, los vecinos podrнan molestarse.\nIr bien armado por si una banda rival me viese y fuesen a por mн.\nLlamar a la policнa, roleando ser un posible vecino molesto, por ej.\nSi veo algъn policнa, dispararle para poder huir, soy pandillero.","Continuar","Salir");
            }
            return 1;
        }
        case PREGUNTA3:{
            if(!response){
                SendClientMessageEx(playerid, COLOR_RED, "Usted ha sido expulsado automбticamente del servidor. Razуn: Cancelar el examen de rol.");
                Kick(playerid);
            }
            if(response){
                if(listitem == 2) { Correctas[playerid] += 1; SendClientMessageEx(playerid, COLOR_YELLOW, "La pregunta #3 ha sido contestada de forma correcta."); }
                ShowPlayerDialog(playerid,PREGUNTA4,DIALOG_STYLE_LIST,"4. Estбs en una persecuciуn, їcуmo debes actuar?","Yendo a una velocidad moderada y respetando las seсales viales.\nNo realizar giros bruscos, podrнa poner en riesgo a los transeъntes.\nEvitar vнas muy arriesgadas o transitadas, resultarнa irreal.\nAtropellando transeъntes para despistar a los policнas.","Continuar","Salir");
            }
            return 1;
        }
        case PREGUNTA4:{
            if(!response){
                SendClientMessageEx(playerid, COLOR_RED, "Usted ha sido expulsado automбticamente del servidor. Razуn: Cancelar el examen de rol.");
                Kick(playerid);
            }
            if(response){
                if(listitem == 2) { Correctas[playerid] += 1; SendClientMessageEx(playerid, COLOR_YELLOW, "La pregunta #4 ha sido contestada de forma correcta."); }
                ShowPlayerDialog(playerid,PREGUNTA5,DIALOG_STYLE_LIST,"5. Huyes a pie, la policнa te rodea y apunta, їquй debes hacer?","Coger mi arma e intentar abatirlos a todos.\nEsquivar las balas corriendo en zig-zag.\nSi muevo un pelo me coserбn a tiros, mejor me rindo.\nAgito mi arma para que piensen que voy a usarla y huyo.","Continuar","Salir");
            }
            return 1;
        }
        case PREGUNTA5:{
            if(!response){
                SendClientMessageEx(playerid, COLOR_RED, "Usted ha sido expulsado automбticamente del servidor. Razуn: Cancelar el examen de rol.");
                Kick(playerid);
            }
            if(response){
                if(listitem == 2) { Correctas[playerid] += 1; SendClientMessageEx(playerid, COLOR_YELLOW, "La pregunta #5 ha sido contestada de forma correcta."); }
                ShowPlayerDialog(playerid,PREGUNTA6,DIALOG_STYLE_LIST,"6. їCуmo reaccionarнas si la policнa pasase por tu barrio?","Insultбndoles en voz alta y lanzбndoles objetos.\nCon mi pandilla balanceamos su coche y los intimidamos.\nInsinuamos que portamos armas y somos capaces de usarlas.\nMurmuramos insultos, gestos groseros, mala cara.","Continuar","Salir");
            }
            return 1;
        }
        case PREGUNTA6:{
            if(!response){
                SendClientMessageEx(playerid, COLOR_RED, "Usted ha sido expulsado automбticamente del servidor. Razуn: Cancelar el examen de rol.");
                Kick(playerid);
            }
            if(response){
                if(listitem == 3) { Correctas[playerid] += 1; SendClientMessageEx(playerid, COLOR_YELLOW, "La pregunta #6 ha sido contestada de forma correcta."); }
                ShowPlayerDialog(playerid,PREGUNTA7,DIALOG_STYLE_LIST,"7. Vas a usar tu arma, la llevas cargada y sin seguro, debes...","Rolear que la cargo y le quito delante de ellos.\nRolear como apunto, disparo y recargo delante\nNo rolear apuntar ni disparar, el juego ya lo representa.\nEl rival no sabrб si le he quitado el seguro, asн que no debo rolearlo.","Continuar","Salir");
            }
            return 1;
        }
        case PREGUNTA7:{
            if(!response){
                SendClientMessageEx(playerid, COLOR_RED, "Usted ha sido expulsado automбticamente del servidor. Razуn: Cancelar el examen de rol.");
                Kick(playerid);
            }
            if(response){
                if(listitem == 2) { Correctas[playerid] += 1; SendClientMessageEx(playerid, COLOR_YELLOW, "La pregunta #7 ha sido contestada de forma correcta."); }
                ShowPlayerDialog(playerid,PREGUNTA8,DIALOG_STYLE_LIST,"8. En un tiroteo te han alcanzado, їcuando roleas las heridas?","Justo al recibir la bala.\nCuando considere que no puedo continuar por el dolor.\nAl 'morir' y reaparecer herido acorde al script en ese mismo lugar.\nNinguna normativa lo regula, actъo segъn yo crea en base al rol.","Continuar","Salir");
            }
            return 1;
        }
        case PREGUNTA8:{
            if(!response){
                SendClientMessageEx(playerid, COLOR_RED, "Usted ha sido expulsado automбticamente del servidor. Razуn: Cancelar el examen de rol.");
                Kick(playerid);
            }
            if(response){
                if(listitem == 2) { Correctas[playerid] += 1; SendClientMessageEx(playerid, COLOR_YELLOW, "La pregunta #8 ha sido contestada de forma correcta."); }
                ShowPlayerDialog(playerid,PREGUNTA9,DIALOG_STYLE_LIST,"9. Huyes en coche, rozas un par de veces y finalmente vuelcas.","Los roces no se rolean, la vuelta de campana sн porque te detendrб.\nRoleas tanto pequeсos roces como la vuelta de campana.\nSi doy vuelta de campana pero caigo derecho, puedo continuar.\nRoleo pequeсos roces, la vuelta de campana me llevarнa mucho.","Continuar","Salir");
            }
            return 1;
        }
        case PREGUNTA9:{
            if(!response){
                SendClientMessageEx(playerid, COLOR_RED, "Usted ha sido expulsado automбticamente del servidor. Razуn: Cancelar el examen de rol.");
                Kick(playerid);
            }
            if(response){
                if(listitem == 0) { Correctas[playerid] += 1; SendClientMessageEx(playerid, COLOR_YELLOW, "La pregunta #9 ha sido contestada de forma correcta."); }
                ShowPlayerDialog(playerid,PREGUNTA10,DIALOG_STYLE_LIST,"10. En un tiroteo con varios agentes, matas a uno y al cabo del rato vuelve:","Es RK, detengo el rol por /b y aviso a un operador de juego.\nEs DM, detengo el rol por /b y aviso a un operador de juego.\nLos policнas abatidos aleatoriamente pueden volver al escenario.\nCon tal de no interrumpir el rol, espero al final para reportarle.","Continuar","Salir");
            }
            return 1;
        }
        case PREGUNTA10:{
            if(!response){
                SendClientMessageEx(playerid, COLOR_RED, "Usted ha sido expulsado automбticamente del servidor. Razуn: Cancelar el examen de rol.");
                Kick(playerid);
            }
            if(response){
                new porcentaje[MAX_PLAYERS];
                if(listitem == 2) { Correctas[playerid] += 1; SendClientMessageEx(playerid, COLOR_YELLOW, "La pregunta #10 ha sido contestada de forma correcta."); }
                porcentaje[playerid] = (Correctas[playerid] * 10);
                if(Correctas[playerid] > 6){
                    format(string, sizeof(string), "- Preguntas respondidas: 10\n- Respuestas correctas: %d\n\n-Resultado final: %d%% [APROBADO]\n\nЎFelicidades!, usted ha finalizado el examen con йxito. Ahora podrб personalizar a su personaje.", Correctas[playerid], porcentaje[playerid]);
                    ShowPlayerDialog(playerid,RESULTADO,DIALOG_STYLE_MSGBOX,"CA-RP - Resultado de la prueba",string,"Continuar","");
                }
                else{
                    format(string, sizeof(string), "- Preguntas respondidas: 10\n- Respuestas correctas: %d\n\n-Resultado final: %d%% [DESAPROBADO]\n\nLo sentimos, pero no aprobу el examen y la tendrб que repetir (se necesita mбs del 70%% para aprobar el mismo).", Correctas[playerid], porcentaje[playerid]);
                    ShowPlayerDialog(playerid,RESULTADO,DIALOG_STYLE_MSGBOX,"CA-RP - Resultado de la prueba",string,"Cerrar","");
                    Kick(playerid);
                    }
                }
                return 1;
            } //Despuйs de esto viene el siguiente dialogid, en cuya lнnea se produce el error.
     else if(dialogid == HQDELETE) //error 002: only a single statement (or expression) can follow each "case"
    {
їA quй puede deberse el error? He probado a quitar y aсadir corchetes pero siguen dando errores . Y una vez arreglado eso, їcуmo harнa para que apareciese el cuestionario tras pasar el tutorial? Haber pasado o no el tutorial se define asн:

pawn Код:
if(Info[playerid][pTut] == x) //Donde x puede ser 0 o 1.
Reply
#7

їPodrнan contestar a la pregunta de Canelo? Gracias.
Reply
#8

Quote:
Originally Posted by canelo9596
Посмотреть сообщение
Buenas, yo estoy desarrollando el servidor junto a Rayco y me ha parecido buena idea dejar aquн el cуdigo del tutorial que tiene el GM, el cuestionario vendrнa justo despuйs del tutorial pero he intentado poner los Dialogs y tira muchos errores, por eso querrнamos saber cуmo y despuйs de quй lнnea habrнa que empezar a poner los Dialogs.

Gracias de antemano.

pawn Код:
function Tutorial_Inside(i) // Tutorial optimizado
{
    new string[512];
    if(TutStep[i] == 1)
    {
        if(TutTime[i] >= 1)
        {
            switch (TutTime[i])
            {
                case 1:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    ClearChatbox(i);
                    TextDrawShowForPlayer(i, TextTut[i]);
                    for(new p = 1; p < 5; p++)
                    {
                        TextDrawShowForPlayer(i, TutTxt[p]);
                    }
                    gOoc[i] = 1; gNews[i] = 1; gFam[i] = 1; gNewbie[i]=1;
                    SetPlayerCameraPos(i,1462.0864,-1723.2189,13.6610);
                    SetPlayerCameraLookAt(i,1480.3210,-1782.5449,39.5468);
                    SetPlayerPos(i,1496.9926,-1665.6772,14.0469);
                    SetPlayerVirtualWorld(i, 800);
                    TogglePlayerControllable(i, 0);
                    format(string, sizeof(string),      "Bienvenido, este servidor es un modo de juego Roleplay y es muy importante~n~\
                                                         que te registres y visites nuestro foro para poder superar el cuestionario posterior al tutorial si eres nuevo.~n~\
                                                         Tambiйn recuerda que tenemos ayudantes que pueden ayudarte en~n~\
                                                         cualquier duda que tengas, el comando para solicitarlos es ~b~/ayudame.~n~\
                                                         ~w~ЎEsperamos que te diviertas y que invites a tus amigos!"
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 2:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    SetPlayerCameraPos(i,1256.5342,-2156.3215,83.8667);
                    SetPlayerCameraLookAt(i,1357.3175,-2099.8274,54.6453);
                    SetPlayerPos(i,1176.0361,-2182.2996,58.6712);
                    format(string, sizeof(string),      "Bien, comenzemos con algo sencillo y que de repente hasta el momento te has~n~\
                                                        preguntado. Que es Role Play? Aqui la respuesta, Roleplay es el modo de juego~n~\
                                                        de este servidor y se basa en dar vida a tu personaje, simular la vida real~n~\
                                                        y comportarte tal como quieres que sea tu personaje."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 3:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    SetPlayerCameraPos(i,2079.2710,-1777.4927,26.1454);
                    SetPlayerCameraLookAt(i,2105.4841,-1821.9220,18.2734);
                    SetPlayerPos(i,2106.8579,-1806.2799,13.5547);
                    format(string, sizeof(string),      "Existen muchas formas de generar dinero con los trabajos disponibles que~n~\
                                                        tiene la ciudad.~n~\
                                                        Puedes buscar trabajos con ~r~/buscarjob.~n~~n~\
                                                        ~w~Para ver la informacion de cada trabajo usa ~r~/ayudajob."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 4:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    SetPlayerCameraPos(i,2098.2043,-1613.8120,32.3267);
                    SetPlayerCameraLookAt(i,2060.1519,-1547.7297,16.6530);
                    SetPlayerPos(i,2079.7817,-1581.7488,13.4535);
                    format(string, sizeof(string),      "Las familias y bandas nacen dentro de la ciudad, puedes aplicar para una~n~\
                                                         en el foro, solo sigue los pasos dados.~n~\
                                                         Ellos siempre estan pendientes en obtener la posiciуn de los puntos de venta de droga y~n~\
                                                         materiales. Puedes ser parte de ellos buscбndolos en el juego y teniendo un personaje que se adapte a este estilo de rol."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 5:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    SetPlayerCameraPos(i,539.0887,-1238.4155,20.8649);
                    SetPlayerCameraLookAt(i,545.0177,-1293.3966,25.3480);
                    SetPlayerPos(i,562.0253,-1256.7560,26.7422);
                    format(string, sizeof(string),      "Hay concesionarios donde puedes comprar un vehнculo cuando tengas dinero,~n~\
                                                         solo tienes que subir a un vehiculo del lugar y seguir las indicaciones~w~.~n~\
                                                         Es posible tener dos vehнculos, recuerda que existen seguros que puedes comprar~n~\
                                                         en las tiendas ~y~24/7~w~."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 6:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    SetPlayerPos(i,1368.9191,-1295.9468,34.2421);
                    SetPlayerCameraPos(i,1332.8048,-1271.0814,12.8059);
                    SetPlayerCameraLookAt(i,1365.8594,-1286.4556,24.6687);
                    format(string, sizeof(string),      "їAburrido? Diviйrtete con tus amigos en el Paintball que se encuentra en la 2da~n~\
                                                         planta del Ammunation, solo necesitas comprar fichas para ingresar y canjearlas~n~\
                                                         por armas.~n~~n~\
                                                         ~w~Nota: ~r~Recuerda que tienes restriccion de armas las 2 primeras horas de juego."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 7:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    SetPlayerPos(i,2257.7620,-1642.6335,19.2262);
                    SetPlayerCameraPos(i,2264.7561,-1654.0725,16.3083);
                    SetPlayerCameraLookAt(i,2245.9846,-1665.2828,19.2262);
                    format(string, sizeof(string),      "Si necesitas cambiarte de ropa o quieres accesorios puedes buscar las tiendas de~n~\
                                                         ropa, hay muchas tiendas de ropa, puedes diferenciarlas por el icono de un~n~\
                                                         Jersey azul de cada tienda.~n~~n~\
                                                         ~b~Comandos: ~w~/cropa y /ctoys."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 8:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 10000, 0, "d", i);
                    Streamer_UpdateEx(i, 1554.3381,-1675.5692,16.1953);
                    SetPlayerPos(i, 1554.3381,-1675.5692,-10.0);
                    SetPlayerCameraPos(i, 1514.7783,-1700.2913,36.7506);
                    SetPlayerCameraLookAt(i, 1554.3381,-1675.5692,16.1953);
                    format(string, sizeof(string),      "Las fuerzas de la ley estan disponibles para la tranquilidad de cada ciudadano,~n~\
                                                         si cometes un crimen puedes quedar como buscado en el sistema del gobierno o~n~\
                                                         ser arrestado, puedes contactar ~b~(Nick Azul) ~w~con ellos en el juego.~n~~n~\
                                                         Tambien puedes aplicar en el foro para ser parte de ellos."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 9:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 8000, 0, "d", i);
                    Streamer_UpdateEx(i,1175.5581,-1324.7922,18.1610);
                    SetPlayerPos(i, 1188.4574,-1309.2242,-10.0);
                    SetPlayerCameraPos(i, 1207.39, -1294.71, 24.61);
                    SetPlayerCameraLookAt(i, 1181.72, -1322.65, 13.58);
                    format(string, sizeof(string),      "Si tъ resultas herido puedes usar /aceptar muerte o /servicios medicos y esperar~n~\
                                                         por una ambulancia de LAMD. Ellos confiscaran tus armas.~n~\
                                                         Puedes unirte a ellos contactбndolos ~h~~r~(Nick Rosado) ~w~en el juego.~n~~n~\
                                                         Tambien puedes aplicar en el foro para ser parte de ellos."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 10:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 8000, 0, "d", i);
                    TogglePlayerControllable(i, 0);
                    Streamer_UpdateEx(i,-2679.5342,1639.0643,65.8865);
                    SetPlayerPos(i, -2679.5342,1639.0643,-10.0);
                    SetPlayerCameraPos(i,-2734.3477,1520.4971,87.1810);
                    SetPlayerCameraLookAt(i,-2679.5342,1639.0643,65.8865);
                    format(string, sizeof(string),      "~r~Reglas - Resumen~n~\
                                                         ~w~| No DeathMatch - No matar personas sin razуn ni rol alguno.~n~\
                                                         | No PowerGaming - No hacer cosas ilуgicas o sin cabida dentro de un determinado rol y/o forzar rol.~n~\
                                                         | No evadir rol. Esto podrнa acarrear un baneo permanente."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 11:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 8000, 0, "d", i);
                    TogglePlayerControllable(i, 0);
                    Streamer_UpdateEx(i,-2679.5342,1639.0643,65.8865);
                    SetPlayerPos(i, -2679.5342,1639.0643,-10.0);
                    SetPlayerCameraPos(i,-2734.3477,1520.4971,87.1810);
                    SetPlayerCameraLookAt(i,-2679.5342,1639.0643,65.8865);
                    format(string, sizeof(string),      "~r~i-Store - Informacion~n~\
                                                         ~w~Contamos con una tienda online donde podras comprar todo.~n~\
                                                         tipo de beneficio para ti, recuerda que con esta compra estas.~n~\
                                                         ayudando con los gastos del servidor."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 12:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 8000, 0, "d", i);
                    Streamer_UpdateEx(i,-2679.5342,1639.0643,65.8865);
                    SetPlayerPos(i, -2679.5342,1639.0643,-10.0);
                    SetPlayerCameraPos(i,-2734.3477,1520.4971,87.1810);
                    SetPlayerCameraLookAt(i,-2679.5342,1639.0643,65.8865);
                    format(string, sizeof(string),      "~w~Equipo de desarrollo: Antxon Echevarria, Dereck Dawson, Brandon Murray.");
                    TextDrawSetString(TextTut[i], string);
                }
                case 13:
                {
                    PuedeP[i] = 1;
                    SetTimerEx("PuedePTimer", 8000, 0, "d", i);
                    Streamer_UpdateEx(i,-2679.5342,1639.0643,65.8865);
                    SetPlayerPos(i, -2679.5342,1639.0643,-10.0);
                    SetPlayerCameraPos(i,-2734.3477,1520.4971,87.1810);
                    SetPlayerCameraLookAt(i,-2679.5342,1639.0643,65.8865);
                    format(string, sizeof(string),      "Fin del tutorial, esperamos que tengas una idea de como funciona este servidor~n~\
                                                         y como puedes aprovechar al maximo la experiencia del roleplay.~n~\
                                                         Si tienes otra duda puedes ingresar a nuestro foro que esta abajo.~n~\
                                                         Si ves algъn jugador sospechoso no dudes en reportarlo, usando el comando~n~\
                                                         ~y~/re id razуn~w~."
);
                    TextDrawSetString(TextTut[i], string);
                }
                case 14:
                {
                    PuedeP[i] = 0;
                    TextDrawHideForPlayer(i, TextTut[i]);
                    for(new p = 1; p < 5; p++)
                    {
                        TextDrawHideForPlayer(i, TutTxt[p]);
                    }
                    gOoc[i] = 0;    gNews[i] = 0;
                    gFam[i] = 0;    TutStep[i] = 0;
                    gNewbie[i]=0;    Muted[i] = 0;
                    TutTime[i] = 0;
                    SetPosEx(i, 1743.2155,-1862.1309,13.5767,0,0,0);
                    SendClientMessageEx(i, COLOR_GENERAL, "Ya has visto el tutorial, ahora tendrбs que superar un cuestionario para poder jugar en el servidor.");
                    SendClientMessageEx(i, -1, "Debes responder las preguntas correctamente, en caso contrario el servidor de kickearб.");
                    SendClientMessageEx(i, -1, "Si no sabes responder a las preguntas, te recomendamos mirar las guнas en el foro para poder superarlas.");
//Aquн es donde yo intentй poner los Dialogs, pero daba errores al compilar.
                    Info[i][pWRestricted] = 1;
                    Info[i][pTut] = 1;
                    Info[i][pTimePayDay] = 0;
                    Info[i][pLevel] = 1;
                    Info[i][pNMute] = 0;
                    TogglePlayerControllable(i, 1);
                    SetPlayerVirtualWorld(i, 0);
                    ClearAnimations(i);
                    GivePlayerCash(i, 2000);
                    SetCameraBehindPlayer(i);
                    format(string, sizeof(string), "~y~Bienvenido~n~%s", GetPlayerNameEx(i));
                    GameTextForPlayer(i, string, 4000, 1);
                    OnPlayerSavedStats(i);
                    TextDrawShowForPlayer(i, ZenonCity);
                   
                }
            }
        }
    }
    return 1;
}
Tu "tutorial" no esta tan optimizado, Haces una comprobacion antes del if, sin embargo el switch hace lo mismo solo que le puedes agregar "default", y listo, el uso de for en cantidades menores a 8 lo veo in-necesario ya que al llamar al bucle por menores cantidades es mas rapido solo un copy-paste de la funcion las 5 veces, (lo comprobe con iteraciones), no es cosa para morirse pero optimizar es sacarle el maximo, usando el minimo.
Reply
#9

Bueno, el tutorial venнa ya en el GM, no lo he tocado mucho vaya que la cagase . El problema estб en el cuestionario, me tira ese error y no tengo ni idea el quй lo causa... y tampoco sй cуmo hacer que el cuestionario aparezca despuйs del tutorial.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)