[CS: Source] [-ARMY-] Ranks Core v1.0.0

Что добавить/исправить?

  • Плагин не нужен.

    Голосов: 0 0.0%

  • Всего проголосовало
    9
  • Опрос закрыт .
Статус
В этой теме нельзя размещать новые ответы.

SkorP1onS

Участник
Сообщения
156
Реакции
4
Re: Army Ranks

Саша Шеин,
Отличная новость, спасибо, ждемс с нетерпением))
 

DexKekcuk #13

Участник
Сообщения
628
Реакции
69
Re: Army Ranks

Завтра будет выложен полный релиз плагина, тестили до последнего, обращая внимание на мельчайшие мелочи, так же было добавлено ведеение Логов. Фикс топ, фикс сортировки, и многого другого, так что Ждем Пока Алексаднр Шеин, оформит тему, и выложит вам Релиз версию плагина [-ARMY-] Ranks v1.0.0 R

Для настройки файла army_ranks.txt много времени так сказать не уделял, но и не мало, цветами сильно чат не красил, надо будет сами покрасите. И если надо будет добавите звания сами или удалите)
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
Re: Army Ranks

PHP:
public Native_GetKv(Handle:plugin, numParams)
{
PrintToServer("%u",hKv);
return _:hKv;
}
Дебаг то убери.

PHP:
Format(buffer, sizeof(buffer), "%t", "AdminMenu Title");
SetMenuTitle(g_RanksMenu, buffer);

Можно форматировать сразу в SetMenuTitle. И FormatEx быстрее.

PHP:
public Handle_ArmyAdmin(Handle:hMenu, MenuAction:action, client, param2)
{
if(action == MenuAction_Select)
{
decl String:info[256];
GetMenuItem(hMenu,param2,info,sizeof(info));

if (StrEqual(info,"setrank")) Army_SetRank(client,0);

else if (StrEqual(info,"death")) Army_Death(client);

else if (StrEqual(info,"kills")) Army_Kill(client);

else if (StrEqual(info,"ResetPlayer")) Army_Reset(client);
}
}
Зачем сравнивать строки по описанию пунктов если меню статическое и описание тут вообще не нужно и пункт можно проверять:
PHP:
switch(param2)
{
	case 0: ...
	case 1: ...
	...
}

PHP:
decl String:userid[50], String:name[32];
Для userid 16 вполне достаточно.
Для имени вроде как нужно сделать 64 т.к. ники кириллицей могут не влезать (нужно проверять)

