|
Junior Member
|

07-31-2013
, 05:52
zombieme.amxx
|
#1
|
I'm Spanish, sorry my English.
I'm editing the code of this plugin to correct errors, but still fails and is no longer to do.
(With debug in plugins.ini)
- In the Log me in the event fails Damage (event_damage_pain (id))
But in the game the only mistake I noticed is that occasionally when I kill zombie life still appears showing negative (-21) and not die until the next round ....
- Another mistake that I appeared in the log was that it did not appear the skins / models Player. But it seems that I've resolved I'm still trying.
- And another error that does not appear in the log is that of public check_commands (id) should change mp_freezetime when zombies to 0 as you do not leave it as it was configured there. But sometimes it does not. I'm still trying.
thanks
The code:
PHP Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fakemeta> #include <engine> #include <fun>
#define PLUGIN "Zombie Me" #define VERSION "3.7" #define AUTHOR "ALBJB"
enum ROUNDSTATUS { RS_END, RS_RUNNING, RS_UNDEFINED } new ROUNDSTATUS:roundstatus = RS_UNDEFINED
#define ZOMBIE_PAIN 2 new pain_zombie[ZOMBIE_PAIN][] = {"zombie/zo_pain1.wav", "zombie/zo_pain2.wav" }
#define ZOMBIE_IDLE 7 new idle_zombie[ZOMBIE_IDLE][] = { "zombie/zo_alert10.wav", "zombie/zo_alert20.wav", "zombie/zo_alert30.wav", "zombie/zo_idle1.wav", "zombie/zo_idle2.wav", "zombie/zo_idle3.wav", "zombie/zo_idle4.wav" }
#define ZOMBIE_MISS 2 new miss_zombie[ZOMBIE_MISS][] = {"zombie/claw_miss1.wav", "zombie/claw_miss2.wav" }
#define ZOMBIE_HIT 3 new hit_zombie[ZOMBIE_HIT][] = {"zombie/claw_strike1.wav", "zombie/claw_strike2.wav","zombie/claw_strike3.wav" }
#define ZOMBIE_DEATH 2 new death_zombie[ZOMBIE_DEATH][] = {"aslave/slv_die1.wav","aslave/slv_die2.wav" }
new nightvision[33] new bool:zombie[33] new bool:z_vida[33] new z_life[33] new user_team[33]
new z_cost, z_health, z_armor, z_speed, z_gravity, z_buyable, z_glow, z_damage, z_sounds #define MAX_PLAYERS 32 new bool:g_restart_attempt[MAX_PLAYERS + 1] new freeze, maxspeed
new bool:map_off = false new mapname[32]
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) ////COMMANDS register_clcmd("say /zombi", "buy_zombie")//, 0, "Transforms you into a zombie.") register_clcmd("say /zombieme","buy_zombie") register_clcmd("say /zombie","buy_zombie") register_clcmd("say_team /zombi","buy_zombie") register_clcmd("say_team /zombieme","buy_zombie") register_clcmd("say_team /zombie","buy_zombie") register_clcmd("nightvision","client_nightvision") //register_clcmd("zombie_menu","zombie_menu", ADMIN_KICK) register_menuid("zombie_menu") register_concmd("zombie_menu","zombie_menu")//para abrir menu desde la consola register_clcmd("zmenu","zombie_menu") register_clcmd("say_team zmenu", "zombie_menu") //////////// /////////EVENTS///// register_event("WeapPickup", "event_weap_pickup", "be", "1!29") // removes players picked up weapon register_event("Damage","event_damage_pain","be","2!0","3=0") // cuando produce algun daño al jugador //register_event("Damage","event_damage_pain","be") // cuando produce algun daño al jugador register_event("DeathMsg","event_DeathMsg","a") // cuando muere de algun jugador register_event("CurWeapon","event_CurWeapon","be") // use the CurWeapon event to keep setting player's speed register_event("ResetHUD", "event_hud_reset", "be") // cuando se reinicia el HUD PLAYER //register_event("HLTV", "event_hud_reset", "a", "1=0", "2=0") // cuando empieza una nueva ronda register_event("HLTV", "event_hud_reset", "be") // cuando empieza una nueva ronda register_event("HLTV", "check_commands", "a") //register_event("Health", "zombiehealth", "b") // actualiza la vida en HUD PLAYER register_clcmd("fullupdate", "clcmd_fullupdate") // register_event("TextMsg", "event_restart_attempt", "a", "2=#Game_will_restart_in")// cuendo el CS usa algun comando register_forward(FM_PlayerPreThink,"Client_PreThink") register_forward(FM_Touch,"fw_Touch") // Cuando el jugador o entidad toca algo register_forward(FM_EmitSound, "fw_EmitSound") register_logevent("event_roundstart", 2, "0=World triggered", "1=Round_Start") // detecta el empieze de la ronda register_event("SendAudio", "event_twin", "a", "2&%!MRAD_terwin") // detecta cuando ganan T register_event("SendAudio", "event_ctwin", "a", "2&%!MRAD_ctwin") // detecta cuadno ganan CT register_logevent("event_roundend",2,"1=Game_Commencing") // detecta el final de la ronda ///////////////////// /////////CVARS///////// z_cost = register_cvar("z_cost","16000") // coste del zombi z_health = register_cvar("z_health","1500") // vida del zombi z_armor = register_cvar("z_armor","200") // armadura del zombi z_speed = register_cvar("z_speed","420") // velocidad del zombi z_gravity = register_cvar("z_gravity","0.5") // gravedad del zombi z_buyable = register_cvar("z_buyable","1") // activar/desactivar comprar zombi z_glow = register_cvar("z_glow", "20") // activar/desactivar recubrimiento team color z_damage = register_cvar("z_damage","20") // daño de mas que causa el zombie z_sounds = register_cvar("z_sounds","1") // activar/desactivar sonidos del zombie /////////////////// ///////////////STUFF//////////// register_cvar(PLUGIN,VERSION,FCVAR_SERVER) ///////////////////////////////////// /////////////////////Server commands//////// //server_cmd("sv_maxspeed 99999") // necesario para la velocidad del zombi - error //set_cvar_num( "sv_maxspeed", 99999 ) // necesario para la velocidad del zombi - error maxspeed = get_cvar_num("sv_maxspeed") // obtiene el valor del comando del server freeze = get_cvar_num("mp_freezetime") // obtiene el valor del comando del server //server_cmd("amx_restrict on shield") // para que no se pueda comprar el escudo en el server - error ///////////////////// }
public bool:zombie_has = false //para usar en otros plugins public zombie_id = 0 //para usar en otros plugins
public plugin_precache() { precache_model("models/player/zombieme/v_claws.mdl") // zombie knife model CT precache_model("models/player/zombieme2/v_claws2.mdl") // zombie knife model T precache_model("models/player/zombieme/zombieme.mdl") // zombie user model CT precache_model("models/player/zombieme2/zombieme2.mdl") // zombie user model T
for(new i = 0; i < sizeof(pain_zombie); i++){ engfunc(EngFunc_PrecacheSound, pain_zombie[i]) } for(new i = 0; i < sizeof(idle_zombie); i++){ engfunc(EngFunc_PrecacheSound, idle_zombie[i]) } for(new i = 0; i < sizeof(miss_zombie); i++){ engfunc(EngFunc_PrecacheSound, miss_zombie[i]) } for(new i = 0; i < sizeof(hit_zombie); i++){ engfunc(EngFunc_PrecacheSound, hit_zombie[i]) } for(new i = 0; i < sizeof(death_zombie); i++){ engfunc(EngFunc_PrecacheSound, death_zombie[i]) } precache_sound("scientist/c1a0_sci_catscream.wav") // scream/chillido /* //pain_zombie[2] precache_sound("zombie/zo_pain1.wav") precache_sound("zombie/zo_pain2.wav") //idle_zombie[7] precache_sound("zombie/zo_alert10.wav") precache_sound("zombie/zo_alert20.wav") precache_sound("zombie/zo_alert30.wav") precache_sound("zombie/zo_idle1.wav") precache_sound("zombie/zo_idle2.wav") precache_sound("zombie/zo_idle3.wav") precache_sound("zombie/zo_idle4.wav") //miss_zombie[2] precache_sound("zombie/claw_miss1.wav") precache_sound("zombie/claw_miss2.wav") //hit_zombie[3] precache_sound("zombie/claw_strike1.wav") precache_sound("zombie/claw_strike2.wav") precache_sound("zombie/claw_strike3.wav") //death_zombie[2] precache_sound("aslave/slv_die1.wav") precache_sound("aslave/slv_die2.wav") */ }
public client_connect(id) {// resetea todas las variables zombie[id] = false zombie_has = false zombie_id = id nightvision[id] = false z_vida[id] = false z_life[id] = 0 } public nombre_mapa(){ get_mapname(mapname, sizeof (mapname)) if( (equali(mapname, "as_", 3)) || (equali(mapname, "es_", 3)) ){ map_off = true } } public buy_zombie(id) { if (!get_pcvar_num(z_buyable)) { client_print(0,print_chat,"[ZOMBIE] ZombieMe esta desactivado.") return PLUGIN_HANDLED } if(!is_user_alive(id)) { client_print(id,print_chat,"[ZOMBIE] Intentalo cuando estes vivo.") return PLUGIN_HANDLED } if(zombie[id]) { client_print(id, print_chat, "[ZOMBIE] Ya eres un Zombie.") return PLUGIN_HANDLED } nombre_mapa() if(map_off){ client_print(id,print_chat,"[ZOMBIE] En este mapa no se perminten Zombies.") return PLUGIN_HANDLED } if((cs_get_user_money(id) - get_pcvar_num(z_cost)) < 0) // check if the player has enough cash { client_print(id,print_chat,"[ZOMBIE] Para convertirte en Zombie necesitas $%d", get_cvar_num("z_cost")) return PLUGIN_HANDLED } zombie[id] = true zombie_has = true zombie_id = id z_vida[id] = true //z_life[id] = 0 event_player_spawn(id) cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(z_cost)) return PLUGIN_CONTINUE }
public clcmd_fullupdate(){ return PLUGIN_HANDLED_MAIN } public event_roundstart(id){ roundstatus = RS_RUNNING } public event_twin(){ set_task(1.0, "event_roundend") } public event_ctwin(){ set_task(1.0, "event_roundend") } public event_roundend(){//si la ronda termino reiniciar el model del zombie para evitar errores al volver a cargarlo roundstatus = RS_END new players[32], count get_players(players, count, "h") for(new i = 0; i < count; i++) { if(zombie[players[i]]) cs_reset_user_model(players[i]) } //return }
public event_restart_attempt() {//para verificar si se ha reiniciado la ronda new players[32], num get_players(players, num, "a") for (new i; i < num; ++i){ g_restart_attempt[players[i]] = true Remove_zombie(i) } }
public event_hud_reset(id) {//al empezar la ronda if (g_restart_attempt[id]) {// si la ronda se a reiniciado g_restart_attempt[id] = false Remove_zombie(id) } event_roundstart(id) //check_commands() event_player_spawn(id) }
public check_commands(){//para cambiar los comandos default del server si hay algun zombi /* new players[32], num; get_players(players, num, "a") new num_zombies = 0 for(new i = 0 ; i < num ; i++){ if(zombie[players[i]]){ num_zombies += 1 } } */ new num_zombies = 0 for(new i = 1 ; i < 33 ; i++){ if(zombie[i] && is_user_connected(i)){ num_zombies += 1 } } if(num_zombies > 0){//si hay algun zombi set_cvar_num( "mp_freezetime" , 0 ) set_cvar_num( "sv_maxspeed", 99999 ) } else{//si no hay zombis set_cvar_num( "mp_freezetime" , freeze ) set_cvar_num( "sv_maxspeed", maxspeed ) } }
public allow_speed(id){//para setear la velocidad cuando freezetime termina if(zombie[id]){ set_user_maxspeed(id, get_pcvar_float(z_speed)) } return PLUGIN_CONTINUE } public check_team(){ new players[32], num; get_players(players, num); for(new i = 0 ; i < num ; i++){ new CsTeams:iTeam = cs_get_user_team(players[i]) if (iTeam == CS_TEAM_T) { user_team[players[i]] = 1 } else if (iTeam == CS_TEAM_CT) { user_team[players[i]] = 2 } else { user_team[players[i]] = 0 } //user_team[players[i]] = get_user_team(players[i]) } } public event_player_spawn(id) {//cuando se compra el zombie o se empieza la ronda siendo zombie if(zombie[id]){//&& is_user_alive(id) set_task(0.1, "RemovePickedWeapon", id) //removes zombies guns //Zombie grito emit_sound(id, CHAN_VOICE, "scientist/c1a0_sci_catscream.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) ////////////// if(z_vida[id] == true){//si acaba de comprar el zombie z_life[id] = get_pcvar_num(z_health) z_vida[id] = false msg_zombie_transform(id)//client_print(id, print_chat, "[ZOMBIE] Te has transformando en un Zombie!") } set_user_health(id, z_life[id]) new roundtime = (get_cvar_num("mp_roundtime")*60)+freeze //segundos que dura cada ronda+freezetime //client_print(id, print_chat, "mp_roundtime: %d", roundtime) set_task( 1.0, //intervalo de tiempo "zombiehealth", //funcion id, //id _, //parameter - An array contain data to send to the timer function _, //len - Size of the array to send to the timer function "a", //flags: "a" - Repetir "b" - Infinito "c" - cuando despues map timeleft "d" - cuando antes map timeleft roundtime //ej: repetir 5 veces si usa flag "a" ) set_user_armor(id, get_pcvar_num(z_armor)) check_commands() //set_user_maxspeed(id, get_pcvar_float(z_speed)) new repeat = (freeze*60)+30 //*60= a milisegundos(0.1) + 30 por si acaso set_task(0.1,"allow_speed", id, _, _, "a", repeat) set_user_gravity(id, get_pcvar_float(z_gravity)) // needs to be a float (0.5 is 400 gravity) set_user_footsteps(id,1) if (roundstatus == RS_RUNNING){ check_team() if(user_team[id] == 1) //terrist { cs_set_user_model(id, "zombieme2") //client_print(0,print_chat,"[ZOMBIE] ZombieMe TERROR.") } else { if(user_team[id] == 2) //counter-terrist { cs_set_user_model(id, "zombieme") //client_print(0,print_chat,"[ZOMBIE] ZombieMe POLICE.") } else //3 = spectator, 0 = no play { cs_set_user_model(id, "zombieme") //client_print(0,print_chat,"[ZOMBIE] ZombieMe DEFAULT.") } } //cs_set_user_model(id, "zombieme") } cs_set_user_nvg(id,0) zombiesounds(id) zombiehealth(id) set_vision(id) set_glow(id) //return PLUGIN_CONTINUE } else{ cs_reset_user_model(id) set_user_footsteps(id,0) set_user_rendering(id) //return PLUGIN_CONTINUE } } public set_vision(id) {//pone el model message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id) write_short(~0) write_short(~0) write_short(0) write_byte(255) write_byte(0) write_byte(0) write_byte(80) message_end() check_team() if (user_team[id] == 1){ //terrorist set_pev(id, pev_viewmodel, engfunc(EngFunc_AllocString, "models/player/zombieme2/v_claws2.mdl")) } else { //2 = counter-terrist, 3 = spectator, 0 = no play set_pev(id, pev_viewmodel, engfunc(EngFunc_AllocString, "models/player/zombieme/v_claws.mdl")) } //set_pev(id, pev_viewmodel, engfunc(EngFunc_AllocString, "models/player/zombieme/v_claws.mdl")) set_pev(id, pev_weaponmodel, engfunc(EngFunc_AllocString, "")) } public set_glow(id) {// pone una especie de escudo del color del equipo al zommbie if(!get_cvar_num("z_glow")) { return PLUGIN_CONTINUE } new CsTeams:team = cs_get_user_team(id) if(team == CS_TEAM_T) //terrist { set_user_rendering(id, kRenderFxGlowShell, 150, 0, 0, kRenderNormal, get_pcvar_num(z_glow)) } else if(team == CS_TEAM_CT) //counter-terrist { set_user_rendering(id, kRenderFxGlowShell, 0, 0, 150, kRenderNormal, get_pcvar_num(z_glow)) } return PLUGIN_CONTINUE } public msg_zombie_transform(id){ static msg[191] //msg = ("^x01- Estas en el MAPA: ^x04%s", mapname) format (msg, 190, "^x03[ZOMBIE] Te has transformando en un Zombie!") //^x03 = Color del equipo - ^x04 = Verde message_begin(MSG_ONE, get_user_msgid("SayText"), {0,0,0}, id) write_byte(id) write_string(msg) message_end() } public event_weap_pickup(id) {//cuando recoje un arma if(zombie[id]){ set_task(0.1, "RemovePickedWeapon", id) } return PLUGIN_HANDLED }
public RemovePickedWeapon(id) {//para soltar todas las armas if(!is_user_alive(id) || !is_user_connected(id)) return PLUGIN_CONTINUE
if(zombie[id]){ engclient_cmd(id, "drop", "weapon_c4") strip_user_weapons(id) give_item(id,"weapon_knife") set_user_maxspeed(id, get_pcvar_float(z_speed)) } return PLUGIN_HANDLED }
public fw_Touch(pToucher, pTouched)//cuando el jugador toca { if ( !pev_valid(pToucher) || !pev_valid(pTouched) ) return FMRES_IGNORED if (!is_user_connected(pTouched) ) return FMRES_IGNORED if (!zombie[pTouched] ) return FMRES_IGNORED new className[32] pev(pToucher, pev_classname, className, 31) if ( equal(className, "weaponbox") || equal(className, "armoury_entity" ) || equal(className, "weapon_shield" ) ) return FMRES_SUPERCEDE return FMRES_IGNORED } public zombiehealth(id) {//vida del zombi if(zombie[id] && z_life[id] >= 1) { //new id = read_data(0) //new health = read_data(1) set_hudmessage(//BLANCO 255, //Red (0-255) 255, //Green (0-255) 255, //Blue (0-255) 0.11, //Float:x -1.0 = center 0.77, //Float:y _, //efectos (0 - off, 1 - parpadear, 2 - aparecer) 1.00, //Float:fxtime (tiempo del efecto) 1.0, //Float:holdtime (tiempo en pantalla ej 5.0 segundos) _, //Float:fadeintime _, //Float:fadeouttime 4 //channel ) show_hudmessage(id, "Vida: %d ", z_life[id]) } return PLUGIN_CONTINUE } public event_DeathMsg() { //despues de morir //new killer = read_data(1) //new victim = read_data(2) new id id = read_data(2) set_task(1.0,"Remove_zombie",id)//el que muere(victima) se le resetean las variables message_begin(MSG_ONE, get_user_msgid("ScreenFade"), { 0, 0, 0 }, id) write_short(1<<10) write_short(1<<10) write_short(0x0000) write_byte(255)//r 100 write_byte(0)//g 0 write_byte(0)//b 0 write_byte(0) //50 message_end() return PLUGIN_CONTINUE } public Remove_zombie(id){// declara que ya no es zombi zombie[id] = false zombie_has = false zombie_id = id nightvision[id] = false z_vida[id] = false z_life[id] = 0 check_commands() }
public event_CurWeapon(id) { // declara la velocidad continuamente al cojer/dejar/cambiar de arma if(is_user_alive(id) && zombie[id]){ set_user_maxspeed(id, get_pcvar_float(z_speed)) set_vision(id) } } public event_damage_pain(id) {//daño recibido new damage = read_data(2) new bodypart, weapon new enemy = get_user_attacker(id, weapon, bodypart) //client_print(enemy, print_chat, "danio: %d", damage) if ( zombie[id] && is_user_alive(id))//si el que recibe daño es zombie { //z_life[id] = floatround( float(get_user_health(id)) - (float(damage)) ) z_life[id] = get_user_health(id) /* new z_health = floatround( float(get_user_health(id)) - (float(damage)) ) if(z_health <= 0){ set_user_health(id, 0) } */ //client_print(id, print_chat, "Vida restante: %f", z_life[id]) zombiehealth(id) emit_sound(id, CHAN_VOICE, pain_zombie[random_num(0, ZOMBIE_PAIN - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM) //return } if(zombie[enemy] && weapon == CSW_KNIFE && (enemy >= 1) && (enemy <= 32) && is_user_alive(id))//si el que causa el daño es zombi && is_user_alive(id) { new Xdamage = floatround( float(get_user_health(id)) - (float(damage) + get_pcvar_float(z_damage)) ) //Xdamage = la vida de la victima -(el daño echo + el daño extra por ser zombie) /* new vida = floatround(float(get_user_health(id))) new danio = floatround(float(damage) + get_pcvar_float(z_damage)) new total = vida-danio client_print(enemy, print_chat, "Vida Victima: %d-%d =%d", vida, danio, total ) */ if(Xdamage <= 0){ //sumara las muertes, frags... al marcador new frags, _frags//, deaths //suma +1 a las bajas causadas por el asesino frags = get_user_frags(enemy) + 1 set_user_frags(enemy, frags) //suma +1 a los asesinatos de la victima (el CS por default resta -1) _frags = get_user_frags(id) + 1 set_user_frags(id, _frags) //suma +1 a las muertes de la victima //NO ES NECESARIO el CS suma +1 por default //deaths = cs_get_user_deaths(id) + 1 //cs_set_user_deaths(id, deaths) //deaths = cs_get_user_deaths(id) + 1 //cs_set_user_deaths(id, deaths) //para poner el sprite y quien mato a quien set_msg_block(get_user_msgid("DeathMsg"),BLOCK_ONCE) message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0, 0, 0}, 0) write_byte(enemy) write_byte(id) write_byte(0) write_string("knife") message_end() set_user_health(id, 0) } else{ set_user_health(id, Xdamage) } //return } //return PLUGIN_CONTINUE }
public zombiesounds(id){//reproduce sonidos zombie aleatoriamente mientras la ronda este en curso if (roundstatus == RS_RUNNING && get_pcvar_num(z_sounds)) { if (random_num(1, 35) == 5 && zombie[id]) { if(is_user_alive(id)) emit_sound(id, CHAN_VOICE, idle_zombie[random_num(0, ZOMBIE_IDLE-1)], 1.0, ATTN_NORM, 0, PITCH_NORM) } } if(zombie[id]) set_task(1.0,"zombiesounds",id) }
public Client_PreThink(id){//para poner la vision nocturna roja if(zombie[id] && is_user_alive(id) && nightvision[id]) { new pos[3] get_user_origin(id, pos) message_begin(MSG_ONE, SVC_TEMPENTITY, {0,0,0}, id) write_byte(TE_DLIGHT) write_coord(pos[0]) write_coord(pos[1]) write_coord(pos[2]) write_byte(80) write_byte(50) write_byte(0) write_byte(0) write_byte(5) write_byte(10) message_end() } return PLUGIN_CONTINUE }
public client_nightvision(id){//para saber si se esta usando la vision nocturna (si se ha pulsado la N) if(nightvision[id]) { nightvision[id] = false return PLUGIN_HANDLED } if(!nightvision[id]) { nightvision[id] = true } return PLUGIN_CONTINUE }
public fw_EmitSound(id, channel, sample[])//para emitir sonidos segun las teclas pulsadas { if(sample[0] == 'p' && sample[1] == 'l'&& sample[7] == 'd' && zombie[id]) { emit_sound(id, CHAN_WEAPON, death_zombie[random_num(0, ZOMBIE_DEATH - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM) return FMRES_SUPERCEDE } if ( !is_user_alive(id) || !zombie[id] ) return FMRES_IGNORED if ( sample[0] == 'w' && sample[1] == 'e' && sample[8] == 'k' && sample[9] == 'n' ) { switch(sample[17]) { case 'l': return FMRES_SUPERCEDE case 's', 'w': { emit_sound(id, CHAN_WEAPON, miss_zombie[random_num(0, ZOMBIE_MISS - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM) return FMRES_SUPERCEDE } case 'b', '1', '2', '3', '4': { emit_sound(id, CHAN_WEAPON, hit_zombie[random_num(0, ZOMBIE_HIT - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM) return FMRES_SUPERCEDE } } } return FMRES_IGNORED }
public zombie_menu(id){ /* if(!is_user_alive(id)){ return } */ if (!(get_user_flags(id)&ADMIN_KICK)){ server_print("[ZOMBIE] El Menu ZombieMe es solo para admins...") client_print(id,print_chat,"[ZOMBIE] El Menu ZombieMe es solo para admins...") return } /* Colores: \w = Blanco \r = Rojo \d = Gris \y = Amarillo ^t = tabulacion (espacio) ^n = salto de linea \R = align text to the right \a => Beep \b => Backspace \e => Escape \n => Nueva Línea \r => Retorno de Carro (se utiliza en Windows para una línea nueva "/r/n") \t => Tabulación Horizontal \v => Tabulación Vertical \\ => Inserta literalmente el símbolo '\' \’’ => Inserta literalmente el símbolo "'" \" => Inserta literalmente el símbolo '"' \% => Inserta literalmente el símbolo '%' \ddd => código de caracteres, con el código en decimal "ddd" \xhhh => código de caracteres, con el código en hexadecimal "hhh" */ new menu = menu_create("\yTransformar en Zombie a :", "menu_trasform") menu_additem(menu, "T", "1") menu_additem(menu, "CT", "2") menu_additem(menu, "Todos", "3") menu_additem(menu, "Jugador", "4")
menu_setprop(menu, MPROP_EXITNAME, "\ySalir") menu_setprop(menu, MPROP_NEXTNAME, "\yMas") //menu_setprop(menu, MPROP_BACKNAME, "\yAtras") menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, menu, 0) } public menu_trasform(id, menu, item){ if(item == MENU_EXIT){ menu_destroy(menu) return PLUGIN_HANDLED } new data[6], iName[64] new access, callback
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback); new iKey = str_to_num(data);
switch(iKey){ case 1:{ // T transform_T(id) } case 2:{ // CT transform_CT(id) } case 3:{ // Todos transform_ALL(id) } case 4:{ // Jugador transform_ONE(id) } } //descongelar(id) menu_destroy(menu) return PLUGIN_HANDLED } public transform_T(id){ check_team() new players[32], num; get_players(players, num); new num_players_zombieme = 0 for(new i = 0 ; i < num ; i++){//busca a todos los jugadores if( is_user_alive(players[i]) ){//si el jugador esta vivo if(user_team[players[i]] == 1){//si el jugador es terrorista if(zombie[players[i]] == false){//si no es zombie zombie[players[i]] = true zombie_has = true zombie_id = players[i] z_vida[players[i]] = true z_life[players[i]] = 0 num_players_zombieme += 1 event_player_spawn(players[i]) } } } } if(num_players_zombieme == 0){ client_print(id,print_chat,"[ZOMBIE] No se encontro ningun jugador humano en el equipo Terrorista.") } else{ client_print(id,print_chat,"[ZOMBIE] Se transformaron en Zombies %d jugadores del equipo Terrorista.", num_players_zombieme) } //menu_destroy(menu) return PLUGIN_HANDLED } public transform_CT(id){ check_team() new players[32], num; get_players(players, num); new num_players_zombieme = 0 for(new i = 0 ; i < num ; i++){//busca a todos los jugadores if( is_user_alive(players[i]) ){//si el jugador esta vivo if(user_team[players[i]] == 2){//si el jugador es policia if(zombie[players[i]] == false){//si no es zombie zombie[players[i]] = true zombie_has = true zombie_id = players[i] z_vida[players[i]] = true z_life[players[i]] = 0 num_players_zombieme += 1 event_player_spawn(players[i]) } } } } if(num_players_zombieme == 0){ client_print(id,print_chat,"[ZOMBIE] No se encontro ningun jugador humano en el equipo Anti-Terrorista.") } else{ client_print(id,print_chat,"[ZOMBIE] Se transformaron en Zombies %d jugadores del equipo Anti-Terrorista.", num_players_zombieme) } //menu_destroy(menu) return PLUGIN_HANDLED } public transform_ALL(id){ check_team() new players[32], num; get_players(players, num); new num_players_zombieme = 0 for(new i = 0 ; i < num ; i++){//busca a todos los jugadores if( is_user_alive(players[i]) ){//si el jugador esta vivo if(user_team[players[i]] == 1 || user_team[players[i]] == 2){//si el jugador es terrorista o policia if(zombie[players[i]] == false){//si no es zombie zombie[players[i]] = true zombie_has = true zombie_id = players[i] z_vida[players[i]] = true z_life[players[i]] = 0 num_players_zombieme += 1 event_player_spawn(players[i]) } } } } if(num_players_zombieme == 0){ client_print(id,print_chat,"[ZOMBIE] No se encontro ningun jugador humano.") } else{ client_print(id,print_chat,"[ZOMBIE] Se transformaron en Zombies %d jugadores.", num_players_zombieme) } //menu_destroy(menu) return PLUGIN_HANDLED } public transform_ONE(id){ new players[32], num; new szName[32], szUserId[32]; get_players(players, num); new menu = menu_create("\yTransformar en Zombie a :", "menu_transform_ONE") for(new i = 0 ; i < num ; i++){//busca a todos los jugadores get_user_name( players[i], szName, charsmax( szName ) ); formatex( szUserId, charsmax( szUserId ), "%d", get_user_userid(players[i]) ); menu_additem( menu, szName, szUserId, 0 ); } menu_setprop(menu, MPROP_EXITNAME, "\ySalir") menu_setprop(menu, MPROP_NEXTNAME, "\yMas") menu_setprop(menu, MPROP_BACKNAME, "\yAtras") menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, menu, 0)
//menu_destroy(menu) return PLUGIN_HANDLED } public menu_transform_ONE(id, menu, item){ if(item == MENU_EXIT){ menu_destroy(menu) return PLUGIN_HANDLED } new data[6], iName[64] new access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), iName, charsmax(iName), callback); new iKey = str_to_num(data); //guarda el id del jugador elegido new player_id = find_player( "k", iKey ); // flag "k" : para buscar al jugador por id if ( player_id && is_user_alive(player_id) ){//si el jugador esta vivo if(zombie[player_id] == true){ client_print(id,print_chat,"[ZOMBIE] %s ya esta transformado en Zombie.", iName) } else{//si el jugador no es zombi zombie[player_id] = true zombie_has = true zombie_id = player_id z_vida[player_id] = true z_life[player_id] = 0
event_player_spawn(player_id) client_print(id,print_chat,"[ZOMBIE] %s se transformo en Zombie.", iName) new Admin_Name[32] get_user_name( id, Admin_Name, charsmax( Admin_Name ) ); client_print(player_id,print_chat,"[ZOMBIE] El Admin %s te transformo en Zombie.", Admin_Name) } } else{ client_print(id,print_chat,"[ZOMBIE] %s esta muerto, no se puede transformar en Zombie.", iName) } menu_destroy(menu) return PLUGIN_HANDLED }
Last edited by albjb; 08-10-2013 at 11:59.
|
|