[FilterScript] Sistema de Niveles (+Premios)
#1

Hola!
Bueno, como veran estoy liberando algunos scripts que fui hciendo y nunca publiquй.
Les dejo este sistema de niveles con premios (estilo FenixZone pero InGame)

pawn Код:
/*
Hola! El siguiente script fue scripteado para mi GM, sin intenciуn alguna de lanzarlo al publico.
Pero como no usare el GM, liberarй todos los codigos que me parezcan mas o menos aceptables.
Espero que no borren los creditos! Gracias.
Creador: rooT.
Testers: MrJacK, Flea.
*/

#define FILTERSCRIPT

#include <a_samp>
#include <dini>
#include <zcmd>


new archivo[256];
enum pInfo
{
    Nivel,
    Premio1,
    Premio2,
    Premio3,
    Premio4,
    Premio5
};
new PlayerInfo[MAX_PLAYERS][pInfo];

forward PlayerLevel(playerid);

public OnFilterScriptInit()
{
    printf("--------------------------------------");
    printf("----------Sistema de Niveles----------");
    printf("-----------Creado por rooT.-----------");
    printf("-------------------------------------");
    return 1;
}

public OnPlayerConnect(playerid)
{
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(archivo, sizeof(archivo), "Levels/%s.txt", pname);

    if(dini_Exists(archivo))
        {
        PlayerInfo[playerid][Nivel] = dini_Int(archivo, "Nivel");
        PlayerInfo[playerid][Premio1] = dini_Int(archivo, "Premio1");
        PlayerInfo[playerid][Premio2] = dini_Int(archivo, "Premio2");
        PlayerInfo[playerid][Premio3] = dini_Int(archivo, "Premio3");
        PlayerInfo[playerid][Premio4] = dini_Int(archivo, "Premio4");
        PlayerInfo[playerid][Premio5] = dini_Int(archivo, "Premio5");
        }
    else if(!dini_Exists(archivo))
        {
        dini_Create(archivo);
        dini_IntSet(archivo, "Nivel", 0);
        dini_IntSet(archivo, "Premio1", 0);
        dini_IntSet(archivo, "Premio2", 0);
        dini_IntSet(archivo, "Premio3", 0);
        dini_IntSet(archivo, "Premio4", 0);
        dini_IntSet(archivo, "Premio5", 0);
        }
        SetTimerEx("PlayerLevel", 600000, true, "i", playerid);
    return 1;
}

public PlayerLevel(playerid)
{
    dini_IntSet(archivo, "Nivel", dini_Int(archivo, "Nivel") +1);
    PlayerInfo[playerid][Nivel] = dini_Int(archivo, "Nivel");
    GameTextForPlayer(playerid, "Subiste de ~g~nivel!", 5000, 4);
    if(PlayerInfo[playerid][Nivel] == 10)
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Utiliza /premios para retirar tu premio nivel 10!");
    }
    if(PlayerInfo[playerid][Nivel] == 50)
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Utiliza /premios para retirar tu premio nivel 50!");
    }
    if(PlayerInfo[playerid][Nivel] == 100)
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Utiliza /premios para retirar tu premio nivel 100!");
    }
   
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
   
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(archivo, sizeof(archivo), "Stats/%s.txt", pname);

    if(dini_Exists(archivo))
        {
            dini_IntSet(archivo, "Nivel", PlayerInfo[playerid][Nivel]);
            dini_IntSet(archivo, "Premio1", PlayerInfo[playerid][Premio1]);
            dini_IntSet(archivo, "Premio2", PlayerInfo[playerid][Premio2]);
            dini_IntSet(archivo, "Premio3", PlayerInfo[playerid][Premio3]);
            dini_IntSet(archivo, "Premio4", PlayerInfo[playerid][Premio4]);
            dini_IntSet(archivo, "Premio5", PlayerInfo[playerid][Premio5]);
        }
    else if(!dini_Exists(archivo))
        {
            dini_Create(archivo);
            dini_IntSet(archivo, "Nivel", PlayerInfo[playerid][Nivel]);
            dini_IntSet(archivo, "Premio1", PlayerInfo[playerid][Premio1]);
            dini_IntSet(archivo, "Premio2", PlayerInfo[playerid][Premio2]);
            dini_IntSet(archivo, "Premio3", PlayerInfo[playerid][Premio3]);
            dini_IntSet(archivo, "Premio4", PlayerInfo[playerid][Premio4]);
            dini_IntSet(archivo, "Premio5", PlayerInfo[playerid][Premio5]);
        }
        PlayerInfo[playerid][Nivel] = 0;
    return 1;
}

