Rep1n Дата: Суббота, 13.09.2014, 22:00 | Сообщение # 1
Сообщения: 7
Награды: 0
Замечания:
Странно, что за все 24 страницы (почти 600 тем) только 1 тема насчет плагина "RESPAWN ": http://perfect-soft.su/forum/56-1993-1 Пункт 1 - Плагин от Contra63 В ней выложен плагин от пользователя Contra63 и там реализована одна полезная вещь: удаление выпавшего оружия через 15 секунд. Потестировал данный плагин в игре против ботов, бага с удалением выброшенной бомбы нету и посоветовал админу поставить на сервер вармода. Он поставил, я зашел на сервер и увидел, что через некоторое время игроков бросает в спектры, они появляются на респе в виде противника, и 1 игрок может создать своих несколько копий. Меня тоже через какое-то время тоже бросило в спектры: стрелять и бегать мог, но свои же тиммейты начали по мне палить - значит я был в форме противника. Пункт 2 - Плагин от f117bomb Раньше у меня был сервер вармода и там был "древний" плагин от f117bomb: https://forums.alliedmods.net/showthread.php?t=3120
/* AMX Mod X script.
*
* © Copyright 2002-2003, f117bomb
* This file is provided as is (no warranties).
*
* *******************************************************************************
*
* Ported By KingPin(
kingpin@onexfx.com ). I take no responsibility
* for this file in any way. Use at your own risk. No warranties of any kind.
*
* *******************************************************************************
*
* Set Cvar 'amx_respawn' 1 or 0
*
*/
#include <amxmodx>
#include <fun>
public TeamSelect(id)
{
if (get_cvar_num("amx_respawn") == 1) {
new sId[2]
sId[0] = id
set_task(10.0,"respawn",0,sId,2)
}
return PLUGIN_CONTINUE
}
public death_msg()
{
if (get_cvar_num("amx_respawn") == 1) {
new vIndex = read_data(2)
new svIndex[2]
svIndex[0] = vIndex
set_task(0.5,"respawn",0,svIndex,2)
}
return PLUGIN_CONTINUE
}
public respawn(svIndex[])
{
new vIndex = svIndex[0]
if(get_user_team(vIndex) == 3 || is_user_alive(vIndex))
return PLUGIN_CONTINUE
spawn(vIndex)
return PLUGIN_CONTINUE
}
public plugin_init()
{
register_plugin("amx_respawn","0.9.4","f117bomb")
register_event("DeathMsg","death_msg","a")
register_event("ShowMenu","TeamSelect","b","4&Team_Select")
register_event("VGUIMenu","TeamSelect","b","1=2")
register_cvar("amx_respawn","0")
return PLUGIN_CONTINUE
}
Был ли там баг с возрождением спектров не скажу. Пункт 3 - Разные плагины с инета Также в инете я нашел разные варианты плагина "respawn": respawn_AndrewZ respawn_atambo
#include <amxmodx> #include <fakemeta> #include <fun> #include <cstrike> public plugin_init() { register_plugin("respawn","1.0","atambo") register_cvar("sv_respawn","1") register_event("DeathMsg","on_Death","a") register_forward(FM_SetModel,"check_model",0) } public on_Death() { if(get_cvar_num("sv_respawn")!=1) return PLUGIN_CONTINUE new id = read_data(2) set_task(0.5,"player_spawn",id) set_task(0.7,"player_spawn",id) return PLUGIN_CONTINUE } public player_spawn(id) { if (!is_user_connected(id)) return PLUGIN_CONTINUE if(cs_get_user_team(id)==CS_TEAM_SPECTATOR) return PLUGIN_CONTINUE spawn(id) return PLUGIN_CONTINUE } public check_model(id) { if(get_cvar_num("sv_respawn")!=1) return PLUGIN_CONTINUE if(!is_user_connected(id) || is_user_alive(id)) return PLUGIN_CONTINUE new model[32] cs_get_user_model(id,model,31) if(containi(model,"urban")!=-1 || containi(model,"terror")!=-1 || containi(model,"leet")!=-1 || containi(model,"arctic")!=-1 || containi(model,"gsg")!=-1 || containi(model,"gign")!=-1 || containi(model,"sas")!=-1 || containi(model,"guerilla")!=-1 || containi(model,"vip")!=-1) { set_task(0.5,"player_spawn",id) set_task(0.7,"player_spawn",id) } return PLUGIN_CONTINUE }
respawn_Flicker
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <hamsandwich> #define PLUGIN "Simple Respawn" #define VERSION "1.0" #define AUTHOR "Flicker" new MainCvar new CvarTime public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) MainCvar = register_cvar("amx_respawn", "1") CvarTime = register_cvar("amx_respawn_time", "0.1") RegisterHam(Ham_Killed, "player", "Death", 1) } public client_putinserver( id ) { set_task( 2.0, "Respawn", id ) } public Death(id) { if(!is_user_connected(id) || !get_pcvar_num(MainCvar)) return set_task(get_pcvar_float(CvarTime), "Respawn", id) } public Respawn(id) { if(is_user_alive(id) || cs_get_user_team(id) == CS_TEAM_SPECTATOR) return ExecuteHamB(Ham_CS_RoundRespawn, id) }
respawn_underwoker
#include <amxmodx> #include <hamsandwich> public plugin_init() { register_plugin("repsawn", "0.1", "underwoker") RegisterHam(Ham_Killed, "player", "Killed") } public Killed(id) { set_hudmessage(255, 0, 0, -1.0, -1.0, 1, 6.0, 10.0) show_hudmessage(id, "Вы возродитесь через 3 секунды") message_begin(MSG_ONE, 108, {0, 0, 0}, id) write_byte(3) write_byte(0) message_end() set_task(3.0, "respawn", id) } public respawn(id) ExecuteHamB(Ham_CS_RoundRespawn, id) public client_disconnect(i_player) { if(task_exists(i_player)) remove_task(i_player) }
Просьба посмотреть на код и подсказать какой из плагинов самый лучший . И главное чтобы он не возрождал спектров. Один из этих 4-х плагинов вроде вообще не возрождал. Также на серверах часто ставят плагины которые бросают игроков в спектры через Х-секунд после простоя (AFK плагины ) или же плагины автозахода за команду (вас автоматически бросает за Т или КТ ), так вот можно по коду понять возможны ли баги/конфликта respawn-плагины с этими ? Если кто не жадный и имеет подобный плагин, то просьба поделиться. Скачать плагины respawn обсуждаемые в этой теме : http://rghost.ru/57998516
Сообщение отредактировал Rep1n - Суббота, 13.09.2014, 22:13
B@RB@DO$ Дата: Воскресенье, 14.09.2014, 14:53 | Сообщение # 2
Сообщения: 72
Награды: 0
Замечания:
Rep1n , Вот попробуй этот от Sh0oT3R
Код
#include <amxmodx> #include <amxmisc> #include <hamsandwich> #include <fakemeta> #define PLUGIN "Advanced ReSpawn Addon" #define VERSION "1.0" #define AUTHOR "Sh0oT3R" new hudSyncCountdown new cvar_respawn, cvar_resp_time, cvar_sp, cvar_sptime, cvar_countdown, cvar_sp_cd, cvar_respawn_rand; new respawn_timeleft[33], sp_timeleft[33] public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /respawn", "respawn") // Type this to respawn yourself cvar_sp = register_cvar("arsa_sp", "1") // Enable/Disable Spawn Protection cvar_sptime = register_cvar("arsa_sptime", "3") // Timer for Spawn Protection cvar_sp_cd = register_cvar("arsa_sp_countdown", "0") // Spawn Protection countdown type. 0 - Disable, 1 - Client Print, 2 - Hud Message. cvar_respawn = register_cvar("arsa_respawn","1") // Enable/Disable Respawn cvar_resp_time = register_cvar("arsa_respawn_time", "3.0") // Timer for Respawn cvar_respawn_rand = register_cvar("arsa_respawn_randomized", "0") // Enable/Disable random team spawn cvar_countdown = register_cvar("arsa_respawn_countdown", "0") // Respawn coundown type. 0 - Disable, 1 - Client Print, 2 - Hud Message. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled") RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1) hudSyncCountdown = CreateHudSyncObj(); } public client_disconnect(id) { remove_task(id) } public fw_PlayerKilled(victim, attacker, shouldgib) { if(get_pcvar_num(cvar_respawn)) { new Float:g_Resp_Time = get_pcvar_float(cvar_resp_time) respawn_timeleft [victim]= floatround(g_Resp_Time) respawn_countdown(victim); set_task(g_Resp_Time, "respawn",victim) } return PLUGIN_HANDLED } public respawn_countdown(id) { if(!is_user_connected(id) || is_user_alive(id) || !get_pcvar_num(cvar_countdown)) { respawn_timeleft [id]= 0; return; } if(get_pcvar_num(cvar_countdown) == 1) { if(respawn_timeleft [id]== 1) client_print(id,print_center,"You will respawn in %i second", respawn_timeleft[id]); else client_print(id,print_center,"You will respawn in %i seconds", respawn_timeleft[id]); } if(get_pcvar_num(cvar_countdown) == 2) { if(respawn_timeleft [id]== 1) { set_hudmessage(255,255,255,-1.0,0.75,0,6.0,1.0,0.1,0.5); ShowSyncHudMsg(id,hudSyncCountdown,"You will respawn in %i second",respawn_timeleft[id]); } else { set_hudmessage(255,255,255,-1.0,0.75,0,6.0,1.0,0.1,0.5); ShowSyncHudMsg(id,hudSyncCountdown,"You will respawn in %i seconds",respawn_timeleft[id]); } } if(--respawn_timeleft [id]>= 1) set_task(1.0,"respawn_countdown",id); } public respawn(id) { new random_team = random_num(1,2) if(get_pcvar_num(cvar_respawn_rand)) fm_cs_set_user_team(id, random_team) if(get_pcvar_num(cvar_respawn) && !is_user_alive(id)) ExecuteHamB(Ham_CS_RoundRespawn, id) } public fw_PlayerSpawn_Post(id) { if(get_pcvar_num(cvar_sp) && (is_user_alive(id) || is_user_bot(id))) { set_task(0.1, "sp_on", id) } } public sp_on(id) { new Float:g_SpTime = get_pcvar_float(cvar_sptime) sp_timeleft [id]= floatround(g_SpTime) set_pev(id, pev_takedamage, 0.0) if(get_user_team(id) == 1) { fm_set_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 25) } if(get_user_team(id) == 2) { fm_set_rendering(id, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 25) } sp_countdown(id) set_task(g_SpTime, "sp_off", id) return PLUGIN_HANDLED } public sp_countdown(id) { if(!get_pcvar_num(cvar_sp_cd)) { return; } new r,g,b if(get_user_team(id) == 1) { r = 255 g = 0 b = 0 } if(get_user_team(id) == 2) { r = 0 g = 0 b = 255 } if(get_pcvar_num(cvar_sp_cd) == 1) { if(sp_timeleft [id]== 1) client_print(id,print_center,"Spawn Protection is enabled for %i second", sp_timeleft[id]); else client_print(id,print_center,"Spawn Protection is enabled for %i seconds", sp_timeleft[id]); } if(get_pcvar_num(cvar_sp_cd) == 2) { if(sp_timeleft [id]== 1) { set_hudmessage(r,g,b,-1.0,0.75,0,6.0,1.0,0.1,0.5); ShowSyncHudMsg(id,hudSyncCountdown,"Spawn Protection is enabled for %i second",sp_timeleft[id]); } else { set_hudmessage(r,g,b,-1.0,0.75,0,6.0,1.0,0.1,0.5); ShowSyncHudMsg(id,hudSyncCountdown,"Spawn Protection is enabled for %i seconds",sp_timeleft[id]); } } if(--sp_timeleft [id]>= 1) set_task(1.0,"sp_countdown",id); } public sp_off(id) { if(!is_user_connected(id) ) { return PLUGIN_HANDLED } else { set_pev(id, pev_takedamage, 1.0) fm_set_rendering(id) return PLUGIN_HANDLED } return PLUGIN_HANDLED } stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) { static Float:color[3] color[0] = float(r) color[1] = float(g) color[2] = float(b) set_pev(entity, pev_renderfx, fx) set_pev(entity, pev_rendercolor, color) set_pev(entity, pev_rendermode, render) set_pev(entity, pev_renderamt, float(amount)) } stock fm_cs_set_user_team(id, team) { set_pdata_int(id, 114, team, 5) } // Sorry but I have no time to optimize plugin /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par } */
Rep1n Дата: Вторник, 16.09.2014, 00:29 | Сообщение # 5
Сообщения: 7
Награды: 0
Замечания:
Спс за 2-й плагин. ПУНКТ 1 Протестировал на PODBots плагин респауна от Sho0ter с 3 разными плагинами AFK (конечно по отдельности): - AFK Manager v1.6 by Leon McVeran (https://forums.alliedmods.net/showthread.php?t=125317) - Hobo AFK Management (https://forums.alliedmods.net/showthread.php?t=69622) - AFK contol от "Freedo.m | neygomon " и получил один тот же результат: после простоя ХХ секунд меня бросает в спектры, а значит 3 плагина AFK работают отлично. Но при этом я будучи (до спектров) террористом появляюсь спектром на своей базе но уже в форме КТ и террористы начинают меня валить . При этом меня легко убить так как сам я конечно не могу стрелять, а тем кто меня убивает наверное зачисляется опыт. Нажав TAB я вижу себя в спектрах и при убийствах в правом верхнем углу мой ник серым цветом. Та же история и с плагином от Contra63 - появляюсь на своей респе спектром в форме противника и свои боты начинают меня валить. ПУКНТ 2 А вот с плагином "simple_respawn " от "fl0wer / Safety1st " все отлично: меня перебрасывает в спектры и сразу вид переключается на бота, никакого возрождения на респе нету. Протестировал снова на 3-х плагинах AFK и почти уверен, что баг появляется не из-за кривых (недоработанных) плагинов "AFK", а из-за кривых плагинов "respawn ". Нужно еще только проверить не появятся ли баги при мгновенном респауне игрока или равном 1 секунде. ВЫВОД: возможно из тех плагинов, что я выложил выше тоже есть НЕбагнутые (позже проверю), но мне не понять насколько они хуже или лучше оптимизированы, чем плагин "simple_respawn ". Так что вопрос к программистам остается открытым =)
Сообщение отредактировал Rep1n - Вторник, 16.09.2014, 13:42