Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

в начале спавна игрока возникает лаги.

Статус пользователя soneekk
сообщение 16.7.2015, 14:19
Сообщение #1


Стаж: 13 лет

Сообщений: 335
Благодарностей: 13
Полезность: < 0

здравствуйте, из за такого кода в начале спавна игрока возникает лаги а потом исчезает, функция проверяет ник игрока если он прописан в .ini файл, можно ли улучшить както код чтобы лаги исчезли ? или кокто другим способом сделать ?

Код:
public player_respawn(id)
{
set_task(1.0, "verification", id)
}

public verification(id)
{
new szName[32]

for(szLine=0;read_file(g_LoadName, szLine, g_Name, 41, szNum);szLine++)
{
if(szNum>0 && g_Name[0]!=';')
{
get_user_name(id, szName, 31)
new szPos = contain(szName, g_Name)

if(szPos != -1 && get_user_team(id) == 2)
{
block_player(id)
}
}
}
}


Отредактировал: soneekk, - 16.7.2015, 14:21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Fintok
сообщение 16.7.2015, 14:27
Сообщение #2


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

soneekk, зачем каждый раз при респауне игрока проверять его ник, да еще и при этом считывать файл?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя soneekk
сообщение 16.7.2015, 14:39
Сообщение #3


Стаж: 13 лет

Сообщений: 335
Благодарностей: 13
Полезность: < 0

Цитата(Fintok @ 16.7.2015, 14:23) *
soneekk, зачем каждый раз при респауне игрока проверять его ник, да еще и при этом считывать файл?


это для jailbreak сервера, для запрета зайти в ментах, я скачал из интернета jb block но там проста перекидывал в террористах, я переделал : когда игрок блокируется иво имя пишется в ini файл, eсли он снова переедет или сделает retry и
когда он возродится его имя проверяется в ini файл и его заново перекидывает v tt. не знаю как по другому сделать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 16.7.2015, 16:02
Сообщение #4


Стаж: 13 лет

Сообщений: 227
Благодарностей: 262
Полезность: 977

soneekk, в plugin_precache или plugin_init делай чтение файла, используя при этом новый способ, а не старый, как у тебя сейчас, потом запоминай все в массив и в начале раунда обращайся к нему.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя soneekk
сообщение 16.7.2015, 18:39
Сообщение #5


Стаж: 13 лет

Сообщений: 335
Благодарностей: 13
Полезность: < 0

Цитата(Stimul1 @ 16.7.2015, 15:57) *
soneekk, в plugin_precache или plugin_init делай чтение файла, используя при этом новый способ, а не старый, как у тебя сейчас, потом запоминай все в массив и в начале раунда обращайся к нему.


если бы у меня были знание чтоб эта сделать Я бы здесь не написал бы, я когда переделал plugin просто вырезал коды из других плагинов, Но всё равно спасибо.
если у тебя есть пример поделись пожалуйста
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legend21
сообщение 16.7.2015, 20:30
Сообщение #6
Стаж: 14 лет
Город: Винница

Сообщений: 604
Благодарностей: 229
Полезность: 561

Цитата
если бы у меня были знание чтоб эта сделать Я бы здесь не написал бы


Что мешает их получить? Ведь ты просишь помощи даже не представляя о чем идет речь. Тебе именно помощь нужна или "сделай за меня" ?

Код:
public player_respawn(id)
{
set_task(1.0, "verification", id)
}


Этот код уже можешь выбросить. И даже если ты нуждаешься в помощи, скидывай полный код, а не какой то кусочек. Привыкли скидывать эти кусочки и говорить; "да, это именно из-за этой функции что то не так!" , а потом оказывается что весь код лепак какой то школотенский

Отредактировал: Legend21, - 16.7.2015, 20:36
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя soneekk
сообщение 17.7.2015, 1:42
Сообщение #7


Стаж: 13 лет

Сообщений: 335
Благодарностей: 13
Полезность: < 0

Legend21, если хорошо прочитал бы что я хотел понял бы что лаг возникает при спавне игрока поэтому и скинул этот кусок.


полный код
Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>

#define PLUGIN_NAME "Block CT"
#define PLUGIN_AUTHOR "Crash94/Edited SoNeeKK1"
#define PLUGIN_VERSION "2.0"
#define PLUGIN_CVAR "JB_Block"

new g_LoadName[81], g_Name[64]
new szLine, szNum
new Block[33]

native jbe_get_user_team(id)
native jbe_set_user_team(id, iTeam)

public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_cvar(PLUGIN_CVAR, PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY)

register_clcmd("say /block", "Block_menu")
register_clcmd("say /unblock", "Block_menu")
register_dictionary( "jb_ctblock.txt" );

RegisterHam(Ham_Spawn,"player","player_respawn")
}

public player_respawn(id)
{
set_task(1.0, "Name_Verificaiton", id)
}

public plugin_end()
{
DelSaveblocks()
}

public DelSaveblocks()
{
new i_Text[555 char]
for(szLine=0;read_file(g_LoadName, szLine, g_Name, 41, szNum);szLine++)
{
if(szNum>0 && g_Name[0]!=';')
{
formatex( i_Text, charsmax( i_Text ), "")
write_file(g_LoadName, i_Text, szLine)
}
}
}

