Question

Баг с командой /changeskin. Можно сменить только на 1 скин и больше не как.

Сама команда:

 

Спойлер

CMD:changeskin(playerid, params[])
{
    if(StartRabWork(playerid) && !GetPVarInt(playerid,"StartRabWork")) return SendClientMessage(playerid,COLOR_WHITE,""cError"Вы не начали рабочий день!");
    switch(PlayerInfo[playerid][pMember])
    {
    case 1,15,16,17: if(PlayerInfo[playerid][pRank] < 14) return SendClientMessage(playerid,COLOR_WHITE,""cError"Вам не доступна данная команда");
    case 2,4,5,10,7: if(PlayerInfo[playerid][pRank] < 9) return SendClientMessage(playerid,COLOR_WHITE, ""cError"Вам недоступна данная команда");
    case 3,11,13,14,9,8: if(PlayerInfo[playerid][pRank] < 9) return SendClientMessage(playerid,COLOR_WHITE,""cError"Вам не доступна данная команда");
    case 6: if(PlayerInfo[playerid][pRank] < 5) return SendClientMessage(playerid,COLOR_WHITE,""cError"Вам не доступна данная команда");
    case 12: if(PlayerInfo[playerid][pRank] < 12) return SendClientMessage(playerid,COLOR_WHITE,""cError"Вам не доступна данная команда");
    default: return SendClientMessage(playerid,COLOR_WHITE,""cError"Вам не доступна данная команда");
    }
    if(sscanf(params,"d",params[0])) return SendClientMessage(playerid, COLOR_WHITE, ""good"Используйте /changeskin [id]");
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_WHITE, ""cError"Игрок оффлайн!");
    if(PlayerInfo[playerid][pMember] != PlayerInfo[params[0]][pMember]) return SendClientMessage(playerid, COLOR_WHITE, ""cError"Данный игрок не в вашей фракции!");
    new fractionid = PlayerInfo[playerid][pMember]-1;
    new mes[256];
    for(new i;i<20;i++)
    {
        new skinid = ChangeSkin[fractionid];
        if(!skinid) break;
        if(!i) format(mes,sizeof(mes),"Скин %d [%d]",i+1,skinid);
        else format(mes,sizeof(mes),"%s\nСкин %d [%d]",mes,i+1,skinid);
    }
    SetPVarInt(playerid,"actinplayerid",params[0]);
    SetPVarInt(params[0], "pOfferFractionid", PlayerInfo[params[0]][pMember]);
    ShowPlayerDialog(playerid,1145,2,PlayerInfo[params[0]][pNames],mes,"Принять","");
    return 1;
}

 

 

Edited by odosenok

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

3.2. Код больше 10 строк брать еще и под спойлер. Как это сделать рассказано в разделе "FAQ"

Устное предупреждение.

Share this post


Link to post

10 answers to this question

  • 0

@Banana Могли-бы вы лучше сформулировать вашу проблему. И возьмите код под цитату.!

Share this post


Link to post
  • 0
1 минуту назад, Nekit_Krut18 сказал:

@Banana Могли-бы вы лучше сформулировать вашу проблему. И возьмите код под цитату.!

Лидер/Зам - могут сменить скин только на 1 а в меню смены их много.

Лидер допустим хочет сменить скин игроку на 102 и там есть 101,102 и тот что выше в меню на нёго меняет а вот на 102 уже не сменит.

Share this post


Link to post
  • 0
46 минут назад, Nekit_Krut18 сказал:

@Banana Могли-бы вы лучше сформулировать вашу проблему. И возьмите код под цитату.!

Всё окей? Если надо ещё скинуть что то скину.

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

3.6. Запрещено поднимать (апать) свою тему чаще, чем 1 раз в 24 часа. 

Устное предупреждение.

Share this post


Link to post
  • 0

Покажите case 1145 (воспользуйтесь поиском по коду (CTRL + F), либо найдите вручную в функции OnDialogResponse).

Код под спойлер и в тему.

Share this post


Link to post
  • 0

@20th century  Тут вроде норм, тк скин выдается для гос орг, а для к примеру балласам, неа. Ну скин меняется (видно по поведению персонажа), но остаётся стандартный все время. Хотя в массиве их 4, и в диалог выводятся тоже 4.

 

Спойлер

