Mensajes: 229
Temas: 59
Registro en: Jun 2015
Reputación:
0
06/07/2018, 09:41 PM
(Última modificación: 06/07/2018, 09:43 PM por Juan85.)
Código PHP: for(new i = 1;i <= MaxPlayers;i++) { if(is_user_connected(i)) { set_pev(i,pev_deadflag,DEAD_DEAD) cs_set_user_team(i,CS_TEAM_SPECTATOR) } }
Simplemente manda a spec a todos los jugadores.. Sucede que cuando hay muchos player en el servidor, se genera tal overflow que cae el servidor.
Antes habia un video que si te quedabas "bugeado" eligiendo la clase del team, y el admin mandaba todos a spec, caia el servidor.
Espero que puedan ayudarme.
Gracias!
Mensajes: 3,020
Temas: 49
Registro en: Oct 2013
Reputación:
33
Ingeniero agrónomo y desarrollador de Software.
tutoriales-allied
buscas un zp?
"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"
Merci Alliedmodders pour m'introduire dans la programmation.
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
07/07/2018, 12:21 AM
(Última modificación: 07/07/2018, 12:22 AM por Chamo..)
Estas saturando el servidor con tanto envió de mensajes en un ciclo ((1 x maxplayers) x jugador).
Para eso cambia los equipos como el ZP lo hace, si no quieres usar el modulo de arriba.
Mensajes: 229
Temas: 59
Registro en: Jun 2015
Reputación:
0
(07/07/2018, 12:21 AM)Chamo. escribió:
Estas saturando el servidor con tanto envió de mensajes en un ciclo ((1 x maxplayers) x jugador).
Para eso cambia los equipos como el ZP lo hace, si no quieres usar el modulo de arriba.
De que forma lo hace un ZP?
Mensajes: 13
Temas: 3
Registro en: Jan 2017
Reputación:
0
Es para mix maker verdad? Pudiste solucionarlo?
Mensajes: 229
Temas: 59
Registro en: Jun 2015
Reputación:
0
(09/07/2018, 08:11 PM)P3ste. escribió: Es para mix maker verdad? Pudiste solucionarlo?
a simple codigo no pude
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
Actualiza el equipo de forma non-reliable (unreliable).
Como te dije, tienes de ejemplo el ZP.
Mensajes: 229
Temas: 59
Registro en: Jun 2015
Reputación:
0
(10/07/2018, 12:22 AM)Chamo. escribió:
Actualiza el equipo de forma non-reliable (unreliable).
Como te dije, tienes de ejemplo el ZP.
La verdad que no se que significa eso...
Código PHP: /*================================================================================ -------------------------- -*- [CS] Teams API 1.2 -*- -------------------------- - Allows easily setting a player's team in CS and CZ - Lets you decide whether to send the TeamInfo message to update scoreboard - Prevents server crashes when changing all teams at once ================================================================================*/
#include <amxmodx> #include <cstrike> #include <fakemeta>
#define TEAMCHANGE_DELAY 0.1
#define TASK_TEAMMSG 200 #define ID_TEAMMSG (taskid - TASK_TEAMMSG)
// CS Player PData Offsets (win32) #define PDATA_SAFE 2 #define OFFSET_CSTEAMS 114
new const CS_TEAM_NAMES[][] = { "UNASSIGNED", "TERRORIST", "CT", "SPECTATOR" }
new Float:g_TeamMsgTargetTime new g_MsgTeamInfo, g_MsgScoreInfo new g_MaxPlayers
public plugin_init() { register_plugin("[CS] Teams API", "1.2", "WiLS") register_event("HLTV", "event_round_start", "a", "1=0", "2=0") g_MsgTeamInfo = get_user_msgid("TeamInfo") g_MsgScoreInfo = get_user_msgid("ScoreInfo") g_MaxPlayers = get_maxplayers() }
public plugin_natives() { register_library("cs_teams_api") register_native("cs_set_player_team", "native_set_player_team") }
public native_set_player_team(plugin_id, num_params) { new id = get_param(1) if (!is_user_connected(id)) { log_error(AMX_ERR_NATIVE, "[CS] Player is not in game (%d)", id) return false; } new CsTeams:team = CsTeams:get_param(2) if (team < CS_TEAM_UNASSIGNED || team > CS_TEAM_SPECTATOR) { log_error(AMX_ERR_NATIVE, "[CS] Invalid team %d", _:team) return false; } new update = get_param(3) fm_cs_set_user_team(id, team, update) return true; }
// Event Round Start public event_round_start() { // CS automatically sends TeamInfo messages // at roundstart for all players new id for (id = 1; id <= g_MaxPlayers; id++) remove_task(id+TASK_TEAMMSG) }
public client_disconnect(id) { remove_task(id+TASK_TEAMMSG) }
// Set a Player's Team stock fm_cs_set_user_team(id, CsTeams:team, send_message) { // Prevent server crash if entity's private data not initalized if (pev_valid(id) != PDATA_SAFE) return; // Already belongs to the team if (cs_get_user_team(id) == team) return; // Remove previous team message task remove_task(id+TASK_TEAMMSG) // Set team offset set_pdata_int(id, OFFSET_CSTEAMS, _:team) // Send message to update team? if (send_message) fm_user_team_update(id) }
// Send User Team Message (Note: this next message can be received by other plugins) public fm_cs_set_user_team_msg(taskid) { // Tell everyone my new team emessage_begin(MSG_ALL, g_MsgTeamInfo) ewrite_byte(ID_TEAMMSG) // player ewrite_string(CS_TEAM_NAMES[_:cs_get_user_team(ID_TEAMMSG)]) // team emessage_end() // Fix for AMXX/CZ bots which update team paramater from ScoreInfo message emessage_begin(MSG_BROADCAST, g_MsgScoreInfo) ewrite_byte(ID_TEAMMSG) // id ewrite_short(pev(ID_TEAMMSG, pev_frags)) // frags ewrite_short(cs_get_user_deaths(ID_TEAMMSG)) // deaths ewrite_short(0) // class? ewrite_short(_:cs_get_user_team(ID_TEAMMSG)) // team emessage_end() }
// Update Player's Team on all clients (adding needed delays) stock fm_user_team_update(id) { new Float:current_time current_time = get_gametime() if (current_time - g_TeamMsgTargetTime >= TEAMCHANGE_DELAY) { set_task(0.1, "fm_cs_set_user_team_msg", id+TASK_TEAMMSG) g_TeamMsgTargetTime = current_time + TEAMCHANGE_DELAY } else { set_task((g_TeamMsgTargetTime + TEAMCHANGE_DELAY) - current_time, "fm_cs_set_user_team_msg", id+TASK_TEAMMSG) g_TeamMsgTargetTime = g_TeamMsgTargetTime + TEAMCHANGE_DELAY } }
Encontre solo esto en el ZP de Kiske
Mensajes: 3,020
Temas: 49
Registro en: Oct 2013
Reputación:
33
(10/07/2018, 12:22 AM)Chamo. escribió:
Actualiza el equipo de forma non-reliable (unreliable).
Como te dije, tienes de ejemplo el ZP.
valga la redundancia
Ingeniero agrónomo y desarrollador de Software.
tutoriales-allied
buscas un zp?
"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"
Merci Alliedmodders pour m'introduire dans la programmation.
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
Código PHP: for(new i = 1;i <= MaxPlayers;i++) { if(is_user_connected(i)) { //set_pev(i,pev_deadflag,DEAD_DEAD) //css_set_user_team(i,CS_TEAM_SPECTATOR) set_pev(i, pev_deadflag, DEAD_DEAD); SetUserTeam(i, CS_TEAM_SPECTATOR); } }
#define M_OffsetPlayerTeam 114 #define M_OffsetCBasePlayerClass 5 #define M_TaskUpdateScoreBoardTeam 15000
new const CSZ_TeamNames[][] = { "UNASSIGNED", "TERRORIST", "CT", "SPECTATOR" };
bool:CSSetUserTeam(const I_Player, const CsTeams:I_Team, const bool:BO_UpdateScoreBoard = true) { if (pev_valid(I_Player) != 2) return false; if (GetUserTeam(I_Player) == I_Team) return false; set_pdata_int(I_Player, M_OffsetPlayerTeam, I_Team, M_OffsetCBasePlayerClass); if (BO_UpdateScoreBoard) set_task(0.1, "TASK_UpdateScoreBoardTeam", (I_Player + M_TaskUpdateScoreBoardTeam)); return true; }
CsTeams:CSGetUserTeam(const I_Player) { if (pev_valid(I_Player) != 2) return CS_TEAM_UNASSIGNED; return CsTeams:get_pdata_int(I_Player, M_OffsetPlayerTeam, M_OffsetCBasePlayerClass); }
public TASK_UpdateScoreBoardTeam(I_Player) { I_Player -= M_TaskUpdateScoreBoardTeam; message_begin(MSG_ALL, get_user_msgid("TeamInfo")); { write_byte(I_Player); write_string(CSZ_TeamNames[_:CSGetUserTeam(I_Player)]); } message_end(); }
|