BUG jointeam!
#1
Hay veces que loguea de spec y es cuando solo hay un player vivo de algun equipo! Que puede ser?

Código PHP:
public func_login_successid ) {
    switch(
g_modo)
    {
        case 
WESKERengclient_cmd(id"jointeam""1")
        case 
ASSASSINengclient_cmd(id"jointeam""2")
        case 
SNIPERengclient_cmd(id"jointeam""1")
        case 
SURVIVORengclient_cmd(id"jointeam""1")
        case 
NEMESISengclient_cmd(id"jointeam""2")
        case 
PRIMER_ZOMBIEengclient_cmd(id"jointeam", (getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
        case 
SWARMengclient_cmd(id"jointeam", (getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
        case 
MULTIPLE_INFECCIONengclient_cmd(id"jointeam", (getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
        case 
LEONengclient_cmd(id"jointeam""1")
        case 
PLAGUEengclient_cmd(id"jointeam", (getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
    }
    
    if(!
g_hudmodoONengclient_cmd(id"jointeam",(getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
    
    
engclient_cmd(id"joinclass""1")
    
    
g_estado[id] = CONECTADO
    
    
if((g_modo == PRIMER_ZOMBIE || g_modo == MULTIPLE_INFECCION) && g_hudmodoON)
        
set_task(0.1"Respawn" id)

Responder
#2
En vez de usar engclient_cmd () pasalos al equipo con fm_set_user_team (estoy del cel) fijate como lo hace el zp
Responder
#3
Código PHP:
new g_random33 ];

public 
func_login_successid ) {
    static 
random_teamrandom_team random_num(01)

    if(
random_team)
        
g_randomid ] = CS_TEAM_T
    
else
        
g_randomid ] = CS_TEAM_CT

    
switch( g_modo )
    {
        case 
WESKERSNIPERSURVIVORLEONForceJoinTeamidCS_TEAM_CT )
        case 
ASSASSINNEMESISForceJoinTeamidCS_TEAM_T )
        case 
PRIMER_ZOMBIESWARMMULTIPLE_INFECCIONPLAGUEForceJoinTeamid,  (getHumans() >= getZombies()) ? g_randomid ] : (getHumans() == CS_TEAM_CT CS_TEAM_T))
    }
    
    if(!
g_hudmodoONForceJoinTeamid,  (getHumans() >= getZombies()) ? g_randomid ] : (getHumans() == CS_TEAM_CT CS_TEAM_T))
}

const 
m_iVGUI 510;

public 
ForceJoinTeam( const id, const team )
{
    static 
iRestore;
    
    if ( ( 
iRestore get_pdata_intiId,m_iVGUI ) ) & 1<<
        
set_pdata_intiIdm_iVGUIiRestore & ~(1<<0) );
    
    
set_msg_blockget_user_msgid"ShowMenu" ), BLOCK_SET );
    
set_msg_blockget_user_msgid("VGUIMenu"), BLOCK_SET );
    
    
cs_set_user_teamidteam )

    
g_estado[id] = CONECTADO
    
    
if((g_modo == PRIMER_ZOMBIE || g_modo == MULTIPLE_INFECCION) && g_hudmodoON)
        
set_task(0.4"Respawn" id)
    
    
set_msg_blockget_user_msgid"ShowMenu" ), BLOCK_NOT );
    
set_msg_blockget_user_msgid("VGUIMenu"), BLOCK_NOT );
    
    if ( 
iRestore 1<<
        
set_pdata_intiIdm_iVGUIiRestore );


No se me ocurre una mejor forma pacman
Responder
#4
Necesito saber por que pasa eso u.u
Responder
#5
Veo el code y a vista se mira sin problemas....quizás sea en algunas verificaciones que salen malas. Igual yo lo haría así, lo mismo que lo tuyo, solo que mas ordenatito:

Código PHP:
enum
{
    
JOIN_TEAM_ONE,
    
JOIN_TEAM_TWO,
    
JOIN_RANDOM_TEAM_MAYBE
}

public 
func_login_successid 
{
    new 
I_JoinType;
    
    switch (
g_modo)
    {
        case 
WESKERI_JoinType JOIN_TEAM_ONE
        
case ASSASSINI_JoinType JOIN_TEAM_TWO
        
case SNIPERI_JoinType JOIN_TEAM_ONE
        
case SURVIVORI_JoinType JOIN_TEAM_ONE
        
case NEMESISI_JoinType JOIN_TEAM_TWO
        
case PRIMER_ZOMBIEI_JoinType JOIN_RANDOM_TEAM_MAYBE
        
case SWARMI_JoinType JOIN_RANDOM_TEAM_MAYBE
        
case MULTIPLE_INFECCIONI_JoinType JOIN_RANDOM_TEAM_MAYBE
        
case LEONI_JoinType JOIN_TEAM_ONE
        
case PLAGUEI_JoinType JOIN_RANDOM_TEAM_MAYBE
    
}
    
    switch (
I_JoinType)
    {
        case 
JOIN_TEAM_ONEengclient_cmd(id"jointeam""1")
        case 
JOIN_TEAM_TWOengclient_cmd(id"jointeam""2")
        case 
JOIN_RANDOM_TEAM_MAYBE:
        {
            if (
getHumans() >= getZombies())
                
engclient_cmd(id"jointeam""5")
            else
            {
                if (
getHumans() == 1)
                    
engclient_cmd(id"jointeam""1")
                else
                    
engclient_cmd(id"jointeam""2")
            }
        }
    }
    
    
// No se que tanta prioridad tenga la variable "g_hudmodoON", pero yo la dejo como lo tienes
    
if(!g_hudmodoON)
        
engclient_cmd(id"jointeam",(getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
        
    
engclient_cmd(id"joinclass""1")
    
    
g_estado[id] = CONECTADO
    
    
if((g_modo == PRIMER_ZOMBIE || g_modo == MULTIPLE_INFECCION) && g_hudmodoON)
        
set_task(0.1"Respawn" id)

Responder
#6
(03/04/2017, 05:24 PM)Chamo. escribió: Veo el code y a vista se mira sin problemas....quizás sea en algunas verificaciones que salen malas. Igual yo lo haría así, lo mismo que lo tuyo, solo que mas ordenatito:

Código PHP:
enum
{
    
JOIN_TEAM_ONE,
    
JOIN_TEAM_TWO,
    
JOIN_RANDOM_TEAM_MAYBE
}

public 
func_login_successid 
{
    new 
I_JoinType;
    
    switch (
g_modo)
    {
        case 
WESKERI_JoinType JOIN_TEAM_ONE
        
case ASSASSINI_JoinType JOIN_TEAM_TWO
        
case SNIPERI_JoinType JOIN_TEAM_ONE
        
case SURVIVORI_JoinType JOIN_TEAM_ONE
        
case NEMESISI_JoinType JOIN_TEAM_TWO
        
case PRIMER_ZOMBIEI_JoinType JOIN_RANDOM_TEAM_MAYBE
        
case SWARMI_JoinType JOIN_RANDOM_TEAM_MAYBE
        
case MULTIPLE_INFECCIONI_JoinType JOIN_RANDOM_TEAM_MAYBE
        
case LEONI_JoinType JOIN_TEAM_ONE
        
case PLAGUEI_JoinType JOIN_RANDOM_TEAM_MAYBE
    
}
    
    switch (
I_JoinType)
    {
        case 
JOIN_TEAM_ONEengclient_cmd(id"jointeam""1")
        case 
JOIN_TEAM_TWOengclient_cmd(id"jointeam""2")
        case 
JOIN_RANDOM_TEAM_MAYBE:
        {
            if (
getHumans() >= getZombies())
                
engclient_cmd(id"jointeam""5")
            else
            {
                if (
getHumans() == 1)
                    
engclient_cmd(id"jointeam""1")
                else
                    
engclient_cmd(id"jointeam""2")
            }
        }
    }
    
    
// No se que tanta prioridad tenga la variable "g_hudmodoON", pero yo la dejo como lo tienes
    
if(!g_hudmodoON)
        
engclient_cmd(id"jointeam",(getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
        
    
engclient_cmd(id"joinclass""1")
    
    
g_estado[id] = CONECTADO
    
    
if((g_modo == PRIMER_ZOMBIE || g_modo == MULTIPLE_INFECCION) && g_hudmodoON)
        
set_task(0.1"Respawn" id)


Funciona correctamente, debería ser la forma rancia que lo hice jaja
Responder
#7
Te funciona correctamente el tuyo o el que te di? aunque es lo miso Whatever
Ya se soluciono tu problema?
Responder
#8
(03/04/2017, 05:39 PM)Chamo. escribió: Te funciona correctamente el tuyo o el que te di? aunque es lo miso Whatever
Ya se soluciono tu problema?

Uh, no... volvi a testear y pasa lo mismo, igual que el anterior jaja (el tuyo)

y esto me pasa cuando hay un solo player vivo en cualquiera de los 2 teams
Responder
#9
¿Qué significa "Hay veces que loguea de spec"?
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#10
Insecure Pues no entiendo por que sucede.....mis sospechas según tus palabras, recaen en:

Código PHP:
if (getHumans() == 1

Pero no puedo decir nada, sin haber visto lo que hace/devuelve esa función.

En todo caso, quizás lo tomes en cuenta, podrías bloquear todo lo que tenga que ver con la selección de equipos.

Yo hice un post relacionado a ello, tal vez quieras darle una mirada

PD: @Treki, supongo que se refiere a que aveces el jugador se queda en spect, cuando debería entrar a un equipo.
Responder
#11
(03/04/2017, 05:51 PM)Treki escribió: ¿Qué significa "Hay veces que loguea de spec"?
No entra a ningun team, se queda de spec
Responder
#12
Probaste la forma de Ipolito?
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#13
(03/04/2017, 06:06 PM)Treki escribió: Probaste la forma de Ipolito?

Necesito que use el jointeam
Responder
#14
(03/04/2017, 06:16 PM)AGustiN escribió:
(03/04/2017, 06:06 PM)Treki escribió: Probaste la forma de Ipolito?

Necesito que use el jointeam

Lo usa, nada mas que en otra función aparte.
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#15
(03/04/2017, 06:17 PM)Treki escribió:
(03/04/2017, 06:16 PM)AGustiN escribió:
(03/04/2017, 06:06 PM)Treki escribió: Probaste la forma de Ipolito?

Necesito que use el jointeam

Lo usa, nada mas que en otra función aparte.

Entonces no me funciona correctamente

Código PHP:
public func_login_successid ) {
    switch(
g_modo)
    {
        case 
WESKERengclient_cmd(id"jointeam""1")
        case 
ASSASSINengclient_cmd(id"jointeam""2")
        case 
SNIPERengclient_cmd(id"jointeam""1")
        case 
SURVIVORengclient_cmd(id"jointeam""1")
        case 
NEMESISengclient_cmd(id"jointeam""2")
        case 
PRIMER_ZOMBIEengclient_cmd(id"jointeam", (getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
        case 
SWARMengclient_cmd(id"jointeam", (getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
        case 
MULTIPLE_INFECCIONengclient_cmd(id"jointeam", (getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
        case 
LEONengclient_cmd(id"jointeam""1")
        case 
PLAGUEengclient_cmd(id"jointeam", (getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
    }
    if(!
g_hudmodoONengclient_cmd(id"jointeam""5")
    
    
engclient_cmd(id"joinclass""1")
    
    
g_estado[id] = CONECTADO
    
    
if((g_modo == PRIMER_ZOMBIE || g_modo == MULTIPLE_INFECCION) && g_hudmodoON)
        
set_task(0.1"Respawn" id)
}

getZombies()
{
    static 
iZombies;
    static 
id;
    
    
iZombies 0;
    
    for(
id 1id <= g_maxplayers; ++id)
    {
        if(
is_user_alive(id) && g_zombie[id])
            ++
iZombies;
    }
    
    return 
iZombies;
}

getHumans()
{
    static 
iHumans;
    static 
id;
    
    
iHumans 0;
    
    for(
id 1id <= g_maxplayers; ++id)
    {
        if(
is_user_alive(id) && !g_zombie[id])
            ++
iHumans;
    }
    
    return 
iHumans;
}

public 
message_VGUIMenuiMsgidiDestid ) {
    if( 
g_estado[id] == CONECTADO  || get_msg_arg_int(1) != 2)
        return 
PLUGIN_HANDLED;
        
    
show_login_menuid );
    return 
PLUGIN_HANDLED;
}

public 
message_ShowMenuiMsgidiDestid ) {
    if( 
g_estado[id] == CONECTADO)
        return 
PLUGIN_CONTINUE;
    
    static 
sMenuCode33 ];
    
get_msg_arg_string4sMenuCodecharsmaxsMenuCode ) );
    
    if( 
containisMenuCode"Team_Select" ) != -)
        return 
PLUGIN_HANDLED;
    
    return 
PLUGIN_CONTINUE;

Responder
#16
(03/04/2017, 06:19 PM)AGustiN escribió:
Código PHP:
if(!g_hudmodoONengclient_cmd(id"jointeam""5"

Que hace eso?.
Responder
#17
Código PHP:
new g_random33 ][2];

public 
func_login_successid ) {
    static 
random_teamrandom_team random_num(01)

    if(
random_team)
        
g_randomid ] = "2"
    
else
        
g_randomid ] = "1"

    
switch( g_modo )
    {
        case 
WESKERSNIPERSURVIVORLEONForceJoinTeamid"1" )
        case 
ASSASSINNEMESISForceJoinTeamid"2" )
        case 
PRIMER_ZOMBIESWARMMULTIPLE_INFECCIONPLAGUEForceJoinTeamid,  (getHumans() >= getZombies()) ? g_randomid ] : (getHumans() == "1" "2"))
    }
    
    if(!
g_hudmodoONForceJoinTeamid,  (getHumans() >= getZombies()) ? g_randomid ] : (getHumans() == "1" "2"))
}

const 
m_iVGUI 510;

public 
ForceJoinTeam( const id, const team[] )
{
    static 
iRestore;
    
    if ( ( 
iRestore get_pdata_intiId,m_iVGUI ) ) & 1<<
        
set_pdata_intiIdm_iVGUIiRestore & ~(1<<0) );
    
    
set_msg_blockget_user_msgid"ShowMenu" ), BLOCK_SET );
    
set_msg_blockget_user_msgid("VGUIMenu"), BLOCK_SET );
    
    
engclient_cmd(id"jointeam"team)
    
engclient_cmd(id"joinclass""1")

    
g_estado[id] = CONECTADO
    
    
if((g_modo == PRIMER_ZOMBIE || g_modo == MULTIPLE_INFECCION) && g_hudmodoON)
        
set_task(0.4"Respawn" id)
    
    
set_msg_blockget_user_msgid"ShowMenu" ), BLOCK_NOT );
    
set_msg_blockget_user_msgid("VGUIMenu"), BLOCK_NOT );
    
    if ( 
iRestore 1<<
        
set_pdata_intiIdm_iVGUIiRestore );

Responder
#18
(03/04/2017, 06:43 PM)Ipolito escribió:
Código PHP:
new g_random33 ][2];

public 
func_login_successid ) {
    static 
random_teamrandom_team random_num(01)

    if(
random_team)
        
g_randomid ] = "2"
    
else
        
g_randomid ] = "1"

    
switch( g_modo )
    {
        case 
WESKERSNIPERSURVIVORLEONForceJoinTeamid"1" )
        case 
ASSASSINNEMESISForceJoinTeamid"2" )
        case 
PRIMER_ZOMBIESWARMMULTIPLE_INFECCIONPLAGUEForceJoinTeamid,  (getHumans() >= getZombies()) ? g_randomid ] : (getHumans() == "1" "2"))
    }
    
    if(!
g_hudmodoONForceJoinTeamid,  (getHumans() >= getZombies()) ? g_randomid ] : (getHumans() == "1" "2"))
}