case 1145:
		{
			if(!response) return DeletePVar(playerid, "actinplayerid");
			new actplayerid = GetPVarInt(playerid,"actinplayerid");
			new fractionid = GetPVarInt(actplayerid, "pOfferFractionid");
			if(PlayerInfo[playerid][pMember] != fractionid) return SendClientMessage(playerid,CGRAY,""cError"#002");
			new skinid = ChangeSkin[fractionid-1][listitem];
			PlayerInfo[actplayerid][pModel] = skinid;
			SetPlayerSkin(actplayerid,PlayerInfo[actplayerid][pModel]);
			UpdatePlayerData(actplayerid,"pModel",PlayerInfo[actplayerid][pModel]);
			SendClientMessagef(actplayerid, CINFO, "Лидер/Заместитель %s сменил вам фракционный скин!",PlayerInfo[playerid][pNames]);
			DeletePVar(actplayerid, "pOfferFractionid");
			DeletePVar(playerid, "actinplayerid");
			return 1;
		}

 

 

Share this post


Link to post
  • 0

В чем проблема? Код вроде не че?

Share this post


Link to post
  • 0

"..скин меняется, видно по поведению персонажа.."
По какому поведению?
В итоге проблема в чем: работает только первая строка в диалоге, или смена не работает еще и для банд?

Share this post


Link to post
  • 0
7 часов назад, 20th century сказал:

"..скин меняется, видно по поведению персонажа.."
По какому поведению?
В итоге проблема в чем: работает только первая строка в диалоге, или смена не работает еще и для банд?

Смотри у госс-ников скин меняется а у банд нет. Тип пишет лидер сменил вам скин и не фига

Share this post


Link to post
  • 0

@Banana , возможно ИД скинов для банд не прописаны, проверь.

 

Share this post


Link to post
  • 0
20 часов назад, Rich_Hen сказал:

@Banana , возможно ИД скинов для банд не прописаны, проверь.

 

Я же сказал выше, что есть массив из 4 скинов, и в диалоге они отображаются.

Edited by Nekit_Krut18
Причина: Подправил.

Share this post


Link to post
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By d7.KrEoL
      Datalink filterscript - передача тактической информации об игроках на карту sampmap.ru
      Скачать файл Данный скрипт позволяет передавать информацию об игроках на тактическую карту проекта sampmap. Управление функциями через RCON команды, сам скрипт хоть и полностью готов к использованию, но скорее является примером, на его основе можно писать свои системы для взаимодействия с тактической картой.
      Тактическая карта проекта sampmap - это подобие даталинк системы, которая позволяет координировать действия отряда, либо просто отслеживать местоположение игроков в режиме радара. Для каждого переданного в datalink систему (на тактическую карту) игрока выводится его основная информация о скорости, азимуте, высоте, величине и направлении вектора скорости, а так же принадлежность свой/чужой
      Несколько скринов:
       
       
      Архивы:
       
      Исходники:
       
      Команды (ркон) для dlink:
      Помимо серверной версии скрипта существуют так же клиентские для обычного клиента с moonloader и для RakSAMP Lite бота. Все эти скрипты распространяются по открытой лицензии MIT, здесь находится git с исходниками. Проект открыт для ваших предложений относительно кода, или дальнейшего развития, вы можете оставить свои предложения на официальной странице github.






      Добавил d7.KrEoL Добавлено 09.12.2024 Категория Скрипты Автор d7.KrEoL  
    • By d7.KrEoL
      Данный скрипт позволяет передавать информацию об игроках на тактическую карту проекта sampmap. Управление функциями через RCON команды, сам скрипт хоть и полностью готов к использованию, но скорее является примером, на его основе можно писать свои системы для взаимодействия с тактической картой.
      Тактическая карта проекта sampmap - это подобие даталинк системы, которая позволяет координировать действия отряда, либо просто отслеживать местоположение игроков в режиме радара. Для каждого переданного в datalink систему (на тактическую карту) игрока выводится его основная информация о скорости, азимуте, высоте, величине и направлении вектора скорости, а так же принадлежность свой/чужой
      Несколько скринов:
       
       
      Архивы:
       
      Исходники:
       
      Команды (ркон) для dlink:
      Помимо серверной версии скрипта существуют так же клиентские для обычного клиента с moonloader и для RakSAMP Lite бота. Все эти скрипты распространяются по открытой лицензии MIT, здесь находится git с исходниками. Проект открыт для ваших предложений относительно кода, или дальнейшего развития, вы можете оставить свои предложения на официальной странице github.






    • By Мемен Томорли
      Как сделать табличку после бана аккаунта? Типо как на малиновке, когда тебя банят, выдают табличку(скрин приложил), и при входе на сервер такую же табличку давало??