(solucionado) agregar precio a granada teleport
#1
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.01.0}, {1.0, -1.0}, {-1.0, -1.0}, {-1.01.0}}

new 
g_spriteid_steam1
new g_eventid_createsmoke

public plugin_init() {
    
register_plugin(PLUGIN_NAMEPLUGIN_VERSIONPLUGIN_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_PrecacheEvent1"events/createsmoke.sc")
}

public 
forward_emitsound(entchannel, const sound[]) {
    if (!
equal(soundg_sound_explosion) || !is_grenade(ent))
        return 
FMRES_IGNORED

    
static idFloat:origin[3]
    
id pev(entpev_owner)
    
pev(entpev_originorigin)
    
engfunc(EngFunc_EmitSoundentCHAN_WEAPONg_sound_explosionVOL_NORMATTN_NORM0PITCH_NORM)
    
engfunc(EngFunc_RemoveEntityent)
    
origin[2] += SMOKE_GROUND_OFFSET
    create_smoke
(origin)

    if (
is_user_alive(id)) {
        static 
Float:mins[3], hull
        pev
(idpev_minsmins)
        
origin[2] -= mins[2] + SMOKE_GROUND_OFFSET
        hull 
pev(idpev_flags) & FL_DUCKING HULL_HEAD HULL_HUMAN
        
if (is_hull_vacant(originhull))
            
engfunc(EngFunc_SetOriginidorigin)
        else { 
// close to a solid object, trying to find a vacant spot
            
static Float:vec[3]
            
vec[2] = origin[2]
            for (new 
isizeof 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(vechull)) {
                    
engfunc(EngFunc_SetOriginidvec)
                    break
                }
            }
        }
    }

    return 
FMRES_SUPERCEDE
}

public 
forward_playbackevent(flagsinvokereventindex) {
    
// 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(entpev_classnameclassnamesizeof g_classname_grenade)
    if (
equal(classnameg_classname_grenade))
        return 
true

    
return false
}

create_smoke(const Float:origin[3]) {
    
// engfunc because origin are float
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin0)
    
write_byte(TE_SMOKE)
    
engfunc(EngFunc_WriteCoordorigin[0])
    
engfunc(EngFunc_WriteCoordorigin[1])
    
engfunc(EngFunc_WriteCoordorigin[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_TraceHulloriginorigin0hull0tr)
    if (!
get_tr2(trTR_StartSolid) && !get_tr2(trTR_AllSolid) && get_tr2(trTR_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(MenuMPROP_EXITNAME,"Salir")
    
menu_setprop(MenuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idMenu0)
}


public 
menu_ctf(idMenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(Menu)
        return 
PLUGIN_HANDLED
    

    
    new 
iData[6], iAccessiCallbackiName[64];
    
    
menu_item_getinfo(MenuitemiAccessiData5iName63iCallback)
    
    switch (
str_to_num(iData))
    {
            case 
1show_menu_sub(id);
            case 
2client_cmd (id"say /spawn")
            case 
3client_cmd (id"adrenaline")
       case 
4client_cmd (id"say /dropflag")
       case 
5client_cmd (id"say /lightsoff")
       case 
6client_cmd (id"say /mute")
            case 
7client_cmd (id"say /help")
       case 
8client_cmd (id"say /server")
       case 
9client_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(menuMPROP_EXITNAME,"Salir")
    
menu_setprop(menuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idmenu0)
}
public 
menu_sub(idmenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item)
    {
        case 
0client_cmd (id"say buy_parachute")
        case 
1ColorChat(idNORMAL"^x04[TIENDA]^x01 COMPRASTE UNA GRANADA TELETRASPORTADORA");
        case 
2ColorChat(idNORMAL"^x04[TIENDA]^x01 EN PROCESO DE ARMADO ");
     }
    
    return 
PLUGIN_HANDLED;


Desde ya muchas gracias atte; El Abuelo Excitedeyes
Responder
#2
¿Por qué no lo haces con natives? sería mucho mejor.
Corazón I dream of someday being able to have your near. Corazón
[Imagen: 76561199006140497.png]
Responder
#3
(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 Genius jaja descarge el plugin asi de la pagina oficial. por eso si se puede agregar a esto seria genial Whatever 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. Confundido . Paso a paso.
Responder
#4
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(MenuMPROP_EXITNAME,"Salir")
    
menu_setprop(MenuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idMenu0)
}


public 
menu_ctf(idMenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(Menu)
        return 
PLUGIN_HANDLED
    

    
    new 
iData[6], iAccessiCallbackiName[64];
    
    
menu_item_getinfo(MenuitemiAccessiData5iName63iCallback)
    
    switch (
str_to_num(iData))
    {
            case 
1show_menu_sub(id);
            case 
2client_cmd (id"say /spawn")
            case 
3client_cmd (id"adrenaline")
       case 
4client_cmd (id"say /dropflag")
       case 
5client_cmd (id"say /lightsoff")
       case 
6client_cmd (id"say /mute")
            case 
7client_cmd (id"say /help")
       case 
8client_cmd (id"say /server")
       case 
9client_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(menuMPROP_EXITNAME,"Salir")
    
menu_setprop(menuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idmenu0)
}
public 
menu_sub(idmenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item)
    {
        case 
0client_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(idcs_get_user_money(id) - 10000);
            
give_item(id"weapon_smokegrenade");
        }
        case 
2chat_color(id"^x04[TIENDA]^x01 EN PROCESO DE ARMADO ");
     }
    
    return 
PLUGIN_HANDLED;


chat_color(id, const input[], any:...)
{
    static 
message[191];
    
vformat(message190input3);
    
    
replace_all(message190"!g""^4");
    
replace_all(message190"!t""^3");
    
replace_all(message190"!y""^1");
    
    
message_begin((id) ? MSG_ONE_UNRELIABLE MSG_BROADCASTget_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.01.0}, {1.0, -1.0}, {-1.0, -1.0}, {-1.01.0}}

new 
g_spriteid_steam1
new g_eventid_createsmoke

native ctf_has_teleport
(id);

public 
plugin_init() {
    
register_plugin(PLUGIN_NAMEPLUGIN_VERSIONPLUGIN_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_PrecacheEvent1"events/createsmoke.sc")
}

public 
forward_emitsound(entchannel, const sound[]) {
    if (!
equal(soundg_sound_explosion) || !is_grenade(ent))
        return 
FMRES_IGNORED

    
static idFloat:origin[3]
    
id pev(entpev_owner)

    if (!
ctf_has_teleport(id))
        return 
FMRES_IGNORED;

    
pev(entpev_originorigin)
    
engfunc(EngFunc_EmitSoundentCHAN_WEAPONg_sound_explosionVOL_NORMATTN_NORM0PITCH_NORM)
    
engfunc(EngFunc_RemoveEntityent)
    
origin[2] += SMOKE_GROUND_OFFSET
    create_smoke
(origin)

    if (
is_user_alive(id)) {
        static 
Float:mins[3], hull
        pev
(idpev_minsmins)
        
origin[2] -= mins[2] + SMOKE_GROUND_OFFSET
        hull 
pev(idpev_flags) & FL_DUCKING HULL_HEAD HULL_HUMAN
        
if (is_hull_vacant(originhull))
            
engfunc(EngFunc_SetOriginidorigin)
        else { 
// close to a solid object, trying to find a vacant spot
            
static Float:vec[3]
            
vec[2] = origin[2]
            for (new 
isizeof 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(vechull)) {
                    
engfunc(EngFunc_SetOriginidvec)
                    break
                }
            }
        }
    }

    return 
FMRES_SUPERCEDE
}

public 
forward_playbackevent(flagsinvokereventindex) {
    
// 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(entpev_classnameclassnamesizeof g_classname_grenade)
    if (
equal(classnameg_classname_grenade))
        return 
true

    
return false
}

create_smoke(const Float:origin[3]) {
    
// engfunc because origin are float
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin0)
    
write_byte(TE_SMOKE)
    
engfunc(EngFunc_WriteCoordorigin[0])
    
engfunc(EngFunc_WriteCoordorigin[1])
    
engfunc(EngFunc_WriteCoordorigin[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_TraceHulloriginorigin0hull0tr)
    if (!
get_tr2(trTR_StartSolid) && !get_tr2(trTR_AllSolid) && get_tr2(trTR_InOpen))
        return 
true
    
    
return false

Responder
#5
(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 Genius jaja descarge el plugin asi de la pagina oficial. por eso si se puede agregar a esto seria genial Whatever 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. Confundido . Paso a paso.

Ese plugin de Alejandro-. funciona perfecto, te iba a ayudar pero ya Chema se me adelantó.
Corazón I dream of someday being able to have your near. Corazón
[Imagen: 76561199006140497.png]
Responder
#6
(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(MenuMPROP_EXITNAME,"Salir")
    
menu_setprop(MenuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idMenu0)
}


public 
menu_ctf(idMenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(Menu)
        return 
PLUGIN_HANDLED
    

    
    new 
iData[6], iAccessiCallbackiName[64];
    
    
menu_item_getinfo(MenuitemiAccessiData5iName63iCallback)
    
    switch (
str_to_num(iData))
    {
            case 
1show_menu_sub(id);
            case 
2client_cmd (id"say /spawn")
            case 
3client_cmd (id"adrenaline")
       case 
4client_cmd (id"say /dropflag")
       case 
5client_cmd (id"say /lightsoff")
       case 
6client_cmd (id"say /mute")
            case 
7client_cmd (id"say /help")
       case 
8client_cmd (id"say /server")
       case 
9client_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(menuMPROP_EXITNAME,"Salir")
    
menu_setprop(menuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idmenu0)
}
public 
menu_sub(idmenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item)
    {
        case 
0client_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(idcs_get_user_money(id) - 10000);
            
give_item(id"weapon_smokegrenade");
        }
        case 
2chat_color(id"^x04[TIENDA]^x01 EN PROCESO DE ARMADO ");
     }
    
    return 
PLUGIN_HANDLED;


chat_color(id, const input[], any:...)
{
    static 
message[191];
    
vformat(message190input3);
    
    
replace_all(message190"!g""^4");
    
replace_all(message190"!t""^3");
    
replace_all(message190"!y""^1");
    
    
message_begin((id) ? MSG_ONE_UNRELIABLE MSG_BROADCASTget_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.01.0}, {1.0, -1.0}, {-1.0, -1.0}, {-1.01.0}}

new 
g_spriteid_steam1
new g_eventid_createsmoke

native ctf_has_teleport
(id);

public 
plugin_init() {
    
register_plugin(PLUGIN_NAMEPLUGIN_VERSIONPLUGIN_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_PrecacheEvent1"events/createsmoke.sc")
}

public 
forward_emitsound(entchannel, const sound[]) {
    if (!
equal(soundg_sound_explosion) || !is_grenade(ent))
        return 
FMRES_IGNORED

    
static idFloat:origin[3]
    
id pev(entpev_owner)

    if (!
ctf_has_teleport(id))
        return 
FMRES_IGNORED;

    
pev(entpev_originorigin)
    
engfunc(EngFunc_EmitSoundentCHAN_WEAPONg_sound_explosionVOL_NORMATTN_NORM0PITCH_NORM)
    
engfunc(EngFunc_RemoveEntityent)
    
origin[2] += SMOKE_GROUND_OFFSET
    create_smoke
(origin)

    if (
is_user_alive(id)) {
        static 
Float:mins[3], hull
        pev
(idpev_minsmins)
        
origin[2] -= mins[2] + SMOKE_GROUND_OFFSET
        hull 
pev(idpev_flags) & FL_DUCKING HULL_HEAD HULL_HUMAN
        
if (is_hull_vacant(originhull))
            
engfunc(EngFunc_SetOriginidorigin)
        else { 
// close to a solid object, trying to find a vacant spot
            
static Float:vec[3]
            
vec[2] = origin[2]
            for (new 
isizeof 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(vechull)) {
                    
engfunc(EngFunc_SetOriginidvec)
                    break
                }
            }
        }
    }

    return 
FMRES_SUPERCEDE
}

public 
forward_playbackevent(flagsinvokereventindex) {
    
// 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(entpev_classnameclassnamesizeof g_classname_grenade)
    if (
equal(classnameg_classname_grenade))
        return 
true

    
return false
}

create_smoke(const Float:origin[3]) {
    
// engfunc because origin are float
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin0)
    
write_byte(TE_SMOKE)
    
engfunc(EngFunc_WriteCoordorigin[0])
    
engfunc(EngFunc_WriteCoordorigin[1])
    
engfunc(EngFunc_WriteCoordorigin[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_TraceHulloriginorigin0hull0tr)
    if (!
get_tr2(trTR_StartSolid) && !get_tr2(trTR_AllSolid) && get_tr2(trTR_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 Confundido

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(idmoney 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! Trolleyes
Responder
#7
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(MenuMPROP_EXITNAME,"Salir")
    
menu_setprop(MenuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idMenu0)
}


public 
menu_ctf(idMenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(Menu)
        return 
PLUGIN_HANDLED
    

    
    new 
iData[6], iAccessiCallbackiName[64];
    
    
menu_item_getinfo(MenuitemiAccessiData5iName63iCallback)
    
    switch (
str_to_num(iData))
    {
            case 
1show_menu_sub(id);
            case 
2client_cmd (id"say /spawn")
            case 
3client_cmd (id"adrenaline")
       case 
4client_cmd (id"say /dropflag")
       case 
5client_cmd (id"say /lightsoff")
       case 
6client_cmd (id"say /mute")
            case 
7client_cmd (id"say /help")
       case 
8client_cmd (id"say /server")
       case 
9client_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(menuMPROP_EXITNAME,"Salir")
    
menu_setprop(menuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idmenu0)
}
public 
menu_sub(idmenuitem)
{
    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 
0client_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(idcs_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 
2chat_color(id"^x04[TIENDA]^x01 EN PROCESO DE ARMADO ");
    }

    return 
PLUGIN_HANDLED;


chat_color(id, const input[], any:...)
{
    static 
message[191];
    
vformat(message190input3);
    
    
replace_all(message190"!g""^4");
    
replace_all(message190"!t""^3");
    
replace_all(message190"!y""^1");
    
    
message_begin((id) ? MSG_ONE_UNRELIABLE MSG_BROADCASTget_user_msgid("SayText"), .player id);
    
write_byte((id) ? id 33);
    
write_string(message);
    
message_end();

Responder
#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(MenuMPROP_EXITNAME,"Salir")
    
menu_setprop(MenuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idMenu0)
}


public 
menu_ctf(idMenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(Menu)
        return 
PLUGIN_HANDLED
    

    
    new 
iData[6], iAccessiCallbackiName[64];
    
    
menu_item_getinfo(MenuitemiAccessiData5iName63iCallback)
    
    switch (
str_to_num(iData))
    {
            case 
1show_menu_sub(id);
            case 
2client_cmd (id"say /spawn")
            case 
3client_cmd (id"adrenaline")
       case 
4client_cmd (id"say /dropflag")
       case 
5client_cmd (id"say /lightsoff")
       case 
6client_cmd (id"say /mute")
            case 
7client_cmd (id"say /help")
       case 
8client_cmd (id"say /server")
       case 
9client_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(menuMPROP_EXITNAME,"Salir")
    
menu_setprop(menuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idmenu0)
}
public 
menu_sub(idmenuitem)
{
    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 
0client_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(idcs_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 
2chat_color(id"^x04[TIENDA]^x01 EN PROCESO DE ARMADO ");
    }

    return 
PLUGIN_HANDLED;


chat_color(id, const input[], any:...)
{
    static 
message[191];
    
vformat(message190input3);
    
    
replace_all(message190"!g""^4");
    
replace_all(message190"!t""^3");
    
replace_all(message190"!y""^1");
    
    
message_begin((id) ? MSG_ONE_UNRELIABLE MSG_BROADCASTget_user_msgid("SayText"), .player id);
    
write_byte((id) ? id 33);
    
write_string(message);
    
message_end();


Hoy lo probe y funciono, muchas gracias chemitaa!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)