/*
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!
printf("-----------Creado por rooT.-----------")
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. |
pawn Код:
|
No, yo soy rooT, .root, eiiRoot, etc. Fijense en todos mis trabajos dice lo mismo.
|