DarkFireYT

gm base

Nov 25th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.01 KB | None | 0 0
  1. #include <a_samp>
  2. #include <zcmd>
  3. #define COLOR_GRAY 0x808080FF
  4. #include <sscanf2>
  5. #define COLOR_BLUE 0x6495EDAA
  6. #define COLOR_ORANGE 0xFF9900AA
  7. #define COLOR_VERDE 0x33AA33AA
  8. #define GREY 0xAFAFAFAA
  9. #define GREEN 0x33AA33AA
  10. #define YELLOW 0xFFFF00AA
  11. #define WHITE 0xFFFFFFAA
  12. #define LIGHTBLUE 0x33CCFFAA
  13. #define ORANGE 0xFF9900AA
  14. #define COLOR_WHITE -1
  15. #define COLOR_RED 0xAA3333AA
  16. #include <YSI\y_ini>
  17. new _str[ 50 ];
  18. #define SendFMessage(%0,%1,%2,%3) do{new _str[150]; format(_str,150,%2,%3); SendClientMessage(%0,%1,_str);}while(FALSE)
  19. #define SendFMessageToAll(%1,%2,%3) do{new _str[190]; format(_str,150,%2,%3); SendClientMessageToAll(%1,_str);}while(FALSE)
  20. new _ex_string[156];
  21. #define SendClientMessageEx(%0,%1,%2,%3) do{format(_ex_string, 156,%2,%3); SendClientMessage(%0,%1,_str);}while(FALSE)
  22. #define SendClientMessageToAllEx(%1,%2,%3) do{format(_ex_string, 156,%2,%3); SendClientMessageToAll(%1,_str);}while(FALSE)
  23.  
  24. stock GetPlayerNameEx(playerid)
  25. {
  26. new pName[25];
  27. GetPlayerName(playerid, pName, sizeof(pName));
  28. return pName;
  29. }
  30. new papilla[MAX_PLAYERS];
  31. new AdminDuty[MAX_PLAYERS];
  32. new bool:HaMuerto[MAX_PLAYERS];
  33. // COLORES //
  34. #define SAMD 0xFF886DFF
  35. #define SAPD 0x33CCFFFF
  36. #define COLOR_GREEN25 0x00A80BFF
  37. main( ) { }
  38.  
  39. #define Callback:%0(%1) forward %0(%1); public %0(%1)
  40. #define DIALOGO_REGISTRO (1)
  41. #define DIALOGO_INGRESO (2)
  42. #define DIALOGO_NORMAL (3)
  43.  
  44. #define rutaUsuarios "/Usuarios/%s.ini"
  45.  
  46. new Text3D:YO[MAX_PLAYERS];
  47.  
  48. enum datosdeUsuario {
  49. cLlave[34],
  50. cDinero,
  51. cAsesinatos,
  52. cMuertes,
  53. pRopaPuesta,
  54. pAdminZC,
  55. cVip,
  56. pBannedZC,
  57. cRegistrado,
  58. Float:pPos_x, // Posición X del jugador
  59. Float:pPos_y, // Posición Y del jugador
  60. Float:pPos_z, // Posición Z del jugador
  61. Float:pPos_r, // Rotación del jugador
  62. Float:pVida, // Vida del jugador
  63. Float:pChaleco, // Chaleco del jugador
  64. }
  65. new Info[MAX_PLAYERS][datosdeUsuario];//Donde se almacenan los datos
  66.  
  67. //Checar si la carpeta 'Cuentas' de Scriptfiles existe, de lo contrario se apagara el servidor para prevenir bugs.
  68. public OnGameModeInit(){
  69. if(!fexist("/Usuarios")){
  70. printf("El directorio \"Usuarios\" de Scriptfiles no existe, debe crearla antes de prender el servidor.");
  71. SendRconCommand("exit");
  72. }else{
  73. printf("\n\
  74. ============================================\n\
  75. Registro & Logeo cargado correctamente\n\
  76. Cuentas cargadas correctamente.\n\
  77. ============================================\n"\
  78. );}
  79. return 1;}
  80.  
  81. //Guardar cuentas en caso de que el servidor sufra un apagon (evitar perdida de datos)
  82. public OnGameModeExit(){
  83. for(new i=0;i<MAX_PLAYERS;i++){
  84. if(IsPlayerConnected(i) && fexist(ChecarCuenta(i))){
  85. GuardarCuenta(i);
  86. SendClientMessage(-1,-1,"Las cuentas fueron guardadas correctamente.");
  87. printf("Cuentas guardadas correctamente.");}}
  88. return 1;}
  89.  
  90. //Checaremos si la cuenta del Usuario existe en la ruta de Cuentas.
  91. public OnPlayerConnect(playerid){
  92. ReiniciarDatos(playerid);
  93. if(fexist(ChecarCuenta(playerid))){
  94. INI_ParseFile(ChecarCuenta(playerid),"LoadUser_%s",.bExtra = true, .extra = playerid);
  95. 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","");
  96. }else{
  97. ShowPlayerDialog(playerid,DIALOGO_REGISTRO,DIALOG_STYLE_INPUT,"{FFFFFF}Registro de cuenta","{FFFFFF}Escriba la contraseña que desea para registrar su cuenta.","Aceptar","");}
  98. return 1;}
  99.  
  100. public OnPlayerSpawn(playerid)
  101. {
  102. if(HaMuerto[playerid] == true)
  103. {
  104. SetPlayerPos(playerid, 2029.8744,-1419.2386,16.9922);
  105. SetPlayerFacingAngle(playerid, 90);
  106. SendClientMessage(playerid, -1, "{ff5050}[SAMD]: {ffffff}Quedaste inconciente y no recuerdas nada de lo sucedido recientemente.");
  107. SendClientMessage(playerid, -1, "{ff5050}[SAMD]: {ffffff}Los gastos medicos fueron de {ff5050}$500{ffffff}.");
  108. GivePlayerMoney(playerid, -500);
  109. return 1;
  110. }
  111. Info[playerid][pRopaPuesta] = GetPlayerSkin(playerid);
  112. //Cargado
  113. SetPlayerPos(playerid,Info[playerid][pPos_x],Info[playerid][pPos_y],Info[playerid][pPos_z]);
  114. SetPlayerFacingAngle(playerid, Info[playerid][pPos_r]);
  115. SetPlayerSkin(playerid, Info[playerid][pRopaPuesta]);
  116. SetPlayerHealth(playerid, Info[playerid][pVida]);
  117. SetPlayerArmour(playerid, Info[playerid][pChaleco]);
  118. return 1;
  119. }
  120. public OnPlayerDeath(playerid, killerid, reason)
  121. {
  122. HaMuerto[playerid] = true;
  123. return 1;
  124. }
  125. //Guardar cuenta del Usuario.
  126. public OnPlayerDisconnect(playerid){
  127. if(fexist(ChecarCuenta(playerid))){
  128. GuardarCuenta(playerid);
  129. SendClientMessage(playerid,-1,"Sus datos fueron guardados.");
  130. printf("La cuenta \"%s\" fue guardada correctamente.",Nombre(playerid));}
  131. return 1;}
  132.  
  133. //Donde almacenaremos nuestros dialogos.
  134. public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[]){
  135.  
  136. //Nuestro dialogo para registrar al Usuario.
  137. if(dialogid == DIALOGO_REGISTRO){
  138. 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","");
  139. if(response){
  140. 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","");
  141. new pw[34];
  142. format(pw,sizeof(pw),"%s",inputtext);
  143. Info[playerid][cLlave] = pw;
  144. new INI:File = INI_Open(ChecarCuenta(playerid));
  145. INI_SetTag(File,"data");
  146. INI_WriteString(File,"Contraseña",inputtext);
  147. INI_Close(File);
  148. Info[playerid][pAdminZC] = 0;//Poner su administracion en 0.
  149. Info[playerid][cVip] = 0;//Poner su VIP en 0.
  150. Info[playerid][cDinero] = 2000;//Comensara con 2,000 dolares.
  151. Info[playerid][cRegistrado] = 1;//Reconocera que el Jugador esta registrado.
  152. Info[playerid][pPos_x] = 1521.3809;
  153. Info[playerid][pPos_y] = -1712.8494;
  154. Info[playerid][pPos_z] = 18.0014;
  155. Info[playerid][pVida] = 100;
  156. Info[playerid][pChaleco] = 100;
  157. SendClientMessage(playerid,-1,"ahora estas registrado en el servidor.");
  158. }}
  159.  
  160. //Nuestro dialogo para ingresar a la Cuenta.
  161. if(dialogid == DIALOGO_INGRESO){
  162. 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","");
  163. if(response){
  164. if(strcmp(inputtext,Info[playerid][cLlave], true) == 0){
  165. INI_ParseFile(ChecarCuenta(playerid),"LoadUser_%s",.bExtra = true, .extra = playerid);
  166. SendClientMessage(playerid,-1,"Has ingresado a tu cuenta correctamente.");
  167. }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","");
  168. }}
  169. return 1;}
  170.  
  171. //Dar el Dinero & Score del Usuario.
  172. public OnPlayerUpdate(playerid){
  173. //Su dinero
  174. if(GetPlayerMoney(playerid) != Info[playerid][cDinero]){
  175. ResetPlayerMoney(playerid);
  176. //Su score
  177. GivePlayerMoney(playerid,Info[playerid][cDinero]);}
  178. if(GetPlayerScore(playerid) != Info[playerid][cAsesinatos]){
  179. SetPlayerScore(playerid,Info[playerid][cAsesinatos]);}
  180. return 1;}
  181.  
  182. //Cargar datos del Usuario.
  183. Callback:LoadUser_data(playerid,name[],value[]){
  184. INI_Int("RopaPuesta",Info[playerid][pRopaPuesta]);
  185. INI_String("Contraseña",Info[playerid][cLlave],34);
  186. INI_Int("Dinero",Info[playerid][cDinero]);
  187. INI_Int("Asesinatos",Info[playerid][cAsesinatos]);
  188. INI_Float("Pos_x",Info[playerid][pPos_x]);
  189. INI_Float("Pos_y",Info[playerid][pPos_y]);
  190. INI_Float("Pos_z",Info[playerid][pPos_z]);
  191. INI_Float("SPos_r",Info[playerid][pPos_r]);
  192. INI_Float("Vida",Info[playerid][pVida]);
  193. INI_Float("Chaleco",Info[playerid][pChaleco]);
  194. INI_Int("Muertes",Info[playerid][cMuertes]);
  195. INI_Int("BanZC",Info[playerid][pBannedZC]);
  196. INI_Int("Admin",Info[playerid][pAdminZC]);
  197. INI_Int("Vip",Info[playerid][cVip]);
  198. return 1;}
  199.  
  200. //Kickear al Usuario.
  201. Callback:KickearJugador(playerid){
  202. Kick(playerid);
  203. return 1;}
  204.  
  205. //Reconocer el nombre del Usuario.
  206. stock Nombre(playerid){
  207. new uNombre[32];
  208. GetPlayerName(playerid,uNombre,100);
  209. return uNombre;}
  210.  
  211. //Checar si existe la cuenta del Usuario.
  212. stock ChecarCuenta(playerid){
  213. new cuenta[146];
  214. format(cuenta,sizeof(cuenta),rutaUsuarios,Nombre(playerid));
  215. return cuenta;}
  216.  
  217. //Guardar cuenta del Usuario.
  218. stock GuardarCuenta(playerid){
  219. new INI:File = INI_Open(ChecarCuenta(playerid));
  220. INI_SetTag(File,"data");
  221. INI_WriteInt(File,"RopaPuesta",Info[playerid][pRopaPuesta]);
  222. INI_WriteString(File,"Contraseña",Info[playerid][cLlave]);
  223. INI_WriteInt(File,"Dinero",Info[playerid][cDinero]);
  224. INI_WriteInt(File,"Asesinatos",Info[playerid][cAsesinatos]);
  225. INI_WriteInt(File,"Muertes",Info[playerid][cMuertes]);
  226. INI_WriteInt(File,"Admin",Info[playerid][pAdminZC]);
  227. INI_WriteInt(File,"Vip",Info[playerid][cVip]);
  228. INI_WriteInt(File,"BanZC",Info[playerid][pBannedZC]);
  229. INI_WriteInt(File,"Registrado",Info[playerid][cRegistrado]);
  230. INI_Close(File);}
  231. //baneos
  232.  
  233. forward TimerKICK(playerid);
  234. forward TimerBAN(playerid);
  235. forward TimerBANIP(playerid);
  236. forward KickxD(playerid);
  237.  
  238. //Reiniciar datos del Usuario (prevenir bugs)
  239. stock ReiniciarDatos(playerid){
  240. Info[playerid][cDinero] = 0;
  241. Info[playerid][cAsesinatos] = 0;
  242. Info[playerid][cMuertes] = 0;
  243. Info[playerid][pAdminZC] = 0;
  244. Info[playerid][cVip] = 0;
  245. Info[playerid][cRegistrado] = 0;}
  246.  
  247. stock GetAdminRank(playerid)
  248. {
  249. new arank[64];
  250. switch(Info[playerid][pAdminZC])
  251. {
  252. case 6: arank = "Dueño Fundador";
  253. case 5: arank = "Sub Dueño";
  254. case 4: arank = "Administrador";
  255. case 3: arank = "Moderador";
  256. case 2: arank = "Paranormal";
  257. case 1: arank = "inhabilitado";
  258. case 0: arank = "Usuario";
  259. }
  260. return arank;
  261. }
  262.  
  263. zcmd(aduty, playerid, params[])
  264. {
  265. new string[200];
  266. if(Info[playerid][pAdminZC] < 1) return SendClientMessage(playerid,0xFFFFFFFF,"No estás autorizado");
  267. {
  268. new rangoAdmin[70];
  269. switch(Info[playerid][pAdminZC])
  270. {
  271. case 3: rangoAdmin = "Moderador";
  272. case 4: rangoAdmin = "Administrador";
  273. case 5: rangoAdmin = "Sub Dueño";
  274. case 6: rangoAdmin = "Dueño Fundador";
  275. }
  276. new formato[120];
  277. format(formato, sizeof(formato), "%s - En Servicio", rangoAdmin);
  278. YO[playerid] = Create3DTextLabel(formato, COLOR_GREEN25, 0.0, 0.0, 40.0, 20.0, 0, 1);
  279. Attach3DTextLabelToPlayer(YO[playerid], playerid, 0.0, 0.0, 0.40);
  280. SetPlayerSkin(playerid, 217);
  281. papilla[playerid] = 1;
  282. SetPlayerArmour(playerid, 99999);
  283. SetPlayerHealth(playerid, 99999);
  284. //Info[playerid][pModel] = 217;
  285. AdminDuty[playerid] = 1;
  286. SetPlayerColor(playerid,COLOR_ORANGE);
  287. format(string, sizeof(string), "{FA5858} Administración:{FFFFFF} %s {FA5858}[ID: %d]{FFFFFF} se ha puesto en Servicio como Staff." , GetPlayerNameEx(playerid),playerid);
  288. SendClientMessageToAll(COLOR_ORANGE, string);
  289. }
  290. return 1;
  291. }
  292. zcmd(adutyoff, playerid, params[])
  293. {
  294. new string[200];
  295. if(Info[playerid][pAdminZC] < 1) return SendClientMessage(playerid,0xFFFFFFFF,"No estás autorizado");
  296. {
  297. SetPlayerColor(playerid, -1);
  298. SetPlayerSkin(playerid, Info[playerid][pRopaPuesta]);
  299. papilla[playerid]= 0;
  300. format(string, sizeof(string), "{FA5858} Administración:{FFFFFF} %s {FA5858}[ID: %d]{FFFFFF} se ha salido del Servicio como Staff." , GetPlayerNameEx(playerid),playerid);
  301. Delete3DTextLabel(YO[playerid]);
  302. SetPlayerSkin(playerid, Info[playerid][pRopaPuesta]);
  303. SendClientMessageToAll(COLOR_ORANGE, string);
  304. }
  305. return 1;
  306. }
  307. CMD:daradmin(playerid, params[])
  308. {
  309.  
  310. if(Info[playerid][pAdminZC] < 7) return SendClientMessage(playerid, -1, "No eres administrador nivel 6.");
  311. {
  312.  
  313. //------------------------------------------------------------------------------
  314. if (!sscanf(params, "ud", params[0], params[1]))
  315. {
  316. Info[params[0]][pAdminZC] = params[1];
  317. new string[55], Nombret[32];
  318. GetPlayerName(playerid, Nombret, sizeof(Nombret));
  319. format(string, sizeof(string), "%s Te dio nivel admin: %d", Nombret, params[1]);
  320. SendClientMessage(params[0], -1, string);
  321. }
  322. else SendClientMessage(playerid, -1, "Use: /DarAdmin [id] [Nivel admin]");
  323. //------------------------------------------------------------------------------
  324.  
  325. }
  326. return 1;
  327. }
  328.  
  329. COMMAND:darscore(playerid,params[]){
  330. if(Info[playerid][pAdminZC] >= 10 || IsPlayerAdmin(playerid)){
  331. new Jugador,Score;
  332. if(sscanf(params,"ud",Jugador,Score))return SendClientMessage(playerid,-1,"Usa: /darscore [Jugador] [Score]");
  333. if(IsPlayerConnected(Jugador)){
  334. Info[Jugador][cAsesinatos] += Score;
  335. SendClientMessageEx(Jugador,-1,"El administrador %s te a dado %d de Score.",Nombre(playerid),Score);
  336. SendClientMessageEx(playerid,-1,"Le has dado %d de score a %s",Score,Nombre(Jugador));
  337. }else return SendClientMessage(playerid,-1,"ERROR: El jugador no se encuentra conectado.");
  338. }else return SendClientMessage(playerid,-1,"ERROR: Debes ser nivel 10 para usar este comando.");
  339. return 1;}
  340.  
  341. CMD:kickname(playerid, params[]){
  342. 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.");
  343. if (Info[playerid][pAdminZC] >= 1){
  344. new string[128], giveplayerid;
  345. if(sscanf(params, "d", giveplayerid)) return SendClientMessageEx(playerid, COLOR_WHITE, "Utiliza: /kickname (playerID) ");
  346. if(IsPlayerConnected(giveplayerid)){
  347. if(Info[giveplayerid][pAdminZC] >= Info[playerid][pAdminZC]){
  348. format(string, sizeof(string), "[AdmCmd]: %s ha sido auto expulsado, razón: Intentar usar /kick a un administrador mayor.", GetPlayerNameEx(playerid));
  349. ABroadCast(COLOR_YELLOW,string, (Info[playerid][pAdminZC] == 1) ? (1) : (2));
  350. SetTimerEx("TimerKICK",500,false,"d",playerid);
  351. return 1;
  352. }
  353. else{
  354. new year, month,day;
  355. getdate(year, month, day);
  356. new playerip[32];
  357. GetPlayerIp(giveplayerid, playerip, sizeof(playerip));
  358. 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);
  359. Log("LOGS/kick.log", string);
  360. if(Info[playerid][pAdminZC] == 1) Log("LOGS/moderator.log", string);
  361. for(new loop=0; loop<20; loop++) SendClientMessage(giveplayerid, COLOR_WHITE,"");
  362. SendClientMessageEx(giveplayerid,COLOR_GREEN,"[AVISO] Has sido expulsado por el servidor ya que tu cuenta no cumple las normas de la comunidad.");
  363. SendClientMessageEx(giveplayerid,COLOR_WHITE,"No se permite nombre de famosos, nicks trolls, inadecuados, que no son Role Play o que falten el respeto.");
  364. SendClientMessageEx(giveplayerid,COLOR_WHITE,"Recuerda poner las iniciales en mayúscula usado un nombre real, formato Nombre_Apellido.");
  365. format(string, sizeof(string), "[KICKNAME]: %s fue expulsado del servidor por %s, mal uso del formato Nombre_Apellido.", GetPlayerNameEx(giveplayerid), GetPlayerNameEx(playerid));
  366. ABroadCast(COLOR_YELLOW,string,1);
  367. SetTimerEx("TimerKICK",500,false,"d",giveplayerid);
  368. }
  369. return 1;
  370. }
  371. }
  372. else SendClientMessageEx(playerid, COLOR_WHITE, "Esa ID es inválida.");
  373. return 1;
  374. }
Advertisement
Add Comment
Please, Sign In to add comment