Несколько придирок...
#1.
PHP код:
CMD:menu(playerid)
{
ShowPlayerDialog(playerid, DIALOGUE_MENU, DIALOG_STYLE_LIST, "{0099CC}Меню игрока", "\
1. Статистика\n\
2. Список команд\n\
3. Личные настройки\n\
4. Настройки безопасности\n\
5. Связь с администрацией\n\
6. Улучшение\n\
7. Правила сервера\n\
8. Изменить имя\n\
9. Дополнительно", "Выбрать", "Закрыть");
}
Может я и путаю, но DC вроде бы рекомендовал, и приводил аргументы на счет playerid, params[] (см. Мифы о PAWN скриптинге (цикл уроков)). А еще ничего не возвращается, а это ведь паблик.
#2
PHP код:
new
Float: max_health;
GetPlayerHealth(playerid, max_health);
if(p_virable[playerid][p_heal] == 0) return SendClientMessage(playerid, COLOR_LIGHTGREY, "У Вас нет аптечки!");
Я считаю, что переменную надо было объявить после всех проверок (и таких в моде дофига).
Не смотреть (смотреть)
PHP код:
CMD:capture(playerid, params[])
{
for(new i = 0; i != sizeof(gz_info); i++)
{
if(OnSquared(playerid, gz_info[i][gz_coords][0], gz_info[i][gz_coords][1], gz_info[i][gz_coords][2], gz_info[i][gz_coords][3]))
{
if(p_gang[playerid] == gz_info[i][gz_gang]) return SendClientMessage(playerid, COLOR_LIGHTGREY, "Эта территория принадлежит вашей банде");
if(there_is_capture == 1) return SendClientMessage(playerid, COLOR_LIGHTGREY, "Уже происходит захват одной из зон. Дождитесь окончания!");
//switch(i)
//{
//case 8, 15, 67, 74, 90: return SendClientMessage(playerid, 0xcececeAA, "Вы не можете начать захват территорий респаувна банды!");
//}
new
Float:x = (gz_info[i][gz_coords][0]+gz_info[i][gz_coords][2])/2.0,
Float:y = (gz_info[i][gz_coords][1]+gz_info[i][gz_coords][3])/2.0,
Float:z = 0;
foreach(new a: Player)
{
switch(p_gang[playerid])
{
case 1: SetPlayerMapIcon(a, 31, x, y , z, 62, 0, MAPICON_GLOBAL);
case 2: SetPlayerMapIcon(a, 31, x, y , z, 60, 0, MAPICON_GLOBAL);
case 3: SetPlayerMapIcon(a, 31, x, y , z, 59, 0, MAPICON_GLOBAL);
case 4: SetPlayerMapIcon(a, 31, x, y , z, 58, 0, MAPICON_GLOBAL);
case 5: SetPlayerMapIcon(a, 31, x, y , z, 61, 0, MAPICON_GLOBAL);
}
}
GetPlayer2DZone(playerid, name_zone, MAX_ZONE_NAME);
time_to_expiration_capture = 20;//420;
kills_team[0] = 0;
kills_team[1] = 0;
capture_start = i;
there_is_capture = 1;
GangZoneFlashForAll(capture_start, OnGZColor(p_gang[playerid]));
OnStartCapture(p_gang[playerid], gz_info[i][gz_gang]);
team_capture[0] = p_gang[playerid];
team_capture[1] = gz_info[i][gz_gang];
static const fmt_str[] = "%s %s инициировал захват";
new str[sizeof fmt_str + MAX_PLAYER_NAME + 19];
format(str, sizeof(str), fmt_str, OnPlayerRangName(playerid), p_info[playerid][p_name]);
SendGhettoMessage(team_capture[0], -1, str);
SendGhettoMessage(team_capture[0], 0xFFFF00AA, "Место отмечено на GPS. Отправляйтесь туда и поддержите свою банду");
SendGhettoMessage(team_capture[1], 0xFFFF00AA, "Место отмечено на GPS. Отправляйтесь туда и поддержите свою банду");
return true;
}
}
return true;
}
Дальше смотреть не стал, уверен можно еще много чего можно было сделать оптимальней. Возможно это не так уж и важна, но OnPlayerRangName(playerid) так же считаю не уместным названием. Лучше бы переименовать на GetPlayerRang или что то на подобие. Будет время отпишусь еще )
И еще, вам не кажется что это лишний код?
PHP код:
static const
fmt_str0[] = "Администратор %s[%d] для %s[%d]: %s",
fmt_str1[] = "Администратор %s[%d] для %s[%d]: %s";
new
str0[sizeof fmt_str0 + 31 + MAX_PLAYER_NAME*2 + 144],
str1[sizeof fmt_str1 + 31 + MAX_PLAYER_NAME*2 + 144];
format(str0, sizeof(str0), fmt_str0, p_info[playerid][p_name], playerid, p_info[params[0]][p_name], params[0], params[1]);
SendClientMessage(params[0], 0xFF9945AA, str0);
format(str1, sizeof(str1), fmt_str1, p_info[playerid][p_name], playerid, p_info[params[0]][p_name], params[0], params[1]);
SendAdminMessage(0xFF9945AA, str1);
ПС: См. CMD:ans (1788 строка)