public OnPlayerSpawn(playerid)
{
    //==================================================================Premios!
    //Premio1
    if(dini_Int(archivo, "Premio1") == 1) return GivePlayerWeapon(playerid, 8, 1);
    if(dini_Int(archivo, "Premio1") == 2) return GivePlayerWeapon(playerid, 41, 500);
    if(dini_Int(archivo, "Premio1") == 3) return GivePlayerWeapon(playerid, 4, 1);
    //Premio2
    if(dini_Int(archivo, "Premio2") == 1) return GivePlayerWeapon(playerid, 22, 300);
    if(dini_Int(archivo, "Premio2") == 2) return GivePlayerWeapon(playerid, 23, 350);
    if(dini_Int(archivo, "Premio2") == 3) return GivePlayerWeapon(playerid, 24, 150);
    //Premio3
    if(dini_Int(archivo, "Premio3") == 1) return GivePlayerWeapon(playerid, 32, 700);
    if(dini_Int(archivo, "Premio3") == 2) return GivePlayerWeapon(playerid, 28, 700);
    if(dini_Int(archivo, "Premio3") == 3) return GivePlayerWeapon(playerid, 29, 1000);
    //Premio4
    if(dini_Int(archivo, "Premio4") == 1) return GivePlayerWeapon(playerid, 30, 500);
    if(dini_Int(archivo, "Premio4") == 2) return GivePlayerWeapon(playerid, 31, 500);
    if(dini_Int(archivo, "Premio4") == 3) return GivePlayerWeapon(playerid, 34, 150);
    //Premio5
    if(dini_Int(archivo, "Premio5") == 1) return GivePlayerWeapon(playerid, 25, 2000);
    if(dini_Int(archivo, "Premio5") == 2) return GivePlayerWeapon(playerid, 27, 2000);
    if(dini_Int(archivo, "Premio5") == 3) return GivePlayerWeapon(playerid, 26, 2000);
   
    //==============================================================Fin Premios!
    return 1;
}

    CMD:premios(playerid, params[])
    {
        ShowPlayerDialog(playerid, 10, DIALOG_STYLE_LIST, "Premios por Niveles", "Premios Nivel 10\nPremios Nivel 50\nPremios Nivel 100\nPremios Nivel 150\nPremios Nivel 300", "Aceptar", "Cancelar");
        return 1;
    }
    CMD:nivel(playerid, params[])
    {
        new pname[MAX_PLAYER_NAME], string[128 + MAX_PLAYER_NAME], string1[128 + MAX_PLAYER_NAME];
        GetPlayerName(playerid, pname, sizeof(pname));
        format(string, sizeof(string), "%s", pname);
        format(string1, sizeof(string1), "Tu nivel actual es %d", PlayerInfo[playerid][Nivel]);
       
        ShowPlayerDialog(playerid, 44, DIALOG_STYLE_MSGBOX, string, string1, "Aceptar", "");
        return 1;
    }


