Golpeas paredes, escaleras, puertas o cualquier objeto rompible con click derecho para obtener Recursos 9 tipos diferentes por ahora
Al conseguir algo se puede abrir el menu con la letra E
Se elije 1 item y con click izquierdo se planta en el suelo
Para salir del modo constructor apretas E y elejis Cancel o golpeas algo con click derecho
Los bloques que hallas plantado ahora se pueden destruir por cualquier jugador
Comandos
mcb= 1, aun sin efecto
mcbhp= vida de los cubos, por defecto 100
mcbmax= cantidad de cubos por player, por defecto 40
mcbprecio= precio de los cubos, por defecto 8
mcbdestroy= destruye todos los bloques del nivel
mcbsave= guarda todos los bloques del nivel
mcbitem=user-material-cantidad, regala materiales a un jugador
Regalar 100 de cristal al jugador 1:
mcbitem 1-0-100
new const mcbBloks[][]= {
"Piedra",
"Metal",
"Madera",
"Partes",
"Cristal",
"Carne",
"Basura",
"Techo",
"Vidrio",
"Objeto no valido" }
new const mcbModelBloque0[] = "models/mcbloques/mcb0.mdl"
new mcbPlayerInv[MAXPLAYERS][sizeof(mcbBloks)][2]
new mcbPlayerHand[MAXPLAYERS]
new mcbPlayerItem[MAXPLAYERS]
new const mcbTools[][] = { "Cuchillo","Martillo","Pico","Bloque" }
new const mcbRMin[] = { 1, 7, 10, 2}
new const mcbRMax[] = { 3, 14, 40, 5}
new mcbPlayerAim[MAXPLAYERS]
new mcbPlayerBlq[MAXPLAYERS][64]
new mcbPlayerItems[MAXPLAYERS]
new mcbPlayer[MAXPLAYERS]
new mcbPlayerDelay[MAXPLAYERS]
new mcbPlayerBloks[MAXPLAYERS]
new mcbCubo[MAXBLOKS][2]
new mcbMenuOpen[MAXPLAYERS]
new mcbTarget[MAXPLAYERS]
new mcbPlaceBloks[MAXPLAYERS]
new Float:selectedBlok[3]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
/* Menu MC Bloques */
/* Use menu_display(id, mMCBloques, 0) to show the menu to an user. */
new userMenu[64],menu[64]
get_user_name(id,userMenu,63)
format(menu, 63, "[MCB] Inventario de %s (%s)", userMenu,mcbTools[0])
mMCBloques[id] = menu_create(menu, "mh_MCBloques")
mcbMCBloques[id] = menu_makecallback("mcb_MCBloques")
/* Menu End */
}
public client_PreThink(id)
{
if (is_user_alive(id) && mcbMenuOpen[id] == 0 && mcbPlayerDelay[id] == 0)
{
new vOrigin[3], Float:fOrigin[3] //vectores
get_user_origin(id, vOrigin, 1) //punto de mira (WEAPON AIM)
IVecFVec(vOrigin, fOrigin) //de integral a float
new i_ent = 0, vTargetOrigin[3], Float:fTargetOrigin[3] //entidad/vectores
get_user_origin(id, vTargetOrigin, 3) //punto objetivo (WEAPON TARGET)
IVecFVec(vTargetOrigin, fTargetOrigin) //de integral a float
i_ent = find_ent_in_sphere(-1,fTargetOrigin,20.0)
new player=id
new Float:targetDist=vector_distance(fTargetOrigin,fOrigin)
if (mcbPlaceBloks[id]==1 && targetDist<200 && get_user_button(player)==1 || get_user_button(player)==5)
{
//evitar que click izquierdo quite vida
//entity_set_float(id,EV_FL_takedamage,1.0)
new ret=crearBloque(mcbPlayerItem[id],id)
set_hudmessage(255, 170, 0, -1.0, 0.87, 0, 6.0, 1.0)
switch (ret)
{
case 0:
show_hudmessage(id, "No hay espacio")
case 1:
show_hudmessage(id, "Bloque creado")
case 2:
show_hudmessage(id, "Has alcanzado el limite de bloques")
case 3:
show_hudmessage(id, "%s insuficiente",mcbBloks[mcbPlayerItem[id]])
case 4:
show_hudmessage(id, "Limite de Bloques del nivel")
default:
client_print(id,print_chat,"[MCB]Error")
}
mcbPlayerDelay[id]=1
set_task(0.5,"mcbDelay",id)
}
public mcbMSG(id)
{
if (mcbPlayer[id]==1)
{
mcbPlayer[id]=2
client_print(id,print_chat, "[MCB]MINECRAFT BLOQUES BY ESTANTAYA")
client_print(id,print_chat, "[MCB]Escribe en el chat /mcb")
return
}
if (mcbPlayer[id]==2)
{
mcbPlayer[id]=3
client_print(id,print_chat, "[MCB]Golpea las paredes con click derecho, usando el cuchillo")
}
}
public mcbMenu(id)
{
menu_display(id, mMCBloques[id], 0)
}
/* Menu MC Bloques */
public mh_MCBloques(id, menu, item) {
//client_print(id,print_chat,"player id: %d menu:%d item:%d",id,menu,item)
/* This event is called when someone presses a key on this menu */
}
public ma_MCBloques(id) {
/* This event is called when an item was selected */
}
public mcb_MCBloques(id, menu, item) {
/* This is the callback-event, here you can set items enabled or disabled. */
/* If you want to enable an item, use: return ITEM_ENABLED */
/* If you want to disable an item, use: return ITEM_DISABLED */
}
/* Funciones */
public elejirBloque(item,player)
{
/*
new ent=find_ent_by_owner(-1,"weapon_knife",player,0)
entity_set_model(ent,mcbModelBloque0)
*/
new userMenu[64],menu[64]
get_user_name(player,userMenu,63)
format(menu, 63, "[MCB] Inventario de %s (Bloque de %s)", userMenu,mcbBloks[mcbPlayerItem[player]])
menu_setprop(mMCBloques[player], MPROP_TITLE, menu)
}
public crearBloque(item,player)
{
if (mcbPlayerBloks[player]>=get_cvar_num("mcbmax")) return 2
if (mcbPlayerInv[player][item][1]<get_cvar_num("mcbprecio")) return 3
if (mcbCubo[MAXBLOKS-1][BLOKID]!=0) return 4
new i_ent
new vTargetOrigin[3], Float:fTargetOrigin[3] //vectores
get_user_origin(player, vTargetOrigin, 3) //punto objetivo (WEAPON TARGET)
IVecFVec(vTargetOrigin, fTargetOrigin) //de integral a float
blokFree()
{
new free
for (new i=0;i<MAXBLOKS;i++)
{
if (mcbCubo[i][BLOKID]==0)
{
free=i
i=MAXBLOKS
}
}
return free
}
menuModif(player,item)
{
new menuOpt[64]
format(menuOpt, 63, "%s x %d", mcbBloks[mcbPlayerInv[player][item][0]],mcbPlayerInv[player][item][1])
menu_item_setname(mMCBloques[player],item,menuOpt)
}
public ent_mcbCubos(id)
{
entity_set_float(id,EV_FL_nextthink,halflife_time() + 1.0)
if (IsInWorld(id)==0)
{
//client_print(0,print_chat,"bloke %i no existe",id)
for (new i=0;i<MAXBLOKS;i++)
{
if (mcbCubo[i][BLOKID]==id)
{
mcbCubo[i][BLOKID]=0
mcbPlayerBloks[mcbCubo[i][BLOKOWNER]]--
mcbCubo[i][BLOKOWNER]=0
return
}
}
}
}
Cosas por hacer:
falta limpiar el codigo ya que tiene muchas cosas inutiles y comentarios ***
hacer que los cubos se pegen al plantar mas de 1 (que se agrupen)***
que los cubos no caigan hacia "la nada"***
crear mas cubos***
ofrecer la posibilidad de craftear 1 pico asi no tener que usar el cuchillo
poner cvars para configurar cuanto cuesta cada cubo***
poner 1 cvar para activar desactivar el plug
cvar para eliminar todos los cubos***
limite de cubos por player***
y limite de cubos en total***
guardar con vault los cubos para luego seguir construyendo)?***
(no uso vault sino el include file.inc del amx)
ofrecer la descarga del model de cubo (7kb) y el plugin compilado y terminado***
10/8 versión 1.0!
Conseguir que el cuchillo no rompa 1 cubo al plantarlo***
Cambiar el modelo del cuchillo por el bloque que se tiene seleccionado***
11/8 versión 1.1
Aplicar los skins que hay en el nuevo model de cubo***
Terminar de modificar el arma cuchillo
No plantar cubos al disparar un arma xD***
15/8 versión 1.3 (la v1.2? nose )
Obtener recursos de las entidades Breakable del nivel (no solo Cristal)***
Arreglado problemas multijugador***
Corregido problema de "Bloque ocupando espacio"***
Se puede plantar Cubos en cualquier lugar incluso dentro de buyzones y los cubos siguientes se van a pegar a los anteriores***
Detecta si hay cualquier player en el lugar donde se va a plantar un cubo para prevenir atascos***
Publicando los models y el .sma separados de ahora en mas***
16/8 versión 1.3a
si rompes cubos o cosas con click derecho cerca de algo aparece el pico***
16/8 versión 1.3b
Se puede obtener recursos de todo, inclusive golpeando players o rehenes carne, cristal de las ventanas, madera de las cajas de madera, ladrillos de las paredes, piedra del suelo etc...***
Algunos cubos tienen efectos por ejemplo la caja de carne spawnea un medikit***
Agregado Herobrine!***
Los cubos cambian su forma segun su vida.
Los cubos adoptan el angulo de la superficie donde fueron plantados.
Los cubos utilizan menos entidades.
Los cubos se plantan en la superficie que se mira y no con la mitad del cubo fuera de alcanze.***
Las cajas de metal ya no explotan***
20/8 versión 1.3c
La cara frontal de los cubos apunta hacia el jugador al ser plantados
Los cubos se plantan en coordenadas multiplos de 40***
cvar para regalar items***
cvar para guardar los cubos***
los cubos se cargan al iniciar el nivel***
Crafting***
Crear un pack de modelos mas liviano
Permitir correr el plugin sin necesidad de modelos
27/8 versión 1.4
10/08/2014, 12:19 PM (Última modificación: 10/08/2014, 12:25 PM por estantaya.)
esta subiendo un nuevo video y ya puse la descarga del plug, a mi no me dio problemas en multiplayer pero solo lo probe con bots asi que nose con usuarios reales :S
tengo algunos problemas con el cuchillo y nose como cambiar los modelos de las armas con engine
otro problema grave es que al llegar al maximo de cubos por player ya no me deja plantar cubos aunque rompa 1 que ya puse, sigue diciendo limite de bloques, se soluciona aumentando mcbmax= pero eso no tiene sentido
este register_think("func_mcb_cubo","ent_mcbCubos") esta bien echo?
Código:
public ent_mcbCubos(id)
{
entity_set_float(id,EV_FL_nextthink,halflife_time() + 1.0)
if (IsInWorld(id)==0)
{
client_print(0,print_chat,"bloke %i no existe",id)
for (new i=0;i<MAXBLOKS;i++)
{
if (mcbCubo[i][BLOKID]==id)
{
mcbCubo[i][BLOKID]=0
mcbPlayerBloks[mcbCubo[i][BLOKOWNER]]--
mcbCubo[i][BLOKOWNER]=0
(10/08/2014, 12:19 PM)estantaya escribió: esta subiendo un nuevo video y ya puse la descarga del plug, a mi no me dio problemas en multiplayer pero solo lo probe con bots asi que nose con usuarios reales :S
tengo algunos problemas con el cuchillo y nose como cambiar los modelos de las armas con engine
otro problema grave es que al llegar al maximo de cubos por player ya no me deja plantar cubos aunque rompa 1 que ya puse, sigue diciendo limite de bloques, se soluciona aumentando mcbmax= pero eso no tiene sentido
este register_think("func_mcb_cubo","ent_mcbCubos") esta bien echo?
Código:
public ent_mcbCubos(id)
{
entity_set_float(id,EV_FL_nextthink,halflife_time() + 1.0)
if (IsInWorld(id)==0)
{
client_print(0,print_chat,"bloke %i no existe",id)
for (new i=0;i<MAXBLOKS;i++)
{
if (mcbCubo[i][BLOKID]==id)
{
mcbCubo[i][BLOKID]=0
mcbPlayerBloks[mcbCubo[i][BLOKOWNER]]--
mcbCubo[i][BLOKOWNER]=0
10/08/2014, 03:49 PM (Última modificación: 10/08/2014, 03:50 PM por Federicomb.)
Para cambiar el model de un arma, te recomiendo usar "Ham_Item_Deploy". Fijate tutos para el funcionamiento.
Para usar "engine" es:
Código PHP:
entity_set_string(id, EV_SZ_viewmodel, V_Model) // Este es el model de 1era persona; entity_set_string(id, EV_SZ_weaponmodel, P_Model) // Este es el model de 3era persona;
Believe, be yourself and don't hold on to just one dream ❤
(10/08/2014, 03:49 PM)Federicomb escribió: Para cambiar el model de un arma, te recomiendo usar "Ham_Item_Deploy". Fijate tutos para el funcionamiento.
Para usar "engine" es:
Código PHP:
entity_set_string(id, EV_SZ_viewmodel, V_Model) // Este es el model de 1era persona; entity_set_string(id, EV_SZ_weaponmodel, P_Model) // Este es el model de 3era persona;
:o eso me sirve EV_SZ_viewmodel xd si hubiera leido eso antes, andube buscando algo asi en engine se me paso por alto
y lo de revomer la entidad del bloque nose como se hace
pense que se eliminaba solo cuando se destruia
(10/08/2014, 03:49 PM)Federicomb escribió: Para cambiar el model de un arma, te recomiendo usar "Ham_Item_Deploy". Fijate tutos para el funcionamiento.
Para usar "engine" es:
Código PHP:
entity_set_string(id, EV_SZ_viewmodel, V_Model) // Este es el model de 1era persona; entity_set_string(id, EV_SZ_weaponmodel, P_Model) // Este es el model de 3era persona;
:o eso me sirve EV_SZ_viewmodel xd si hubiera leido eso antes, andube buscando algo asi en engine se me paso por alto
y lo de revomer la entidad del bloque nose como se hace
pense que se eliminaba solo cuando se destruia
11/08/2014, 02:22 PM (Última modificación: 11/08/2014, 02:41 PM por estantaya.)
versión 1.1
agregue una nueva función para que al golpear los cubos no se rompan no es lo mejor pero funciono por ahora hasta que lo cambie
Código:
bloquesDmg(player,Float:dmg)
{
for (new i=0;i<MAXBLOKS;i++)
{
if (mcbCubo[i][BLOKOWNER]==player && is_valid_ent(mcbCubo[i][BLOKID]))
{
entity_set_float(mcbCubo[i][BLOKID],EV_FL_takedamage,dmg)
}
}
}
otra cosa alguien sabe que son estas cosas:
Código:
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team
Header size: 1340 bytes
Code size: 16964 bytes
Data size: 24952 bytes
Stack/heap size: 16384 bytes; max. usage is unknown, due to recursion
Total requirements: 59640 bytes
Done.
eso es lo que me sale a mi, note que en plugin mas grandes aumenta el Total requirements: tiene algo que ver con las variables y arrays que uso? porque cuando toco los arrays veo que esa cosa aumenta o baja como puedo optimizar algo si es que se trata de tamaño de arrays lei algo pero entiendo a medias porque esta en ingles
(11/08/2014, 03:46 PM)kikizon2 escribió: seria los bytes que gastaria de ram... supongo
Y cómo se podría saber cuanta ram se usará en tiempo de ejecución luego de compilarlo?? Eso es imposible.
Entonces que seria?
Son los bytes que ocupan las distintas secciónes del código, y el stack/heap size es la cantidad máxima de RAM que tiene permitido usar el plugin, se puede modificar con #pragma dynamic
http://youtu.be/eTJloW7DbHo
subo un nuevo video con la 1.3
arregle muchas cosas y ahora hay mas tipos de bloques
hay 1 utimo problema, no me detecta el material de los Breakable solo dice "Cristal" que es el material por defecto "0"
interesante lo del #pragma dynamic aunque por las dudas no toco eso
(15/08/2014, 11:27 PM)estantaya escribió: otra cosa: me pasa solo a mi que no puedo ver el video? en lugar del video solo veo 1 espacio grande en el post
Es un problema con el certificado SSL, dejá el link al video por el momento.
Believe, be yourself and don't hold on to just one dream ❤
Todo lindo pero el plugin lo hiciste vos? Todo desde 0?
(08/10/2014, 10:50 PM)meTaLiCroSS escribió: Siento que en este foro viven en una competencia, en vez de preocuparse del contenido se preocupan de la gente, nisiquiera de eso, de sus actitudes por muy buenas o malas que sean, que clase de convivencia se puede llegar con aquello? Siempre la misma mierda en todos lados, progresen de una vez
(16/08/2014, 10:26 AM)Store.gh escribió: Todo lindo pero el plugin lo hiciste vos? Todo desde 0?
Si desde 0, lo mas complejo fue lo de crear objetos solidos pero no es la primera vez que lo hago, en otro plugin que aun no publico lo practique, tome como ejemplos unos post en ingles donde explicaba como spawnear breakables, algunos de esos post tambien estaban en ruso ._. pero el codigo en ingles, despues cosas como for while y loops ya lo conosco porque lo aprendi programando en javascript de html y flash, lo de coordenadas y vectores lo aprendi de crear juegos con el unity 3d y entidad 3d aunque no termine nada mas que niveles sin sentido alguno por ultimo el manejo de arrays lo aprendi abriendo los .sma con el amx, sobre todo estos plugs: amx gore ultimate,
ultimate_sounds.amxx,advanced_weapon_tracers.amx,grenade_trail.amxx
los modelos aprendi a hacerlos con milkshape ya hace mucho cuando queria hacer skins para el cs
mierda tengo un pequeño curriculum
(16/08/2014, 10:26 AM)Store.gh escribió: Todo lindo pero el plugin lo hiciste vos? Todo desde 0?
Si desde 0, lo mas complejo fue lo de crear objetos solidos pero no es la primera vez que lo hago, en otro plugin que aun no publico lo practique, tome como ejemplos unos post en ingles donde explicaba como spawnear breakables, algunos de esos post tambien estaban en ruso ._. pero el codigo en ingles, despues cosas como for while y loops ya lo conosco porque lo aprendi programando en javascript de html y flash, lo de coordenadas y vectores lo aprendi de crear juegos con el unity 3d y entidad 3d aunque no termine nada mas que niveles sin sentido alguno por ultimo el manejo de arrays lo aprendi abriendo los .sma con el amx, sobre todo estos plugs: amx gore ultimate,
ultimate_sounds.amxx,advanced_weapon_tracers.amx,grenade_trail.amxx
los modelos aprendi a hacerlos con milkshape ya hace mucho cuando queria hacer skins para el cs
mierda tengo un pequeño curriculum
Me sorprendes
(08/10/2014, 10:50 PM)meTaLiCroSS escribió: Siento que en este foro viven en una competencia, en vez de preocuparse del contenido se preocupan de la gente, nisiquiera de eso, de sus actitudes por muy buenas o malas que sean, que clase de convivencia se puede llegar con aquello? Siempre la misma mierda en todos lados, progresen de una vez
(16/08/2014, 10:26 AM)Store.gh escribió: Todo lindo pero el plugin lo hiciste vos? Todo desde 0?
Si desde 0, lo mas complejo fue lo de crear objetos solidos pero no es la primera vez que lo hago, en otro plugin que aun no publico lo practique, tome como ejemplos unos post en ingles donde explicaba como spawnear breakables, algunos de esos post tambien estaban en ruso ._. pero el codigo en ingles, despues cosas como for while y loops ya lo conosco porque lo aprendi programando en javascript de html y flash, lo de coordenadas y vectores lo aprendi de crear juegos con el unity 3d y entidad 3d aunque no termine nada mas que niveles sin sentido alguno por ultimo el manejo de arrays lo aprendi abriendo los .sma con el amx, sobre todo estos plugs: amx gore ultimate,
ultimate_sounds.amxx,advanced_weapon_tracers.amx,grenade_trail.amxx
los modelos aprendi a hacerlos con milkshape ya hace mucho cuando queria hacer skins para el cs
mierda tengo un pequeño curriculum
Ojalá todos fueran como tú e.e
Y no unos flojos que quieren todo en bandeja, hasta tutorial para limpiarse después de cagar quieren -.-
18/08/2014, 08:24 PM (Última modificación: 18/08/2014, 08:24 PM por Store.gh.)
Che, por lo visto ese map de nuke, esta bueno para el plugin, tambien estaria bueno que dejes un pack de mapas, no tantos, sino 4 o 5 y que se juegen solamente esos.
Tambien , si es que sabes podrias hacer un mapa especializado para esto, que sea lo mas grande posible y que no tenga nada, por ahi models de arboles, nieve, y que haya que buscar los recursos en alguna parte del map.
Lo que me pregunto es , con 40 bloques por jugador es poco creo... la idea es que puedan como 200 y que solamente para jugar a este mod, se requiera el maximo de 8 players o 10 no se , porque sino se cagaria en trabado (lag) el mod.
Son ideas que serian geniales, yo no juego al minecraft , pero ahora esta lleno de individuos que lo juegan y imaginar que esta en el cs, chauu, viciados por todos lados
PD: Los bloques se guardan?
(08/10/2014, 10:50 PM)meTaLiCroSS escribió: Siento que en este foro viven en una competencia, en vez de preocuparse del contenido se preocupan de la gente, nisiquiera de eso, de sus actitudes por muy buenas o malas que sean, que clase de convivencia se puede llegar con aquello? Siempre la misma mierda en todos lados, progresen de una vez