public plugin_cfg()
{
get_configsdir(g_LoadName, 81)
format(g_LoadName, 80, "%s/ct_dablokilebi.ini", g_LoadName)
}

public Name_Verificaiton(id)
{
new szName[32]

for(szLine=0;read_file(g_LoadName, szLine, g_Name, 41, szNum);szLine++)
{
if(szNum>0 && g_Name[0]!=';')
{
get_user_name(id, szName, 31)
new szPos = contain(szName, g_Name)

if(szPos != -1 && get_user_team(id) == 2)
{
Motamashis_Dablokva(id)
}
}
}
}

public Block_menu(id)
{
new szText[ 555 char ]

formatex( szText, charsmax( szText ), "%L", id, "JB_BLOCKMENU_TITLE")
new menu = menu_create( szText, "BlockMenu_handler" )

new s_Players[32], i_Num, i_Player
new s_Name[32], s_Player[10], msg[222]

get_players(s_Players, i_Num)

for (new i; i < i_Num; i++)
{
i_Player = s_Players[i]

if(get_user_team(i_Player)!=2 && !Block[i_Player])
continue

get_user_name(i_Player, s_Name, charsmax(s_Name))
num_to_str(i_Player, s_Player, charsmax(s_Player))


if(get_user_flags(i_Player) & ADMIN_CVAR)
{
formatex(msg, charsmax(msg), "\d%s \w[\rIMMUNITY\w]", s_Name)
menu_additem(menu, msg, s_Player, 0)
}
else if(!Block[i_Player])
{
menu_additem(menu, s_Name, s_Player, 0)
}else{
formatex( szText, charsmax( szText ), "%s - %L", s_Name, id, "JB_BLOCK_PLAYER")
menu_additem(menu, szText, s_Player, 0)
}
}

menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
menu_setprop( menu, MPROP_NEXTNAME, "Next")
menu_setprop( menu, MPROP_BACKNAME, "Back")
menu_setprop( menu, MPROP_EXITNAME, "Exit")

if(get_user_flags(id) & ADMIN_BAN)
{
menu_display(id, menu, 0)
}else{
ChatColor(id, "^4[^1JB BLOCK^4] %L",0,"JB_BLOCK_NOACCESS")
}
}

public BlockMenu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}

new s_Data[6], s_Name[64], i_Access, i_Callback, i_Name[32], i_Text[555 char]
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

new i_Player = str_to_num(s_Data)
get_user_name(i_Player, i_Name, 31)


if(get_user_flags(i_Player) & ADMIN_CVAR)
{
ChatColor(0, "^4[^1JB BLOCK^4] ^4Aqet Ar Dagblokos Frtxilat XD :)^1.", i_Name)
}
else if(Block[i_Player])
{
for(szLine=0;read_file(g_LoadName, szLine, g_Name, 41, szNum);szLine++)
{
if(szNum>0 && g_Name[0]!=';')
{
new szPos = contain(i_Name, g_Name)

if(szPos != -1)
{
Block[i_Player] = false
new name[32]
get_user_name(id, name, 31)
formatex( i_Text, charsmax( i_Text ), "")
write_file(g_LoadName, i_Text, szLine)
ChatColor(0, "^4[^1JB BLOCK^4] %L ADMIN: %s",0,"JB_BLOCK_DEL", i_Name, name)
}
}
}
}else{
Block[i_Player] = true

new name[32]
get_user_name(id, name, 31)
write_file(g_LoadName, i_Name, -1)
ChatColor(0, "^4[^1JB BLOCK^4] %L ADMIN: %s",0,"JB_BLOCK_ADD", i_Name, name)

user_kill(i_Player)
jbe_set_user_team(i_Player, 1)
}

menu_destroy(menu)
return PLUGIN_HANDLED
}

public Motamashis_Dablokva(id)
{
if(Block[id])
{
user_kill(id)
jbe_set_user_team(id, 1)
ChatColor(id, "^4[^1JB BLOCK^4] %L",0,"JB_YOU_BLOCKCT")

}
}

stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)

replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!team", "^3")

if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}


Отредактировал: soneekk, - 17.7.2015, 1:42
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legend21
сообщение 17.7.2015, 11:44
Сообщение #8
Стаж: 14 лет
Город: Винница

Сообщений: 604
Благодарностей: 229
Полезность: 561

soneekk,

Ну что и пыталось сказать. Лепак школотенский. Кто то переделал краша плагин и еще не правильно. Хукать событие спауна через таск на каждый ник. cbf1b2bfde1a.gif Тогда понятно почему возникают лаги.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя soneekk
сообщение 17.7.2015, 14:49
Сообщение #9


Стаж: 13 лет

Сообщений: 335
Благодарностей: 13
Полезность: < 0

Цитата(Legend21 @ 17.7.2015, 11:39) *
soneekk,

Ну что и пыталось сказать. Лепак школотенский. Кто то переделал краша плагин и еще не правильно. Хукать событие спауна через таск на каждый ник. cbf1b2bfde1a.gif Тогда понятно почему возникают лаги.



ты блин здесь поиздеваться зашел или для чего ? я для того и создал тему чтобы помогли переделать и улучшить плагин, а ты один и тот говоришь , сам знаю что плагин плохо переделана.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: