Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <zcmd>
- #define COLOR_GRAY 0x808080FF
- #include <sscanf2>
- #define COLOR_BLUE 0x6495EDAA
- #define COLOR_ORANGE 0xFF9900AA
- #define COLOR_VERDE 0x33AA33AA
- #define GREY 0xAFAFAFAA
- #define GREEN 0x33AA33AA
- #define YELLOW 0xFFFF00AA
- #define WHITE 0xFFFFFFAA
- #define LIGHTBLUE 0x33CCFFAA
- #define ORANGE 0xFF9900AA
- #define COLOR_WHITE -1
- #define COLOR_RED 0xAA3333AA
- #include <YSI\y_ini>
- new _str[ 50 ];
- #define SendFMessage(%0,%1,%2,%3) do{new _str[150]; format(_str,150,%2,%3); SendClientMessage(%0,%1,_str);}while(FALSE)
- #define SendFMessageToAll(%1,%2,%3) do{new _str[190]; format(_str,150,%2,%3); SendClientMessageToAll(%1,_str);}while(FALSE)
- new _ex_string[156];
- #define SendClientMessageEx(%0,%1,%2,%3) do{format(_ex_string, 156,%2,%3); SendClientMessage(%0,%1,_str);}while(FALSE)
- #define SendClientMessageToAllEx(%1,%2,%3) do{format(_ex_string, 156,%2,%3); SendClientMessageToAll(%1,_str);}while(FALSE)
- stock GetPlayerNameEx(playerid)
- {
- new pName[25];
- GetPlayerName(playerid, pName, sizeof(pName));
- return pName;
- }
- new papilla[MAX_PLAYERS];
- new AdminDuty[MAX_PLAYERS];
- new bool:HaMuerto[MAX_PLAYERS];
- // COLORES //
- #define SAMD 0xFF886DFF
- #define SAPD 0x33CCFFFF
- #define COLOR_GREEN25 0x00A80BFF
- main( ) { }
- #define Callback:%0(%1) forward %0(%1); public %0(%1)
- #define DIALOGO_REGISTRO (1)
- #define DIALOGO_INGRESO (2)
- #define DIALOGO_NORMAL (3)
- #define rutaUsuarios "/Usuarios/%s.ini"
- new Text3D:YO[MAX_PLAYERS];
- enum datosdeUsuario {
- cLlave[34],
- cDinero,
- cAsesinatos,
- cMuertes,
- pRopaPuesta,
- pAdminZC,
- cVip,
- pBannedZC,
- cRegistrado,
- Float:pPos_x, // Posición X del jugador
- Float:pPos_y, // Posición Y del jugador
- Float:pPos_z, // Posición Z del jugador
- Float:pPos_r, // Rotación del jugador
- Float:pVida, // Vida del jugador
- Float:pChaleco, // Chaleco del jugador
- }
- new Info[MAX_PLAYERS][datosdeUsuario];//Donde se almacenan los datos
- //Checar si la carpeta 'Cuentas' de Scriptfiles existe, de lo contrario se apagara el servidor para prevenir bugs.
- public OnGameModeInit(){
- if(!fexist("/Usuarios")){
- printf("El directorio \"Usuarios\" de Scriptfiles no existe, debe crearla antes de prender el servidor.");
- SendRconCommand("exit");
- }else{
- printf("\n\
- ============================================\n\
- Registro & Logeo cargado correctamente\n\
- Cuentas cargadas correctamente.\n\
- ============================================\n"\
- );}
- return 1;}
- //Guardar cuentas en caso de que el servidor sufra un apagon (evitar perdida de datos)
- public OnGameModeExit(){
- for(new i=0;i<MAX_PLAYERS;i++){
- if(IsPlayerConnected(i) && fexist(ChecarCuenta(i))){
- GuardarCuenta(i);
- SendClientMessage(-1,-1,"Las cuentas fueron guardadas correctamente.");
- printf("Cuentas guardadas correctamente.");}}
- return 1;}
- //Checaremos si la cuenta del Usuario existe en la ruta de Cuentas.
- public OnPlayerConnect(playerid){
- ReiniciarDatos(playerid);
- if(fexist(ChecarCuenta(playerid))){
- INI_ParseFile(ChecarCuenta(playerid),"LoadUser_%s",.bExtra = true, .extra = playerid);
- ShowPlayerDialog(playerid,DIALOGO_INGRESO,DIALOG_STYLE_PASSWORD,"{FFFFFF}Inicio de sesion","{FFFFFF}Escribe en el siguiente campo tu contraseña para poder iniciar sesion.","Aceptar","");
- }else{
- ShowPlayerDialog(playerid,DIALOGO_REGISTRO,DIALOG_STYLE_INPUT,"{FFFFFF}Registro de cuenta","{FFFFFF}Escriba la contraseña que desea para registrar su cuenta.","Aceptar","");}
- return 1;}
- public OnPlayerSpawn(playerid)
- {
- if(HaMuerto[playerid] == true)
- {
- SetPlayerPos(playerid, 2029.8744,-1419.2386,16.9922);
- SetPlayerFacingAngle(playerid, 90);
- SendClientMessage(playerid, -1, "{ff5050}[SAMD]: {ffffff}Quedaste inconciente y no recuerdas nada de lo sucedido recientemente.");
- SendClientMessage(playerid, -1, "{ff5050}[SAMD]: {ffffff}Los gastos medicos fueron de {ff5050}$500{ffffff}.");
- GivePlayerMoney(playerid, -500);
- return 1;
- }
- Info[playerid][pRopaPuesta] = GetPlayerSkin(playerid);
- //Cargado
- SetPlayerPos(playerid,Info[playerid][pPos_x],Info[playerid][pPos_y],Info[playerid][pPos_z]);
- SetPlayerFacingAngle(playerid, Info[playerid][pPos_r]);
- SetPlayerSkin(playerid, Info[playerid][pRopaPuesta]);
- SetPlayerHealth(playerid, Info[playerid][pVida]);
- SetPlayerArmour(playerid, Info[playerid][pChaleco]);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- HaMuerto[playerid] = true;
- return 1;
- }
- //Guardar cuenta del Usuario.
- public OnPlayerDisconnect(playerid){
- if(fexist(ChecarCuenta(playerid))){
- GuardarCuenta(playerid);
- SendClientMessage(playerid,-1,"Sus datos fueron guardados.");
- printf("La cuenta \"%s\" fue guardada correctamente.",Nombre(playerid));}
- return 1;}
- //Donde almacenaremos nuestros dialogos.
- public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[]){
- //Nuestro dialogo para registrar al Usuario.
- if(dialogid == DIALOGO_REGISTRO){
- if(!response)return SetTimerEx("KickearJugador",1000,false,"i",playerid) && ShowPlayerDialog(playerid,DIALOGO_NORMAL,DIALOG_STYLE_MSGBOX,"{FFFFFF}Expulsado","{FFFFFF}Fuistes expulsado por evadir el Registro.","Aceptar","");
- if(response){
- if(!strlen(inputtext))return ShowPlayerDialog(playerid,DIALOGO_REGISTRO,DIALOG_STYLE_INPUT,"{FFFFFF}Registro de cuenta","{FFFFFF}Escriba la contraseña que desea para registrar su cuenta.","Aceptar","");
- new pw[34];
- format(pw,sizeof(pw),"%s",inputtext);
- Info[playerid][cLlave] = pw;
- new INI:File = INI_Open(ChecarCuenta(playerid));
- INI_SetTag(File,"data");
- INI_WriteString(File,"Contraseña",inputtext);
- INI_Close(File);
- Info[playerid][pAdminZC] = 0;//Poner su administracion en 0.
- Info[playerid][cVip] = 0;//Poner su VIP en 0.
- Info[playerid][cDinero] = 2000;//Comensara con 2,000 dolares.
- Info[playerid][cRegistrado] = 1;//Reconocera que el Jugador esta registrado.
- Info[playerid][pPos_x] = 1521.3809;
- Info[playerid][pPos_y] = -1712.8494;
- Info[playerid][pPos_z] = 18.0014;
- Info[playerid][pVida] = 100;
- Info[playerid][pChaleco] = 100;
- SendClientMessage(playerid,-1,"ahora estas registrado en el servidor.");
- }}
- //Nuestro dialogo para ingresar a la Cuenta.
- if(dialogid == DIALOGO_INGRESO){
- if(!response)return SetTimerEx("KickearJugador",1000,false,"i",playerid) && ShowPlayerDialog(playerid,DIALOGO_NORMAL,DIALOG_STYLE_MSGBOX,"{FFFFFF}Expulsado","{FFFFFF}Fuistes expulsado por intentar evadir contraseña.","Aceptar","");
- if(response){
- if(strcmp(inputtext,Info[playerid][cLlave], true) == 0){
- INI_ParseFile(ChecarCuenta(playerid),"LoadUser_%s",.bExtra = true, .extra = playerid);
- SendClientMessage(playerid,-1,"Has ingresado a tu cuenta correctamente.");
- }else return SetTimerEx("KickearJugador",1000,false,"i",playerid) && ShowPlayerDialog(playerid,DIALOGO_NORMAL,DIALOG_STYLE_MSGBOX,"{FFFFFF}Expulsado","{FFFFFF}Fuistes expulsado por ingresar una contraseña incorrecta.","Aceptar","");
- }}
- return 1;}
- //Dar el Dinero & Score del Usuario.
- public OnPlayerUpdate(playerid){
- //Su dinero
- if(GetPlayerMoney(playerid) != Info[playerid][cDinero]){
- ResetPlayerMoney(playerid);
- //Su score
- GivePlayerMoney(playerid,Info[playerid][cDinero]);}
- if(GetPlayerScore(playerid) != Info[playerid][cAsesinatos]){
- SetPlayerScore(playerid,Info[playerid][cAsesinatos]);}
- return 1;}
- //Cargar datos del Usuario.
- Callback:LoadUser_data(playerid,name[],value[]){
- INI_Int("RopaPuesta",Info[playerid][pRopaPuesta]);
- INI_String("Contraseña",Info[playerid][cLlave],34);
- INI_Int("Dinero",Info[playerid][cDinero]);
- INI_Int("Asesinatos",Info[playerid][cAsesinatos]);
- INI_Float("Pos_x",Info[playerid][pPos_x]);
- INI_Float("Pos_y",Info[playerid][pPos_y]);
- INI_Float("Pos_z",Info[playerid][pPos_z]);
- INI_Float("SPos_r",Info[playerid][pPos_r]);
- INI_Float("Vida",Info[playerid][pVida]);
- INI_Float("Chaleco",Info[playerid][pChaleco]);
- INI_Int("Muertes",Info[playerid][cMuertes]);
- INI_Int("BanZC",Info[playerid][pBannedZC]);
- INI_Int("Admin",Info[playerid][pAdminZC]);
- INI_Int("Vip",Info[playerid][cVip]);
- return 1;}
- //Kickear al Usuario.
- Callback:KickearJugador(playerid){
- Kick(playerid);
- return 1;}
- //Reconocer el nombre del Usuario.
- stock Nombre(playerid){
- new uNombre[32];
- GetPlayerName(playerid,uNombre,100);
- return uNombre;}
- //Checar si existe la cuenta del Usuario.
- stock ChecarCuenta(playerid){
- new cuenta[146];
- format(cuenta,sizeof(cuenta),rutaUsuarios,Nombre(playerid));
- return cuenta;}
- //Guardar cuenta del Usuario.
- stock GuardarCuenta(playerid){
- new INI:File = INI_Open(ChecarCuenta(playerid));
- INI_SetTag(File,"data");
- INI_WriteInt(File,"RopaPuesta",Info[playerid][pRopaPuesta]);
- INI_WriteString(File,"Contraseña",Info[playerid][cLlave]);
- INI_WriteInt(File,"Dinero",Info[playerid][cDinero]);
- INI_WriteInt(File,"Asesinatos",Info[playerid][cAsesinatos]);
- INI_WriteInt(File,"Muertes",Info[playerid][cMuertes]);
- INI_WriteInt(File,"Admin",Info[playerid][pAdminZC]);
- INI_WriteInt(File,"Vip",Info[playerid][cVip]);
- INI_WriteInt(File,"BanZC",Info[playerid][pBannedZC]);
- INI_WriteInt(File,"Registrado",Info[playerid][cRegistrado]);
- INI_Close(File);}
- //baneos
- forward TimerKICK(playerid);
- forward TimerBAN(playerid);
- forward TimerBANIP(playerid);
- forward KickxD(playerid);
- //Reiniciar datos del Usuario (prevenir bugs)
- stock ReiniciarDatos(playerid){
- Info[playerid][cDinero] = 0;
- Info[playerid][cAsesinatos] = 0;
- Info[playerid][cMuertes] = 0;
- Info[playerid][pAdminZC] = 0;
- Info[playerid][cVip] = 0;
- Info[playerid][cRegistrado] = 0;}
- stock GetAdminRank(playerid)
- {
- new arank[64];
- switch(Info[playerid][pAdminZC])
- {
- case 6: arank = "Dueño Fundador";
- case 5: arank = "Sub Dueño";
- case 4: arank = "Administrador";
- case 3: arank = "Moderador";
- case 2: arank = "Paranormal";
- case 1: arank = "inhabilitado";
- case 0: arank = "Usuario";
- }
- return arank;
- }
- zcmd(aduty, playerid, params[])
- {
- new string[200];
- if(Info[playerid][pAdminZC] < 1) return SendClientMessage(playerid,0xFFFFFFFF,"No estás autorizado");
- {
- new rangoAdmin[70];
- switch(Info[playerid][pAdminZC])
- {
- case 3: rangoAdmin = "Moderador";
- case 4: rangoAdmin = "Administrador";
- case 5: rangoAdmin = "Sub Dueño";
- case 6: rangoAdmin = "Dueño Fundador";
- }
- new formato[120];
- format(formato, sizeof(formato), "%s - En Servicio", rangoAdmin);
- YO[playerid] = Create3DTextLabel(formato, COLOR_GREEN25, 0.0, 0.0, 40.0, 20.0, 0, 1);
- Attach3DTextLabelToPlayer(YO[playerid], playerid, 0.0, 0.0, 0.40);
- SetPlayerSkin(playerid, 217);
- papilla[playerid] = 1;
- SetPlayerArmour(playerid, 99999);
- SetPlayerHealth(playerid, 99999);
- //Info[playerid][pModel] = 217;
- AdminDuty[playerid] = 1;
- SetPlayerColor(playerid,COLOR_ORANGE);
- format(string, sizeof(string), "{FA5858} Administración:{FFFFFF} %s {FA5858}[ID: %d]{FFFFFF} se ha puesto en Servicio como Staff." , GetPlayerNameEx(playerid),playerid);
- SendClientMessageToAll(COLOR_ORANGE, string);
- }
- return 1;
- }
- zcmd(adutyoff, playerid, params[])
- {
- new string[200];
- if(Info[playerid][pAdminZC] < 1) return SendClientMessage(playerid,0xFFFFFFFF,"No estás autorizado");
- {
- SetPlayerColor(playerid, -1);
- SetPlayerSkin(playerid, Info[playerid][pRopaPuesta]);
- papilla[playerid]= 0;
- format(string, sizeof(string), "{FA5858} Administración:{FFFFFF} %s {FA5858}[ID: %d]{FFFFFF} se ha salido del Servicio como Staff." , GetPlayerNameEx(playerid),playerid);
- Delete3DTextLabel(YO[playerid]);
- SetPlayerSkin(playerid, Info[playerid][pRopaPuesta]);
- SendClientMessageToAll(COLOR_ORANGE, string);
- }
- return 1;
- }
- CMD:daradmin(playerid, params[])
- {
- if(Info[playerid][pAdminZC] < 7) return SendClientMessage(playerid, -1, "No eres administrador nivel 6.");
- {
- //------------------------------------------------------------------------------
- if (!sscanf(params, "ud", params[0], params[1]))
- {
- Info[params[0]][pAdminZC] = params[1];
- new string[55], Nombret[32];
- GetPlayerName(playerid, Nombret, sizeof(Nombret));
- format(string, sizeof(string), "%s Te dio nivel admin: %d", Nombret, params[1]);
- SendClientMessage(params[0], -1, string);
- }
- else SendClientMessage(playerid, -1, "Use: /DarAdmin [id] [Nivel admin]");
- //------------------------------------------------------------------------------
- }
- return 1;
- }
- COMMAND:darscore(playerid,params[]){
- if(Info[playerid][pAdminZC] >= 10 || IsPlayerAdmin(playerid)){
- new Jugador,Score;
- if(sscanf(params,"ud",Jugador,Score))return SendClientMessage(playerid,-1,"Usa: /darscore [Jugador] [Score]");
- if(IsPlayerConnected(Jugador)){
- Info[Jugador][cAsesinatos] += Score;
- SendClientMessageEx(Jugador,-1,"El administrador %s te a dado %d de Score.",Nombre(playerid),Score);
- SendClientMessageEx(playerid,-1,"Le has dado %d de score a %s",Score,Nombre(Jugador));
- }else return SendClientMessage(playerid,-1,"ERROR: El jugador no se encuentra conectado.");
- }else return SendClientMessage(playerid,-1,"ERROR: Debes ser nivel 10 para usar este comando.");
- return 1;}
- CMD:kickname(playerid, params[]){
- if(papilla[playerid] == 0) return SendClientMessageEx(playerid, COLOR_GRAD2, "{FFFF00}[ERROR]:{FFFFFF} No estás en servicio administrativo {00F70C}/aduty o /adutyoff{FFFFFF} para usar este comando.");
- if (Info[playerid][pAdminZC] >= 1){
- new string[128], giveplayerid;
- if(sscanf(params, "d", giveplayerid)) return SendClientMessageEx(playerid, COLOR_WHITE, "Utiliza: /kickname (playerID) ");
- if(IsPlayerConnected(giveplayerid)){
- if(Info[giveplayerid][pAdminZC] >= Info[playerid][pAdminZC]){
- format(string, sizeof(string), "[AdmCmd]: %s ha sido auto expulsado, razón: Intentar usar /kick a un administrador mayor.", GetPlayerNameEx(playerid));
- ABroadCast(COLOR_YELLOW,string, (Info[playerid][pAdminZC] == 1) ? (1) : (2));
- SetTimerEx("TimerKICK",500,false,"d",playerid);
- return 1;
- }
- else{
- new year, month,day;
- getdate(year, month, day);
- new playerip[32];
- GetPlayerIp(giveplayerid, playerip, sizeof(playerip));
- format(string, sizeof(string), "AdmCmd: %s (IP:%s) fue expulsado por %s por NAME inapropiado (%d-%d-%d)", GetPlayerNameEx(giveplayerid), playerip, GetPlayerNameEx(playerid),month,day,year);
- Log("LOGS/kick.log", string);
- if(Info[playerid][pAdminZC] == 1) Log("LOGS/moderator.log", string);
- for(new loop=0; loop<20; loop++) SendClientMessage(giveplayerid, COLOR_WHITE,"");
- SendClientMessageEx(giveplayerid,COLOR_GREEN,"[AVISO] Has sido expulsado por el servidor ya que tu cuenta no cumple las normas de la comunidad.");
- SendClientMessageEx(giveplayerid,COLOR_WHITE,"No se permite nombre de famosos, nicks trolls, inadecuados, que no son Role Play o que falten el respeto.");
- SendClientMessageEx(giveplayerid,COLOR_WHITE,"Recuerda poner las iniciales en mayúscula usado un nombre real, formato Nombre_Apellido.");
- format(string, sizeof(string), "[KICKNAME]: %s fue expulsado del servidor por %s, mal uso del formato Nombre_Apellido.", GetPlayerNameEx(giveplayerid), GetPlayerNameEx(playerid));
- ABroadCast(COLOR_YELLOW,string,1);
- SetTimerEx("TimerKICK",500,false,"d",giveplayerid);
- }
- return 1;
- }
- }
- else SendClientMessageEx(playerid, COLOR_WHITE, "Esa ID es inválida.");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment