Вопросы

Всем привет! Помогите исправить ошибки , пожалуйста :) 

У меня в моде есть такая команда:

Спойлер

CMD:z(playerid, params[])
{
	if(GetPlayerAdminEx(playerid) >= 1)
	{
		if(!strlen(params))
			return SendClientMessage(playerid, 0xCECECEFF, "Используйте: /z [ID игрока отправившего запрос] [ответ]");

		extract params -> new to_player, string: message[144 + 1];

		if(!IsPlayerConnected(to_player))
			return SendClientMessage(playerid, 0x999999FF, "Такого игрока нет");

		if(!strlen(message))
			return SendClientMessage(playerid, 0x999999FF, "Введите сообщение");

		new fmt_str[128];

		format(fmt_str, sizeof fmt_str, "%s %s[%d] ответил на запрос игрока %s[%d]: {FFCD00}%s", GetPlayerAdminEx(playerid) > 1 ? "Администратор" : "Агент поддержки", GetPlayerNameEx(playerid), playerid, GetPlayerNameEx(to_player), to_player, message);
		SendClientMessage(to_player, 0xc7dae8FF, fmt_str);
		PlayerPlaySound(to_player, 1085, 0.0, 0.0, 0.0);

        SendMessageToAdmins(fmt_str, 0xc7dae8FF);
	}
	return 1;
}

 

Мне надо заменить ее вот на эту:

Спойлер

CMD:ans(playerid, params[])
{
	if(PI[playerid][pAdmin] < ADM_MODER) return SendClientMessage(playerid, COLOR_WHITE, "Неверно введена команда! {2B800D}Воспользуйтесь: (/menu > команды сервера)");
	else if(AdminLogged[playerid] == false) return SendClientMessage(playerid, COLOR_GREY, YouAreNotLoggedInAsAdmin);

	if(sscanf(params, "i", params[0])) return SendClientMessage(playerid, VAGOS_COLOR, "• [ Подсказка ] {ffffff}Введите: /ans [ID репорта]");
	if(params[0] == 0) return SCM(playerid, COLOR_GRAY, "Ошибка! Не верный ID репорта");
	SetPVarInt(playerid, "ReporID", params[0]);

    new string[350];

	for(new i = 0; i<25; i++)
	{
	    if(RepInfo[i][RepID] == params[0])
	    {
	        if(RepInfo[i][RepStatus] == 1)
			{
				SCM(playerid, COLOR_RED, "Кто-то уже отвечает на данный репорт!");
				break;
			}
			else
			{
				format(string, sizeof(string), "\
				{ffffff}Вы открыли репорт под {c71616}%d{ffffff} (ID)!\n\
				{ffffff}Имя игрока: {c71616}%s[%d]\n\
				{ffffff}Дата и время: {c71616}[%s]\n\n\
				{ffffff}Вопрос: {c71616}%s\n\n\
				{ffffff}Введите ответ на данный запрос!", params[0],GetName(RepInfo[i][RepIDD]),RepInfo[i][RepIDD],date("%hh:%ii:%ss", RepInfo[i][RepTime]), RepInfo[i][Reptex]);
				SPD(playerid, D_MUSOROVOZ+5, DSI, "Ответ на репорт",string,"Ответить","Закрыть");

				RepInfo[i][RepStatus] = 1;
                SetPVarInt(playerid,"IDrepstatus", 1);
				PI[playerid][pRepStatus] = i;
				break;
			}
		}

	}

    UpdateReported();
	return 1;
}

 

При компиляции ошибки: 

(47382) : error 017: undefined symbol "PI"
(47382) : warning 215: expression has no effect
(47382) : error 001: expected token: ";", but found "]"
(47382) : error 029: invalid expression, assumed zero
(47382) : fatal error 107: too many error messages on one line

 

Отредактировано пользователем Jawn

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 ответов на этот вопрос

  • 0

@saasha, вот и ответ на ваш вопрос: g_player - название массива игрока. Ну, и пример использования:

g_player[playerid][P_TEAM]

