Enviar respuesta 
Ultimo Jugador que entro a CT
Autor Mensaje
meTaLiCroSS Sin conexión
Miembro Destacado


Buen Tutorial AMXX Support Pensador Trebol verde 1k
Mensajes: 1,420
Registro en: Oct 2013
Reputación: 52
Mensaje: #11
RE: Ultimo Jugador que entro a CT
Como lo hizo sasske es como lo estipule de un principio Proud

03/07/2016 11:24 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
timidop Sin conexión
Miembro


Mensajes: 162
Registro en: Dec 2014
Reputación: 0
Mensaje: #12
RE: Ultimo Jugador que entro a CT
(03/07/2016 10:43 PM)sasske escribió:  
(03/07/2016 10:34 PM)Matians escribió:  Siguiendo lo que dijo Metal, este a mí, me funciona bien.

Código PHP:
#include <amxmodx>

#define PLUGIN "Team join info"
#define VERSION "1.0"
#define AUTHOR "AMXX Community"

new Float:flLastEnter 0.0;
new 
LastCT = -1;

public 
plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
register_event"TeamInfo""join_team""a");

    
register_clcmd"say /last""last");
}


public 
join_team()
{    
    new 
id read_data(1);
    static 
user_team[32];
    
    
read_data(2user_team31)  ;  
    
    if(!
is_user_connected(id))
        return 
PLUGIN_CONTINUE;
    
    switch(
user_team[0])
    {
        case 
'C':  
        {
            
// player join to ct's
            
if ( get_gametime() >= flLastEnter ) {
                
LastCT id;
                
flLastEnter get_gametime();
            }
        }
        
        case 
'T'
        {
            
// player join to terrorist
        
}
        
        case 
'S':  
        {
            
// player join to spectators
        
}
    }
    return 
PLUGIN_CONTINUE;
}

public 
last(id)
{
    if ( !( 
LastCT ) ) return PLUGIN_HANDLED;

    static 
szPlayerName[33];

    
get_user_nameLastCTszPlayerNamecharsmaxszPlayerName ) );

    
client_printidprint_chat"Last player CT was %s"szPlayerName )

    return 
PLUGIN_CONTINUE;


Si el player que es last CT se va del sv, algo ahí no andará pacman

De hecho ni hace falta el tiempo ahí, no cambia nada Roflmao

Seria asi con lo que dijo metal, que me iluminó:

Código PHP:
/* First, save the file !   -   Sublime AMXX Editor v1.7 */

#include <amxmodx>
// #include <amxmisc>
// #include <cstrike>
// #include <engine>
// #include <fakemeta>
// #include <hamsandwich>
// #include <fun>
// #include <xs>
// #include <sqlx>

#define PLUGIN  "New Plug-In"
#define VERSION "1.0"
#define AUTHOR  "Author"

new Float:g_TimeLastCT[33]

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_event"TeamInfo""join_team""a")

    
register_clcmd("say /test""TestFunc")
}

public 
join_team()
{
    new 
id read_data(1)
    static 
team[32]
    
read_data(2team31)

    if(
equal(team"CT"))
        
g_TimeLastCT[id] = get_gametime()
}

public 
TestFunc(id)
{
    new 
LastCtID=-1Float:TempTime=0.0;
    for(new 
i=1<= get_maxplayers(); i++)
    {
        if(
g_TimeLastCT[i] > TempTime)
        {
            
TempTime g_TimeLastCT[i]
            
LastCtID i
        
}
    }

    if(
LastCtID == -1)
        
client_print(idprint_chat"No hay ultimo CT")
    else
        
client_print(idprint_chat"El ID del ultimo CT es %d"LastCtID)
    
    return 
PLUGIN_HANDLED


gracias por el aporte!, pero estoy yo de ultimo ct, mi id es 1, entra mi amigo con id 2, y me dice que el ultimo CT es el BRAVO!

pero cuando empieza una nueva ronda se buguea :/ y dice que el ultimo ct es el primero

(03/07/2016 10:34 PM)Matians escribió:  Siguiendo lo que dijo Metal, este a mí, me funciona bien.

Código PHP:
#include <amxmodx>

#define PLUGIN "Team join info"
#define VERSION "1.0"
#define AUTHOR "AMXX Community"

new Float:flLastEnter 0.0;
new 
LastCT = -1;

public 
plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
register_event"TeamInfo""join_team""a");

    
register_clcmd"say /last""last");
}


public 
join_team()
{    
    new 
id read_data(1);
    static 
user_team[32];
    
    
read_data(2user_team31)  ;  
    
    if(!
is_user_connected(id))
        return 
PLUGIN_CONTINUE;
    
    switch(
user_team[0])
    {
        case 
'C':  
        {
            
// player join to ct's
            
if ( get_gametime() >= flLastEnter ) {
                
LastCT id;
                
flLastEnter get_gametime();
            }
        }
        
        case 
'T'
        {
            
// player join to terrorist
        
}
        
        case 
'S':  
        {
            
// player join to spectators
        
}
    }
    return 
PLUGIN_CONTINUE;
}

