Mensajes: 169
Temas: 22
Registro en: Feb 2020
Reputación:
8
22/04/2020, 07:31 PM
(Última modificación: 23/04/2020, 11:46 PM por El Abuelo. Edited 2 times in total.)
Hola que tal, el otro dia descarge el plugin de la granada teletrasportadora, y me gustaria agregarle un precio $10000, ya que es para colocar en una tienda para un CTF, la cuestion es que probe pero no me funciono, ademas de que quiero agregarla al menu que tengo.
les dejo el sma de la granada (descargado de la pagina oficial de alliedmodders.
imagino que hay que usar este comando en plugin_init pero nose que mas debo hacer.
Código PHP: register_cvar ("teleport_cost","10000")
Código PHP: /* AMX Mod X * Teleport Smoke Grenade * * (c) Copyright 2006 by VEN * * This file is provided as is (no warranties) * * DESCRIPTION * Plugin changes the smoke grenade to teleport grenade with a bit of smoke. * Usage: drop the grenade, you will be teleported to the spot of explosion. * Try to crouch if the height of the spot are small for uncrouched player. * * CREDITS * Dread Pirate - idea */
#include <amxmodx> #include <fakemeta>
#define PLUGIN_NAME "Teleport Smoke Grenade" #define PLUGIN_VERSION "0.1" #define PLUGIN_AUTHOR "VEN"
#define SMOKE_SCALE 30 #define SMOKE_FRAMERATE 12 #define SMOKE_GROUND_OFFSET 6
// do not edit new const g_sound_explosion[] = "weapons/sg_explode.wav" new const g_classname_grenade[] = "grenade"
new const Float:g_sign[4][2] = {{1.0, 1.0}, {1.0, -1.0}, {-1.0, -1.0}, {-1.0, 1.0}}
new g_spriteid_steam1 new g_eventid_createsmoke
public plugin_init() { register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_forward(FM_EmitSound, "forward_emitsound") register_forward(FM_PlaybackEvent, "forward_playbackevent")
// we do not precaching, but retrieving the indexes g_spriteid_steam1 = engfunc(EngFunc_PrecacheModel, "sprites/steam1.spr") g_eventid_createsmoke = engfunc(EngFunc_PrecacheEvent, 1, "events/createsmoke.sc") }
public forward_emitsound(ent, channel, const sound[]) { if (!equal(sound, g_sound_explosion) || !is_grenade(ent)) return FMRES_IGNORED
static id, Float:origin[3] id = pev(ent, pev_owner) pev(ent, pev_origin, origin) engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, g_sound_explosion, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) engfunc(EngFunc_RemoveEntity, ent) origin[2] += SMOKE_GROUND_OFFSET create_smoke(origin)
if (is_user_alive(id)) { static Float:mins[3], hull pev(id, pev_mins, mins) origin[2] -= mins[2] + SMOKE_GROUND_OFFSET hull = pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN if (is_hull_vacant(origin, hull)) engfunc(EngFunc_SetOrigin, id, origin) else { // close to a solid object, trying to find a vacant spot static Float:vec[3] vec[2] = origin[2] for (new i; i < sizeof g_sign; ++i) { vec[0] = origin[0] - mins[0] * g_sign[i][0] vec[1] = origin[1] - mins[1] * g_sign[i][1] if (is_hull_vacant(vec, hull)) { engfunc(EngFunc_SetOrigin, id, vec) break } } } }
return FMRES_SUPERCEDE }
public forward_playbackevent(flags, invoker, eventindex) { // we do not need a large amount of smoke if (eventindex == g_eventid_createsmoke) return FMRES_SUPERCEDE
return FMRES_IGNORED }
bool:is_grenade(ent) { if (!pev_valid(ent)) return false
static classname[sizeof g_classname_grenade + 1] pev(ent, pev_classname, classname, sizeof g_classname_grenade) if (equal(classname, g_classname_grenade)) return true
return false }
create_smoke(const Float:origin[3]) { // engfunc because origin are float engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0) write_byte(TE_SMOKE) engfunc(EngFunc_WriteCoord, origin[0]) engfunc(EngFunc_WriteCoord, origin[1]) engfunc(EngFunc_WriteCoord, origin[2]) write_short(g_spriteid_steam1) write_byte(SMOKE_SCALE) write_byte(SMOKE_FRAMERATE) message_end() }
stock bool:is_hull_vacant(const Float:origin[3], hull) { new tr = 0 engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr) if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen)) return true return false }
esto seria lo principal, despues si se puede agregar al menu de tienda; paso a dejar el sma;
Código PHP: /* Plugin generated by AMXX-Studio , LA SOMBRA DEMONIACA */
#include <amxmodx> #include <fakemeta> #include <colorchat>
public plugin_init() { register_plugin("MenuParaCTF" , "1.0" , ".-*3L-S0SP3CH0S0*-.") register_clcmd("say /menu", "ctf_menu") register_clcmd("say barramenu", "ctf_menu") register_clcmd("say_team /menu" , "ctf_menu") register_clcmd("say_team barramenu", "ctf_menu") register_clcmd("nightvision" , "ctf_menu") }
public ctf_menu(id) { new Menu = menu_create("\wMenu Principal", "menu_ctf") menu_additem(Menu, "\y[ \wTIENDA \y]^n" , "1", 0) menu_additem(Menu, "\y[ \wREVIVIR \y]" , "2", 0) menu_additem(Menu, "\y[ \wADRENALINA \y]" , "3", 0) menu_additem(Menu, "\y[ \wSOLTAR BANDERA \y]" , "4", 0) menu_additem(Menu, "\y[ \wAPAGAR LUZ BANDERA \y]^n" , "5", 0) menu_additem(Menu, "\y[ \wMUTEAR A ALGUIEN \y]" , "6", 0) menu_additem(Menu, "\y[ \wVER AYUDA \y]" , "7", 0) menu_additem(Menu, "\y[ \wMENU SERVERS \y]^n" , "8", 0) menu_additem(Menu, "\y[ \rMENU DE ADMIN \y]" , "9" , ADMIN_LEVEL_A) menu_setprop(Menu, MPROP_EXITNAME,"Salir") menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, Menu, 0) }
public menu_ctf(id, Menu, item) { if (item == MENU_EXIT) { menu_destroy(Menu) return PLUGIN_HANDLED } new iData[6], iAccess, iCallback, iName[64]; menu_item_getinfo(Menu, item, iAccess, iData, 5, iName, 63, iCallback) switch (str_to_num(iData)) { case 1: show_menu_sub(id); case 2: client_cmd (id, "say /spawn") case 3: client_cmd (id, "adrenaline") case 4: client_cmd (id, "say /dropflag") case 5: client_cmd (id, "say /lightsoff") case 6: client_cmd (id, "say /mute") case 7: client_cmd (id, "say /help") case 8: client_cmd (id, "say /server") case 9: client_cmd (id, "amxmodmenu") } return PLUGIN_HANDLED;
}
show_menu_sub(id) { new menu = menu_create("TIENDA", "menu_sub");
menu_additem(menu, "PARACAIDAS ($2000)", "1"); menu_additem(menu, "GRANADA TELETRASPORTADORA ($10000)", "2"); menu_additem(menu, "EN PROCESO DE ARMADO", "3"); menu_setprop(menu, MPROP_EXITNAME,"Salir") menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, menu, 0) } public menu_sub(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } switch(item) { case 0: client_cmd (id, "say buy_parachute") case 1: ColorChat(id, NORMAL, "^x04[TIENDA]^x01 COMPRASTE UNA GRANADA TELETRASPORTADORA"); case 2: ColorChat(id, NORMAL, "^x04[TIENDA]^x01 EN PROCESO DE ARMADO "); } return PLUGIN_HANDLED; }
Desde ya muchas gracias atte; El Abuelo
Mensajes: 811
Temas: 99
Registro en: Jun 2019
Reputación:
8
Mensajes: 169
Temas: 22
Registro en: Feb 2020
Reputación:
8
(22/04/2020, 07:34 PM)andres_1041 escribió: ¿Por qué no lo haces con natives? sería mucho mejor.
Oye tranquilo cerebrito, apenas puedo editar algunas cosas y ya me dijiste natives acaso quieres que colapse jaja descarge el plugin asi de la pagina oficial. por eso si se puede agregar a esto seria genial mas adelante y con mas conocimientos supongo que me animaria a probar y ver natives :? igual descargue unas tiendas natives que creo q eran de alejandro y no me funciono ninguna xD directamente decia plugin bad load. . Paso a paso.
Mensajes: 3,077
Temas: 33
Registro en: May 2017
Reputación:
34
MENÚ CTF.
Código PHP: /* Plugin generated by AMXX-Studio , LA SOMBRA DEMONIACA */
#include <amxmodx> #include <cstrike> #include <hamsandwich> #include <fun> #include <fakemeta>
new bool:g_has_teleport[33];
public plugin_natives() { register_native("ctf_has_teleport", "native_ctf_has_teleport", 1); } public native_ctf_has_teleport(id) return g_has_teleport[id];
public plugin_init() { register_plugin("MenuParaCTF" , "1.0" , ".-*3L-S0SP3CH0S0*-.") register_clcmd("say /menu", "ctf_menu") register_clcmd("say barramenu", "ctf_menu") register_clcmd("say_team /menu" , "ctf_menu") register_clcmd("say_team barramenu", "ctf_menu") register_clcmd("nightvision" , "ctf_menu")
RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", true); }
public ham_PlayerSpawn_Post(id) { if (!is_user_alive(id)) return PLUGIN_CONTINUE;
g_has_teleport[id] = false;
return PLUGIN_CONTINUE; }
public ctf_menu(id) { new Menu = menu_create("\wMenu Principal", "menu_ctf") menu_additem(Menu, "\y[ \wTIENDA \y]^n" , "1", 0) menu_additem(Menu, "\y[ \wREVIVIR \y]" , "2", 0) menu_additem(Menu, "\y[ \wADRENALINA \y]" , "3", 0) menu_additem(Menu, "\y[ \wSOLTAR BANDERA \y]" , "4", 0) menu_additem(Menu, "\y[ \wAPAGAR LUZ BANDERA \y]^n" , "5", 0) menu_additem(Menu, "\y[ \wMUTEAR A ALGUIEN \y]" , "6", 0) menu_additem(Menu, "\y[ \wVER AYUDA \y]" , "7", 0) menu_additem(Menu, "\y[ \wMENU SERVERS \y]^n" , "8", 0) menu_additem(Menu, "\y[ \rMENU DE ADMIN \y]" , "9" , ADMIN_LEVEL_A) menu_setprop(Menu, MPROP_EXITNAME,"Salir") menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, Menu, 0) }
public menu_ctf(id, Menu, item) { if (item == MENU_EXIT) { menu_destroy(Menu) return PLUGIN_HANDLED } new iData[6], iAccess, iCallback, iName[64]; menu_item_getinfo(Menu, item, iAccess, iData, 5, iName, 63, iCallback) switch (str_to_num(iData)) { case 1: show_menu_sub(id); case 2: client_cmd (id, "say /spawn") case 3: client_cmd (id, "adrenaline") case 4: client_cmd (id, "say /dropflag") case 5: client_cmd (id, "say /lightsoff") case 6: client_cmd (id, "say /mute") case 7: client_cmd (id, "say /help") case 8: client_cmd (id, "say /server") case 9: client_cmd (id, "amxmodmenu") } return PLUGIN_HANDLED;
}
show_menu_sub(id) { new menu = menu_create("TIENDA", "menu_sub");
menu_additem(menu, "PARACAIDAS ($2000)", "1"); menu_additem(menu, "GRANADA TELETRASPORTADORA ($10000)", "2"); menu_additem(menu, "EN PROCESO DE ARMADO", "3"); menu_setprop(menu, MPROP_EXITNAME,"Salir") menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, menu, 0) } public menu_sub(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } switch(item) { case 0: client_cmd (id, "say buy_parachute") case 1: { chat_color(id, "^x04[TIENDA]^x01 COMPRASTE UNA GRANADA TELETRASPORTADORA"); g_has_teleport[id] = true; cs_set_user_money(id, cs_get_user_money(id) - 10000); give_item(id, "weapon_smokegrenade"); } case 2: chat_color(id, "^x04[TIENDA]^x01 EN PROCESO DE ARMADO "); } return PLUGIN_HANDLED; }
chat_color(id, const input[], any:...) { static message[191]; vformat(message, 190, input, 3); replace_all(message, 190, "!g", "^4"); replace_all(message, 190, "!t", "^3"); replace_all(message, 190, "!y", "^1"); message_begin((id) ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, get_user_msgid("SayText"), .player = id); write_byte((id) ? id : 33); write_string(message); message_end(); }
TELEPORT SMOKE.
Código PHP: /* AMX Mod X * Teleport Smoke Grenade * * (c) Copyright 2006 by VEN * * This file is provided as is (no warranties) * * DESCRIPTION * Plugin changes the smoke grenade to teleport grenade with a bit of smoke. * Usage: drop the grenade, you will be teleported to the spot of explosion. * Try to crouch if the height of the spot are small for uncrouched player. * * CREDITS * Dread Pirate - idea */
#include <amxmodx> #include <fakemeta>
#define PLUGIN_NAME "Teleport Smoke Grenade" #define PLUGIN_VERSION "0.1" #define PLUGIN_AUTHOR "VEN"
#define SMOKE_SCALE 30 #define SMOKE_FRAMERATE 12 #define SMOKE_GROUND_OFFSET 6
// do not edit new const g_sound_explosion[] = "weapons/sg_explode.wav" new const g_classname_grenade[] = "grenade"
new const Float:g_sign[4][2] = {{1.0, 1.0}, {1.0, -1.0}, {-1.0, -1.0}, {-1.0, 1.0}}
new g_spriteid_steam1 new g_eventid_createsmoke
native ctf_has_teleport(id);
public plugin_init() { register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_forward(FM_EmitSound, "forward_emitsound") register_forward(FM_PlaybackEvent, "forward_playbackevent")
// we do not precaching, but retrieving the indexes g_spriteid_steam1 = engfunc(EngFunc_PrecacheModel, "sprites/steam1.spr") g_eventid_createsmoke = engfunc(EngFunc_PrecacheEvent, 1, "events/createsmoke.sc") }
public forward_emitsound(ent, channel, const sound[]) { if (!equal(sound, g_sound_explosion) || !is_grenade(ent)) return FMRES_IGNORED
static id, Float:origin[3] id = pev(ent, pev_owner)
if (!ctf_has_teleport(id)) return FMRES_IGNORED;
pev(ent, pev_origin, origin) engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, g_sound_explosion, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) engfunc(EngFunc_RemoveEntity, ent) origin[2] += SMOKE_GROUND_OFFSET create_smoke(origin)
if (is_user_alive(id)) { static Float:mins[3], hull pev(id, pev_mins, mins) origin[2] -= mins[2] + SMOKE_GROUND_OFFSET hull = pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN if (is_hull_vacant(origin, hull)) engfunc(EngFunc_SetOrigin, id, origin) else { // close to a solid object, trying to find a vacant spot static Float:vec[3] vec[2] = origin[2] for (new i; i < sizeof g_sign; ++i) { vec[0] = origin[0] - mins[0] * g_sign[i][0] vec[1] = origin[1] - mins[1] * g_sign[i][1] if (is_hull_vacant(vec, hull)) { engfunc(EngFunc_SetOrigin, id, vec) break } } } }
return FMRES_SUPERCEDE }
public forward_playbackevent(flags, invoker, eventindex) { // we do not need a large amount of smoke if (eventindex == g_eventid_createsmoke) return FMRES_SUPERCEDE
return FMRES_IGNORED }
bool:is_grenade(ent) { if (!pev_valid(ent)) return false
static classname[sizeof g_classname_grenade + 1] pev(ent, pev_classname, classname, sizeof g_classname_grenade) if (equal(classname, g_classname_grenade)) return true
return false }
create_smoke(const Float:origin[3]) { // engfunc because origin are float engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0) write_byte(TE_SMOKE) engfunc(EngFunc_WriteCoord, origin[0]) engfunc(EngFunc_WriteCoord, origin[1]) engfunc(EngFunc_WriteCoord, origin[2]) write_short(g_spriteid_steam1) write_byte(SMOKE_SCALE) write_byte(SMOKE_FRAMERATE) message_end() }
stock bool:is_hull_vacant(const Float:origin[3], hull) { new tr = 0 engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr) if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen)) return true return false }
Mensajes: 811
Temas: 99
Registro en: Jun 2019
Reputación:
8
22/04/2020, 07:56 PM
(Última modificación: 22/04/2020, 07:56 PM por andres_1041. Edited 1 time in total.)
(22/04/2020, 07:38 PM)El Abuelo escribió: (22/04/2020, 07:34 PM)andres_1041 escribió: ¿Por qué no lo haces con natives? sería mucho mejor.
Oye tranquilo cerebrito, apenas puedo editar algunas cosas y ya me dijiste natives acaso quieres que colapse jaja descarge el plugin asi de la pagina oficial. por eso si se puede agregar a esto seria genial mas adelante y con mas conocimientos supongo que me animaria a probar y ver natives :? igual descargue unas tiendas natives que creo q eran de alejandro y no me funciono ninguna xD directamente decia plugin bad load. . Paso a paso.
Ese plugin de Alejandro-. funciona perfecto, te iba a ayudar pero ya Chema se me adelantó.
I dream of someday being able to have your near.
Mensajes: 169
Temas: 22
Registro en: Feb 2020
Reputación:
8
22/04/2020, 08:19 PM
(Última modificación: 22/04/2020, 08:20 PM por El Abuelo. Edited 1 time in total.)
(22/04/2020, 07:52 PM)Chema escribió: MENÚ CTF.
Código PHP: /* Plugin generated by AMXX-Studio , LA SOMBRA DEMONIACA */
#include <amxmodx> #include <cstrike> #include <hamsandwich> #include <fun> #include <fakemeta>
new bool:g_has_teleport[33];
public plugin_natives() { register_native("ctf_has_teleport", "native_ctf_has_teleport", 1); } public native_ctf_has_teleport(id) return g_has_teleport[id];
public plugin_init() { register_plugin("MenuParaCTF" , "1.0" , ".-*3L-S0SP3CH0S0*-.") register_clcmd("say /menu", "ctf_menu") register_clcmd("say barramenu", "ctf_menu") register_clcmd("say_team /menu" , "ctf_menu") register_clcmd("say_team barramenu", "ctf_menu") register_clcmd("nightvision" , "ctf_menu")
RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", true); }
public ham_PlayerSpawn_Post(id) { if (!is_user_alive(id)) return PLUGIN_CONTINUE;
g_has_teleport[id] = false;
return PLUGIN_CONTINUE; }
public ctf_menu(id) { new Menu = menu_create("\wMenu Principal", "menu_ctf") menu_additem(Menu, "\y[ \wTIENDA \y]^n" , "1", 0) menu_additem(Menu, "\y[ \wREVIVIR \y]" , "2", 0) menu_additem(Menu, "\y[ \wADRENALINA \y]" , "3", 0) menu_additem(Menu, "\y[ \wSOLTAR BANDERA \y]" , "4", 0) menu_additem(Menu, "\y[ \wAPAGAR LUZ BANDERA \y]^n" , "5", 0) menu_additem(Menu, "\y[ \wMUTEAR A ALGUIEN \y]" , "6", 0) menu_additem(Menu, "\y[ \wVER AYUDA \y]" , "7", 0) menu_additem(Menu, "\y[ \wMENU SERVERS \y]^n" , "8", 0) menu_additem(Menu, "\y[ \rMENU DE ADMIN \y]" , "9" , ADMIN_LEVEL_A) menu_setprop(Menu, MPROP_EXITNAME,"Salir") menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, Menu, 0) }
public menu_ctf(id, Menu, item) { if (item == MENU_EXIT) { menu_destroy(Menu) return PLUGIN_HANDLED } new iData[6], iAccess, iCallback, iName[64]; menu_item_getinfo(Menu, item, iAccess, iData, 5, iName, 63, iCallback) switch (str_to_num(iData)) { case 1: show_menu_sub(id); case 2: client_cmd (id, "say /spawn") case 3: client_cmd (id, "adrenaline") case 4: client_cmd (id, "say /dropflag") case 5: client_cmd (id, "say /lightsoff") case 6: client_cmd (id, "say /mute") case 7: client_cmd (id, "say /help") case 8: client_cmd (id, "say /server") case 9: client_cmd (id, "amxmodmenu") } return PLUGIN_HANDLED;
}
show_menu_sub(id) { new menu = menu_create("TIENDA", "menu_sub");
menu_additem(menu, "PARACAIDAS ($2000)", "1"); menu_additem(menu, "GRANADA TELETRASPORTADORA ($10000)", "2"); menu_additem(menu, "EN PROCESO DE ARMADO", "3"); menu_setprop(menu, MPROP_EXITNAME,"Salir") menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, menu, 0) } public menu_sub(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } switch(item) { case 0: client_cmd (id, "say buy_parachute") case 1: { chat_color(id, "^x04[TIENDA]^x01 COMPRASTE UNA GRANADA TELETRASPORTADORA"); g_has_teleport[id] = true; cs_set_user_money(id, cs_get_user_money(id) - 10000); give_item(id, "weapon_smokegrenade"); } case 2: chat_color(id, "^x04[TIENDA]^x01 EN PROCESO DE ARMADO "); } return PLUGIN_HANDLED; }
chat_color(id, const input[], any:...) { static message[191]; vformat(message, 190, input, 3); replace_all(message, 190, "!g", "^4"); replace_all(message, 190, "!t", "^3"); replace_all(message, 190, "!y", "^1"); message_begin((id) ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, get_user_msgid("SayText"), .player = id); write_byte((id) ? id : 33); write_string(message); message_end(); }
TELEPORT SMOKE.
Código PHP: /* AMX Mod X * Teleport Smoke Grenade * * (c) Copyright 2006 by VEN * * This file is provided as is (no warranties) * * DESCRIPTION * Plugin changes the smoke grenade to teleport grenade with a bit of smoke. * Usage: drop the grenade, you will be teleported to the spot of explosion. * Try to crouch if the height of the spot are small for uncrouched player. * * CREDITS * Dread Pirate - idea */
#include <amxmodx> #include <fakemeta>
#define PLUGIN_NAME "Teleport Smoke Grenade" #define PLUGIN_VERSION "0.1" #define PLUGIN_AUTHOR "VEN"
#define SMOKE_SCALE 30 #define SMOKE_FRAMERATE 12 #define SMOKE_GROUND_OFFSET 6
// do not edit new const g_sound_explosion[] = "weapons/sg_explode.wav" new const g_classname_grenade[] = "grenade"
new const Float:g_sign[4][2] = {{1.0, 1.0}, {1.0, -1.0}, {-1.0, -1.0}, {-1.0, 1.0}}
new g_spriteid_steam1 new g_eventid_createsmoke
native ctf_has_teleport(id);
public plugin_init() { register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_forward(FM_EmitSound, "forward_emitsound") register_forward(FM_PlaybackEvent, "forward_playbackevent")
// we do not precaching, but retrieving the indexes g_spriteid_steam1 = engfunc(EngFunc_PrecacheModel, "sprites/steam1.spr") g_eventid_createsmoke = engfunc(EngFunc_PrecacheEvent, 1, "events/createsmoke.sc") }
public forward_emitsound(ent, channel, const sound[]) { if (!equal(sound, g_sound_explosion) || !is_grenade(ent)) return FMRES_IGNORED
static id, Float:origin[3] id = pev(ent, pev_owner)
if (!ctf_has_teleport(id)) return FMRES_IGNORED;
pev(ent, pev_origin, origin) engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, g_sound_explosion, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) engfunc(EngFunc_RemoveEntity, ent) origin[2] += SMOKE_GROUND_OFFSET create_smoke(origin)
if (is_user_alive(id)) { static Float:mins[3], hull pev(id, pev_mins, mins) origin[2] -= mins[2] + SMOKE_GROUND_OFFSET hull = pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN if (is_hull_vacant(origin, hull)) engfunc(EngFunc_SetOrigin, id, origin) else { // close to a solid object, trying to find a vacant spot static Float:vec[3] vec[2] = origin[2] for (new i; i < sizeof g_sign; ++i) { vec[0] = origin[0] - mins[0] * g_sign[i][0] vec[1] = origin[1] - mins[1] * g_sign[i][1] if (is_hull_vacant(vec, hull)) { engfunc(EngFunc_SetOrigin, id, vec) break } } } }
return FMRES_SUPERCEDE }
public forward_playbackevent(flags, invoker, eventindex) { // we do not need a large amount of smoke if (eventindex == g_eventid_createsmoke) return FMRES_SUPERCEDE
return FMRES_IGNORED }
bool:is_grenade(ent) { if (!pev_valid(ent)) return false
static classname[sizeof g_classname_grenade + 1] pev(ent, pev_classname, classname, sizeof g_classname_grenade) if (equal(classname, g_classname_grenade)) return true
return false }
create_smoke(const Float:origin[3]) { // engfunc because origin are float engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0) write_byte(TE_SMOKE) engfunc(EngFunc_WriteCoord, origin[0]) engfunc(EngFunc_WriteCoord, origin[1]) engfunc(EngFunc_WriteCoord, origin[2]) write_short(g_spriteid_steam1) write_byte(SMOKE_SCALE) write_byte(SMOKE_FRAMERATE) message_end() }
stock bool:is_hull_vacant(const Float:origin[3], hull) { new tr = 0 engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr) if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen)) return true return false }
Funciona todo pero hay un bug, si entro y tengo 800 $ me deja comprar la granada teletrasportadora y se bugea la money paso a tener 9200 $. Creo que tambien habria que chequear si el player esta vivo o muerto, para que no deje comprar cuando este muerto
Abria que agregar algo asi;
Código PHP: if (money < cost) { client_print(id, "^x04[TIENDA]^x01 No tienes suficiente dinero para comprar este item (costo: $%i)", cost) return PLUGIN_HANDLED }
cs_set_user_money(id, money - cost) client_print(id, "^x04[TIENDA]^x01 Has comprado una granada TELETRASPORTADORA") g_has_teleport[id] = true
return PLUGIN_HANDLED }
Desde ya muchas gracias a todos los participantes!
Mensajes: 3,077
Temas: 33
Registro en: May 2017
Reputación:
34
Código PHP: /* Plugin generated by AMXX-Studio , LA SOMBRA DEMONIACA */
#include <amxmodx> #include <cstrike> #include <hamsandwich> #include <fun> #include <fakemeta>
new bool:g_has_teleport[33];
public plugin_natives() { register_native("ctf_has_teleport", "native_ctf_has_teleport", 1); } public native_ctf_has_teleport(id) return g_has_teleport[id];
public plugin_init() { register_plugin("MenuParaCTF" , "1.0" , ".-*3L-S0SP3CH0S0*-.") register_clcmd("say /menu", "ctf_menu") register_clcmd("say barramenu", "ctf_menu") register_clcmd("say_team /menu" , "ctf_menu") register_clcmd("say_team barramenu", "ctf_menu") register_clcmd("nightvision" , "ctf_menu")
RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", true); }
public ham_PlayerSpawn_Post(id) { if (!is_user_alive(id)) return PLUGIN_CONTINUE;
g_has_teleport[id] = false;
return PLUGIN_CONTINUE; }
public ctf_menu(id) { new Menu = menu_create("\wMenu Principal", "menu_ctf") menu_additem(Menu, "\y[ \wTIENDA \y]^n" , "1", 0) menu_additem(Menu, "\y[ \wREVIVIR \y]" , "2", 0) menu_additem(Menu, "\y[ \wADRENALINA \y]" , "3", 0) menu_additem(Menu, "\y[ \wSOLTAR BANDERA \y]" , "4", 0) menu_additem(Menu, "\y[ \wAPAGAR LUZ BANDERA \y]^n" , "5", 0) menu_additem(Menu, "\y[ \wMUTEAR A ALGUIEN \y]" , "6", 0) menu_additem(Menu, "\y[ \wVER AYUDA \y]" , "7", 0) menu_additem(Menu, "\y[ \wMENU SERVERS \y]^n" , "8", 0) menu_additem(Menu, "\y[ \rMENU DE ADMIN \y]" , "9" , ADMIN_LEVEL_A) menu_setprop(Menu, MPROP_EXITNAME,"Salir") menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, Menu, 0) }
public menu_ctf(id, Menu, item) { if (item == MENU_EXIT) { menu_destroy(Menu) return PLUGIN_HANDLED } new iData[6], iAccess, iCallback, iName[64]; menu_item_getinfo(Menu, item, iAccess, iData, 5, iName, 63, iCallback) switch (str_to_num(iData)) { case 1: show_menu_sub(id); case 2: client_cmd (id, "say /spawn") case 3: client_cmd (id, "adrenaline") case 4: client_cmd (id, "say /dropflag") case 5: client_cmd (id, "say /lightsoff") case 6: client_cmd (id, "say /mute") case 7: client_cmd (id, "say /help") case 8: client_cmd (id, "say /server") case 9: client_cmd (id, "amxmodmenu") } return PLUGIN_HANDLED;
}
show_menu_sub(id) { new menu = menu_create("TIENDA", "menu_sub");
menu_additem(menu, "PARACAIDAS ($2000)", "1"); menu_additem(menu, "GRANADA TELETRASPORTADORA ($10000)", "2"); menu_additem(menu, "EN PROCESO DE ARMADO", "3"); menu_setprop(menu, MPROP_EXITNAME,"Salir") menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, menu, 0) } public menu_sub(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED }
if (!is_user_alive(id)) { chat_color(id, "^x04[TIENDA]^x01 Tienes que estar vivo para usar la tienda."); return PLUGIN_HANDLED; }
switch(item) { case 0: client_cmd (id, "say buy_parachute") case 1: { if (cs_get_user_money(id) < 10000) { chat_color(id, "^x04[TIENDA]^x01 No tienes dinero suficiente."); return PLUGIN_HANDLED; }
cs_set_user_money(id, cs_get_user_money(id) - 10000); chat_color(id, "^x04[TIENDA]^x01 COMPRASTE UNA GRANADA TELETRASPORTADORA"); g_has_teleport[id] = true; give_item(id, "weapon_smokegrenade"); } case 2: chat_color(id, "^x04[TIENDA]^x01 EN PROCESO DE ARMADO "); }
return PLUGIN_HANDLED; }
chat_color(id, const input[], any:...) { static message[191]; vformat(message, 190, input, 3); replace_all(message, 190, "!g", "^4"); replace_all(message, 190, "!t", "^3"); replace_all(message, 190, "!y", "^1"); message_begin((id) ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, get_user_msgid("SayText"), .player = id); write_byte((id) ? id : 33); write_string(message); message_end(); }
Mensajes: 169
Temas: 22
Registro en: Feb 2020
Reputación:
8
(22/04/2020, 09:22 PM)Chema escribió: Código PHP: /* Plugin generated by AMXX-Studio , LA SOMBRA DEMONIACA */
#include <amxmodx> #include <cstrike> #include <hamsandwich> #include <fun> #include <fakemeta>
new bool:g_has_teleport[33];
public plugin_natives() { register_native("ctf_has_teleport", "native_ctf_has_teleport", 1); } public native_ctf_has_teleport(id) return g_has_teleport[id];
public plugin_init() { register_plugin("MenuParaCTF" , "1.0" , ".-*3L-S0SP3CH0S0*-.") register_clcmd("say /menu", "ctf_menu") register_clcmd("say barramenu", "ctf_menu") register_clcmd("say_team /menu" , "ctf_menu") register_clcmd("say_team barramenu", "ctf_menu") register_clcmd("nightvision" , "ctf_menu")
RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", true); }
public ham_PlayerSpawn_Post(id) { if (!is_user_alive(id)) return PLUGIN_CONTINUE;
g_has_teleport[id] = false;
return PLUGIN_CONTINUE; }
public ctf_menu(id) { new Menu = menu_create("\wMenu Principal", "menu_ctf") menu_additem(Menu, "\y[ \wTIENDA \y]^n" , "1", 0) menu_additem(Menu, "\y[ \wREVIVIR \y]" , "2", 0) menu_additem(Menu, "\y[ \wADRENALINA \y]" , "3", 0) menu_additem(Menu, "\y[ \wSOLTAR BANDERA \y]" , "4", 0) menu_additem(Menu, "\y[ \wAPAGAR LUZ BANDERA \y]^n" , "5", 0) menu_additem(Menu, "\y[ \wMUTEAR A ALGUIEN \y]" , "6", 0) menu_additem(Menu, "\y[ \wVER AYUDA \y]" , "7", 0) menu_additem(Menu, "\y[ \wMENU SERVERS \y]^n" , "8", 0) menu_additem(Menu, "\y[ \rMENU DE ADMIN \y]" , "9" , ADMIN_LEVEL_A) menu_setprop(Menu, MPROP_EXITNAME,"Salir") menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, Menu, 0) }
public menu_ctf(id, Menu, item) { if (item == MENU_EXIT) { menu_destroy(Menu) return PLUGIN_HANDLED } new iData[6], iAccess, iCallback, iName[64]; menu_item_getinfo(Menu, item, iAccess, iData, 5, iName, 63, iCallback) switch (str_to_num(iData)) { case 1: show_menu_sub(id); case 2: client_cmd (id, "say /spawn") case 3: client_cmd (id, "adrenaline") case 4: client_cmd (id, "say /dropflag") case 5: client_cmd (id, "say /lightsoff") case 6: client_cmd (id, "say /mute") case 7: client_cmd (id, "say /help") case 8: client_cmd (id, "say /server") case 9: client_cmd (id, "amxmodmenu") } return PLUGIN_HANDLED;
}
show_menu_sub(id) { new menu = menu_create("TIENDA", "menu_sub");
menu_additem(menu, "PARACAIDAS ($2000)", "1"); menu_additem(menu, "GRANADA TELETRASPORTADORA ($10000)", "2"); menu_additem(menu, "EN PROCESO DE ARMADO", "3"); menu_setprop(menu, MPROP_EXITNAME,"Salir") menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, menu, 0) } public menu_sub(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED }
if (!is_user_alive(id)) { chat_color(id, "^x04[TIENDA]^x01 Tienes que estar vivo para usar la tienda."); return PLUGIN_HANDLED; }
switch(item) { case 0: client_cmd (id, "say buy_parachute") case 1: { if (cs_get_user_money(id) < 10000) { chat_color(id, "^x04[TIENDA]^x01 No tienes dinero suficiente."); return PLUGIN_HANDLED; }
cs_set_user_money(id, cs_get_user_money(id) - 10000); chat_color(id, "^x04[TIENDA]^x01 COMPRASTE UNA GRANADA TELETRASPORTADORA"); g_has_teleport[id] = true; give_item(id, "weapon_smokegrenade"); } case 2: chat_color(id, "^x04[TIENDA]^x01 EN PROCESO DE ARMADO "); }
return PLUGIN_HANDLED; }
chat_color(id, const input[], any:...) { static message[191]; vformat(message, 190, input, 3); replace_all(message, 190, "!g", "^4"); replace_all(message, 190, "!t", "^3"); replace_all(message, 190, "!y", "^1"); message_begin((id) ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, get_user_msgid("SayText"), .player = id); write_byte((id) ? id : 33); write_string(message); message_end(); }
Hoy lo probe y funciono, muchas gracias chemitaa!
|