где P_TEAM - переменная, хранящая идентификатор фракции, к которой принадлежит игрок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Если ты решил вырезать только команду, то система работать не будет. Нужно вырезать всю систему репортов. У тебя ошибка идёт на PI - неизвестный символ, обычно это массив с данными игрока, у тебя он возможно называется "Player" или "pInfo", "PlayerInfo", посмотри в моде. Я заменил проверку на админку в новой команде на твою(взял из старой команды), тебе остаётся заменить строку "PI[playerid][pRepStatus] = i;" - создай pRepStatus, посмотри в моде, из которого вырезаешь, за что она отвечает и сделай точно так же. Не забудь про массив "RepInfo"

Спойлер

CMD:ans(playerid, params[])
{
	if(GetPlayerAdminEx(playerid) < 1) return false;

	if(sscanf(params, "i", params[0])) return SendClientMessage(playerid, VAGOS_COLOR, "• [ Подсказка ] {ffffff}Введите: /ans [ID репорта]");
	if(params[0] == 0) return SCM(playerid, COLOR_GRAY, "Ошибка! Не верный ID репорта");
	SetPVarInt(playerid, "ReporID", params[0]);

    new string[350];

	for(new i = 0; i<25; i++)
	{
	    if(RepInfo[i][RepID] == params[0])
	    {
	        if(RepInfo[i][RepStatus] == 1)
			{
				SCM(playerid, COLOR_RED, "Кто-то уже отвечает на данный репорт!");
				break;
			}
			else
			{
				format(string, sizeof(string), "\
				{ffffff}Вы открыли репорт под {c71616}%d{ffffff} (ID)!\n\
				{ffffff}Имя игрока: {c71616}%s[%d]\n\
				{ffffff}Дата и время: {c71616}[%s]\n\n\
				{ffffff}Вопрос: {c71616}%s\n\n\
				{ffffff}Введите ответ на данный запрос!", params[0],GetName(RepInfo[i][RepIDD]),RepInfo[i][RepIDD],date("%hh:%ii:%ss", RepInfo[i][RepTime]), RepInfo[i][Reptex]);
				SPD(playerid, D_MUSOROVOZ+5, DSI, "Ответ на репорт",string,"Ответить","Закрыть");

				RepInfo[i][RepStatus] = 1;
                SetPVarInt(playerid,"IDrepstatus", 1);
				PI[playerid][pRepStatus] = i;
				break;
			}
		}

	}

    UpdateReported();
	return 1;
}

 

 

Отредактировано пользователем Jawn

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

@SCRIPTMAN Привет. Я вырезаю всю систему, но проблемы возникли с "PI". Раньше я встречал ошибки, но там вместо "PI", допустим, "p_info" и тд. Но тут ничего похожего нету.

 

Заметка от Cawfee , создано

Заключил ваш код под спойлер в заголовке темы. Пожалуйста, обратите внимание на то, как это выглядит теперь, и, пожалуйста, впредь делайте по аналогии. Как пользоваться тегом спойлер?.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

@saasha, покажите какую-нибудь команды, связанные с фракцией (например, отправку сообщения в рацию), либо же что-нибудь связанное с покупками в 24/7, если таковое имеется...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

@Jawn 

CMD:r(playerid, params[])
{
	if(!(GetPlayerTeamEx(playerid) || GetPlayerJob(playerid))) return SendClientMessage(playerid, 0xCECECEFF, "* Вы нигде не работаете/не состоите в организациях");
	else if(TEAM_OPG_CENTRALNAYA <= GetPlayerTeamEx(playerid) <= TEAM_OPG_NORTHNAYA) return SendClientMessage(playerid, 0xCECECEFF, "* Функция доступна для сотрудников гос. организаций");
	else if(IsPlayerMuted(playerid) > 0) return SendClientMessage(playerid, 0xFF6600FF, "Доступ в чат заблокирован. Время до разблокировки: {66CC33}/time");
	else if(!strlen(params)) return SendClientMessage(playerid, 0xCECECEFF, "Используйте: /r [текст]");

	new fmt_msg[144];

	format(fmt_msg, sizeof fmt_msg, "[R] %s %s[%d]: %s", GetPlayerJobAndRankName(playerid), GetPlayerNameEx(playerid), playerid, params);

	if(1 <= GetPlayerTeamEx(playerid) <= 10)
		SendMessageToTeam(GetPlayerTeamEx(playerid), fmt_msg, 0x33CC66FF);
	else
		SendMessageToJob(GetPlayerJob(playerid), fmt_msg, 0x33CC66FF, _, true);

	SetPlayerChatBubble(playerid, "сказал(а) что-то в рацию", 0xDD99FFAA, 10.0, 4000);
	return 1;
}

 

Отредактировано пользователем saasha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

@saasha, отлично, а теперь найдите определение для GetPlayerTeamEx. Скорее всего будет иметь следующий вид:

#define GetPlayerTeamEx(%0) ...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

@Jawn 

#define GetPlayerTeamEx(%0)		GetPlayerData(%0, P_TEAM)			// организация в которой состоит игрок

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

@saasha, по аналогии найдите определение для GetPlayerData.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

@Jawn 

#define GetPlayerData(%0,%1) 	g_player[%0][%1]

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

@Jawn Спасибо большое :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Доналдо Фарекелка
      От Доналдо Фарекелка


      Скачать файл Arizona RolePlay || Ser
      Приветствую, этот мод я нашёл на просторах интернета. 
      Скачал мод у автора:  Developer Stravinskiy
      Доработал мод: Donaldo_Farekelka
       
      Предупреждаю! Мод сырой, багов стало меньше, но они есть.
      Мод: Баня, Подвал, В некоторых местах маппинг, система коронавируса, 8 лвл админок
       
      Информация:
      1) Dc_Cmd
      2) Mysql, mode, language - Всё настраивается теперь в pawno ( UPDATE: 1.1.0 )
      3) Административные права в данный момент можно выдать только через MYSQL ( BD ).
       
      То что я сделал ( Всё что я делаю сейчас, смотрите в изменениях ):
       
      Добавил Доналдо Фарекелка Добавлено 13.04.2023 Категория Моды Автор shenol (vk.com/donaldo_farekelka)  
    • KAIF
      От KAIF


      Скачать файл GTA RolePlay-МОД,СБОРКА
      !!!!!ВСЕГО ОДНА КОПИЯ!!!! 
      Единственный мод GTA RP.
       
      Фракции:
      Правительство
      ГИБДД
      Полиция Южного
      ФСБ
      ЦГБ-А
      Автошкола
      Китайская мафия
      Русская Мафия
      Итальянская Мафия
      Американская Мафия
      Чеченская Мафия
      ВВС
      МЧС
      ОПГ Тяп-Ляп
      ОПГ Хади-Такташ
      СМИ Южного
      ФСИН
      В комплекте идёт СБОРКА И МОД.
      Единственный мод GTA RP.
      Добавил KAIF Добавлено 01.01.2024 Категория Моды Автор Aleksandr  
    • gooding
      От gooding
      Доброго времени суток! Я выложил на продажу игровой мод RedRow RolePlay!
       
      17 ТИТУЛОВ, 14 КОСТЮМОВ (КАМЕРМЭН, ФЕЯ, СИ-ДЖЕЙ, ДЭДПУЛ, СПАНЧ БОБ, НИНДЗЯ, ДЕД МОРОЗ и другие!),
      BMW I8, BMW M5, BMW Vision M NEXT, Mercedes-Benz G-CLASS, Rolls-Royce Phantom! Система рулетки  (Исправлена, теперь не выпадает одно и то же),
      Автопарки Фракций (FBI и банд), МОД ОПТИМИЗИРОВАЛИ под ИГРУ, ДОБАВИЛИ НОВЫЙ АНТИЧИТ (Latest Nex-AC) и АНТИЧИТ настроен. Проделано много работы (Над модом работали полгода) и исправили множество багов.
       
      Что было добавлено?
      1. 17 титулов,
      2. 14 костюмов,
      3. Эксклюзивный транспорт (SandKing, Rolls-Royce Phantom, BMW I8, BMW M5, BMW Vision M NEXT, Mercedes-Benz G-CLASS).
      4. Автопарк ФБР и всех банд.
      5. Новый анти-чит.
      6. Оптимизация игрового мода.
      7. Премиум и уникальные возможности для владельцев Премиума.
      8. Команда /bonus, где можно получить бесплатно Red Coins.
      9. За АКТИВ даются Red Coins!
      10. Рестарт сервера в 5:00 по МСК.
      11. Радужный клист.
      12. Уникальный тюнинг для эксклюзивных машин и ускорение.
      13. Новая система банка.
      14. Исправлено множество багов.
      15. Новый маппинг.
    • Redmondd
      От Redmondd
      Хочу сделать команду /gpsoff, которая убирает метку