public 
last(id)
{
    if ( !( 
LastCT ) ) return PLUGIN_HANDLED;

    static 
szPlayerName[33];

    
get_user_nameLastCTszPlayerNamecharsmaxszPlayerName ) );

    
client_printidprint_chat"Last player CT was %s"szPlayerName )

    return 
PLUGIN_CONTINUE;


funcionaa, pero se actualiza al ultimo ct, al inicio del siguiente round, necesito que lo chequee al final de la ronda

(Este mensaje fue modificado por última vez en: 04/07/2016 02:32 AM por timidop.)
04/07/2016 02:20 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Federicomb Sin conexión
Miembro Destacado


Plugin developer Trebol verde Trebol de oro 1k
Mensajes: 1,038
Registro en: Jan 2014
Reputación: 24
Mensaje: #13
RE: Ultimo Jugador que entro a CT
Prueba este:

Código PHP:
/* First, save the file !   -   Sublime AMXX Editor v1.8 */

#include <amxmodx>
// #include <amxmisc>
// #include <cstrike>
// #include <engine>
// #include <fakemeta>
// #include <hamsandwich>
// #include <fun>
// #include <xs>
// #include <sqlx>

#define PLUGIN  "New Plug-In"
#define VERSION "1.0"
#define AUTHOR  "Author"

new g_iJoinTeam[33];
new 
g_sJoinTeam[33];

new 
g_iMaxUsers 0;

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);

    
register_logevent("logevent__RoundEnd"2"1=Round_End");
    
    
register_message(get_user_msgid("TeamInfo"), "message__TeamInfo");

    
register_clcmd("say /test""ClientCommand__Test");

    
g_iMaxUsers get_maxplayers();
}

public 
logevent__RoundEnd() {
    static 
Float:fLastEndTime;
    static 
Float:fCurrentTime;
    
    
fCurrentTime get_gametime();
    
    if((
fCurrentTime fLastEndTime) < 0.5) {
        return;
    }
    
    
fLastEndTime fCurrentTime;

    
ClientCommand__Test(0);
}

public 
message__TeamInfo(const msg_id, const msg_dest){
    if(
msg_dest != MSG_ALL && msg_dest != MSG_BROADCAST) {
        return;
    }

    static 
id;
    
id get_msg_arg_int(1);

    static 
sTeam[2];
    
get_msg_arg_string(2sTeam1);

    
g_iJoinTeam[id] = 0;
    
g_sJoinTeam[id] = EOS;

    if(
sTeam[0] == 'C') {
        
g_iJoinTeam[id] = get_systime();
        
g_sJoinTeam[id] = 'C';
    }
}

public 
ClientCommand__Test(const id) {
    new 
i;
    new 
iLast 0;
    new 
iUserId 0;

    for(
1<= g_iMaxUsers; ++i) {
        if(
is_user_connected(i)) {
            if(
g_sJoinTeam[i] == 'C') {
                if(!
iUserId) {
                    
iUserId i;
                    
iLast g_iJoinTeam[i];
                }

                if(
g_iJoinTeam[i] > iLast) {
                    
iUserId i;
                    
iLast g_iJoinTeam[i];
                }
            }
        }
    }

    if(!
iUserId) {
        
client_print(idprint_chat"No hay ningun ultimo CT");
    } else {
        new 
sName[32];
        
get_user_name(iUserIdsNamecharsmax(sName));

        
client_print(idprint_chat"El ID del ultimo CT es: %d (%s)"iUserIdsName);
    }


Believe, be yourself and don't hold on to just one dream ❤


04/07/2016 03:18 AM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
timidop Sin conexión
Miembro


Mensajes: 162
Registro en: Dec 2014
Reputación: 0
Mensaje: #14
RE: Ultimo Jugador que entro a CT
(04/07/2016 03:18 AM)Federicomb escribió:  Prueba este:

Código PHP:
/* First, save the file !   -   Sublime AMXX Editor v1.8 */

#include <amxmodx>
// #include <amxmisc>
// #include <cstrike>
// #include <engine>
// #include <fakemeta>
// #include <hamsandwich>
// #include <fun>
// #include <xs>
// #include <sqlx>

#define PLUGIN  "New Plug-In"
#define VERSION "1.0"
#define AUTHOR  "Author"

new g_iJoinTeam[33];
new 
g_sJoinTeam[33];

new 
g_iMaxUsers 0;

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);

    
register_logevent("logevent__RoundEnd"2"1=Round_End");
    
    
register_message(get_user_msgid("TeamInfo"), "message__TeamInfo");

    
register_clcmd("say /test""ClientCommand__Test");

    
g_iMaxUsers get_maxplayers();
}

public 
logevent__RoundEnd() {
    static 
Float:fLastEndTime;
    static 
Float:fCurrentTime;
    
    
fCurrentTime get_gametime();
    
    if((
fCurrentTime fLastEndTime) < 0.5) {
        return;
    }
    
    
fLastEndTime fCurrentTime;

    
ClientCommand__Test(0);
}

