Sistema de Habilidades (Adv-Vault)
#51
Por algo lo hice a través de una CVAR. Si tiene un mod donde ya tienen hookeado el chooseteam, lo setea en 0 a la CVAR y listo, sin problemas..Y usan el comando /hab para abrir el menú.. Es para la comodidad de cada uno
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#52
Muy bueno, capas lo pruebe
Responder
#53
Hola , me podes decir las variables que tengo que guardar para que se guarden las habilidades ? Gracias Gran sonrisa
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#54
edit:

al carajo lo que dije antes...

aver... si van a decir algo como "retorna X" decí el por que;

1ero.-

Código:
#define HAM_IGNORED        1    /**< Calls target function, returns normal value */
#define HAM_HANDLED        2    /**< Tells the module you did something, still calls target function and returns normal value */
#define HAM_OVERRIDE    3    /**< Still calls the target function, but returns whatever is set with SetHamReturn*() */
#define HAM_SUPERCEDE    4    /**< Block the target call, and use your return value (if applicable) (Set with SetHamReturn*()) */

2do.- Si tiene IGNORED y le decis pone HAM_HANDLED decí por que; como estaba al pedo me puse a ver el sdk;

Código:
extern bool gDoForwards;

// Return value pushes
#define PUSH_VOID() ReturnStack.push(new Data(RET_VOID, NULL));                OrigReturnStack.push(new Data(RET_VOID, NULL));
#define PUSH_INT() ReturnStack.push(new Data(RET_INTEGER, (void *)&ret));    OrigReturnStack.push(new Data(RET_INTEGER, (void *)&origret));
#define PUSH_FLOAT() ReturnStack.push(new Data(RET_FLOAT, (void *)&ret));    OrigReturnStack.push(new Data(RET_FLOAT, (void *)&origret));
#define PUSH_VECTOR() ReturnStack.push(new Data(RET_VECTOR, (void *)&ret)); OrigReturnStack.push(new Data(RET_VECTOR, (void *)&origret));
#define PUSH_CBASE() ReturnStack.push(new Data(RET_CBASE, (void *)&ret));    OrigReturnStack.push(new Data(RET_CBASE, (void *)&origret));
#define PUSH_STRING() ReturnStack.push(new Data(RET_STRING, (void *)&ret)); OrigReturnStack.push(new Data(RET_STRING, (void *)&origret));

// Pop off return values
#define POP() delete ReturnStack.front(); ReturnStack.pop(); delete OrigReturnStack.front(); OrigReturnStack.pop();

// Parameter value pushes
#define MAKE_VECTOR()                                                            \
    int iThis=PrivateToIndex(pthis);                                            \
    CVector<Data *> *__vec=new CVector<Data *>;                                    \
    ParamStack.push(__vec);                                                        \
    P_CBASE(pthis, iThis)

#define P_INT(___PARAM)                __vec->push_back(new Data(RET_INTEGER, (void *) & (___PARAM)));
#define P_FLOAT(___PARAM)            __vec->push_back(new Data(RET_FLOAT, (void *) & (___PARAM)));            
#define P_VECTOR(___PARAM)            __vec->push_back(new Data(RET_VECTOR, (void *) & (___PARAM)));
#define P_STR(___PARAM)                __vec->push_back(new Data(RET_STRING, (void *) & (___PARAM)));
#define P_CBASE(__PARAM, __INDEX)    __vec->push_back(new Data(RET_CBASE, (void *) & (__PARAM), reinterpret_cast<int *>(& (__INDEX))));
#define P_ENTVAR(__PARAM, __INDEX)    __vec->push_back(new Data(RET_ENTVAR, (void *) & (__PARAM), reinterpret_cast<int *>(& (__INDEX))));
#define P_TRACE(__PARAM)            __vec->push_back(new Data(RET_TRACE, (void *) (__PARAM)));
#define P_PTRVECTOR(__PARAM)        __vec->push_back(new Data(RET_VECTOR, (void *) (__PARAM)));
#define P_PTRFLOAT(__PARAM)            __vec->push_back(new Data(RET_FLOAT, (void *) (__PARAM)));
#define P_ITEMINFO(__PARAM)            __vec->push_back(new Data(RET_ITEMINFO, (void *) & (__PARAM)));

