|
Member
Join Date: Apr 2012
Location: Argentina
|

01-04-2013
, 17:59
[Ayuda] No me funca el plugin
|
#1
|
Bue, este es mi ultimo post y les dejo de romper. Le agregue unos menus a mi plugin y al final cuando lo pongo en plugins.ini y el .amxx, ya no me anda :S
Probe poniendolo en un Server Hosteado y tampoco, desde que agregue los ultimos menus me dejo de funcionar. Quería saber si saben que es.
Code:
PHP Code:
#include <amxmodx>
#include <hamsandwich>
#include <engine>
#include <cstrike>
#include <fun>
#include <amxmisc>
#include <fakemeta>
#define PLUGIN "Base Builder Revolution"
#define VERSION "1.0"
#define AUTHOR "RodriiK - r0ma' (Niveles por Frags) - [R]ak (Crear una entidad)"
#define TAG "[Base Builder Revolution]"
//Tag en el mensaje de que subio de nivel
//Macro para obtener cuanto le falta para el siguiente nivel
//Si no resetean los frags usaria 1 macro asi mas o menos
//#define next_level(%1) ((%1 + 1) * (power(%1, 2) / 2)) /2
//Si resetan frags usaria algo asi
#define next_level(%1) %1 * 15
new g_speed[33]
new g_armor[33]
new g_gravity[33]
new g_vida[33]
new g_puntos[33]
new g_level[33] // Contiene los level de los players
new g_frags[33] // Los frags de los players
new g_conectado[33] // Variable para saber si el user esta conectado
new g_maxplayers, g_msgSayText//en g_maxplayers voy a obtener el maximo de players del sv para usarla en los loops, y en msgsay text para el stock de hns_print_color
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)//Registramos el plugin
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")//Evento de hamsandwich que se llama cuando matan a alguien.
register_clcmd("say /clases", "Menu")
register_clcmd("say /menu", "Menu2")
register_clcmd("say /shop", "Shop")
register_clcmd("say /mejoras", "Mejoras")
new ent = create_entity("info_target")//Creo 1 entidad
entity_set_string(ent, EV_SZ_classname, "entity_task")//Le seteo 1 classname
entity_set_float(ent, EV_FL_nextthink, 1.0)//La ago pensar cada 1.0 segundos
register_think("entity_task", "fw_ShowHUD")//El think de la entidad que va mostrar el hud
g_maxplayers = get_maxplayers()
g_msgSayText = get_user_msgid("SayText")
RegisterHam( Ham_Spawn, "player", "fw_playerspawn", 1)
}
public client_putinserver(id)
{
g_level[id] = 1//Reseteamos los level frags y le seteo conectado
g_frags[id] = 0
g_conectado[id] = 1
}
public client_disconnect(id)
{
g_conectado[id] = 0//No esta mas conectado
}
public fw_PlayerKilled(victim, attacker)
{
if(!g_conectado[victim] || !g_conectado[attacker] || victim == attacker || get_user_team(victim) == get_user_team(attacker))//Si no esta conectado la victima o el atacante o la victima es el atacante o son del mismo team no continua
return
if(is_user_admin(attacker))
{
g_frags[attacker] += 2
check_level(attacker)
g_puntos[attacker] += 2
}
else
{
g_frags[attacker]++//Aumentamos frags y chekeamos si tiene suficientes para subir de nivel
check_level(attacker)
g_puntos[attacker]++
}
}
public fw_ShowHUD(ent)//Esto muestra el hud
{
static id
set_hudmessage(85, 255, 212, 0.80, 0.12, 0, 0.9)//Configuramos por asi decirlo el hud, el color, posicion, efecto, y tiempo
for( id = 1; id <= g_maxplayers; id++)
{
if(!g_conectado[id])//Si no esta conectado no continua
continue
show_hudmessage(id, "[Level: %d] [Frags: %d/%d] [Puntos: %d]", g_level[id], g_frags[id], next_level(g_level[id]), g_puntos[id])//Mostramos hud con nivel, frags y los necesarios para pasar al siguiente nivel.
}
entity_set_float(ent, EV_FL_nextthink, 1.0)
}
public check_level(id)
{
while(g_frags[id] >= next_level(g_level[id]))//Si los frags son mayores o igual a los necesarios para pasar de nivel.
{
g_level[id]++//Aumentamos el nivel
g_frags[id] = 0//Yo reseteo lo frags esto es a su gusto.
hns_print_color(id, "^x04%s^x01 Felicitaciones subiste al nivel:^x04 %d^x01.", TAG, g_level[id])//Mensaje que subio de nivel
if(cs_get_user_team(id) == CS_TEAM_T)
{
set_user_health(id, get_user_health(id) + g_vida[id] + 25)
}
}
}
stock hns_print_color(id, const mensaje[], any:...)//Stock para mensajes de color aviso que no tiene soporte para index 0. si quieren se lo adapto.
{
static buffer[192]
vformat(buffer, charsmax(buffer), mensaje, 3)
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, id)
write_byte(id)
write_string(buffer)
message_end()
}
public fw_playerspawn(id)
{
Menu(id)
set_user_health(id, get_user_health(id) + g_vida[id])
set_user_gravity(id, get_user_gravity(id) + g_gravity[id])
set_user_maxspeed(id, get_user_maxspeed(id) + g_speed[id])
set_user_armor(id, get_user_armor(id) + g_armor[id])
}
public Menu(id)
{
if(cs_get_user_team(id) == CS_TEAM_CT)
{
// Hay diferentes COLORES para escribir: || "\w = Blanco" || "\r = Rojo" || "\y = Amarillo" || "\d = Gris" ||
new Menu = menu_create("\y[Base Builder Revolution] \wElije tu Clase", "mostrar_menu") // Escribimos el Nombre de Nuestro Menu.
menu_additem(Menu, "\wSobreviviente \dNavy + USP" , "1", 0) // Agregamos una Nueva Opcion con el Nombre "Monstruo". [Slot 1]
menu_additem(Menu, "\wPolicia \r[\yNivel 5\r] \dP90 + USP" , "2", 0) // Agregamos una Nueva Opcion con el Nombre "Franco Tirador" [Slot 2]
menu_additem(Menu, "\wRecluta \r[\yNivel 10\r] \dXM1014 + USP" , "3", 0)
menu_additem(Menu, "\wComandante \r[\yNivel 15\r] \dFamas + USP" , "4", 0)
menu_additem(Menu, "\wGeneral \r[\yNivel 20\r] \dGalil + USP" , "5", 0)
menu_additem(Menu, "\wBrigada A \r[\yNivel 25\r] \dSG552 + USP" , "6", 0)
menu_additem(Menu, "\wSpecial Force \r[\yNivel 30\r] \dSG550 + USP" , "7", 0)
menu_additem(Menu, "\wHunter \r[\yNivel 35\r] \dColt + USP" , "8", 0)
menu_additem(Menu, "\wKaizer \r[\yNivel 40\r] \dAK47 + USP" , "9", 0)
menu_additem(Menu, "\wStalker A \r[\yNivel 45\r] \dColt + Deagle" , "10", 0)
menu_additem(Menu, "\wStalker B \r[\yNivel 45\r] \dAK47 + Deagle" , "11", 0)
menu_additem(Menu, "\wSwagger \r[\yNivel 50\r] \d(\yOnly Adm\d) \dMachine + Deagle" , "12", 0)// Agregamos una Nueva Opcion con el Nombre "Soldado" [Slot 3]
menu_setprop(Menu,MPROP_EXITNAME,"Salir") // Agregamos la Opcion Salir. [Slot 0]
menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, Menu, 0)
}
}
public mostrar_menu(id, Menu, item)
{
if (item == MENU_EXIT)
return PLUGIN_HANDLED
new iData[6];
new iAccess;
new iCallback;
new iName[64];
menu_item_getinfo(Menu , item , iAccess , iData , 5 , iName , 63 , iCallback )
switch (str_to_num(iData))
{
case 1:
{
strip_user_weapons(id)
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100) // 35 o lo que tu prefieras.
give_item(id, "weapon_mp5navy")
cs_set_user_bpammo(id, CSW_MP5NAVY, 120)
give_item(id, "weapon_knife")
}
case 2:
{
if( g_level[ id ] >= 5 )
{
strip_user_weapons(id)
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100) // 35 o lo que tu prefieras.
give_item(id, "weapon_p90")
cs_set_user_bpammo(id, CSW_P90, 100)
give_item(id, "weapon_knife")
}
else
{
hns_print_color(id, "^x04%s^x01 Necesitas ser NIVEL 5 para usar esta clase^x04 ^x01.", TAG)
}
}
case 3:
{
if( g_level[ id ] >= 10 )
{
strip_user_weapons(id)
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100) // 35 o lo que tu prefieras.
give_item(id, "weapon_xm1014")
cs_set_user_bpammo(id, CSW_XM1014, 32)
give_item(id, "weapon_knife")
}
else
{
hns_print_color(id, "^x04%s^x01 Necesitas ser NIVEL 10 para usar esta clase^x04 ^x01.", TAG)
}
}
case 4:
{
if( g_level[ id ] >= 15 )
{
strip_user_weapons(id)
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100) // 35 o lo que tu prefieras.
give_item(id, "weapon_famas")
cs_set_user_bpammo(id, CSW_FAMAS, 90)
give_item(id, "weapon_knife")
}
else
{
hns_print_color(id, "^x04%s^x01 Necesitas ser NIVEL 15 para usar esta clase^x04 ^x01.", TAG)
}
}
case 5:
{
if( g_level[ id ] >= 20 )
{
strip_user_weapons(id)
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100) // 35 o lo que tu prefieras.
give_item(id, "weapon_galil")
cs_set_user_bpammo(id, CSW_GALIL, 90)
give_item(id, "weapon_knife")
}
else
{
hns_print_color(id, "^x04%s^x01 Necesitas ser NIVEL 20 para usar esta clase^x04 ^x01.", TAG)
}
}
case 6:
{
if( g_level[ id ] >= 25 )
{
strip_user_weapons(id)
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100) // 35 o lo que tu prefieras.
give_item(id, "weapon_sg552")
cs_set_user_bpammo(id, CSW_SG552, 90)
give_item(id, "weapon_knife")
}
else
{
hns_print_color(id, "^x04%s^x01 Necesitas ser NIVEL 25 para usar esta clase^x04 ^x01.", TAG)
}
}
case 7:
{
if( g_level[ id ] >= 30 )
{
strip_user_weapons(id)
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100) // 35 o lo que tu prefieras.
give_item(id, "weapon_sg550")
cs_set_user_bpammo(id, CSW_SG550, 90)
give_item(id, "weapon_knife")
}
else
{
hns_print_color(id, "^x04%s^x01 Necesitas ser NIVEL 30 para usar esta clase^x04 ^x01.", TAG)
}
}
case 8:
{
if( g_level[ id ] >= 35 )
{
strip_user_weapons(id)
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100) // 35 o lo que tu prefieras.
give_item(id, "weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)
give_item(id, "weapon_knife")
}
else
{
hns_print_color(id, "^x04%s^x01 Necesitas ser NIVEL 35 para usar esta clase^x04 ^x01.", TAG)
}
}
case 9:
{
if( g_level[ id ] >= 40 )
{
strip_user_weapons(id)
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100) // 35 o lo que tu prefieras.
give_item(id, "weapon_ak47")
cs_set_user_bpammo(id, CSW_AK47, 90)
give_item(id, "weapon_knife")
}
else
{
hns_print_color(id, "^x04%s^x01 Necesitas ser NIVEL 40 para usar esta clase^x04 ^x01.", TAG)
}
}
case 10:
{
if( g_level[ id ] >= 45 )
{
strip_user_weapons(id)
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 35) // 35 o lo que tu prefieras.
give_item(id, "weapon_sg550")
cs_set_user_bpammo(id, CSW_SG550, 90)
give_item(id, "weapon_knife")
}
else
{
hns_print_color(id, "^x04%s^x01 Necesitas ser NIVEL 45 para usar esta clase^x04 ^x01.", TAG)
}
}
case 11:
{
if( g_level[ id ] >= 45 )
{
strip_user_weapons(id)
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 35) // 35 o lo que tu prefieras.
give_item(id, "weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)
give_item(id, "weapon_knife")
}
else
{
hns_print_color(id, "^x04%s^x01 Necesitas ser NIVEL 45 para usar esta clase^x04 ^x01.", TAG)
}
}
case 12:
{
if( g_level[ id ] >= 50 )
{
strip_user_weapons(id)
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 35) // 35 o lo que tu prefieras.
give_item(id, "weapon_m249")
cs_set_user_bpammo(id, CSW_M4A1, 90)
give_item(id, "weapon_knife")
}
else
{
hns_print_color(id, "^x04%s^x01 Necesitas ser NIVEL 50 para usar esta clase^x04 ^x01.", TAG)
}
}
}
return PLUGIN_HANDLED
}
public Menu2(id)
{
new menu = menu_create("\y[\wBase Builder Revolituon\y] \wMenu Principal", "mostrar_menu2")
menu_additem(menu, "\yZOMBIE \wShop", "1", 0);
menu_additem(menu, "\wMejoras", "2", 0);
menu_setprop(menu, MPROP_EXITNAME, "Salir");
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public mostrar_menu2(id, Menu, item)
{
if (item == MENU_EXIT)
return PLUGIN_HANDLED
new iData[6];
new iAccess;
new iCallback;
new iName[64];
menu_item_getinfo(Menu , item , iAccess , iData , 5 , iName , 63 , iCallback )
switch (str_to_num(iData))
{
case 1:
{
Shop(id);
}
case 2:
{
Mejoras(id);
}
Shop(id)
{
// recuerden usar otro nombre al handler de la funcion, ya que es OTRO menu
new menu = menu_create("\r[\yBase Builder Revolution\r] \wZombie Shop", "zombieshop")
menu_additem(menu, "\w1500 de HP \r[\y8 Puntos\r]", "1", 0);
menu_additem(menu, "\w2000 de HP \r[\y12 Puntos\r]", "2", 0);
menu_additem(menu, "\wInmortalidad \d10 Segundos \r[\y25 Puntos\r]", "2", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
// en este caso no necesitamos returnear PLUGIN_HANDLED para bloquear
// la funcion ya que no estamos usando un comando para acceder a este
// menu, por lo cual no se mostrara nada en el chat
}
public zombieshop(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
// aca lo que hacemos es que si el usuario sigue conectado y cierra
// el submenu, le mostramos el menu principal, esto es opcional
if(is_user_connected(id) )
Menu2(id);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
if(g_puntos[id] >= 8)
{
set_user_health(id, 1500)
hns_print_color(id, "^x04%s^x01 Compraste 1500 de HP^x04 ^x01.", TAG)
g_puntos[id] -= 8
}
}
case 2:
{
if(g_puntos[id] >= 12)
{
set_user_health(id, 2000)
hns_print_color(id, "^x04%s^x01 Compraste 2000 de HP^x04 ^x01.", TAG)
g_puntos[id] -= 12
}
}
case 3:
{
if(g_puntos[id] >= 25)
{
set_user_godmode(id, 1)
set_task(10.0, "remover_godmode", id)
hns_print_color(id, "^x04%s^x01 Compraste 10 segundos de Inmortalidad^x04 ^x01.", TAG)
g_puntos[id] -= 25
}
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public remover_godmode(id)
{
set_user_godmode(id, 0)
hns_print_color(id, "^x04%s^x01 Se te acabo la Inmortalidad^x04 ^x01.", TAG)
}
Mejoras(id)
{
// recuerden usar otro nombre al handler de la funcion, ya que es OTRO menu
new menu = menu_create("\r[\yBase Builder Revolution\r] \wMejoras", "mejorasmenu")
menu_additem(menu, "\wMejorar Vida \r[\y150 Puntos\r]", "1", 0);
menu_additem(menu, "\wMejorar Gravedad \r[\y125 Puntos\r]", "2", 0);
menu_additem(menu, "\wMejorar Velocidad \r[\y115 Puntos\r]", "3", 0);
menu_additem(menu, "\wMejorar Armor \r[\y100 Puntos\r]", "4", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
// en este caso no necesitamos returnear PLUGIN_HANDLED para bloquear
// la funcion ya que no estamos usando un comando para acceder a este
// menu, por lo cual no se mostrara nada en el chat
}
public mejorasmenu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
// aca lo que hacemos es que si el usuario sigue conectado y cierra
// el submenu, le mostramos el menu principal, esto es opcional
if(is_user_connected(id) )
Menu2(id);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
if(g_puntos[id] >= 150)
{
set_user_health(id, get_user_health(id) + g_vida[id] + 50)
hns_print_color(id, "^x04%s^x01 Haz mejorado vida^x04 ^x01.", TAG)
g_puntos[id] -= 150
}
}
case 2:
{
if(g_puntos[id] >= 125)
{
set_user_gravity(id, get_user_gravity(id) + g_gravity[id] - 15)
hns_print_color(id, "^x04%s^x01 Haz mejorado gravedad^x04 ^x01.", TAG)
g_puntos[id] -= 125
}
}
case 3:
{
if(g_puntos[id] >= 115)
{
set_user_maxspeed(id, get_user_maxspeed(id) + g_speed[id] + 12)
hns_print_color(id, "^x04%s^x01 Haz mejorado Velocidad^x04 ^x01.", TAG)
g_puntos[id] -= 115
}
}
case 4:
{
if(g_puntos[id] >= 100)
{
set_user_armor(id, get_user_armor(id) + g_armor[id] + 50)
hns_print_color(id, "^x04%s^x01 Haz mejorado Armor^x04 ^x01.", TAG)
g_puntos[id] -= 100
}
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
|
|