duda cs_get_user_team y get_user_team - [N]drs - 01/08/2020
Intento obtener valores que da get_user_team usando el cs_get_user_team
tiene lógica lo que hice abajo?
lo probé y si funciona pero no estoy seguro si me llegará a dar error
Código PHP: public ver(id){ new team[11]; team = fix_team(id); //ahora usar "team" como si lo hubiera obtenido de get_user_team }
public fix_team(id){ new team[11] switch (cs_get_user_team(id)) { case CS_TEAM_UNASSIGNED: team = "UNASSIGNED" case CS_TEAM_T: team = "T" case CS_TEAM_CT: team = "CT" case CS_TEAM_SPECTATOR: team = "SPECTATOR" } return team }
RE: duda cs_get_user_team y get_user_team - SVC - 01/08/2020
Solo quiero comentar 3 cosas:
- No, no tiene nada de malo, y no deberia generar error alguno *normalmente*
- Como recomendacion, no deberias devolver un string en una funcion
- Lo que me llamo la atencion y lo que mas me interesa: ¿Por qué no utilizas get_user_team() propiamente?, para algo esta la native (solo como critica constructiva).
RE: duda cs_get_user_team y get_user_team - [N]drs - 01/08/2020
(01/08/2020, 08:18 PM)SVC escribió:
Solo quiero comentar 3 cosas:
- No, no tiene nada de malo, y no deberia generar error alguno *normalmente*
- Como recomendacion, no deberias devolver un string en una funcion
- Lo que me llamo la atencion y lo que mas me interesa: ¿Por qué no utilizas get_user_team() propiamente?, para algo esta la native (solo como critica constructiva).
2) vale, eso no sabía, psdt: no entendí el enlace xd
3) Al cambiar el equipo de un jugador
Código PHP: //Creo es así, estoy en cel cs_set_user_team(id, CS_TEAM_SPECTATOR)
Si uso el get_user_team
Me devuelve el team anterior antes del cambio
Pero si uso cs_get_user_team, sí me da team correcto
Este problema me da con el plugin de *crea tu propio hooksay*
Y por eso es que estaba haciendo lo del fix_team
RE: duda cs_get_user_team y get_user_team - SVC - 01/08/2020
(01/08/2020, 09:03 PM)[N]drs escribió: 3) Al cambiar el equipo de un jugador
Código PHP: //Creo es así, estoy en cel cs_set_user_team(id, CS_TEAM_SPECTATOR)
Si uso el get_user_team
Me devuelve el team anterior antes del cambio
Pero si uso cs_get_user_team, sí me da team correcto
Este problema me da con el plugin de *crea tu propio hooksay*
Y por eso es que estaba haciendo lo del fix_team
Código PHP: #include amxmodx #include cstrike
public plugin_init() { register_clcmd("set_team", "team"); register_clcmd("get_team", "get_team"); }
public team(id) { log_amx("team before: %d", get_user_team(id)); log_amx("cs-team before: %d", cs_get_user_team(id)); cs_set_user_team(id, CS_TEAM_T); log_amx("team after: %d", get_user_team(id)); log_amx("cs-team after: %d", cs_get_user_team(id)); }
public get_team(id) { log_amx("team: %d", get_user_team(id)); log_amx("cs-team: %d", cs_get_user_team(id)); }
output:
Código: ] set_team
L 08/01/2020 - 20:55:31: [test.amxx] team before: 2 (CT)
L 08/01/2020 - 20:55:31: [test.amxx] cs-team before: 2 (CT)
L 08/01/2020 - 20:55:31: [test.amxx] team after: 1 (T)
L 08/01/2020 - 20:55:31: [test.amxx] cs-team after: 1 (T)
Comando desconocido: set_team
] disconnect
Seguramente ese plugin de *crea tu propio hooksay* este infertiriendo; o algun otro plugin y/o codigo que utilizes en alguna parte.
RE: duda cs_get_user_team y get_user_team - [N]drs - 01/08/2020
(01/08/2020, 09:54 PM)SVC escribió: Código PHP: #include amxmodx #include cstrike
public plugin_init() { register_clcmd("set_team", "team"); register_clcmd("get_team", "get_team"); }
public team(id) { log_amx("team before: %d", get_user_team(id)); log_amx("cs-team before: %d", cs_get_user_team(id)); cs_set_user_team(id, CS_TEAM_T); log_amx("team after: %d", get_user_team(id)); log_amx("cs-team after: %d", cs_get_user_team(id)); }
public get_team(id) { log_amx("team: %d", get_user_team(id)); log_amx("cs-team: %d", cs_get_user_team(id)); }
output:
Código: ] set_team
L 08/01/2020 - 20:55:31: [test.amxx] team before: 2 (CT)
L 08/01/2020 - 20:55:31: [test.amxx] cs-team before: 2 (CT)
L 08/01/2020 - 20:55:31: [test.amxx] team after: 1 (T)
L 08/01/2020 - 20:55:31: [test.amxx] cs-team after: 1 (T)
Comando desconocido: set_team
] disconnect
Seguramente ese plugin de *crea tu propio hooksay* este infertiriendo; o algun otro plugin y/o codigo que utilizes en alguna parte.
Al setear a ct o tt anda normal, el problema ocurre cuando seteo Espectador
RE: duda cs_get_user_team y get_user_team - SVC - 01/08/2020
Código PHP: //... cs_set_user_team(id, CS_TEAM_T); //...
>>>
Código PHP: //... cs_set_user_team(id, CS_TEAM_SPECTATOR); //...
output:
Código: ] set_team
L 08/01/2020 - 22:00:48: [test.amxx] team before: 1 (T)
L 08/01/2020 - 22:00:48: [test.amxx] cs-team before: 1 (T)
L 08/01/2020 - 22:00:48: [test.amxx] team after: 3 (SPECT)
L 08/01/2020 - 22:00:48: [test.amxx] cs-team after: 3 (SPECT)
Comando desconocido: set_team
Insisto en que algun plugin y/o codigo que utilizas esta generando ese issue.
Puedes probar desactivando todos tus plugins y usar el que postee arriba, cambiando el equipo a Spec.
RE: duda cs_get_user_team y get_user_team - [N]drs - 01/08/2020
(01/08/2020, 11:02 PM)SVC escribió: Código PHP: //... cs_set_user_team(id, CS_TEAM_T); //...
>>>
Código PHP: //... cs_set_user_team(id, CS_TEAM_SPECTATOR); //...
output:
Código: ] set_team
L 08/01/2020 - 22:00:48: [test.amxx] team before: 1 (T)
L 08/01/2020 - 22:00:48: [test.amxx] cs-team before: 1 (T)
L 08/01/2020 - 22:00:48: [test.amxx] team after: 3 (SPECT)
L 08/01/2020 - 22:00:48: [test.amxx] cs-team after: 3 (SPECT)
Comando desconocido: set_team
Insisto en que algun plugin y/o codigo que utilizas esta generando ese issue.
Puedes probar desactivando todos tus plugins y usar el que postee arriba, cambiando el equipo a Spec. El error me sucede con el plugin de rangos csgo,
Supongamos que soy ct, al usar cs_set_user_team(id, CS_TEAM_SPECTATOR);
Y escribo, el chat coge los valores del ct y con solo escribir me cambia automáticamente al anterior team
Y la única solución fue usar el cs_get_user_team que con eso sí detecta bien
RE: duda cs_get_user_team y get_user_team - SVC - 01/08/2020
Y vaya a saber yo el codigo
Si no adjuntas nada, no puedo ayudarte
RE: duda cs_get_user_team y get_user_team - [N]drs - 02/08/2020
(01/08/2020, 11:22 PM)SVC escribió:
Y vaya a saber yo el codigo
Si no adjuntas nada, no puedo ayudarte
Código PHP: /*
ChangeLog:
1.0 = Version inicial 2.0 = * Correccion de errores * Cambio deathmsg por ham killed * Reescritura parcial de codigo * Soporte AMX 1.8.2 hasta 1.9.0 * Cvar para activar/desactivar la modificacion del chat
*/
#include <amxmisc> #include <hamsandwich> #include <fakemeta> #include <nfvault>
#if AMXX_VERSION_NUM < 183 #define client_disconnected client_disconnect
#define print_team_default 0
stock client_print_color(index, fakevar, const input[], any:...) { #pragma unused fakevar static szMsg[191], g_iMsgSayText; if(!g_iMsgSayText) g_iMsgSayText = get_user_msgid("SayText");
vformat(szMsg, 190, input, 3);
message_begin(index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, g_iMsgSayText, .player = index); write_byte(index ? index : 33); write_string(szMsg); message_end(); } #endif
#define VERSION "2.0"
new const Web[] = "HTTPS://KIKIZON.XYZ/"; // Se Muestra en HUD new const Prefijo[] = "^4[CS:GO] ^1"; // Prefijo en say new const Sonido[] = "rango/up.wav"; // Sonido Rango UP new const DataBase[] = "csgoranks"; // Nombre de la base de datos new const DB_key[] = "data_rangos"; // Llave de acceso db new const CHAT_FLAG = ADMIN_KICK; // Acceso requerido para el chat de admins
enum _:DATA { NOMBRE[30], FRAGS }
new const Rangos[][DATA] = { { "Sin Rango", 100 }, { "Silver I", 200 }, { "Silver II", 300 }, { "Silver III", 500 }, { "Silver IV", 700 }, { "Silver Elite", 800 }, { "Silver Elite Master", 900 }, { "Gold Nova I", 1000 }, { "Gold Nova II", 1200 }, { "Gold Nova III", 1300 }, { "Gold Nova Master", 1400 }, { "Master Guardian I",1500 }, { "Master Guardian II", 1700 }, { "Master Guardian Elite", 1800 }, { "Distinguished Master Guardian", 1900 }, { "Legendary Eagle", 2000 }, { "Legendary Eagle Master", 2100 }, { "Supreme Master First Class", 2200 }, { "The Global Elite", 2500 } }
new g_rango[33], g_frags[33]; new SyncHUD, g_maxplayers, g_playername[33][32];
#define TASK_HUD 67521 #define ID_HUD (taskid - TASK_HUD) #define is_valid_player(%0) is_user_connected(%0) || !is_user_bot(%0) || !is_user_hltv(%0)
new VaultRango[128], szRangos[180]; new cvar_Hud, cvar_knifex2, cvar_hsx2, cvar_hooksay;
public plugin_init() { register_plugin("Rangos CS:GO", VERSION, "kikizon / HTTPS://KIKIZON.XYZ/"); RegisterHam(Ham_Killed, "player", "ham_PlayerKilledPost", true); register_logevent("logevent_round_end", 2, "1=Round_End"); register_clcmd("say", "message_saytext"); register_clcmd("say_team", "message_sayteam"); cvar_Hud = register_cvar("rangos_hud", "1"); // 1 - Mostrar HUD | 0 - No Mostrar cvar_knifex2 = register_cvar("rangos_knifex2", "1"); // 1 - x2 frags con knife | 0 - ÑO :v cvar_hsx2 = register_cvar("rangos_hsx2", "1"); // 1 - x2 frags de HeadShot | 0 - ÑO :v cvar_hooksay = register_cvar("rangos_hooksay", "1"); // 1 - Modifica el say | 0 ÑO :v SyncHUD = CreateHudSyncObj(); g_maxplayers = get_maxplayers(); nfv_file(DataBase, VaultRango, charsmax(VaultRango)); }
public plugin_precache() { precache_sound(Sonido); }
public HUD(taskid) { new id = ID_HUD; if (!is_user_alive(id)) id = pev(id, pev_iuser2); if(id != ID_HUD) { set_hudmessage(255, 255, 255, 0.60, 0.67, 1, 6.0, 1.0); ShowSyncHudMsg(ID_HUD, SyncHUD, "Frags: %d || Rango: %s", g_frags[id], Rangos[g_rango[id]][NOMBRE]) } else { set_hudmessage(0, 255, 0, 0.0, 0.20, 1, 6.0, 1.0);
if(g_rango[id] == charsmax(Rangos)) { ShowSyncHudMsg( ID_HUD, SyncHUD, "=======================^n\ Frags: %d^n\ Rango: %s^n\ =======================^n\ TIENES EL RANGO MAXIMO!!!^n\ =======================^n\ %s", g_frags[id], Rangos[g_rango[id]][NOMBRE], Web ); } else { ShowSyncHudMsg( ID_HUD, SyncHUD, "=======================^n\ Frags: %d^n\ Rango: %s^n\ =======================^n\ Sig. Rango: %s^n\ Frags Restantes: %d^n\ =======================^n\ %s", g_frags[id], Rangos[g_rango[id]][NOMBRE], Rangos[g_rango[id]+1][NOMBRE], Rangos[g_rango[id]][FRAGS] - g_frags[id], Web ); } } }
public client_putinserver(id) { get_user_name(id, g_playername[id], 31); g_rango[id] = g_frags[id] = 0; Cargar(id); if(get_pcvar_num(cvar_Hud)) set_task(1.0, "HUD", id+TASK_HUD, _, _, "b"); }
public client_disconnected(id) { if(is_valid_player(id)) Guardar(id); remove_task(id+TASK_HUD) }
public logevent_round_end() { static id; for(id = 1; id <= g_maxplayers; ++id) { if(is_valid_player(id)) Guardar(id); } }
public ham_PlayerKilledPost(victim, attacker, sg) { if(!is_user_connected(victim) || !is_user_connected(attacker) || !attacker || attacker == victim) return HAM_IGNORED;
SetFrags(attacker, 1);
if(get_pcvar_num(cvar_knifex2) == 1 && get_user_weapon(attacker) == CSW_KNIFE) SetFrags(attacker, 1);
if(get_pcvar_num(cvar_hsx2) == 1 && get_pdata_int(victim, 75, 5) == HIT_HEAD) SetFrags(attacker, 1);
return HAM_IGNORED; }
SetFrags(index, frags) { g_frags[index] += frags;
static iRank; iRank = g_rango[index]; while( g_frags[index] >= Rangos[g_rango[index]][FRAGS] && g_rango[index] < charsmax(Rangos)) ++g_rango[index];
if(iRank < g_rango[index]) { client_print_color(index, print_team_default, "%s Felicidades subiste al rango: ^4%s", Prefijo, Rangos[g_rango[index]][NOMBRE]); client_cmd(index, "spk ^"%s^"", Sonido); } }
public message_saytext(id) { if(!get_pcvar_num(cvar_hooksay)) return PLUGIN_CONTINUE;
static said[192]; read_args(said, charsmax(said)); remove_quotes(said); if (said[0] == '@' || said[0] == '%' || said[0] == '/' || said[0] == '.' || said[0] == '!' || equal (said, "")) return PLUGIN_HANDLED;
if (!ValidMessage(said, 1)) return PLUGIN_CONTINUE; static color[11], i, team[11]; get_user_team(id,color,charsmax(color)); if(get_user_flags(id) & CHAT_FLAG) { format(said, charsmax(said), "^x01%s^x04%s ^x03%s ^x01: ^x04%s", is_user_alive(id) ? "" : "[MUERTO]", Rangos[g_rango[id]][NOMBRE], g_playername[id], said); } else { format(said, charsmax(said), "^x01%s^04%s ^x03%s ^x01: %s", is_user_alive(id) ? "" : "[MUERTO]", Rangos[g_rango[id]][NOMBRE], g_playername[id], said); } for (i = 1; i <= g_maxplayers; i++) { if (!is_user_connected(i)) continue; if(get_user_flags(i) & CHAT_FLAG || is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i)) { get_user_team(i, team, charsmax(team)); changeTeamInfo(i, color); writeMessage(i, said); changeTeamInfo(i, team); } }
return PLUGIN_HANDLED_MAIN; }
public message_sayteam(id) { if(!get_pcvar_num(cvar_hooksay)) return PLUGIN_CONTINUE;
static said[192]; read_args(said, charsmax(said)); remove_quotes(said); if (said[0] == '@' || said[0] == '%' || said[0] == '/' || said[0] == '.' || said[0] == '!' || equal (said, "")) return PLUGIN_HANDLED;
if (!ValidMessage(said, 1)) return PLUGIN_CONTINUE; static playerTeam, playerTeamName[19]; playerTeam = get_user_team(id); switch (playerTeam) { case 1: copy (playerTeamName, 6, "TE") case 2: copy (playerTeamName, 8, "CT") default: copy (playerTeamName, 11, "SPEC") }
static color[11], i, team[11]; get_user_team(id,color,charsmax(color));
if (get_user_flags(id) & CHAT_FLAG) { format(said, charsmax(said), "^x01%s [ %s ] ^x04%s ^x03%s ^x01: ^x04%s", is_user_alive(id) ? "" : "[MUERTO]", playerTeam, Rangos[g_rango[id]], g_playername[id], said); } else { format(said, charsmax(said), "^x01%s [ %s ] ^04%s ^x03%s ^x01: %s", is_user_alive(id) ? "" : "[MUERTO]", playerTeam, Rangos[g_rango[id]], g_playername[id], said); }
for (i = 1; i <= g_maxplayers; i++) { if (!is_user_connected(i)) continue; if (get_user_team(i) == playerTeam || get_user_flags(i) & CHAT_FLAG) { if (is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i)) { get_user_team(i, team, charsmax(team)); changeTeamInfo(i, color); writeMessage(i, said); changeTeamInfo(i, team); } } }
return PLUGIN_HANDLED_MAIN; }
public changeTeamInfo(player, team[]) { static g_msgTeamInfo; if(!g_msgTeamInfo) g_msgTeamInfo = get_user_msgid("TeamInfo");
message_begin(MSG_ONE, g_msgTeamInfo, _, player); write_byte(player); write_string(team); message_end(); }
public writeMessage(player, message[]) { static g_msgSayText; if(!g_msgSayText) g_msgSayText = get_user_msgid("SayText"); message_begin(MSG_ONE, g_msgSayText, {0, 0, 0}, player); write_byte(player); write_string(message); message_end(); }
Guardar(id) { formatex(szRangos, charsmax(szRangos), "%d %d", g_frags[id], g_rango[id]); nfv_set_data(VaultRango, DB_key, g_playername[id], szRangos); }
Cargar(id) { new g_load_c1[25], g_load_c2[25]; if(!nfv_get_data(VaultRango, DB_key, g_playername[id], szRangos, charsmax(szRangos))) return;
parse(szRangos, g_load_c1, charsmax(g_load_c1), g_load_c2, charsmax(g_load_c2));
g_frags[id] = str_to_num(g_load_c1); g_rango[id] = str_to_num(g_load_c2); }
stock ValidMessage(text[], maxcount) { static len, i, count; len = strlen(text);count = 0; if (!len) return false; for (i = 0; i < len; i++) { if (text[i] != ' ') { count++; if (count >= maxcount) return true; } } return false; }
Código PHP: public message_saytext(id) { if(!get_pcvar_num(cvar_hooksay)) return PLUGIN_CONTINUE;
static said[192]; read_args(said, charsmax(said)); remove_quotes(said); if (said[0] == '@' || said[0] == '%' || said[0] == '/' || said[0] == '.' || said[0] == '!' || equal (said, "")) return PLUGIN_HANDLED;
if (!ValidMessage(said, 1)) return PLUGIN_CONTINUE; static color[11], i, team[11]; get_user_team(id,color,charsmax(color)); if(get_user_flags(id) & CHAT_FLAG) { format(said, charsmax(said), "^x01%s^x04%s ^x03%s ^x01: ^x04%s", is_user_alive(id) ? "" : "[MUERTO]", Rangos[g_rango[id]][NOMBRE], g_playername[id], said); } else { format(said, charsmax(said), "^x01%s^04%s ^x03%s ^x01: %s", is_user_alive(id) ? "" : "[MUERTO]", Rangos[g_rango[id]][NOMBRE], g_playername[id], said); } for (i = 1; i <= g_maxplayers; i++) { if (!is_user_connected(i)) continue; if(get_user_flags(i) & CHAT_FLAG || is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i)) { get_user_team(i, team, charsmax(team)); changeTeamInfo(i, color); writeMessage(i, said); changeTeamInfo(i, team); } }
return PLUGIN_HANDLED_MAIN; }
Código PHP: get_user_team(i, team, charsmax(team)); changeTeamInfo(i, color); writeMessage(i, said); changeTeamInfo(i, team);
al usar el cs_set_user_team(id, CS_TEAM_SPECTATOR)
esta parte
get_user_team(i, team, charsmax(team));
al escribir en el cs, usa el team anterior y no el de spectador, ademas une al equipo anterior con solo escribir
pero funciona correctamente usando el cs_get_user_team
RE: duda cs_get_user_team y get_user_team - SVC - 02/08/2020
No entiendo que issue tienes con esa native; a mi me funciona sin problemas.
Tampoco he entendido al 100% lo que tratas de decir ("escribir en el cs", "usa el team anterior", "une al equipo anterior", "el chat coge los valores del ct y con solo escribir me cambia automáticamente al anterior team").
Recuerda que el color depende de quien envia el mensaje (id) y no de quien lo recibe (i), aunque en un momento dado los dos son lo mismo (yo envio el mensaje == yo recibo el mensaje == mi team-color == chat team-color)
RE: duda cs_get_user_team y get_user_team - [N]drs - 02/08/2020
(02/08/2020, 01:19 AM)SVC escribió:
No entiendo que issue tienes con esa native; a mi me funciona sin problemas.
Tampoco he entendido al 100% lo que tratas de decir ("escribir en el cs", "usa el team anterior", "une al equipo anterior", "el chat coge los valores del ct y con solo escribir me cambia automáticamente al anterior team").
Recuerda que el color depende de quien envia el mensaje (id) y no de quien lo recibe (i), aunque en un momento dado los dos son lo mismo (yo envio el mensaje == yo recibo el mensaje == mi team-color == chat team-color)
Estando en un equipo cualquiera, digamos ct, y a través de un menú ejecutar Código PHP: Silentkill(id)//no recuerdo cómo era en estos momentos cs_set_user_team(id, CS_TEAM_SPECTATOR)//después esto
al escribir en el chat debería detectar que el equipo es espectador, pero lo detecta como si aún fuera ct, aparte de que con solo escribir en el chat cambia el equipo a ct automáticamente
RE: duda cs_get_user_team y get_user_team - GabsHp - 02/08/2020
(02/08/2020, 01:38 AM)[N]drs escribió: al escribir en el chat debería detectar que el equipo es espectador, pero lo detecta como si aún fuera ct, aparte de que con solo escribir en el chat cambia el equipo a ct automáticamente
No sé a que te refieres, o cual es el error. Yo probé el código y me funca perfecto, detecta bien el team del jugador y no te cambia a ningún equipo.
RE: duda cs_get_user_team y get_user_team - [N]drs - 02/08/2020
Bueno a mi me da error, pero mientras el fix no tenga error creo que está bien xd
RE: duda cs_get_user_team y get_user_team - meTaLiCroSS - 02/08/2020
Sería bueno que ambos pusieran el output de su amxx version, así descartan
|