Agregar vida en plugin - [email protected] - 30/07/2020
Hola muy buenos dias a todos!
Hoy tengo una duda que si alguien me pudiera ayudar se lo agradeceria mucho, lo que pasa es que uso un plugin que es el Carnage
que funciona bien y todo pero me gustaria agregarle que cuando comienze el carnage le de a todos los usuarios una cantidad de vida que yo decida en mi caso 5000 pero e intentado agregarlo pero no me funciona y al comenzar el carnage no da la vida a los usuarios :c y ese es mi problema uwu
El codigo que utilizo es este, si alguien le puede echar un vistaso o decirme como hacer para agregar vida se lo agrecedere mucho!
Código PHP: #include <amxmodx> #include <hamsandwich> #include <fun> #include <cstrike> native tienda_plasma(id); native tienda_balrog(id); native tienda_gatling(id);
#define PLUGIN "Carnage hns" #define VERSION "1.2" #define AUTHOR "Mongito100" //Version 1.1 Agregado hud //Version 1.2 fix bug carnage aleatorio
new g_maxplayers //Varible q nos dira el maximo numero de jugadores del sv new g_Carnage //Varible que nos indicara si es carngae o no new g_Round //Varible q se encargara de contar las rondas para saber si es carnage new g_Modcarnage//Variable para saber el mod carnage new CvarTiempovotacion//Aqui se almacenara la cvar para cambiar el tiempo de votacion new CvarRoundCarnage //Aqui se almacenara la cvar para cambiar cada cuantas rondas se realiza el carnage new CvarModCarnage /* Aqui se almacenara la cvar para cambiar el mod carnage Cuando esta en 0 el carnage es aleatorio Cuando esta en 1 el carnage es por votacion */ new g_Envotacion//Variable para saber si estan votando new g_TiempoVote//Varible que decrementara para ir mostrando cuanto tiempo queda para finalizar la votacion new g_OpcionVotada[4]//Variable para saber la opcion q se voto new g_OpcionesAzar[4] //Variable para obtener 4 mods al azar en caso de tenerse mas de 4 new Hudconteo//Variable para la sincronizacion del hud new Hudcarnage//Variable para la sincronizacion del hud new g_azar//Variable para elegir un carnage al azar
enum _:PACK_CARNAGE { NAME[10], WEAPON[18], CSW, CARGADOR, CUCHI, HEADSHOOT, } new g_Packcarnage[][PACK_CARNAGE] =// Aca configuraremos como queremos que sea el carnage { // Nombre weapon del arma csw del arma cargador si tienen cuchi si es only headshoot { "PLASMAGUN", "weapon_awp", CSW_AWP, 40, 0, 0 }, { "DEAGLE", "weapon_deagle", CSW_DEAGLE, 100, 0, 1 }, { "GLATING", "weapon_m3", CSW_M3, 30, 1, 0 } } new g_CantidadMods = sizeof g_Packcarnage//Variable para saber la la cantidad de mods
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("HLTV" , "round_start" , "a", "1=0", "2=0")//Registramos el comienzo de la ronda register_logevent("round_end", 2, "1=Round_End")//Registramos cuando finaliza la ronda RegisterHam( Ham_Spawn, "player", "fw_player_spawn" ,1) //Registramos cuando un jugador spawnea register_clcmd("say /carnage" ,"cmd_mensajecaranage")//Registramos el /carnagee para informar cuantas rondas faltan Hudconteo = CreateHudSyncObj() Hudcarnage= CreateHudSyncObj() CvarRoundCarnage = register_cvar("carnage_round", "10") CvarModCarnage = register_cvar("carnage_mod", "1") CvarTiempovotacion = register_cvar("carnage_tiempovotacion", "10") g_maxplayers = get_maxplayers( ) set_task(1.0, "ShowHUD", _, _, _, "b")//Creamos un task continuo para avisar cuantas rondas quedan para el carnage } public round_start() { g_Carnage = 0 //Desimos q no es carnage seteandola esta variable en 0 g_Round++//Incrementamos el contador de rondas if(get_pcvar_num(CvarModCarnage) && g_Round+1 == get_pcvar_num(CvarRoundCarnage)) VoteCarnage()//Si el carnage es por votacion y la ronda siguiente es carnage se envia la votacion if(g_Round == get_pcvar_num(CvarRoundCarnage))//Si la ronda es carnage... { g_Carnage = 1//Seteamos la variable indicadora de carnage en 1 g_Round = 0//Reseteamos el contador de rondas set_cvar_num("amx_ltm", 0)//Desactivamos los lasers set_cvar_num("hns_hiders_knife", 2)//Le damos cuchicho a los tt set_cvar_num("hns_hiders_flashbangs", 0)//Les sacamos las flash a los tt set_cvar_num("hns_hiders_smokegren", 0)//Les sacamos las congeladoras a los tt set_cvar_num("hns_autobhop",0) //DESABILITAR AUTOBUNNY set_cvar_num("hns_max_saltos",0) //saltos set_cvar_num("amx_heal @all", 5000); //INTETNO 1 DE DAR VIDA NO FUNCIONA set_cvar_num("amx_heal @all", 5000) //INTENTO 2 DE DAR VIDA NO FUNCIONA } }
public round_end() { if(g_Round+1 == get_pcvar_num(CvarRoundCarnage))//Si la proxima ronda es carnage set_cvar_num("hns_tiempo_conteo", 0)//Desactivo el tiempo para esconderse //NOTA:Lo hago aca para evitar bugs if(g_Carnage)//Si ya termino el carnage volvemos a los valores por default { set_cvar_num("amx_ltm", 1) set_cvar_num("hns_tiempo_conteo", 5) set_cvar_num("hns_hiders_knife", 1) set_cvar_num("hns_hiders_flashbangs", 2) set_cvar_num("hns_hiders_smokegren", 1) set_cvar_num("hns_autobhop",1) set_cvar_num("hns_max_saltos",2) set_user_hitzones(0, 0, 255) } g_azar = 0 } public fw_player_spawn(id) if(is_user_alive(id)) set_task(2.0,"chequear_carnage",id+100) /*Hacemos que chequee en 2 seg si es carnage, algunos se preguntaran por q aca y no en el round start, la respuesta es simple por q si alguien entra al sv cuando ya comenzo la ronda y aparece vivo no se le setearian las armas del carnage*/
public cmd_mensajecaranage(id) { if(g_Carnage)//Si es carnage le informamos q carnage es y si es only headshoot client_print(id,print_chat,"Es carnage %s %s",g_Packcarnage[g_Modcarnage][NAME],g_Packcarnage[g_Modcarnage][HEADSHOOT] ? "Only Headshoot":"") else//Si no le informamos cuantas rondas faltan client_print(id,print_chat,"Faltan %d ronda%s para carnage",get_pcvar_num(CvarRoundCarnage)-g_Round ,get_pcvar_num(CvarRoundCarnage)-g_Round == 1 ? "" :"s") } public ShowHUD() { if(!g_Carnage) { set_hudmessage(0, 50, 100, -1.0, 0.06, 1, 1.0, 1.0, 1.0, 1.0) ShowSyncHudMsg(0, Hudcarnage, "Falta%s %d ronda%s para carnage", get_pcvar_num(CvarRoundCarnage) - g_Round > 1 ? "n" : "", get_pcvar_num(CvarRoundCarnage) - g_Round , get_pcvar_num(CvarRoundCarnage) - g_Round > 1 ? "s" : "") } }
public VoteCarnage() { new VoteTipoCarnage = menu_create("\r Elegir el mod carnage", "handle_votecarnage"),temp[2] if( g_CantidadMods > 3)//Si hay mas de 4 mods carnage { g_OpcionesAzar = generar_voteazar()//Elijo al azar entre 4 de ellas for(new i= 0;i<3;i++)//agrego cada mod a la votacion { num_to_str(i,temp,2) menu_additem(VoteTipoCarnage ,g_Packcarnage[g_OpcionesAzar[i]][NAME],temp) } } else //si no... { for(new i = 0; i < sizeof g_Packcarnage; i++)//agrego cada mod a la votacion { num_to_str(i,temp,2) menu_additem(VoteTipoCarnage ,g_Packcarnage[i][NAME],temp) } } for( new i = 1; i <= g_maxplayers; i++ ) //Muestro el menu de votacion a todos los jugadores conectados if( is_user_connected( i ) ) menu_display( i, VoteTipoCarnage) g_Envotacion = 1 //Comenzo la votacion //Muestro un hud con la cantidad de segundos restantes para finalizar la votacion set_hudmessage(0,255,0,0.0, 0.70,_,1.0,1.0,1.0,1.0) ShowSyncHudMsg(0,Hudconteo,"La votacion finalizara en %d segundos",get_pcvar_num(CvarTiempovotacion)) g_TiempoVote = get_pcvar_num(CvarTiempovotacion) set_task(1.0, "Votefinalizado",_,_,_, "a", get_pcvar_num(CvarTiempovotacion)+1) //Hago que se llame a la funcion la cantidad de segundos q debe contar + 1 para q finalice la votacion } public handle_votecarnage( id, iMenu, item ) { if( !g_Envotacion) return new iData[6], iAccess, iCallback,iName[64],szName[33] menu_item_getinfo( iMenu, item, iAccess, iData,5, iName, 63, iCallback ) get_user_name(id,szName,charsmax(szName)) g_OpcionVotada[ str_to_num( iData ) ]++ client_print(0,print_chat, "El juagador %s a votado carnage %s",szName,iName) }
public Votefinalizado() { if(g_TiempoVote)//Mientras que el tiempo de votacion sea mayor a 0 { g_TiempoVote--//Se resta 1 seg //Muestro un hud con la cantidad de segundos restantes para finalizar la votacion set_hudmessage(0,255,0,0.0, 0.70,_,1.0,1.0,1.0,1.0) show_hudmessage(0, "La votacion finalizara en %d segundos",g_TiempoVote) return } g_Envotacion = 0 //Finalizo la votacion new Opcionganadora = 0 for( new a = 0; a < 4; a++ )//Verifico cual es la opcion que fue seleccionada mas veces if( g_OpcionVotada[ Opcionganadora ] < g_OpcionVotada[ a ] ) Opcionganadora = a for(new i=0 ;i<4; i++)//Restablesco las opciones votadas a 0 para el proximo vote g_OpcionVotada[i]=0 if( g_CantidadMods > 3)//Si hay mas de 4 mods carnage g_Modcarnage = g_OpcionesAzar[Opcionganadora] else//Si no g_Modcarnage = Opcionganadora client_print(0,print_chat, "Ha ganado el Carnage %s",g_Packcarnage[g_Modcarnage][NAME]) } public generar_voteazar() { new eleccion[4] for(new i=0;i<4;i++) eleccion[i] = random_num(0,g_CantidadMods)//Generamos un numero al azar entre 0 y el maximo de mods carnage while(eleccion[0] == eleccion[1])//Mientras que la primera eleccion sea igual a la segunda... eleccion[1] = random_num(0,g_CantidadMods)//Volvemos a generar un numero al azar while(eleccion[0] == eleccion[2] || eleccion[1] == eleccion[2] )//Mientras que la tercera eleccion sea igual a la primera o a la segunda... eleccion[2] = random_num(0,g_CantidadMods)//Volvemos a generar un numero al azar while(eleccion[0] == eleccion[3] || eleccion[1] == eleccion[3] || eleccion[2] == eleccion[3] )//Mientras que la cuarta eleccion sea igual a la primera o a la segunda o a la tercera... eleccion[2] = random_num(0,g_CantidadMods)//Volvemos a generar un numero al azar return eleccion//Devolvemos el vector con los numeros al azar diferentes entre si }
public chequear_carnage(id) { if(!g_Carnage )//Si no es carnage volvemos return if(!get_pcvar_num(CvarModCarnage) && !g_azar)//Si es carnage aleatorio y todavia no se desidio el mod... { g_azar = 1 g_Modcarnage= random_num(0,g_CantidadMods)//Generamos un numero al azar entre 0 y el maximo de mods carnage } id-=100
strip_user_weapons(id)//Le sacamos todas las armas hasta el cuchi if(g_Packcarnage[g_Modcarnage][CUCHI])//Si el mod es con cuchi... give_item(id,"weapon_knife") if(g_Packcarnage[g_Modcarnage][HEADSHOOT])//Si el mod es headshoot... set_user_hitzones(id,0,2) //Le damos el arma del mod carnage give_item(id, g_Packcarnage[g_Modcarnage][WEAPON]) cs_set_user_bpammo(id, g_Packcarnage[g_Modcarnage][CSW],g_Packcarnage[g_Modcarnage][CARGADOR]) if(g_Modcarnage == 0) tienda_plasma(id) if(g_Modcarnage == 2) tienda_gatling(id) if(g_Modcarnage == 3) tienda_balrog(id) //Mostramos un hud para informar que es carnage set_hudmessage(0, 50, 100, -1.0, 0.06, 1, 1.0, 1.0, 1.0, 1.0) show_hudmessage(id, "Es carnage %s %s",g_Packcarnage[g_Modcarnage][NAME],g_Packcarnage[g_Modcarnage][HEADSHOOT] ? "Only Headshoot":"") }
De ante mano muchas gracias
RE: Agregar vida en plugin - gh0st - 30/07/2020
Código PHP: #include <amxmodx> #include <hamsandwich> #include <fun> #include <cstrike> native tienda_plasma(id); native tienda_balrog(id); native tienda_gatling(id);
#define PLUGIN "Carnage hns" #define VERSION "1.2" #define AUTHOR "Mongito100" //Version 1.1 Agregado hud //Version 1.2 fix bug carnage aleatorio
new g_maxplayers //Varible q nos dira el maximo numero de jugadores del sv new g_Carnage //Varible que nos indicara si es carngae o no new g_Round //Varible q se encargara de contar las rondas para saber si es carnage new g_Modcarnage//Variable para saber el mod carnage new CvarTiempovotacion//Aqui se almacenara la cvar para cambiar el tiempo de votacion new CvarRoundCarnage //Aqui se almacenara la cvar para cambiar cada cuantas rondas se realiza el carnage new CvarModCarnage /* Aqui se almacenara la cvar para cambiar el mod carnage Cuando esta en 0 el carnage es aleatorio Cuando esta en 1 el carnage es por votacion */ new g_Envotacion//Variable para saber si estan votando new g_TiempoVote//Varible que decrementara para ir mostrando cuanto tiempo queda para finalizar la votacion new g_OpcionVotada[4]//Variable para saber la opcion q se voto new g_OpcionesAzar[4] //Variable para obtener 4 mods al azar en caso de tenerse mas de 4 new Hudconteo//Variable para la sincronizacion del hud new Hudcarnage//Variable para la sincronizacion del hud new g_azar//Variable para elegir un carnage al azar
enum _:PACK_CARNAGE { NAME[10], WEAPON[18], CSW, CARGADOR, CUCHI, HEADSHOOT, } new g_Packcarnage[][PACK_CARNAGE] =// Aca configuraremos como queremos que sea el carnage { // Nombre weapon del arma csw del arma cargador si tienen cuchi si es only headshoot { "PLASMAGUN", "weapon_awp", CSW_AWP, 40, 0, 0 }, { "DEAGLE", "weapon_deagle", CSW_DEAGLE, 100, 0, 1 }, { "GLATING", "weapon_m3", CSW_M3, 30, 1, 0 } } new g_CantidadMods = sizeof g_Packcarnage//Variable para saber la la cantidad de mods const CANTIDAD_VIDA = 5000
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("HLTV" , "round_start" , "a", "1=0", "2=0")//Registramos el comienzo de la ronda register_logevent("round_end", 2, "1=Round_End")//Registramos cuando finaliza la ronda RegisterHam( Ham_Spawn, "player", "fw_player_spawn" ,1) //Registramos cuando un jugador spawnea register_clcmd("say /carnage" ,"cmd_mensajecaranage")//Registramos el /carnagee para informar cuantas rondas faltan Hudconteo = CreateHudSyncObj() Hudcarnage= CreateHudSyncObj() CvarRoundCarnage = register_cvar("carnage_round", "10") CvarModCarnage = register_cvar("carnage_mod", "1") CvarTiempovotacion = register_cvar("carnage_tiempovotacion", "10") g_maxplayers = get_maxplayers( ) set_task(1.0, "ShowHUD", _, _, _, "b")//Creamos un task continuo para avisar cuantas rondas quedan para el carnage } public round_start() { g_Carnage = 0 //Desimos q no es carnage seteandola esta variable en 0 g_Round++//Incrementamos el contador de rondas if(get_pcvar_num(CvarModCarnage) && g_Round+1 == get_pcvar_num(CvarRoundCarnage)) VoteCarnage()//Si el carnage es por votacion y la ronda siguiente es carnage se envia la votacion if(g_Round == get_pcvar_num(CvarRoundCarnage))//Si la ronda es carnage... { g_Carnage = 1//Seteamos la variable indicadora de carnage en 1 g_Round = 0//Reseteamos el contador de rondas set_cvar_num("amx_ltm", 0)//Desactivamos los lasers set_cvar_num("hns_hiders_knife", 2)//Le damos cuchicho a los tt set_cvar_num("hns_hiders_flashbangs", 0)//Les sacamos las flash a los tt set_cvar_num("hns_hiders_smokegren", 0)//Les sacamos las congeladoras a los tt set_cvar_num("hns_autobhop",0) //DESABILITAR AUTOBUNNY set_cvar_num("hns_max_saltos",0) //saltos set_cvar_num("amx_heal @all", 5000); //INTETNO 1 DE DAR VIDA NO FUNCIONA set_cvar_num("amx_heal @all", 5000) //INTENTO 2 DE DAR VIDA NO FUNCIONA } }
public round_end() { if(g_Round+1 == get_pcvar_num(CvarRoundCarnage))//Si la proxima ronda es carnage set_cvar_num("hns_tiempo_conteo", 0)//Desactivo el tiempo para esconderse //NOTA:Lo hago aca para evitar bugs if(g_Carnage)//Si ya termino el carnage volvemos a los valores por default { set_cvar_num("amx_ltm", 1) set_cvar_num("hns_tiempo_conteo", 5) set_cvar_num("hns_hiders_knife", 1) set_cvar_num("hns_hiders_flashbangs", 2) set_cvar_num("hns_hiders_smokegren", 1) set_cvar_num("hns_autobhop",1) set_cvar_num("hns_max_saltos",2) set_user_hitzones(0, 0, 255) } g_azar = 0 } public fw_player_spawn(id) if(is_user_alive(id)) set_task(2.0,"chequear_carnage",id+100) /*Hacemos que chequee en 2 seg si es carnage, algunos se preguntaran por q aca y no en el round start, la respuesta es simple por q si alguien entra al sv cuando ya comenzo la ronda y aparece vivo no se le setearian las armas del carnage*/
public cmd_mensajecaranage(id) { if(g_Carnage)//Si es carnage le informamos q carnage es y si es only headshoot client_print(id,print_chat,"Es carnage %s %s",g_Packcarnage[g_Modcarnage][NAME],g_Packcarnage[g_Modcarnage][HEADSHOOT] ? "Only Headshoot":"") else//Si no le informamos cuantas rondas faltan client_print(id,print_chat,"Faltan %d ronda%s para carnage",get_pcvar_num(CvarRoundCarnage)-g_Round ,get_pcvar_num(CvarRoundCarnage)-g_Round == 1 ? "" :"s") } public ShowHUD() { if(!g_Carnage) { set_hudmessage(0, 50, 100, -1.0, 0.06, 1, 1.0, 1.0, 1.0, 1.0) ShowSyncHudMsg(0, Hudcarnage, "Falta%s %d ronda%s para carnage", get_pcvar_num(CvarRoundCarnage) - g_Round > 1 ? "n" : "", get_pcvar_num(CvarRoundCarnage) - g_Round , get_pcvar_num(CvarRoundCarnage) - g_Round > 1 ? "s" : "") } }
public VoteCarnage() { new VoteTipoCarnage = menu_create("\r Elegir el mod carnage", "handle_votecarnage"),temp[2] if( g_CantidadMods > 3)//Si hay mas de 4 mods carnage { g_OpcionesAzar = generar_voteazar()//Elijo al azar entre 4 de ellas for(new i= 0;i<3;i++)//agrego cada mod a la votacion { num_to_str(i,temp,2) menu_additem(VoteTipoCarnage ,g_Packcarnage[g_OpcionesAzar[i]][NAME],temp) } } else //si no... { for(new i = 0; i < sizeof g_Packcarnage; i++)//agrego cada mod a la votacion { num_to_str(i,temp,2) menu_additem(VoteTipoCarnage ,g_Packcarnage[i][NAME],temp) } } for( new i = 1; i <= g_maxplayers; i++ ) //Muestro el menu de votacion a todos los jugadores conectados if( is_user_connected( i ) ) menu_display( i, VoteTipoCarnage) g_Envotacion = 1 //Comenzo la votacion //Muestro un hud con la cantidad de segundos restantes para finalizar la votacion set_hudmessage(0,255,0,0.0, 0.70,_,1.0,1.0,1.0,1.0) ShowSyncHudMsg(0,Hudconteo,"La votacion finalizara en %d segundos",get_pcvar_num(CvarTiempovotacion)) g_TiempoVote = get_pcvar_num(CvarTiempovotacion) set_task(1.0, "Votefinalizado",_,_,_, "a", get_pcvar_num(CvarTiempovotacion)+1) //Hago que se llame a la funcion la cantidad de segundos q debe contar + 1 para q finalice la votacion } public handle_votecarnage( id, iMenu, item ) { if( !g_Envotacion) return new iData[6], iAccess, iCallback,iName[64],szName[33] menu_item_getinfo( iMenu, item, iAccess, iData,5, iName, 63, iCallback ) get_user_name(id,szName,charsmax(szName)) g_OpcionVotada[ str_to_num( iData ) ]++ client_print(0,print_chat, "El juagador %s a votado carnage %s",szName,iName) }
public Votefinalizado() { if(g_TiempoVote)//Mientras que el tiempo de votacion sea mayor a 0 { g_TiempoVote--//Se resta 1 seg //Muestro un hud con la cantidad de segundos restantes para finalizar la votacion set_hudmessage(0,255,0,0.0, 0.70,_,1.0,1.0,1.0,1.0) show_hudmessage(0, "La votacion finalizara en %d segundos",g_TiempoVote) return } g_Envotacion = 0 //Finalizo la votacion new Opcionganadora = 0 for( new a = 0; a < 4; a++ )//Verifico cual es la opcion que fue seleccionada mas veces if( g_OpcionVotada[ Opcionganadora ] < g_OpcionVotada[ a ] ) Opcionganadora = a for(new i=0 ;i<4; i++)//Restablesco las opciones votadas a 0 para el proximo vote g_OpcionVotada[i]=0 if( g_CantidadMods > 3)//Si hay mas de 4 mods carnage g_Modcarnage = g_OpcionesAzar[Opcionganadora] else//Si no g_Modcarnage = Opcionganadora client_print(0,print_chat, "Ha ganado el Carnage %s",g_Packcarnage[g_Modcarnage][NAME]) } public generar_voteazar() { new eleccion[4] for(new i=0;i<4;i++) eleccion[i] = random_num(0,g_CantidadMods)//Generamos un numero al azar entre 0 y el maximo de mods carnage while(eleccion[0] == eleccion[1])//Mientras que la primera eleccion sea igual a la segunda... eleccion[1] = random_num(0,g_CantidadMods)//Volvemos a generar un numero al azar while(eleccion[0] == eleccion[2] || eleccion[1] == eleccion[2] )//Mientras que la tercera eleccion sea igual a la primera o a la segunda... eleccion[2] = random_num(0,g_CantidadMods)//Volvemos a generar un numero al azar while(eleccion[0] == eleccion[3] || eleccion[1] == eleccion[3] || eleccion[2] == eleccion[3] )//Mientras que la cuarta eleccion sea igual a la primera o a la segunda o a la tercera... eleccion[2] = random_num(0,g_CantidadMods)//Volvemos a generar un numero al azar return eleccion//Devolvemos el vector con los numeros al azar diferentes entre si }
public chequear_carnage(id) { if(!g_Carnage )//Si no es carnage volvemos return if(!get_pcvar_num(CvarModCarnage) && !g_azar)//Si es carnage aleatorio y todavia no se desidio el mod... { g_azar = 1 g_Modcarnage= random_num(0,g_CantidadMods)//Generamos un numero al azar entre 0 y el maximo de mods carnage } id-=100
strip_user_weapons(id)//Le sacamos todas las armas hasta el cuchi if(g_Packcarnage[g_Modcarnage][CUCHI])//Si el mod es con cuchi... give_item(id,"weapon_knife") if(g_Packcarnage[g_Modcarnage][HEADSHOOT])//Si el mod es headshoot... set_user_hitzones(id,0,2) //Le damos el arma del mod carnage give_item(id, g_Packcarnage[g_Modcarnage][WEAPON]) cs_set_user_bpammo(id, g_Packcarnage[g_Modcarnage][CSW],g_Packcarnage[g_Modcarnage][CARGADOR]) if(g_Modcarnage == 0) tienda_plasma(id) if(g_Modcarnage == 2) tienda_gatling(id) if(g_Modcarnage == 3) tienda_balrog(id) set_user_health(id, CANTIDAD_VIDA) //Mostramos un hud para informar que es carnage set_hudmessage(0, 50, 100, -1.0, 0.06, 1, 1.0, 1.0, 1.0, 1.0) show_hudmessage(id, "Es carnage %s %s",g_Packcarnage[g_Modcarnage][NAME],g_Packcarnage[g_Modcarnage][HEADSHOOT] ? "Only Headshoot":"") }
en Código PHP: const CANTIDAD_VIDA = 5000
modificas la vida
RE: Agregar vida en plugin - [email protected] - 30/07/2020
(30/07/2020, 01:23 PM)gh0st escribió: Código PHP: #include <amxmodx> #include <hamsandwich> #include <fun> #include <cstrike> native tienda_plasma(id); native tienda_balrog(id); native tienda_gatling(id);
#define PLUGIN "Carnage hns" #define VERSION "1.2" #define AUTHOR "Mongito100" //Version 1.1 Agregado hud //Version 1.2 fix bug carnage aleatorio
new g_maxplayers //Varible q nos dira el maximo numero de jugadores del sv new g_Carnage //Varible que nos indicara si es carngae o no new g_Round //Varible q se encargara de contar las rondas para saber si es carnage new g_Modcarnage//Variable para saber el mod carnage new CvarTiempovotacion//Aqui se almacenara la cvar para cambiar el tiempo de votacion new CvarRoundCarnage //Aqui se almacenara la cvar para cambiar cada cuantas rondas se realiza el carnage new CvarModCarnage /* Aqui se almacenara la cvar para cambiar el mod carnage Cuando esta en 0 el carnage es aleatorio Cuando esta en 1 el carnage es por votacion */ new g_Envotacion//Variable para saber si estan votando new g_TiempoVote//Varible que decrementara para ir mostrando cuanto tiempo queda para finalizar la votacion new g_OpcionVotada[4]//Variable para saber la opcion q se voto new g_OpcionesAzar[4] //Variable para obtener 4 mods al azar en caso de tenerse mas de 4 new Hudconteo//Variable para la sincronizacion del hud new Hudcarnage//Variable para la sincronizacion del hud new g_azar//Variable para elegir un carnage al azar
enum _:PACK_CARNAGE { NAME[10], WEAPON[18], CSW, CARGADOR, CUCHI, HEADSHOOT, } new g_Packcarnage[][PACK_CARNAGE] =// Aca configuraremos como queremos que sea el carnage { // Nombre weapon del arma csw del arma cargador si tienen cuchi si es only headshoot { "PLASMAGUN", "weapon_awp", CSW_AWP, 40, 0, 0 }, { "DEAGLE", "weapon_deagle", CSW_DEAGLE, 100, 0, 1 }, { "GLATING", "weapon_m3", CSW_M3, 30, 1, 0 } } new g_CantidadMods = sizeof g_Packcarnage//Variable para saber la la cantidad de mods const CANTIDAD_VIDA = 5000
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("HLTV" , "round_start" , "a", "1=0", "2=0")//Registramos el comienzo de la ronda register_logevent("round_end", 2, "1=Round_End")//Registramos cuando finaliza la ronda RegisterHam( Ham_Spawn, "player", "fw_player_spawn" ,1) //Registramos cuando un jugador spawnea register_clcmd("say /carnage" ,"cmd_mensajecaranage")//Registramos el /carnagee para informar cuantas rondas faltan Hudconteo = CreateHudSyncObj() Hudcarnage= CreateHudSyncObj() CvarRoundCarnage = register_cvar("carnage_round", "10") CvarModCarnage = register_cvar("carnage_mod", "1") CvarTiempovotacion = register_cvar("carnage_tiempovotacion", "10") g_maxplayers = get_maxplayers( ) set_task(1.0, "ShowHUD", _, _, _, "b")//Creamos un task continuo para avisar cuantas rondas quedan para el carnage } public round_start() { g_Carnage = 0 //Desimos q no es carnage seteandola esta variable en 0 g_Round++//Incrementamos el contador de rondas if(get_pcvar_num(CvarModCarnage) && g_Round+1 == get_pcvar_num(CvarRoundCarnage)) VoteCarnage()//Si el carnage es por votacion y la ronda siguiente es carnage se envia la votacion if(g_Round == get_pcvar_num(CvarRoundCarnage))//Si la ronda es carnage... { g_Carnage = 1//Seteamos la variable indicadora de carnage en 1 g_Round = 0//Reseteamos el contador de rondas set_cvar_num("amx_ltm", 0)//Desactivamos los lasers set_cvar_num("hns_hiders_knife", 2)//Le damos cuchicho a los tt set_cvar_num("hns_hiders_flashbangs", 0)//Les sacamos las flash a los tt set_cvar_num("hns_hiders_smokegren", 0)//Les sacamos las congeladoras a los tt set_cvar_num("hns_autobhop",0) //DESABILITAR AUTOBUNNY set_cvar_num("hns_max_saltos",0) //saltos set_cvar_num("amx_heal @all", 5000); //INTETNO 1 DE DAR VIDA NO FUNCIONA set_cvar_num("amx_heal @all", 5000) //INTENTO 2 DE DAR VIDA NO FUNCIONA } }
public round_end() { if(g_Round+1 == get_pcvar_num(CvarRoundCarnage))//Si la proxima ronda es carnage set_cvar_num("hns_tiempo_conteo", 0)//Desactivo el tiempo para esconderse //NOTA:Lo hago aca para evitar bugs if(g_Carnage)//Si ya termino el carnage volvemos a los valores por default { set_cvar_num("amx_ltm", 1) set_cvar_num("hns_tiempo_conteo", 5) set_cvar_num("hns_hiders_knife", 1) set_cvar_num("hns_hiders_flashbangs", 2) set_cvar_num("hns_hiders_smokegren", 1) set_cvar_num("hns_autobhop",1) set_cvar_num("hns_max_saltos",2) set_user_hitzones(0, 0, 255) } g_azar = 0 } public fw_player_spawn(id) if(is_user_alive(id)) set_task(2.0,"chequear_carnage",id+100) /*Hacemos que chequee en 2 seg si es carnage, algunos se preguntaran por q aca y no en el round start, la respuesta es simple por q si alguien entra al sv cuando ya comenzo la ronda y aparece vivo no se le setearian las armas del carnage*/
public cmd_mensajecaranage(id) { if(g_Carnage)//Si es carnage le informamos q carnage es y si es only headshoot client_print(id,print_chat,"Es carnage %s %s",g_Packcarnage[g_Modcarnage][NAME],g_Packcarnage[g_Modcarnage][HEADSHOOT] ? "Only Headshoot":"") else//Si no le informamos cuantas rondas faltan client_print(id,print_chat,"Faltan %d ronda%s para carnage",get_pcvar_num(CvarRoundCarnage)-g_Round ,get_pcvar_num(CvarRoundCarnage)-g_Round == 1 ? "" :"s") } public ShowHUD() { if(!g_Carnage) { set_hudmessage(0, 50, 100, -1.0, 0.06, 1, 1.0, 1.0, 1.0, 1.0) ShowSyncHudMsg(0, Hudcarnage, "Falta%s %d ronda%s para carnage", get_pcvar_num(CvarRoundCarnage) - g_Round > 1 ? "n" : "", get_pcvar_num(CvarRoundCarnage) - g_Round , get_pcvar_num(CvarRoundCarnage) - g_Round > 1 ? "s" : "") } }
public VoteCarnage() { new VoteTipoCarnage = menu_create("\r Elegir el mod carnage", "handle_votecarnage"),temp[2] if( g_CantidadMods > 3)//Si hay mas de 4 mods carnage { g_OpcionesAzar = generar_voteazar()//Elijo al azar entre 4 de ellas for(new i= 0;i<3;i++)//agrego cada mod a la votacion { num_to_str(i,temp,2) menu_additem(VoteTipoCarnage ,g_Packcarnage[g_OpcionesAzar[i]][NAME],temp) } } else //si no... { for(new i = 0; i < sizeof g_Packcarnage; i++)//agrego cada mod a la votacion { num_to_str(i,temp,2) menu_additem(VoteTipoCarnage ,g_Packcarnage[i][NAME],temp) } } for( new i = 1; i <= g_maxplayers; i++ ) //Muestro el menu de votacion a todos los jugadores conectados if( is_user_connected( i ) ) menu_display( i, VoteTipoCarnage) g_Envotacion = 1 //Comenzo la votacion //Muestro un hud con la cantidad de segundos restantes para finalizar la votacion set_hudmessage(0,255,0,0.0, 0.70,_,1.0,1.0,1.0,1.0) ShowSyncHudMsg(0,Hudconteo,"La votacion finalizara en %d segundos",get_pcvar_num(CvarTiempovotacion)) g_TiempoVote = get_pcvar_num(CvarTiempovotacion) set_task(1.0, "Votefinalizado",_,_,_, "a", get_pcvar_num(CvarTiempovotacion)+1) //Hago que se llame a la funcion la cantidad de segundos q debe contar + 1 para q finalice la votacion } public handle_votecarnage( id, iMenu, item ) { if( !g_Envotacion) return new iData[6], iAccess, iCallback,iName[64],szName[33] menu_item_getinfo( iMenu, item, iAccess, iData,5, iName, 63, iCallback ) get_user_name(id,szName,charsmax(szName)) g_OpcionVotada[ str_to_num( iData ) ]++ client_print(0,print_chat, "El juagador %s a votado carnage %s",szName,iName) }
public Votefinalizado() { if(g_TiempoVote)//Mientras que el tiempo de votacion sea mayor a 0 { g_TiempoVote--//Se resta 1 seg //Muestro un hud con la cantidad de segundos restantes para finalizar la votacion set_hudmessage(0,255,0,0.0, 0.70,_,1.0,1.0,1.0,1.0) show_hudmessage(0, "La votacion finalizara en %d segundos",g_TiempoVote) return } g_Envotacion = 0 //Finalizo la votacion new Opcionganadora = 0 for( new a = 0; a < 4; a++ )//Verifico cual es la opcion que fue seleccionada mas veces if( g_OpcionVotada[ Opcionganadora ] < g_OpcionVotada[ a ] ) Opcionganadora = a for(new i=0 ;i<4; i++)//Restablesco las opciones votadas a 0 para el proximo vote g_OpcionVotada[i]=0 if( g_CantidadMods > 3)//Si hay mas de 4 mods carnage g_Modcarnage = g_OpcionesAzar[Opcionganadora] else//Si no g_Modcarnage = Opcionganadora client_print(0,print_chat, "Ha ganado el Carnage %s",g_Packcarnage[g_Modcarnage][NAME]) } public generar_voteazar() { new eleccion[4] for(new i=0;i<4;i++) eleccion[i] = random_num(0,g_CantidadMods)//Generamos un numero al azar entre 0 y el maximo de mods carnage while(eleccion[0] == eleccion[1])//Mientras que la primera eleccion sea igual a la segunda... eleccion[1] = random_num(0,g_CantidadMods)//Volvemos a generar un numero al azar while(eleccion[0] == eleccion[2] || eleccion[1] == eleccion[2] )//Mientras que la tercera eleccion sea igual a la primera o a la segunda... eleccion[2] = random_num(0,g_CantidadMods)//Volvemos a generar un numero al azar while(eleccion[0] == eleccion[3] || eleccion[1] == eleccion[3] || eleccion[2] == eleccion[3] )//Mientras que la cuarta eleccion sea igual a la primera o a la segunda o a la tercera... eleccion[2] = random_num(0,g_CantidadMods)//Volvemos a generar un numero al azar return eleccion//Devolvemos el vector con los numeros al azar diferentes entre si }
public chequear_carnage(id) { if(!g_Carnage )//Si no es carnage volvemos return if(!get_pcvar_num(CvarModCarnage) && !g_azar)//Si es carnage aleatorio y todavia no se desidio el mod... { g_azar = 1 g_Modcarnage= random_num(0,g_CantidadMods)//Generamos un numero al azar entre 0 y el maximo de mods carnage } id-=100
strip_user_weapons(id)//Le sacamos todas las armas hasta el cuchi if(g_Packcarnage[g_Modcarnage][CUCHI])//Si el mod es con cuchi... give_item(id,"weapon_knife") if(g_Packcarnage[g_Modcarnage][HEADSHOOT])//Si el mod es headshoot... set_user_hitzones(id,0,2) //Le damos el arma del mod carnage give_item(id, g_Packcarnage[g_Modcarnage][WEAPON]) cs_set_user_bpammo(id, g_Packcarnage[g_Modcarnage][CSW],g_Packcarnage[g_Modcarnage][CARGADOR]) if(g_Modcarnage == 0) tienda_plasma(id) if(g_Modcarnage == 2) tienda_gatling(id) if(g_Modcarnage == 3) tienda_balrog(id) set_user_health(id, CANTIDAD_VIDA) //Mostramos un hud para informar que es carnage set_hudmessage(0, 50, 100, -1.0, 0.06, 1, 1.0, 1.0, 1.0, 1.0) show_hudmessage(id, "Es carnage %s %s",g_Packcarnage[g_Modcarnage][NAME],g_Packcarnage[g_Modcarnage][HEADSHOOT] ? "Only Headshoot":"") }
en
Código PHP: const CANTIDAD_VIDA = 5000
modificas la vida
Muchisisisimas graciaaaaas me funciono perfecto!
|