//======================================================================PREMIOS!
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 1)
    {
    if(response)
        {
            if(listitem == 0)
            {
                    if(PlayerInfo[playerid][Nivel] < 10) return SendClientMessage(playerid, COLOR_GREEN, "No eres nivel 10!");
                    ShowPlayerDialog(playerid, 2, DIALOG_STYLE_LIST, "NIVEL 10", "Katana\nAerosol\nCuchillo\nAtras", "Aceptar", "Cancelar");
            }
            if(listitem == 1)
            {
                    if(PlayerInfo[playerid][Nivel] < 50) return SendClientMessage(playerid, COLOR_GREEN, "No eres nivel 50!");
                    ShowPlayerDialog(playerid, 3, DIALOG_STYLE_LIST, "NIVEL 50", "Colts 45\n9mm Silenciada\nDesert Deagle\nAtras", "Aceptar", "Cancelar");
            }
            if(listitem == 2)
            {
                    if(PlayerInfo[playerid][Nivel] < 100) return SendClientMessage(playerid, COLOR_GREEN, "No eres nivel 100!");
                    ShowPlayerDialog(playerid, 4, DIALOG_STYLE_LIST, "NIVEL 100", "Tec9\nMicro UZI\nSubfisil MP5\nAtras", "Aceptar", "Cancelar");
            }
            if(listitem == 3)
            {
                    if(PlayerInfo[playerid][Nivel] < 150) return SendClientMessage(playerid, COLOR_GREEN, "No eres nivel 150!");
                    ShowPlayerDialog(playerid, 5, DIALOG_STYLE_LIST, "NIVEL 150", "AK-47\nM4\nSniper\nAtras", "Aceptar", "Cancelar");
            }
            if(listitem == 4)
            {
                    if(PlayerInfo[playerid][Nivel] < 300) return SendClientMessage(playerid, COLOR_GREEN, "No eres nivel 300!");
                    ShowPlayerDialog(playerid, 6, DIALOG_STYLE_LIST, "NIVEL 300", "Escopeta Cromada\nEscopeta de Combate\nEscopetas Recortadas\nAtras", "Aceptar", "Cancelar");
            }
        }
    }
////////////////////////////////////////////////////////////////////////LEVEL 10
    if(dialogid == 2)
    {
    if(response)
      {
         if(listitem == 0) //
         {
            GivePlayerWeapon(playerid, 8, 1);
            dini_IntSet(archivo, "Premio1", 1);
            PlayerInfo[playerid][Premio1] = dini_Int(archivo, "Premio1");
         }
         if(listitem == 1) //
         {
            GivePlayerWeapon(playerid, 41, 500);
            dini_IntSet(archivo, "Premio1", 2);
            PlayerInfo[playerid][Premio1] = dini_Int(archivo, "Premio1");
         }
         if(listitem == 2) //
         {
            GivePlayerWeapon(playerid, 4, 1);
            dini_IntSet(archivo, "Premio1", 3);
            PlayerInfo[playerid][Premio1] = dini_Int(archivo, "Premio1");
         }
      }
    return 1;
   }
////////////////////////////////////////////////////////////////////////LEVEL 50
    if(dialogid == 3)
    {
    if(response)
      {
         if(listitem == 0) //
         {
            GivePlayerWeapon(playerid, 22, 300);
            dini_IntSet(archivo, "Premio2", 1);
            PlayerInfo[playerid][Premio2] = dini_Int(archivo, "Premio2");
         }
         if(listitem == 1) //
         {
            GivePlayerWeapon(playerid, 23, 350);
            dini_IntSet(archivo, "Premio2", 2);
            PlayerInfo[playerid][Premio2] = dini_Int(archivo, "Premio2");
         }
         if(listitem == 2) //
         {
            GivePlayerWeapon(playerid, 24, 150);
            dini_IntSet(archivo, "Premio2", 3);
            PlayerInfo[playerid][Premio2] = dini_Int(archivo, "Premio2");
         }
      }
    return 1;
   }
///////////////////////////////////////////////////////////////////////LEVEL 100
    if(dialogid == 4)
    {
    if(response)
      {
         if(listitem == 0) //
         {
            GivePlayerWeapon(playerid, 32, 700);
            dini_IntSet(archivo, "Premio3", 1);
            PlayerInfo[playerid][Premio3] = dini_Int(archivo, "Premio3");
         }
         if(listitem == 1) //
         {
            GivePlayerWeapon(playerid, 28, 700);
            dini_IntSet(archivo, "Premio3", 2);
            PlayerInfo[playerid][Premio3] = dini_Int(archivo, "Premio3");
         }
         if(listitem == 2) //
         {
            GivePlayerWeapon(playerid, 29, 1000);
            dini_IntSet(archivo, "Premio3", 3);
            PlayerInfo[playerid][Premio3] = dini_Int(archivo, "Premio3");
         }
      }
    return 1;
   }
///////////////////////////////////////////////////////////////////////LEVEL 150
    if(dialogid == 5)
    {
    if(response)
      {
         if(listitem == 0) //
         {
            GivePlayerWeapon(playerid, 30, 500);
            dini_IntSet(archivo, "Premio4", 1);
            PlayerInfo[playerid][Premio4] = dini_Int(archivo, "Premio4");
         }
         if(listitem == 1) //
         {
            GivePlayerWeapon(playerid, 31, 500);
            dini_IntSet(archivo, "Premio4", 2);
            PlayerInfo[playerid][Premio4] = dini_Int(archivo, "Premio4");
         }
         if(listitem == 2) //
         {
            GivePlayerWeapon(playerid, 34, 150);
            dini_IntSet(archivo, "Premio4", 3);
            PlayerInfo[playerid][Premio4] = dini_Int(archivo, "Premio4");
         }
      }
    return 1;
   }
///////////////////////////////////////////////////////////////////////LEVEL 300
    if(dialogid == 6)
    {
    if(response)
      {
         if(listitem == 0) //
         {
            GivePlayerWeapon(playerid, 25, 2000);
            dini_IntSet(archivo, "Premio5", 1);
            PlayerInfo[playerid][Premio5] = dini_Int(archivo, "Premio5");
         }
         if(listitem == 1) //
         {
            GivePlayerWeapon(playerid, 27, 2000);
            dini_IntSet(archivo, "Premio5", 2);
            PlayerInfo[playerid][Premio5] = dini_Int(archivo, "Premio5");
         }
         if(listitem == 2) //
         {
            GivePlayerWeapon(playerid, 26, 2000);
            dini_IntSet(archivo, "Premio5", 3);
            PlayerInfo[playerid][Premio5] = dini_Int(archivo, "Premio5");
         }
      }
    return 1;
   }
    return 1;
}
//==================================================================FIN PREMIOS!
NOTA IMPORTANTE: Deben crear una carpeta llamada Stats dentro de scriptfiles, si no, no se guardarб nada

Bueno, eso es todo para este sistema.
Ahora liberare otros mas!
Reply
#2

pawn Код:
printf("-----------Creado por rooT.-----------")
їScript robado?
Reply
#3

No, yo soy rooT. xD
Reply
#4

Muy bueno tu sistema.
Me preguntaba si se pudiera hacer:
-Que al matar a un jugador te de digamos X puntos de Experiencia.
-Que entre mas alto sea el nivel del jugador que matemos nos de mas Experiencia. Por ejemplo: un jugador de nivel 1 me da 150 de exp si lo mato y uno de nivel 10 me da 1000 de exp.

bueno, si se puede hacer me avisas. Y me ayudas si no es mucha molestia, ya que no se mucho sobre PAWN. Se hacer mapas pero Scriptear no.

Espero que me puedas ayudar.
Reply
#5

Quote:
Originally Posted by GokuJahaziel
Посмотреть сообщение
Muy bueno tu sistema.
Me preguntaba si se pudiera hacer:
-Que al matar a un jugador te de digamos X puntos de Experiencia.
-Que entre mas alto sea el nivel del jugador que matemos nos de mas Experiencia. Por ejemplo: un jugador de nivel 1 me da 150 de exp si lo mato y uno de nivel 10 me da 1000 de exp.

bueno, si se puede hacer me avisas. Y me ayudas si no es mucha molestia, ya que no se mucho sobre PAWN. Se hacer mapas pero Scriptear no.

Espero que me puedas ayudar.
Es posible hacerlo en el callback OnPlayerDeath y guardando la "Experiencia" en pInfo como los premios.
Chequeando el nivel del jugador que ha muerto (playerid) y el jugador que ha matado (killerid) y asi sumarle X numero de Experiencia.

Buen Sistema, felicitaciones
Reply
#6

Bien hecho, estб muy bien :'P.


Quote:
Originally Posted by MrDeath537
Посмотреть сообщение
pawn Код:
printf("-----------Creado por rooT.-----------")
їScript robado?
xD.
Reply
#7

No, yo soy rooT, .root, eiiRoot, etc. Fijense en todos mis trabajos dice lo mismo.
Reply
#8

Quote:
Originally Posted by leaNN!
Посмотреть сообщение
No, yo soy rooT, .root, eiiRoot, etc. Fijense en todos mis trabajos dice lo mismo.
Jamбs dije eso jaja.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)