PHP:
for (new i = 1; i <= MaxClients; i++) 
	{ 
		if (0 < i && i < MaxClients && IsClientInGame(i)) 
		{
i начинается с 1 и идет до MaxClients включительно, нахрена тогда 0 < i && i < MaxClients ????

PHP:
Format(info, sizeof(info), "%T","Yes",client);
			Format(buffer, sizeof(buffer),"%d|Yes", target);
			AddMenuItem(ResetMenu, buffer,info);
			
			Format(info, sizeof(info), "%T","No",client);
			AddMenuItem(ResetMenu, "No",info);
	...
decl String:buffer[3][100];
		GetMenuItem(hMenu,iSlot,buffer[0],sizeof(buffer[]));
		ExplodeString(buffer[0],"|",buffer,3,100);
		if(!strcmp(buffer[1],"Yes",true))
		{ 
			new target = StringToInt(buffer[0]);			
				...
			if(g_bLogs)LogToFile(LOG_ADMIN_RESETPLAYER,"Админ %N обнулил игрока %N",client,target);
		}
		if(!strcmp(buffer[1],"No",true)) Army_Reset(client);
Опять же в инфо передавай ток target, а точнее его юзер ид, который непонятно зачем преобразуется в int и потом обратно в строку...
А проверяй пункт просто по iSlot.
Да и вообще всегда ипользуй его кроме случаев где нужно привязываться к описанию пункта.

Ну и дальше по меню те же ошибки...

PHP:
AddMenuItem(menu, "+1000", "+1000",ITEMDRAW_DEFAULT);
	AddMenuItem(menu, "+100", "+100",ITEMDRAW_DEFAULT);
	AddMenuItem(menu, "+10", "+10",ITEMDRAW_DEFAULT);
	AddMenuItem(menu, "0", "0",ITEMDRAW_DEFAULT);
	AddMenuItem(menu, "-10", "-10",ITEMDRAW_DEFAULT);
	AddMenuItem(menu, "-100", "-100",ITEMDRAW_DEFAULT);
	AddMenuItem(menu, "-1000", "-1000",ITEMDRAW_DEFAULT);
Воооот! Вот случай где нужно как раз описание пункта юзать.

PHP:
decl String:sQuery[256], String:sName[32], String:sName2[32];
		GetClientName(iClient, sName, sizeof(sName));
		SQL_EscapeString(g_hSQLdb, sName, sName2, sizeof(sName2));
Зачем лишняя строка? Можно было просто так:
PHP:
decl String:sQuery[256], String:sName[MAX_NAME_LENGTH*2+1];
		GetClientName(iClient, sQuery, sizeof(sQuery));
		SQL_EscapeString(g_hSQLdb, sQuery, sName, sizeof(sName));
И еще, для SQL_EscapeString размер буффера должен быть len*2+1, где len - длина исходной строки.
MAX_NAME_LENGTH Опять же под вопросом, хз как поведет себя с кириллицей.

Дальше опять тоже самое...

PHP:
decl String:sQuery[256];
	Format(sQuery, sizeof(sQuery), "SELECT COUNT(*) FROM `army_ranks`");
	SQL_TQuery(g_hSQLdb, SQLT_OnGetTotal, sQuery);
Можно было без лишней строки обойтись, форматировать же нечего:
PHP:
SQL_TQuery(g_hSQLdb, SQLT_OnGetTotal, "SELECT COUNT(*) FROM `army_ranks`");

PHP:
while (!IsEndOfFile(hFile) && ReadFileLine(hFile, sItemInfo, 256))
		{
			TrimString(sItemInfo);
			PushArrayString(g_hArraySortMenu,sItemInfo);
		}
Не проверил не пустая ли строка. И на комментарии тоже проверь на всякий случай.

PHP:
g_hArray_sRanks = CreateArray(64);
	g_hArray_iKills = CreateArray();
	g_hArraySortMenu = CreateArray(64);
Читаем https://sm.alliedmods.net/api/index.php?fastload=show&id=685&
blocksize The number of cells each member of the array can hold. For example, 32 cells is equivalent to: new Array[X][32]
Поэтому нужно юзать https://sm.alliedmods.net/api/index.php?fastload=show&id=684&
PHP:
g_hArray_sRanks = CreateArray(ByteCountToCells(64));
	g_hArray_iKills = CreateArray();
	g_hArraySortMenu = CreateArray(ByteCountToCells(64));

PHP:
public Action:Command_Say_Team(client, const String:command[], argc)
{
	if (0 < client <= MaxClients && IsClientInGame(client) )
	{
		decl String:sMessage[256];
		GetCmdArgString(sMessage, sizeof(sMessage) - 1);
		StripQuotes(sMessage);
		
		// if ( StrEqual(sMessage, "rank") )
		// {
			// Command_Rank(client, 0);
			// return Plugin_Handled;
		// }
		// else 
		if ( StrEqual(sMessage, "top") )
		{
			Command_Top(client, 0);
			return Plugin_Handled;
		}
	}
	return Plugin_Continue;
}
public Action:Command_Say(client, const String:command[], argc)
{
	if (0 < client <= MaxClients && IsClientInGame(client) )
	{
		decl String:sMessage[500];
		GetCmdArgString(sMessage, sizeof(sMessage) - 1);
		StripQuotes(sMessage);
		
		// if ( StrEqual(sMessage, "rank") )
		// {
			// Command_Rank(client, 0);
			// return Plugin_Handled;
		// }
		// else 
		if ( StrEqual(sMessage, "top") )
		{
			Command_Top(client, 0);
			return Plugin_Handled;
		}
	}
	
	return Plugin_Continue;
}
Зачем 2 разных каллбека если они одинаковые?


ну а дальше одни и те же ошибки..
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
Re: Army Ranks

AlmazON, тоесть GetClientName не получит больше чем 32 символа?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Re: Army Ranks

тоесть GetClientName не получит больше чем 32 символа
Может и получит, скажем так, но вписать своё имя длиннее указанного предела просто не удастся. Поэтому и условлено считаем, что не запишет.
 

DexKekcuk #13

Участник
Сообщения
628
Реакции
69
Re: Army Ranks

Плагин обновлен до версии 1.0.0 Архив с новой версией в первом посте, о багах сообщать в данную тему!
 

SkorP1onS

Участник
Сообщения
156
Реакции
4
Re: Army Ranks

DexKekcuk #13,
Не знаю, предусмотрено у вас это или нет, но напишу.
1. Сделать чтобы гранаты не выдавались на карте 35hp (ножи)
2. Тоже самое только с хп.
3. Тоже самое только с оружием.
4. Ну и с бронькой тоже самое, хотя она вроде как не мешает сильно.

Ибо на 35hp все это лишнее))
Вечером поставим и протестируем еще)
 

DexKekcuk #13

Участник
Сообщения
628
Реакции
69
Re: Army Ranks

DexKekcuk #13,
Не знаю, предусмотрено у вас это или нет, но напишу.
1. Сделать чтобы гранаты не выдавались на карте 35hp (ножи)
2. Тоже самое только с хп.
3. Тоже самое только с оружием.
4. Ну и с бронькой тоже самое, хотя она вроде как не мешает сильно.

Ибо на 35hp все это лишнее))
Вечером поставим и протестируем еще)

Это в плагин не включено, для этого есть плагин map config, где вы сами отключаете ненужные модули на картах 35 хп!
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
Re: Army Ranks

Есть необходимость разделить модули и ядро на отдельные архивы? И отдельно готовую сборку?
 

SkorP1onS

Участник
Сообщения
156
Реакции
4
Re: Army Ranks

DexKekcuk #13,
Да, но, опять же лишний плагин, ради 1 карты.
И да, забыл сказать, релиз шикарен спасибо вам всем))
 

DexKekcuk #13

Участник
Сообщения
628
Реакции
69
Re: Army Ranks

DexKekcuk #13,
Да, но, опять же лишний плагин, ради 1 карты.
И да, забыл сказать, релиз шикарен спасибо вам всем))

ну так у тебя не одна карта я думаю 35 хп на сервере стоит, и от данного плагина не такая большая нагрузка, потому что он работает только тогда когда надо тебе, на определенных картах. Стоит у меня на сервере плагин map config, не перенагружается сервер)
 

SkorP1onS

Участник
Сообщения
156
Реакции
4
Re: Army Ranks

Саша Шеин, А в ближайшее время, будут еще модули?)
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
Re: Army Ranks

SkorP1onS, есть в планах сделать модуль: Up Status (На подобии: Admin UpStatus ).

Ждём ваших предложений!)
 

SkorP1onS

Участник
Сообщения
156
Реакции
4
Re: Army Ranks

Саша Шеин, Те что предлагал выше, там есть пару интересных.
 
Сообщения
10
Реакции
0
Re: Army Ranks

Была установлена версия плагина 0.0.8 R, вчера обновил на 1.0.0 R. удалил все старые файлы и залил новые. В итоге в консоли вот эта ошибка, базу sql не удалял от старого плагина, и не работает top всех званий.

L 07/08/2015 - 09:16:52: [SM] Native "GetArrayString" reported: Invalid index 60 (count: 28)
L 07/08/2015 - 09:16:52: [SM] Displaying call stack trace for plugin "army.smx":
L 07/08/2015 - 09:16:52: [SM] [0] Line 418, army/events/OnPluginStart.sp::SQLT_OnTopDisplay()

ЗЫ Как изменить каманду в чате top, к примеру на artop?
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
Re: Army Ranks

Семён Кайгородов,
1) Базу желательно удалить или открыть базу через SQStudio и поправить столбик irank т.к. у вас в базе в этом столбике есть число большк 28. (28 - увас это максимальный намер ранг тоесть более 28 чисел в столбике irank быть недолжно)
2. В исходном коде файл OnPluginStart.sp (В сл. версии запилю это в квар)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу