Вопросы

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

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

Спойлер

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 пользователей онлайн

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

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

    • Vadik0
      От Vadik0
      Добрейшего дня суток!
      Я в поисках команды, для создания CRMP проекта на ПК.

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

      Что, касаемо критериев?
      1. В первую очередь, важна ваша ответственность, вежливость, коммуникабельность.
      2. Желание сделать свой вклад в будущее проекта.
      3. Ваш возраст строго 16+ (исключения возможны)
      4. Платёжеспособность (после отклика на моё предложение, я вам расскажу что и как)
      5. Наличие свободного времени (с каждым этапом развития проекта, каждый человек из команды будет само собой уделять большее количество времени)
      6. Наличие PC (не ниже среднего)
      7. Наличие Discord
      8. Наличие ВКонтакте, Telegram
      9. Наличие микрофона.

      Кого сейчас ищем?
      1. Разработчиков игры (мапперы, скриптеры, и т.д)
      2. WEB Разработчик (сделать сайт. С форумом я конечно справлюсь, но могут быть проблемы )
      3. Тестеры (нужны будут, когда будет готова игра. Пока такой потребности нет).

      Сообщество ВКонтакте уже имеется, Telegram канал тоже имеется, Discord соответственно тоже.

      Для связи со мной:
      1. ВКонтакте - ссылка на страницу (кликабельно)
      2. Telegram - ссылка на Telegram аккаунт (кликабельно)

      Попытка не пытка, попробовать всегда можно! Так или иначе, живём 1 раз. Жду всех!
    • Денис0403
      От Денис0403
      При вводе команды /fly спавнит в непонятном месте.
      Скрин: https://imgur.com/a/jOkD7sl
      cmd:fly(playerid) return SetPlayerFlyStatus(playerid, 2); #if defined _included_fly     #endinput #endif #define _included_fly static     Float:fly_x[MAX_PLAYERS],     Float:fly_y[MAX_PLAYERS],     Float:fly_z[MAX_PLAYERS],     Float:fly_a[MAX_PLAYERS],     fly_world[MAX_PLAYERS],     fly_int[MAX_PLAYERS],     bool:fly_spawn[MAX_PLAYERS],     fly_state[MAX_PLAYERS],     fly_object[MAX_PLAYERS],     fly_last_move[MAX_PLAYERS],     fly_mode[MAX_PLAYERS],     fly_last_ud[MAX_PLAYERS],     fly_last_lr[MAX_PLAYERS],     Float:fly_accelmul[MAX_PLAYERS]; enum {     CAMERA_MODE_NONE    = 0,     CAMERA_MODE_FLY     = 1,     CAMERA_MODE_REVERSE = 2 }; enum {     MOVE_FORWARD = 1,     MOVE_BACK,     MOVE_LEFT,     MOVE_RIGHT,     MOVE_FORWARD_LEFT,     MOVE_FORWARD_RIGHT,     MOVE_BACK_LEFT,     MOVE_BACK_RIGHT }; const     Float:MOVE_SPEED = 100.0,     Float:ACCEL_RATE = 0.03; public OnPlayerConnect(playerid) {     fly_x[playerid] = 0.0;     fly_y[playerid] = 0.0;     fly_z[playerid] = 0.0;     fly_a[playerid] = 0.0;     fly_world[playerid] = 0;     fly_int[playerid] = 0;     fly_state[playerid] = CAMERA_MODE_NONE;     fly_object[playerid] = -1,     bool:fly_spawn[playerid] = false;     fly_last_move[playerid] = 0;     fly_mode[playerid] = 0;     fly_last_ud[playerid] = 0;     fly_last_lr[playerid] = 0;     fly_accelmul[playerid] = 0.0;     #if defined _included_fly_OnPlayerConnect         return _included_fly_OnPlayerConnect(playerid);     #else         return 1;     #endif } #if defined _ALS_OnPlayerConnect     #undef OnPlayerConnect #else     #define _ALS_OnPlayerConnect #endif #define OnPlayerConnect _included_fly_OnPlayerConnect #if defined _included_fly_OnPlayerConnect     forward _included_fly_OnPlayerConnect(playerid); #endif stock SetPlayerFlyStatus(playerid, status = 2) {     if(status == CAMERA_MODE_FLY && fly_state[playerid] == CAMERA_MODE_FLY)         return true;     else if(status == CAMERA_MODE_NONE && fly_state[playerid] == CAMERA_MODE_NONE)         return true;     switch(status)     {         case CAMERA_MODE_NONE:         {             CancelEdit(playerid);             GetPlayerCameraPos(playerid, fly_x[playerid], fly_y[playerid], fly_z[playerid]);             TogglePlayerSpectating(playerid, false);             fly_state[playerid] = CAMERA_MODE_NONE;             fly_spawn[playerid] = true;                  }         case CAMERA_MODE_FLY:         {             GetPlayerPos(playerid, fly_x[playerid], fly_y[playerid], fly_z[playerid]);             fly_world[playerid] = GetPlayerVirtualWorld(playerid);             fly_int[playerid] = GetPlayerInterior(playerid);             GetPlayerFacingAngle(playerid, fly_a[playerid]);             fly_object[playerid] = CreatePlayerObject(playerid, 19300, fly_x[playerid], fly_y[playerid], fly_z[playerid], 0.0, 0.0, 0.0);             TogglePlayerSpectating(playerid, true);             AttachCameraToPlayerObject(playerid, fly_object[playerid]);             fly_state[playerid] = CAMERA_MODE_FLY;         }         case CAMERA_MODE_REVERSE:         {             if(fly_state[playerid] == CAMERA_MODE_NONE)                 return SetPlayerFlyStatus(playerid, CAMERA_MODE_FLY);             else                 return SetPlayerFlyStatus(playerid, CAMERA_MODE_NONE);         }         default:             return SendClientMessage(playerid, -1, "Your argument is not valid.") & 0;     }     return 1; } stock IsPlayerFlying(playerid)     return fly_state[playerid];      public OnPlayerDeath(playerid, killerid, reason) {     if(IsPlayerFlying(playerid))         SetPlayerFlyStatus(playerid, false);     #if defined _included_fly_OnPlayerDeath         return _included_fly_OnPlayerDeath(playerid, killerid, reason);     #else         return 1;     #endif } #if defined _ALS_OnPlayerDeath     #undef OnPlayerDeath #else     #define _ALS_OnPlayerDeath #endif #define OnPlayerDeath _included_fly_OnPlayerDeath #if defined _included_fly_OnPlayerDeath     forward _included_fly_OnPlayerDeath(playerid, killerid, reason); #endif public OnPlayerSpawn(playerid) {     if(fly_spawn[playerid] == true)         SetTimerEx("@OnPlayerSpawnEx", 100, false, "i", playerid);          #if defined _included_fly_OnPlayerSpawn         return _included_fly_OnPlayerSpawn(playerid);     #else         return 1;     #endif } #if defined _ALS_OnPlayerSpawn     #undef OnPlayerSpawn #else     #define _ALS_OnPlayerSpawn #endif #define OnPlayerSpawn _included_fly_OnPlayerSpawn #if defined _included_fly_OnPlayerSpawn     forward _included_fly_OnPlayerSpawn(playerid); #endif @OnPlayerSpawnEx(playerid); @OnPlayerSpawnEx(playerid) {     SetPlayerPos(playerid, fly_x[playerid], fly_y[playerid], fly_z[playerid]);     SetPlayerFacingAngle(playerid, fly_a[playerid]);     SetPlayerVirtualWorld(playerid, fly_world[playerid]);     SetPlayerInterior(playerid, fly_int[playerid]);     fly_spawn[playerid] = false;     return 1; } public OnPlayerUpdate(playerid) {     if(fly_state[playerid] == CAMERA_MODE_FLY)     {         new keys, ud, lr;         GetPlayerKeys(playerid, keys, ud, lr);                  if(fly_mode[playerid] && (GetTickCount() - fly_last_move[playerid] > 100))             MoveCamera(playerid);         if(fly_last_ud[playerid] != ud || fly_last_lr[playerid] != lr)         {             if((fly_last_ud[playerid] != 0 || fly_last_lr[playerid] != 0) && ud == 0 && lr == 0)             {                 StopPlayerObject(playerid, fly_object[playerid]);                 fly_mode[playerid] = 0;                 fly_accelmul[playerid] = 0.0;             }             else             {                 fly_mode[playerid] = GetMoveDirectionFromKeys(ud, lr);                 MoveCamera(playerid);             }         }         fly_last_ud[playerid] = ud;         fly_last_lr[playerid] = lr;         return 0;     }     #if defined _included_fly_OnPlayerUpdate         return _included_fly_OnPlayerUpdate(playerid);     #else         return 1;     #endif } #if defined _ALS_OnPlayerUpdate     #undef OnPlayerUpdate #else     #define _ALS_OnPlayerUpdate #endif #define OnPlayerUpdate _included_fly_OnPlayerUpdate #if defined _included_fly_OnPlayerUpdate     forward _included_fly_OnPlayerUpdate(playerid); #endif stock MoveCamera(playerid) {     new         Float:cam_pos_x, Float:cam_pos_y, Float:cam_pos_z,         Float:cam_front_x, Float:cam_front_y, Float:cam_front_z;              GetPlayerCameraPos(playerid, cam_pos_x, cam_pos_y, cam_pos_z);     GetPlayerCameraFrontVector(playerid, cam_front_x, cam_front_y, cam_front_z);     if(fly_accelmul[playerid] <= 1)         fly_accelmul[playerid] += ACCEL_RATE;     new         Float:speed = MOVE_SPEED * fly_accelmul[playerid],         Float:x, Float:y, Float:z;              GetNextCameraPosition(fly_mode[playerid], cam_pos_x, cam_pos_y, cam_pos_z, cam_front_x, cam_front_y, cam_front_z, x, y, z);     MovePlayerObject(playerid, fly_object[playerid], x, y, z, speed);     fly_last_move[playerid] = GetTickCount();     return 1; } stock GetNextCameraPosition     (         move_mode,         Float:cam_pos_x, Float:cam_pos_y, Float:cam_pos_z,         Float:cam_front_x, Float:cam_front_y, Float:cam_front_z,         &Float:x, &Float:y, &Float:z     ) {     new const         Float:change = 6000.0,         Float:pos_x = cam_front_x * change,         Float:pos_y = cam_front_y * change,         Float:pos_z = cam_front_z * change;     switch(move_mode)     {         case MOVE_FORWARD:         {             x = cam_pos_x + pos_x;             y = cam_pos_y + pos_y;             z = cam_pos_z + pos_z;         }         case MOVE_BACK:         {             x = cam_pos_x - pos_x;             y = cam_pos_y - pos_y;             z = cam_pos_z - pos_z;         }         case MOVE_LEFT:         {             x = cam_pos_x - pos_y;             y = cam_pos_y + pos_x;             z = cam_pos_z;         }         case MOVE_RIGHT:         {             x = cam_pos_x + pos_y;             y = cam_pos_y - pos_x;             z = cam_pos_z;         }         case MOVE_BACK_LEFT:         {             x = cam_pos_x + (-pos_x - pos_y);             y = cam_pos_y + (-pos_y + pos_x);             z = cam_pos_z - pos_z;         }         case MOVE_BACK_RIGHT:         {             x = cam_pos_x + (-pos_x + pos_y);             y = cam_pos_y + (-pos_y - pos_x);             z = cam_pos_z - pos_z;         }         case MOVE_FORWARD_LEFT:         {             x = cam_pos_x + (pos_x  - pos_y);             y = cam_pos_y + (pos_y  + pos_x);             z = cam_pos_z + pos_z;         }         case MOVE_FORWARD_RIGHT:         {             x = cam_pos_x + (pos_x  + pos_y);             y = cam_pos_y + (pos_y  - pos_x);             z = cam_pos_z + pos_z;         }     } } stock GetMoveDirectionFromKeys(ud, lr) {     new         direction = 0;     if(lr < 0)     {         if(ud < 0)             direction = MOVE_FORWARD_LEFT;         else if(ud > 0)             direction = MOVE_BACK_LEFT;         else             direction = MOVE_LEFT;     }     else if(lr > 0)     {         if(ud < 0)             direction = MOVE_FORWARD_RIGHT;         else if(ud > 0)             direction = MOVE_BACK_RIGHT;         else             direction = MOVE_RIGHT;     }     else if(ud < 0)         direction = MOVE_FORWARD;     else if(ud > 0)         direction = MOVE_BACK;     return direction; }