public 
message__TeamInfo(const msg_id, const msg_dest){
    if(
msg_dest != MSG_ALL && msg_dest != MSG_BROADCAST) {
        return;
    }

    static 
id;
    
id get_msg_arg_int(1);

    static 
sTeam[2];
    
get_msg_arg_string(2sTeam1);

    
g_iJoinTeam[id] = 0;
    
g_sJoinTeam[id] = EOS;

    if(
sTeam[0] == 'C') {
        
g_iJoinTeam[id] = get_systime();
        
g_sJoinTeam[id] = 'C';
    }
}

public 
ClientCommand__Test(const id) {
    new 
i;
    new 
iLast 0;
    new 
iUserId 0;

    for(
1<= g_iMaxUsers; ++i) {
        if(
is_user_connected(i)) {
            if(
g_sJoinTeam[i] == 'C') {
                if(!
iUserId) {
                    
iUserId i;
                    
iLast g_iJoinTeam[i];
                }

                if(
g_iJoinTeam[i] > iLast) {
                    
iUserId i;
                    
iLast g_iJoinTeam[i];
                }
            }
        }
    }

    if(!
iUserId) {
        
client_print(idprint_chat"No hay ningun ultimo CT");
    } else {
        new 
sName[32];
        
get_user_name(iUserIdsNamecharsmax(sName));

        
client_print(idprint_chat"El ID del ultimo CT es: %d (%s)"iUserIdsName);
    }


FUNCIONA!,
ahora solo el ultimo problema no agarra a los qe son transferidos por set_user_team o cs_set_user_team

de verdad estoy muy agradecido por su ayuda seria estoy el tema estaria solucionado

04/07/2016 04:31 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
meTaLiCroSS Sin conexión
Miembro Destacado


Buen Tutorial AMXX Support Pensador Trebol verde 1k
Mensajes: 1,420
Registro en: Oct 2013
Reputación: 52
Mensaje: #15
RE: Ultimo Jugador que entro a CT
Los dramas que estas comentando son cosas que puedes solucionar a mano, el boceto esta listo, moldealo tu.

Si tienes dramas con la actualizacion mediante cs_set_user_team vas a tener que hacer una adaptacion a tu codigo ya que no es directamente hookeable.

04/07/2016 01:13 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
timidop Sin conexión
Miembro


Mensajes: 162
Registro en: Dec 2014
Reputación: 0
Mensaje: #16
RE: Ultimo Jugador que entro a CT
(04/07/2016 01:13 PM)meTaLiCroSS escribió:  Los dramas que estas comentando son cosas que puedes solucionar a mano, el boceto esta listo, moldealo tu.

Si tienes dramas con la actualizacion mediante cs_set_user_team vas a tener que hacer una adaptacion a tu codigo ya que no es directamente hookeable.

va mas alla a "la adaptacion de mi codigo" ya que lo digo por el plmenu que viene default en el amxx en el team menu ocupa la funcion cs_set_user_team, y no tengo idea como obtener al jugador si fue pasado por cs_set_user_team por algo lo estoy preguntando no? , y yo creo que muchos igual pueden tener la duda
aqui el code del plmenu.

Código PHP:
if (is_user_alive(player))
                {
                    new 
deaths cs_get_user_deaths(player)
                    
user_kill(player1)
                    
cs_set_user_deaths(playerdeaths)
                }
                
// This modulo math just aligns the option to the CsTeams-corresponding number
                
cs_set_user_team(player, (g_menuOption[id] % 3) + 1)
                
cs_reset_user_model(player

04/07/2016 06:16 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
meTaLiCroSS Sin conexión
Miembro Destacado


Buen Tutorial AMXX Support Pensador Trebol verde 1k
Mensajes: 1,420
Registro en: Oct 2013
Reputación: 52
Mensaje: #17
RE: Ultimo Jugador que entro a CT
Cita:Si tienes dramas con la actualizacion mediante cs_set_user_team vas a tener que hacer una adaptacion a tu codigo ya que no es directamente hookeable.

Código PHP:
cs_set_user_team(player, (g_menuOption[id] % 3) + 1

El jugador = player
El team = (g_menuOption[id] % 3) + 1

Costoso no es, es cosa de pensarlo.

Y te lo repetire con otras palabras con las que quizas entiendas, no llegare a dibujos tampoco.

El uso de cs_set_user_team no es hookeable por ningun metodo, tampoco por TeamInfo (debido que usa los engfunc que no generan callback)

O alguien edita el modulo CStrike, o tendras que cerdamente hookear frame por frame a ver si el team se cambio, lo que es altamente "no" recomendable

Por eso, recalco, reitero, renombro

Cita:vas a tener que hacer una adaptacion a tu codigo

Puedes usar natives, callbacks, como quieras. En la experiencia personal de esto, todo el codigo de mis modificaciones las dejo en 1 solo plugin ya que todo esta conectado de una u otra manera. En caso de tenerlo separado (como ya me fijé), recurra a los 2 mencionados arriba.

Y ahi esta la respuesta a los ""muchos"" que tienen la duda (no he visto ningún hasta el momento, que se pronuncien)

04/07/2016 06:41 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Enviar respuesta 


Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)

Contáctanos | Allied Modders en español | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS