Este tutorial ya existe en la seccion
Code Snippets/Tutorials
Pero en fin, lo traduciré al español( No tal cual esta esta en el post ). Ya que muchos son bastantes... ( Quedará a su criterio )
Post del blockmaker:
Blockmaker v4.01
Tomaremos el ejemplo que da el tutorial ya realizado, el agregado de una Deagle con 1 bala.
Cuando abramos el .sma nos aparecerá:
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fun>
#include <cstrike>
#include <fakemeta>
#pragma semicolon 1;
#define PLUGIN "blockmaker"
#define VERSION "4.01"
#define AUTHOR "Necro"
#define BM_ADMIN_LEVEL ADMIN_MENU //admin access level to use this plugin. ADMIN_MENU = flag 'u'
Pero debemos agregar la Deagle, para esto vamos a crear la variable de la deagle, es decir
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fun>
#include <cstrike>
#include <fakemeta>
#pragma semicolon 1;
#define PLUGIN "blockmaker"
#define VERSION "4.01"
#define AUTHOR "Necro"
#define BM_ADMIN_LEVEL ADMIN_MENU //admin access level to use this plugin. ADMIN_MENU = flag 'u'
new DeagleUsed[33];
Nos vamos un poco más abajo dentro del sma y tenemos que definir el model de la deagle, para esto debajo de lo que ya esta default agregamos:
PHP Code:
new const gszBlockModelDeagle[] = "models/blockmaker/bm_tubloque.mdl";
Nos quedaria:
PHP Code:
new const gszBlockModelDefault[] = "models/blockmaker/bm_block_default.mdl";
new const gszBlockModelPlatform[] = "models/blockmaker/bm_block_platform.mdl";
new const gszBlockModelBhop[] = "models/blockmaker/bm_block_bhop.mdl";
new const gszBlockModelDamage[] = "models/blockmaker/bm_block_damage.mdl";
new const gszBlockModelHealer[] = "models/blockmaker/bm_block_healer.mdl";
new const gszBlockModelInvincibility[] = "models/blockmaker/bm_block_invincibility.mdl";
new const gszBlockModelStealth[] = "models/blockmaker/bm_block_stealth.mdl";
new const gszBlockModelSpeedBoost[] = "models/blockmaker/bm_block_speedboost.mdl";
new const gszBlockModelNoFallDamage[] = "models/blockmaker/bm_block_nofalldamage.mdl";
new const gszBlockModelIce[] = "models/blockmaker/bm_block_ice.mdl";
new const gszBlockModelDeath[] = "models/blockmaker/bm_block_death.mdl";
new const gszBlockModelNuke[] = "models/blockmaker/bm_block_nuke.mdl";
new const gszBlockModelCamouflage[] = "models/blockmaker/bm_block_camouflage.mdl";
new const gszBlockModelLowGravity[] = "models/blockmaker/bm_block_lowgravity.mdl";
new const gszBlockModelFire[] = "models/blockmaker/bm_block_fire.mdl";
new const gszBlockModelRandom[] = "models/blockmaker/bm_block_random.mdl";
new const gszBlockModelSlap[] = "models/blockmaker/bm_block_slap.mdl";
new const gszBlockModelHoney[] = "models/blockmaker/bm_block_honey.mdl";
new const gszBlockModelBarrierCT[] = "models/blockmaker/bm_block_barrier_ct.mdl";
new const gszBlockModelBarrierT[] = "models/blockmaker/bm_block_barrier_t.mdl";
new const gszBlockModelBootsOfSpeed[] = "models/blockmaker/bm_block_bootsofspeed.mdl";
new const gszBlockModelGlass[] = "models/blockmaker/bm_block_glass.mdl";
new const gszBlockModelBhopNoSlow[] = "models/blockmaker/bm_block_bhop_noslow.mdl";
new const gszBlockModelAutoBhop[] = "models/blockmaker/bm_block_autobhop.mdl";
new const gszBlockModelDeagle[] = "models/blockmaker/bm_tubloque.mdl";
Vamos más abajo y tenemos que decir que se agrego un bloque más, busacmos "const gBlockMax = 24;" y lo cambiamos a const gBlockMax = 25;"
PHP Code:
// block & teleport types
const gBlockMax = 25;
new gSelectedBlockType[gBlockMax];
new gRender[gBlockMax];
new gRed[gBlockMax];
new gGreen[gBlockMax];
new gBlue[gBlockMax];
new gAlpha[gBlockMax];
Seguimos y tenemos que agregar el "BM_DEAGLE" en:
PHP Code:
BM_PLATFORM, //A
BM_BHOP, //B
BM_DAMAGE, //C
BM_HEALER, //D
BM_NOFALLDAMAGE, //E
BM_ICE, //F
BM_TRAMPOLINE, //G
BM_SPEEDBOOST, //H
BM_INVINCIBILITY, //I
BM_STEALTH, //J
BM_DEATH, //K
BM_NUKE, //L
BM_CAMOUFLAGE, //M
BM_LOWGRAVITY, //N
BM_FIRE, //O
BM_SLAP, //P
BM_RANDOM, //Q
BM_HONEY, //R
BM_BARRIER_CT, //S
BM_BARRIER_T, //T
BM_BOOTSOFSPEED, //U
BM_GLASS, //V
BM_BHOP_NOSLOW, //W
BM_AUTO_BHOP, //X
BM_DEAGLE, //Y
En este caso decimos que el bloque de la deagle va ser llamda "Y" y si quieren agregar más bloques pueden usar la Z o signos:
Quote:
~ ! @ # $ % ^ & ( ) - _ = + [ ] { } \ | ; : ' " < > , . / ? 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z
|
Por default el asterisco (*) ya esta usado en el Teleport.
Vamos un poco más abajo y agregamos la Deagle a nuestra lista que se vera dentro del juego.
PHP Code:
"Platform",
"Bunnyhop",
"Damage",
"Healer",
"No Fall Damage",
"Ice",
"Trampoline",
"Speed Boost",
"Invincibility",
"Stealth",
"Death",
"Nuke",
"Camouflage",
"Low Gravity",
"Fire",
"Slap",
"Random",
"Honey",
"CT Barrier",
"T Barrier",
"Boots Of Speed",
"Glass",
"Bunnyhop (No slow down)",
"Auto Bunnyhop",
"Deagle"
Abajo de auto bunnyhop agregaremos nuestra Deagle, pero para eso debemos agregarle una "," (coma) luego del "Auto Bunnyhop"
Buscamos estas lineas
PHP Code:
new const gBlockSaveIds[gBlockMax] =
{
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y'
}
Y al final agregamos nuestra "Y"
Buscamos:
PHP Code:
//set block models to defaults
gszBlockModels[BM_PLATFORM] = gszBlockModelPlatform;
gszBlockModels[BM_BHOP] = gszBlockModelBhop;
gszBlockModels[BM_DAMAGE] = gszBlockModelDamage;
gszBlockModels[BM_HEALER] = gszBlockModelHealer;
gszBlockModels[BM_NOFALLDAMAGE] = gszBlockModelNoFallDamage;
gszBlockModels[BM_ICE] = gszBlockModelIce;
gszBlockModels[BM_TRAMPOLINE] = gszBlockModelDefault;
gszBlockModels[BM_SPEEDBOOST] = gszBlockModelSpeedBoost;
gszBlockModels[BM_INVINCIBILITY] = gszBlockModelInvincibility;
gszBlockModels[BM_STEALTH] = gszBlockModelStealth;
gszBlockModels[BM_DEATH] = gszBlockModelDeath;
gszBlockModels[BM_NUKE] = gszBlockModelNuke;
gszBlockModels[BM_CAMOUFLAGE] = gszBlockModelCamouflage;
gszBlockModels[BM_LOWGRAVITY] = gszBlockModelLowGravity;
gszBlockModels[BM_FIRE] = gszBlockModelFire;
gszBlockModels[BM_SLAP] = gszBlockModelSlap;
gszBlockModels[BM_RANDOM] = gszBlockModelRandom;
gszBlockModels[BM_HONEY] = gszBlockModelHoney;
gszBlockModels[BM_BARRIER_CT] = gszBlockModelBarrierCT;
gszBlockModels[BM_BARRIER_T] = gszBlockModelBarrierT;
gszBlockModels[BM_BOOTSOFSPEED] = gszBlockModelBootsOfSpeed;
gszBlockModels[BM_GLASS] = gszBlockModelGlass;
gszBlockModels[BM_BHOP_NOSLOW] = gszBlockModelBhopNoSlow;
gszBlockModels[BM_AUTO_BHOP] = gszBlockModelAutoBhop;
gszBlockModels[BM_DEAGLE] = gszBlockModelDeagle; // Esta sería la nueva linea que agregamos
Y al final agregamos nuestra linea:
PHP Code:
gszBlockModels[BM_DEAGLE] = gszBlockModelDeagle;
Ahora buscamos:
PHP Code:
if (equal(szType, "PLATFORM")) blockType = BM_PLATFORM;
else if (equal(szType, "BHOP")) blockType = BM_BHOP;
else if (equal(szType, "DAMAGE")) blockType = BM_DAMAGE;
else if (equal(szType, "HEALER")) blockType = BM_HEALER;
else if (equal(szType, "NOFALLDAMAGE")) blockType = BM_NOFALLDAMAGE;
else if (equal(szType, "ICE")) blockType = BM_ICE;
else if (equal(szType, "TRAMPOLINE")) blockType = BM_TRAMPOLINE;
else if (equal(szType, "SPEEDBOOST")) blockType = BM_SPEEDBOOST;
else if (equal(szType, "INVINCIBILITY")) blockType = BM_INVINCIBILITY;
else if (equal(szType, "STEALTH")) blockType = BM_STEALTH;
else if (equal(szType, "DEATH")) blockType = BM_DEATH;
else if (equal(szType, "NUKE")) blockType = BM_NUKE;
else if (equal(szType, "CAMOUFLAGE")) blockType = BM_CAMOUFLAGE;
else if (equal(szType, "LOWGRAVITY")) blockType = BM_LOWGRAVITY;
else if (equal(szType, "FIRE")) blockType = BM_FIRE;
else if (equal(szType, "SLAP")) blockType = BM_SLAP;
else if (equal(szType, "RANDOM")) blockType = BM_RANDOM;
else if (equal(szType, "HONEY")) blockType = BM_HONEY;
else if (equal(szType, "BARRIER_CT")) blockType = BM_BARRIER_CT;
else if (equal(szType, "BARRIER_T")) blockType = BM_BARRIER_T;
else if (equal(szType, "BOOTSOFSPEED")) blockType = BM_BOOTSOFSPEED;
else if (equal(szType, "GLASS")) blockType = BM_GLASS;
else if (equal(szType, "BHOP_NOSLOW")) blockType = BM_BHOP_NOSLOW;
else if (equal(szType, "AUTO_BHOP")) blockType = BM_AUTO_BHOP;
else if (equal(szType, "DEAGLE")) blockType = BM_DEAGLE;
Y agregamos
PHP Code:
else if (equal(szType, "DEAGLE")) blockType = BM_DEAGLE;
Que ya esta agregada previamente.
Luego buscamos las funciones de cada bloque
PHP Code:
case BM_HEALER: actionHeal(id);
case BM_DAMAGE: actionDamage(id);
case BM_INVINCIBILITY: actionInvincible(id, false);
case BM_STEALTH: actionStealth(id, false);
case BM_TRAMPOLINE: actionTrampoline(id);
case BM_SPEEDBOOST: actionSpeedBoost(id);
case BM_DEATH: actionDeath(id);
case BM_NUKE: actionNuke(id, false);
case BM_LOWGRAVITY: actionLowGravity(id);
case BM_CAMOUFLAGE: actionCamouflage(id, false);
case BM_FIRE: actionFire(id, ent);
case BM_SLAP: actionSlap(id);
case BM_RANDOM: actionRandom(id, ent);
case BM_HONEY: actionHoney(id);
case BM_BOOTSOFSPEED: actionBootsOfSpeed(id, false);
case BM_AUTO_BHOP: actionAutoBhop(id, false);
case BM_DEAGLE: actionDeagle(id); // Esta funcion agregamos
Al final agregamos
PHP Code:
case BM_DEAGLE: actionDeagle(id);
Buscamos el public "eventRoundRestart" y dentro de ella colocaremos que al empezar la ronda el uso de la deagle este en "false" para que al "apoyarse/pararse" arriba del bloque, podamos utilizar la deagle nuevamente.
Nos quedaria:
PHP Code:
public eventRoundRestart()
{
//iterate through all players
for (new id = 1; id <= 32; ++id)
{
//reset all players timers
resetTimers(id);
DeagleUsed[id] = false;
}
}
Al final buscaremos las accion de cada bloque, es decir que es lo que hace al apoyarnos arriba de cada bloque y agregaremos la funcion del bloque que contiene la deagle
PHP Code:
/***** BLOCK ACTIONS *****/
actionDeagle(id)
{
if (is_user_alive(id) && !DeagleUsed[id] && get_user_team(id) == 1)
{
give_item(id, "weapon_deagle");
cs_set_weapon_ammo(find_ent_by_owner(1, "weapon_deagle", id), 1);
DeagleUsed[id] = true;
new deaglename[42];
get_user_name(id, deaglename, 32);
set_hudmessage(255, 255, 255, -1.0, -1.0, 0, 6.0, 4.0);
show_hudmessage(0, "Tengan cuidado CT's! %s logro agarrar una Deagle!", deaglename);
}
}
actionDamage(id)
{
if (halflife_time() >= gfNextDamageTime[id])
{
if (get_user_health(id) > 0)
{
new Float:amount = get_cvar_float("bm_damageamount");
fakedamage(id, "damage block", amount, DMG_CRUSH);
}
gfNextDamageTime[id] = halflife_time() + 0.5;
}
}
Y por ultimo definimos que Y sea BM_DEAGLE
PHP Code:
case 'A': createBlock(0, BM_PLATFORM, vVec1, axis, size);
case 'B': createBlock(0, BM_BHOP, vVec1, axis, size);
case 'C': createBlock(0, BM_DAMAGE, vVec1, axis, size);
case 'D': createBlock(0, BM_HEALER, vVec1, axis, size);
case 'E': createBlock(0, BM_NOFALLDAMAGE, vVec1, axis, size);
case 'F': createBlock(0, BM_ICE, vVec1, axis, size);
case 'G': createBlock(0, BM_TRAMPOLINE, vVec1, axis, size);
case 'H': createBlock(0, BM_SPEEDBOOST, vVec1, axis, size);
case 'I': createBlock(0, BM_INVINCIBILITY, vVec1, axis, size);
case 'J': createBlock(0, BM_STEALTH, vVec1, axis, size);
case 'K': createBlock(0, BM_DEATH, vVec1, axis, size);
case 'L': createBlock(0, BM_NUKE, vVec1, axis, size);
case 'M': createBlock(0, BM_CAMOUFLAGE, vVec1, axis, size);
case 'N': createBlock(0, BM_LOWGRAVITY, vVec1, axis, size);
case 'O': createBlock(0, BM_FIRE, vVec1, axis, size);
case 'P': createBlock(0, BM_SLAP, vVec1, axis, size);
case 'Q': createBlock(0, BM_RANDOM, vVec1, axis, size);
case 'R': createBlock(0, BM_HONEY, vVec1, axis, size);
case 'S': createBlock(0, BM_BARRIER_CT, vVec1, axis, size);
case 'T': createBlock(0, BM_BARRIER_T, vVec1, axis, size);
case 'U': createBlock(0, BM_BOOTSOFSPEED, vVec1, axis, size);
case 'V': createBlock(0, BM_GLASS, vVec1, axis, size);
case 'W': createBlock(0, BM_BHOP_NOSLOW, vVec1, axis, size);
case 'X': createBlock(0, BM_AUTO_BHOP, vVec1, axis, size);
case 'Y': createBlock(0, BM_DEAGLE, vVec1, axis, size);
Se darán cuenta que agregamos
PHP Code:
case 'Y': createBlock(0, BM_DEAGLE, vVec1, axis, size);
Pueden ver más funciones en el post principal del agregado de bloques.
__________________