const 
m_iVGUI 510;

public 
ForceJoinTeam( const id, const team[] )
{
    static 
iRestore;
    
    if ( ( 
iRestore get_pdata_intiId,m_iVGUI ) ) & 1<<
        
set_pdata_intiIdm_iVGUIiRestore & ~(1<<0) );
    
    
set_msg_blockget_user_msgid"ShowMenu" ), BLOCK_SET );
    
set_msg_blockget_user_msgid("VGUIMenu"), BLOCK_SET );
    
    
engclient_cmd(id"jointeam"team)
    
engclient_cmd(id"joinclass""1")

    
g_estado[id] = CONECTADO
    
    
if((g_modo == PRIMER_ZOMBIE || g_modo == MULTIPLE_INFECCION) && g_hudmodoON)
        
set_task(0.4"Respawn" id)
    
    
set_msg_blockget_user_msgid"ShowMenu" ), BLOCK_NOT );
    
set_msg_blockget_user_msgid("VGUIMenu"), BLOCK_NOT );
    
    if ( 
iRestore 1<<
        
set_pdata_intiIdm_iVGUIiRestore );


Sigue pasando lo mismo :/

(03/04/2017, 06:41 PM)hud escribió:
(03/04/2017, 06:19 PM)AGustiN escribió:
Código PHP:
if(!g_hudmodoONengclient_cmd(id"jointeam""5"

Que hace eso?.

cuando no hay modos g_hudmodoON esta en 0
Responder
#19
Why you dont use cs_set_user_team ?
Responder
#20
(03/04/2017, 10:24 PM)CrazY. escribió: Why you dont use cs_set_user_team ?

I've done it as a last resort Guiño



use jointeam "5" y luego use cs_set_user_team() no quedaba otra.

Gracias a todos Sonrisa
Responder
#21
(03/04/2017, 10:24 PM)CrazY. escribió: Why you dont use cs_set_user_team ?

Because, he set the player when is in the UNASSIGNED team, if you use cs_set_user_team native, the cam player and origins, not be refreshed, and the player will be BUG. Using jointeam command, isn't happen.

@AGustiN

No entiendo exactamente el problema. Podes explicarlo mejor?. Cuando es que sucede, como y que es lo que queres hacer?.
Responder
#22
(03/04/2017, 11:04 PM)hud escribió:
(03/04/2017, 10:24 PM)CrazY. escribió: Why you dont use cs_set_user_team ?

Because, he set the player when is in the UNASSIGNED team, if you use cs_set_user_team native, the cam player and origins, not be refreshed, and the player will be BUG. Using jointeam command, isn't happen.

@AGustiN

No entiendo exactamente el problema. Podes explicarlo mejor?. Cuando es que sucede, como y que es lo que queres hacer?.

El sistema de cuentas, al loguear llama a esa funcion, lo que pasa es que hay veces que no entra a ningun team, se queda de spectador!. Esto sucede cuando hay 1 player vivo en cualquiera de los 2 teams.
Responder
#23
Prueba esto:

(03/04/2017, 02:05 PM)AGustiN escribió:
Código PHP:
public func_login_successid ) {
    
set_pdata_int(id125, (get_pdata_int(id1255) & ~(1<<8)), 5)

    switch(
g_modo)
    {
        case 
WESKERengclient_cmd(id"jointeam""1")
        case 
ASSASSINengclient_cmd(id"jointeam""2")
        case 
SNIPERengclient_cmd(id"jointeam""1")
        case 
SURVIVORengclient_cmd(id"jointeam""1")
        case 
NEMESISengclient_cmd(id"jointeam""2")
        case 
PRIMER_ZOMBIEengclient_cmd(id"jointeam", (getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
        case 
SWARMengclient_cmd(id"jointeam", (getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
        case 
MULTIPLE_INFECCIONengclient_cmd(id"jointeam", (getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
        case 
LEONengclient_cmd(id"jointeam""1")
        case 
PLAGUEengclient_cmd(id"jointeam", (getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
    }
    
    if(!
g_hudmodoONengclient_cmd(id"jointeam",(getHumans() >= getZombies()) ? "5" : (getHumans() == "1" "2"))
    
    
engclient_cmd(id"joinclass""1")
    
    
g_estado[id] = CONECTADO
    
    
if((g_modo == PRIMER_ZOMBIE || g_modo == MULTIPLE_INFECCION) && g_hudmodoON)
        
set_task(0.5"Respawn" id// Ponlo así, evitaras bugs (créeme xD)

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

https://github.com/FEDERICOMB96
Responder
#24
(03/04/2017, 11:50 PM)AGustiN escribió:
(03/04/2017, 11:04 PM)hud escribió:
(03/04/2017, 10:24 PM)CrazY. escribió: Why you dont use cs_set_user_team ?

Because, he set the player when is in the UNASSIGNED team, if you use cs_set_user_team native, the cam player and origins, not be refreshed, and the player will be BUG. Using jointeam command, isn't happen.

@AGustiN

No entiendo exactamente el problema. Podes explicarlo mejor?. Cuando es que sucede, como y que es lo que queres hacer?.

El sistema de cuentas, al loguear llama a esa funcion, lo que pasa es que hay veces que no entra a ningun team, se queda de spectador!. Esto sucede cuando hay 1 player vivo en cualquiera de los 2 teams.

Algun plugin que haga interferencia ? Algun error en logs ?
Responder
#25
Ok.. I think now I understand.. If you execute the function before of player Spawn, dont will work?

Try search about logevent round start..
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)