#define KILL_VECTOR()                                                            \
    CVector<Data *>::iterator end=__vec->end();                                    \
    for (CVector<Data *>::iterator i=__vec->begin(); i!=end; ++i)                \
    {                                                                            \
        delete (*i);                                                            \
    }                                                                            \
    delete __vec;                                                                \
    ParamStack.pop();

#define PRE_START()                                                                \
    bool DoForwards=gDoForwards;                                                \
    gDoForwards=true;                                                            \
    int result=HAM_UNSET;                                                        \
    ReturnStatus.push(&result);                                                    \
    int thisresult=HAM_UNSET;                                                    \
    if (DoForwards)                                                                \
    {                                                                            \
        CVector<Forward*>::iterator end=hook->pre.end();                        \
        for (CVector<Forward*>::iterator i=hook->pre.begin(); i!=end; i++)        \
        {                                                                        \
            if ((*i)->state == FSTATE_OK)                                        \
            {                                                                    \
                thisresult=MF_ExecuteForward((*i)->id,iThis

#define PRE_END()                                                \
                );                                                \
            }                                                    \
            if (thisresult > result)                            \
            {                                                    \
                result=thisresult;                                \
            }                                                    \
        }                                                        \
    }                                                            \
    if (result < HAM_SUPERCEDE)                                    \
    {

#define POST_START()                                                        \
    }                                                                        \
    if (DoForwards)                                                            \
    {                                                                        \
        CVector<Forward*>::iterator end=hook->post.end();                    \
        for (CVector<Forward*>::iterator i=hook->post.begin(); i!=end; i++)    \
        {                                                                    \
            if ((*i)->state == FSTATE_OK)                                    \
            {                                                                \
                MF_ExecuteForward((*i)->id,iThis

#define POST_END()                                                        \
                );                                                        \
            }                                                            \
        }                                                                \
    }                                                                    \
    ReturnStatus.pop();


#define CHECK_RETURN()                                                    \
        if (thisresult < HAM_OVERRIDE)                                    \
        {                                                                \
            return origret;                                                \
        }                                                                

#define CHECK_RETURN_STR()                                                \
        if (thisresult < HAM_OVERRIDE)                                    \
        {                                                                \
            return origret.c_str();                                        \
        }
#define CHECK_RETURN_VEC()                                                \
        if (thisresult < HAM_OVERRIDE)                                    \
        {                                                                \
            memcpy(out, &origret, sizeof(Vector));                        \
            return;                            \
        }

cuando se llama TakeDamage

Código:
int Hook_Int_Entvar_Entvar_Float_Int(Hook *hook, void *pthis, entvars_t *inflictor, entvars_t *attacker, float damage, int damagebits)
{
    int ret=0;
    int origret=0;
    PUSH_INT()
    int iInflictor=EntvarToIndex(inflictor);
    int iAttacker=EntvarToIndex(attacker);
    
    MAKE_VECTOR()
    P_ENTVAR(inflictor, iInflictor)
    P_ENTVAR(attacker, iAttacker)
    P_FLOAT(damage)
    P_INT(damagebits)

    PRE_START()
        ,iInflictor, iAttacker, damage, damagebits
    PRE_END()
    
    
#if defined _WIN32
    origret=reinterpret_cast<int (__fastcall*)(void*, int, entvars_t *, entvars_t *, float, int)>(hook->func)(pthis, 0, inflictor, attacker, damage, damagebits);
#elif defined __linux__
    origret=reinterpret_cast<int (*)(void*, entvars_t *, entvars_t *, float, int)>(hook->func)(pthis, inflictor, attacker, damage, damagebits);
#endif

    POST_START()
        ,iInflictor, iAttacker, damage, damagebits
    POST_END()

    KILL_VECTOR()
    POP()
    CHECK_RETURN()
    return ret;
}

Explicame que diferencia hay entre HAM_IGNORED y HAM_HANDLED; dejen de hablar de mas
Hi Milashkasiya CrabCrab

Soy un #Panda.. Soy solo un tipo que parece #común pero soy todo lo contrario; alguien #atípico en esta sociedad actual

[Imagen: xl0jvd-5.png]
Link
Responder
#55
(19/06/2014, 09:04 PM)K.- escribió: Hola , me podes decir las variables que tengo que guardar para que se guarden las habilidades ? Gracias Gran sonrisa

creo que ;

Código PHP:
gHab[id][i]
gPaginas[id][i
Responder
#56
Podrias explicar de paso como agregar una habilidad, pq con este sistema de habilidades que hiciste para agregar nuevas habs hay q cambiar varias cosas, alguien q no sabe mucho no podra hacerlo.
(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

**************************************************

Como hacer una Base de Datos para Sistema de Cuentas by r0ma
Responder
#57
(30/06/2014, 02:33 PM)Store.gh escribió: Podrias explicar de paso como agregar una habilidad, pq con este sistema de habilidades que hiciste para agregar nuevas habs hay q cambiar varias cosas, alguien q no sabe mucho no podra hacerlo.
El tema es que hice este sistema con las habilidades disponibles
Si van a agregar una habilidad es demasiado sensillo
Tienen que agregar una macro y con esa macro aumentas la habilidad.. Agregar las cvars para esa habilidad. cambiar los valores de las constantes (MAX_HAB) y modificar la constante donde guarda el nombre de la habilidad y el máximo. No es dificil solo eso
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#58
Yy yo creo que tambien hay que cambiar el resetear habilidades no te parece? Si agregas una , al apretar la opcion 7 queria la hab agregada aparecera la funcion del resetear habilidades..

Y si alguien no quiere hacer una habilidad con una macro o cvar? Que tendria que hacer? Porq por lo visto , si no lo hace con cvar o macro va a tirar error
(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

**************************************************

Como hacer una Base de Datos para Sistema de Cuentas by r0ma
Responder
#59
Es lo mismo.. No va a afectar en nada. Si lo haces o no con macros, o con cvars. No va a afectar al plugins. Son juegos de variables. No es muy difícil. Lo hice de una manera simple. Para el que quiera agregar alguna habilidad en especial, es muy facil. Esto es un plugin, el que lo quiera modificar, que se arregle él.
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#60
Ahh posta . Pq me preocupo en esto si es un plugin no un tut. Yo hice otro tipo de habs muy diferente a este. Este tipo de menu que usaste me viene bien para las mejoras Proud

A por cierto , no estoy seguro de q sea lo mismo el resetear habilidades... aparecera la funcion 2 veces pero una de ellas sera sin que te pida puntos, entendes lo que te digo?
(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

**************************************************

Como hacer una Base de Datos para Sistema de Cuentas by r0ma
Responder
#61
¡¡ ACTUALIZADO v3.0 !!

Hice bastantes cambios y muchos fixeos y modificaciones

Cualquier bug que encuentren no duden en postear.
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#62
en ClcmdHab mira por:
Código PHP:
if (gHab[id][i] >= Habilidades[i][MAXIMO]) 
            
formatex(g_szTextcharsmax(g_szText), "NIVEL DE \r%s\d MÄXIMO");
        else 
            
formatex(g_szTextcharsmax(g_szText), "%s \y[%d/%d]"Habilidades[i][NAME], gHab[id][i], Habilidades[i][MAXIMO]); 
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)

(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Responder
#63
Cuando tenga tiempo corrijo un par de cosas.. Gracias :3
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#64
Eu como lo abro las habilidades
APORTES
[...COMPLETO...] Mod Zombie Apocalypse 4.6 con mejoras V1.0[100%] Completo. Click aca
[...COMPLETO...]Mod Zombie Apocalypse 4.6 con mejoras V2.0 [100%] Completo. Click aca
[...ESPERA...] Plugin Niveles+ Habilidades MODO NORMAL [38%] Completado. PROXIMAMENTE
Responder
#65
(03/02/2015, 09:49 PM)Gastonspas escribió: Eu como lo abro las habilidades

/hab
Responder
#66
Cómo lo adapto al menú
Responder
#67
No me abre como lo abro el menu de habilidades
APORTES
[...COMPLETO...] Mod Zombie Apocalypse 4.6 con mejoras V1.0[100%] Completo. Click aca
[...COMPLETO...]Mod Zombie Apocalypse 4.6 con mejoras V2.0 [100%] Completo. Click aca
[...ESPERA...] Plugin Niveles+ Habilidades MODO NORMAL [38%] Completado. PROXIMAMENTE
Responder
#68
Ya se lo explique a Gastonspas por privado pero lo digo aca,
Si lo van a usar para un servidor y no quieren que la gente tenga que poner /hab cambien esto
Código PHP:
register_clcmd("say /hab""ClcmdHab"); 
->
Código PHP:
register_clcmd("menuhabilidades""ClcmdHab"); 
y hagan un hud avisando que tienen que bindear una tecla con "menuhabilidades"
es la linea 236
Responder
#69
Como hago para que se guarden los puntos por que se cambia de mapa y se pierden y tengo un plugin guaradado de cuenta alguien me podria decir como
APORTES
[...COMPLETO...] Mod Zombie Apocalypse 4.6 con mejoras V1.0[100%] Completo. Click aca
[...COMPLETO...]Mod Zombie Apocalypse 4.6 con mejoras V2.0 [100%] Completo. Click aca
[...ESPERA...] Plugin Niveles+ Habilidades MODO NORMAL [38%] Completado. PROXIMAMENTE
Responder
#70
(05/02/2015, 12:09 PM)Gastonspas escribió: Como hago para que se guarden los puntos por que se cambia de mapa y se pierden y tengo un plugin guaradado de cuenta alguien me podria decir como

Depende el sistema de guardado que tengas
Responder
#71
Actualizado a v4.0

Se me dió por actualizar este plugin. Lo mejoré bastante y puse muchas cosas (Vean Changelogs, igual no es tanto). Lo que si modifiqué bastante fue el código y unas natives para el que quiera usar los puntos y habilidades en otros plugins si quiere.

Alguna que otra sugerencia es bienvenida
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#72
(09/07/2015, 04:03 AM)CSAxel escribió: Actualizado a v4.0

Se me dió por actualizar este plugin. Lo mejoré bastante y puse muchas cosas (Vean Changelogs, igual no es tanto). Lo que si modifiqué bastante fue el código y unas natives para el que quiera usar los puntos y habilidades en otros plugins si quiere.

Alguna que otra sugerencia es bienvenida

Si o si es necesario utilizarlo en AMX 1.8.3?
Responder
#73
me sale este error
Error: Undefined symbol "Ham_CS_Player_ResetMaxSpeed" on line 283

Código PHP:
RegisterHam(Ham_CS_Player_ResetMaxSpeed"player""Ham_Player_ResetMaxSpeed_Post"true); 
Responder
#74
(20/11/2015, 12:42 PM)lucholichi escribió: me sale este error
Error: Undefined symbol "Ham_CS_Player_ResetMaxSpeed" on line 283

Código PHP:
RegisterHam(Ham_CS_Player_ResetMaxSpeed"player""Ham_Player_ResetMaxSpeed_Post"true); 

Proba añadiendo esto abajo de la linea 238:
Código PHP:
new Ham:Ham_CS_Player_ResetMaxSpeed Ham_Item_PreFrame 
Heber[S]ourcE
Veteran Member
in
Desvirtue
Tatakae
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)