Связал Lite Translit с паутинкой и добавил кое что.
Теперь выдает проблему с svc_bad
Цитата
28305 0008 svc_time
28305 0013 svc_clientdata
28305 0018 svc_deltapacketentities
28309 0008 svc_time
28309 0013 svc_clientdata
28309 0018 svc_deltapacketentities
28313 0008 svc_time
28313 0013 svc_clientdata
28313 0018 svc_deltapacketentities
28316 0008 svc_time
28316 0013 svc_clientdata
28316 0018 svc_deltapacketentities
28320 0008 svc_time
28320 0013 svc_clientdata
28320 0018 svc_deltapacketentities
28323 0008 svc_time
28323 0013 svc_clientdata
28323 0018 svc_deltapacketentities
28326 0008 svc_time
28326 0013 svc_clientdata
28326 0018 svc_deltapacketentities
28329 0008 svc_time
28329 0013 svc_clientdata
28329 0018 svc_deltapacketentities
28334 0008 svc_time
28334 0013 svc_clientdata
28334 0018 svc_deltapacketentities
28338 0008 svc_time
28338 0013 svc_clientdata
28338 0018 svc_deltapacketentities
28338 0024 svc_temp_entity
BAD: 126:svc_bad
Host_Error: CL_ParseServerMessage: I
Помогите исправить потоки передач .-.
Код:
#include <amxmodx>
#include <fun>
#include <cstrike>
#include <amxmisc>
#include <ColorChat>
#include <engine>
#include <hamsandwich>
#include <csx>
// #define ADBLOCK
// #define TAGS
// #define AES
// #define ADMIN_ALLCHAT
#define ADMIN ADMIN_MENU
#if defined TAGS
#define GL_ADMIN ADMIN_RCON
#define VIP ADMIN_LEVEL_H
#define GREEN_MSG
new iSetPlayerTag, iMessageTag[33][64]
#endif
#if defined AES
#include <aes_main>
#endif
#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
#define clr_bit(%1,%2) %1 &= ~(1 << (%2 & 31))
new Ent
new iIgnorePlayer, iPlayerRus[33], iPlayerRusInfo[33]
#if defined ADBLOCK
new blockedMsgsCounter, approvedMsgsCounter
new blocked_msgs[128][192], approved_msgs[128][192]
#endif
new const eng[][]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","{","}",":",'"',"<",">","~","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","[","]",";","'",",",".","`","?","/","@","$","^^","&"};
new const rus[][]={"Ф","И","С","В","У","А","П","Р","Ш","О","Л","Д","Ь","Т","Щ","З","Й","К","Ы","Е","Г","М","Ц","Ч","Н","Я","Х","Ъ","ж","Э","Б","Ю","Ё","ф","и","с","в","у","а","п","р","ш","о","л","д","ь","т","щ","з","й","к","ы","е","г","м","ц","ч","н","я","х","ъ","ж","э","б","ю","ё",",",".","'",";", ":","?"};
new racce[255], g_Racce[33];
new stats[8],bodyhits[8],irank;
new bool:canusehook[32]
new bool:ishooked[32]
new hookorigin[32][3]
new blockhook[33]
new Sbeam
public plugin_init()
{
register_plugin("KNF HERO", "1.0", "OverGame")
register_event("ResetHUD","ResetHUD","abe")
register_cvar("knf_version", "1.0", FCVAR_SERVER | FCVAR_SPONLY)
register_message(get_user_msgid("SayText"), "HookSay")
register_clcmd("say /rus", "LangRus")
register_clcmd("say /eng", "LangEng")
register_clcmd("say /racce", "racce_menu")
register_clcmd("racce", "racce_menu")
RegisterHam(Ham_Spawn, "player", "Spawn_player", 1)
register_clcmd("+shook","hook_on")
register_clcmd("-shook","hook_off")
register_dictionary("knf_hero.txt" )
}
public plugin_precache()
{
precache_sound("hook/hook.wav")
Sbeam = precache_model("sprites/hook/hook.spr")
}
#if defined ADBLOCK
public plugin_cfg()
{
new file_path[64], configsdir[64]
get_localinfo("amxx_configsdir", configsdir, charsmax(configsdir))
formatex(file_path, 63,"%s/lt_blockmessages.ini", configsdir)
new file = fopen(file_path, "rt")
if(file)
{
new buffer[192], i, j
while(!feof(file))
{
fgets(file, buffer, 191)
trim(buffer)
if(!buffer[0] || buffer[0] == ';') continue
if(buffer[0] != '!')
{
blocked_msgs[i++] = buffer
blockedMsgsCounter++
}
else
{
buffer[0] = '^x20'
trim(buffer)
approved_msgs[j++] = buffer
approvedMsgsCounter++
}
}
fclose(file)
}
else log_to_file("error_lt.log", "[Error] File ^"%s^" not found!", file_path)
}
#endif
public Spawn_player(id)
{
if(is_user_alive(id) && is_user_connected(id))
{
blockhook[id] = 0
}
}
public client_putinserver(id)
{
remove_hook(id)
g_Racce[id] = 1;
racce[id] = 0;
if(is_user_hltv(id) || is_user_bot(id))
{
set_bit(iIgnorePlayer, id)
return
}
#if defined TAGS
if(get_bit(iSetPlayerTag, id)) return
switch(CheckFlags(id))
{
case 0: iMessageTag[id] = ""
case 1: iMessageTag[id] = "^4[Гл. Админ] "
case 2: iMessageTag[id] = "^4[Админ] "
case 3: iMessageTag[id] = "^4[VIP] "
}
set_bit(iSetPlayerTag, id)
#endif
set_task(1.0, "task_hudmsg", id, _, _, "b")
}
public client_disconnect(id)
{
remove_hook(id)
clr_bit(iIgnorePlayer, id)
#if defined TAGS
clr_bit(iSetPlayerTag, id)
#endif
}
public ResetHUD(id){
irank = get_user_stats(id,stats,bodyhits)
if(g_Racce[id] == 1) {
racce_menu(id)
g_Racce[id] = 0;
}
if(racce[id] == 2){
set_entity_visibility(id,50)
set_entity_visibility(Ent,50)
ColorChat(id, GREEN, "^x4[KNF DM] ^x1Ваш ранг ^x3%d ^x1из ^x3%d ^x1(Раса: ^x3Невидимка^x1)", irank, get_statsnum())
}
if(racce[id] == 1){
set_user_health(id, 100)
ColorChat(id, GREEN, "^x4[KNF DM] ^x1Ваш ранг ^x3%d ^x1из ^x3%d ^x1(Раса: ^x3Танк^x1)", irank, get_statsnum())
}
if(racce[id] == 0){
ColorChat(id, GREEN, "^x4[KNF DM] ^x1Ваш ранг ^x3%d ^x1из ^x3%d ^x1(Раса: ^x3Неизвестно^x1)", irank, get_statsnum())
}
if(racce[id] == 3){
ColorChat(id, GREEN, "^x4[KNF DM] ^x1Ваш ранг ^x3%d ^x1из ^x3%d ^x1(Раса: ^x3Шаман^x1)", irank, get_statsnum())
}
}
public racce_menu(id){
static s_MenuItem[64]
formatex(s_MenuItem, charsmax(s_MenuItem), "\d[KNF DM] \rМеню рас:")
new menu = menu_create(s_MenuItem, "func_racce" )
menu_additem(menu, "\yТанк \d[100 HP]","1")
menu_additem(menu, "\yНевидимка \d[50%]","2")
menu_additem(menu, "\yШаман \d[Паутинка]","3")
menu_setprop(menu, MPROP_BACKNAME, "Назад")
menu_setprop(menu, MPROP_NEXTNAME, "Далее")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_display(id,menu,0)
return PLUGIN_HANDLED
}
public func_racce(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6], iName[64], access, callback
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1:{
racce[id] = 1;
}
case 2:{
racce[id] = 2;
}
case 3:{
racce[id] = 3;
}
}
return PLUGIN_HANDLED
}
public hook_on(id,level,cid)
{
new szMode[32]
get_cvar_string("deathrun_mode", szMode, charsmax( szMode ))
if(equal(szMode, "DUEL"))
return PLUGIN_HANDLED
new szName[32];
get_user_name(id, szName, charsmax(szName));
if(racce[id] == 3)
{
if(!canusehook[id-1] && !cmd_access(id,level,cid,1))
{
return PLUGIN_HANDLED
}
if(blockhook[id] < 2)
{
get_user_origin(id,hookorigin[id-1],3)
ishooked[id-1] = true
++blockhook[id]
emit_sound(id,CHAN_STATIC,"hook/hook.wav",1.0,ATTN_NORM,0,PITCH_NORM)
set_task(0.1,"hook_task",id,"",0,"ab")
hook_task(id)
}
else
{
ColorChat(id, GREEN, "^x4[KNF DM] ^x03Запрещено^x01. Вы использовали все^x03 2 ^x01раза.")
return PLUGIN_HANDLED
}
}
else
{
ColorChat(id, RED, "^x4[KNF DM] ^x01Паутинка доступна для класса ^x03Шаман")
}
return PLUGIN_HANDLED
}
public is_hooked(id)
{
return ishooked[id-1]
}
public hook_off(id)
{
remove_hook(id)
set_task(1.0, "task_hudmsg", id, _, _, "b")
return PLUGIN_HANDLED
}
public hook_task(id)
{
if(!is_user_connected(id) || !is_user_alive(id))
{
remove_hook(id)
}
remove_beam(id)
draw_hook(id)
new origin[3], Float:velocity[3]
get_user_origin(id,origin)
new distance = get_distance(hookorigin[id-1],origin)
if(distance > 25)
{
velocity[0] = (hookorigin[id-1][0] - origin[0]) * (2.0 * 400 / distance)
velocity[1] = (hookorigin[id-1][1] - origin[1]) * (2.0 * 400 / distance)
velocity[2] = (hookorigin[id-1][2] - origin[2]) * (2.0 * 400 / distance)
entity_set_vector(id,EV_VEC_velocity,velocity)
}
else
{
entity_set_vector(id,EV_VEC_velocity,Float:{0.0,0.0,0.0})
remove_hook(id)
}
}
public draw_hook(id)
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(1) // TE_BEAMENTPOINT
write_short(id) // entid
write_coord(hookorigin[id-1][0]) // origin
write_coord(hookorigin[id-1][1]) // origin
write_coord(hookorigin[id-1][2]) // origin
write_short(Sbeam) // sprite index
write_byte(0) // start frame
write_byte(0) // framerate
write_byte(100) // life
write_byte(10) // width
write_byte(0) // noise
if(get_user_team(id) == 1) { // Terrorist
write_byte(255) // r
write_byte(255) // g
write_byte(255) // b
}
else { // Counter-Terrorist
write_byte(255) // r
write_byte(255) // g
write_byte(255) // b
}
write_byte(150) // brightness
write_byte(0) // speed
message_end()
}
public remove_hook(id)
{
if(task_exists(id))
{
remove_task(id)
}
remove_beam(id)
ishooked[id-1] = false
}
public remove_beam(id)
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(99)
write_short(id)
message_end()
}
public LangRus(id)
{
if(!iPlayerRus[id])
{
iPlayerRus[id] = true
PrintMsg(id, 0, "^1[^4KNF DM^1] ^3Русский ^1чат активирован!")
}
else PrintMsg(id, 0, "^1[^4KNF DM^1] ^3Русский ^1чат уже ^4активирован!")
}
public LangEng(id)
{
if(iPlayerRus[id])
{
iPlayerRus[id] = false
PrintMsg(id, 0, "^1[^4KNF DM^1] ^3Английский ^1чат активирован!")
}
else PrintMsg(id, 0, "^1[^4KNF DM^1] ^3Английский ^1чат уже ^4активирован!")
}
public HookSay(msgId, msgDest, msgReciever)
{
if(msgDest != MSG_ONE) return PLUGIN_CONTINUE
new id = get_msg_arg_int(1)
if(get_bit(iIgnorePlayer, id)) return PLUGIN_CONTINUE
static Header[64], szMessage[191], szFormatedMsg[191]
get_msg_arg_string(2, Header, charsmax(Header))
get_msg_arg_string(4, szMessage, charsmax(szMessage))
#if defined ADBLOCK
if(szMessage[0] == '/' || Flood_Control(id, szMessage)) return PLUGIN_HANDLED
#else
if(szMessage[0] == '/') return PLUGIN_HANDLED
#endif
while(replace_all2(szMessage, charsmax(szMessage), "%", "")) {}
if(!iPlayerRusInfo[id])
{
if(!iPlayerRus[id])
{
iPlayerRusInfo[id] = true
PrintMsg(id, 0, "^1[^4KNF DM^1] ^1У Вас есть возможность писать по-русски. Наберите ^4/rus ^1или ^4/eng ^1для переключения.")
}
}
if(iPlayerRus[id])
{
for(new i; i < sizeof eng; i++)
while(replace_all2(szMessage, charsmax(szMessage), eng[i], rus[i])) {}
}
new szLen
#if defined AES
static AESLvl[33][64], aStats[AES_ST_END]
aes_get_player_stats(id, aStats)
aes_get_level_name(aStats[AES_ST_LEVEL], AESLvl[id], 63, LANG_SERVER)
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "^4[%s] ", AESLvl[id])
#endif
#if defined TAGS
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "%s", iMessageTag[id])
#endif
if(!strcmp(Header, "#Cstrike_Chat_All"))
{
#if defined GREEN_MSG
if(equal(iMessageTag[id], ""))
if(racce[id] == 1)
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^3[^4Танк^3]^3%%s1 ^1: %%s2")
if(racce[id] == 2)
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^3[^4Невидимка^3]^3%%s1 ^1: %%s2")
if(racce[id] == 3)
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^3[^4Шаман^3]^3%%s1 ^1: %%s2")
else
if(racce[id] == 1)
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^3[^4Танк^3]^3%%s1 ^1:^4 %%s2")
if(racce[id] == 2)
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^3[^4Невидимка^3]^3%%s1 ^1:^4 %%s2")
if(racce[id] == 3)
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^3[^4Шаман^3]^3%%s1 ^1:^4 %%s2")
#else
if(racce[id] == 1)
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^3[^4Танк^3]^3%%s1 ^1: %%s2")
if(racce[id] == 2)
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^3[^4Невидимка^3]^3%%s1 ^1: %%s2")
if(racce[id] == 3)
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^3[^4Шаман^3]^3%%s1 ^1: %%s2")
#endif
}
else szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "%s", Header)
if(strlen(szFormatedMsg) + strlen(szMessage) >= 190)
{
PrintMsg(id, 0, "^1[^4KNF DM^1] ^3*** Ваше сообщение слишком длинное! ***")
return PLUGIN_HANDLED
}
set_msg_arg_string(2, szFormatedMsg)
set_msg_arg_string(4, szMessage)
#if defined ADMIN_ALLCHAT
static players[32], pcount, sz2Msg[191]; get_players(players, pcount, "ch"); new sz2Len
sz2Len += formatex(sz2Msg[sz2Len], charsmax(sz2Msg), "%s ", szFormatedMsg)
sz2Len += formatex(sz2Msg[sz2Len], charsmax(sz2Msg) - sz2Len, "%s", szMessage)
for(new i; i < pcount; i++)
{
if(get_user_flags(players[i]) & ADMIN && msgReciever ^ players[i])
PrintMsg(players[i], id, "%s", sz2Msg)
}
#endif
return PLUGIN_CONTINUE
}
stock PrintMsg(const iReceiver, const iSender, const szMessage[], any:...)
{
new szMsg[191]
vformat(szMsg, charsmax(szMsg), szMessage, 4)
message_begin(MSG_ONE_UNRELIABLE, 76, _, iReceiver)
write_byte(iSender ? iSender : iReceiver)
write_string(szMsg)
message_end()
}
#if defined ADBLOCK
bool:Flood_Control(id, szMsg[])
{
for(new i; i < approvedMsgsCounter; i++)
if(containi(szMsg, approved_msgs[i]) != -1) return false
static last_msg[33], said_len
said_len = strlen(szMsg)
if(said_len > 13 && last_msg[id] == said_len) return true
last_msg[id] = said_len
for(new i; i < blockedMsgsCounter; i++)
if(containi(szMsg, blocked_msgs[i]) != -1) return true
return false
}
#endif
#if defined TAGS
CheckFlags(id)
{
static iFlags
iFlags = get_user_flags(id)
if(iFlags & GL_ADMIN) return 1
else if(iFlags & ADMIN) return 2
else if(iFlags & VIP) return 3
return 0
}
#endif
stock replace_all2(string[], len, const what[], const with[])
{
new pos
if((pos = contain(string, what)) == -1) return 0
new total, with_len = strlen(with), diff = strlen(what) - with_len, total_len = strlen(string), temp_pos
while(total_len + with_len < len && replace(string[pos], len - pos, what, with) != 0)
{
total++
pos += with_len
total_len -= diff
if (pos >= total_len) break
temp_pos = contain(string[pos], what)
if (temp_pos == -1) break
pos += temp_pos
}
return total
}
public task_hudmsg(id)
{
irank = get_user_stats(id,stats,bodyhits)
set_hudmessage(136, 255, 85, 0.01, 0.20, 0, 1.0, 1.0, _, _, -1)
if(racce[id] == 0){
show_hudmessage(id, "Ваша расса: Неизвестно^n%L^n%L", LANG_PLAYER, "RANK_INFO", irank, get_statsnum(), LANG_PLAYER, "GROUP_VK")
}
if(racce[id] == 1){
show_hudmessage(id, "Ваша расса: Танк^nСпособность: 100 HP^n%L^n%L", LANG_PLAYER, "RANK_INFO", irank, get_statsnum(), LANG_PLAYER, "GROUP_VK")
}
if(racce[id] == 2){
show_hudmessage(id, "Ваша расса: Невидимка^nСпособность: 50% инвиза^n%L^n%L", LANG_PLAYER, "RANK_INFO", irank, get_statsnum(), LANG_PLAYER, "GROUP_VK")
}
if(racce[id] == 3){
show_hudmessage(id, "Ваша расса: Шаман^nСпособность: Паутинка^nbind v +shook^n%L^n%L", LANG_PLAYER, "RANK_INFO", irank, get_statsnum(), LANG_PLAYER, "GROUP_VK")
}
}