Вопросы

Caracal2222
Свой человек

@Cawfee Здравствуйте. Не могли бы помочь? Взял с Аризоны крмп команду на увольнение гос.служащих, она доступна лишь Правительству и ФСБ, подогнал в другой серв крмп, и при вводе /demoute пишет что она доступна лишь ФСБ и Правительству. 

Даже ставил != вместо == в строке if(PI[playerid][pMember] == TEAM_FBI || PI[playerid][pMember] == TEAM_MERIA) return SendClientMessage(playerid,COLOR_RED, "Доступно только ФСБ и Правительству!");

 

Спойлер

CMD:demoute(playerid, params[])
{
    if(PI[playerid][pMember] == TEAM_FBI || PI[playerid][pMember] == TEAM_MERIA) return SendClientMessage(playerid,COLOR_RED, "Доступно только ФСБ и Правительству!");
    if(PI[playerid][pRank] < 3return SendClientMessage(playerid,COLOR_RED, "Ваш ранг слишком мал");
    //if(PlayerInfo[playerid][pLeader] == 0) return SendClientMessage(playerid,COLOR_RED, "Отказано в доступе! (Доступно только лидеру)");
    if(!IsPlayerConnected(playerid) ||  PlayerLogged[playerid]) return false;
    new id,string[200],reason[100];
    if(sscanf(params,"us[100]",playerid,reason)) return SendClientMessage(playerid,COLOR_RED, "Используйте: /demoute [id] [причина]");
    if(!ProxDetectorS(5.0, playerid, 1)) return SendClientMessage(playerid,COLOR_RED, "Вы далеко от игрока!");
    if(playerid == playerid) return SendClientMessage(playerid,COLOR_RED, "Вы можете уволить только гос.служащих!");
    /*if(PI[playerid][pLeader] > 0 ) return SendClientMessage(playerid,COLOR_RED, "Вы не можете уволить лидера");*/
    if(IsACop(playerid))
    {
        if(IsPlayerAttachedObjectSlotUsed(playerid, 8))RemovePlayerAttachedObject(playerid, 7);
    }
    PI[playerid][pMember] = 0;
    PI[playerid][pDCTime]=0;
    SendClientMessage(id,COLOR_WHITE,">> {FF6347} Местом спавна автоматически назначен ЖД Вокзал. Изменить место спавна >> /setspawn!");
    PI[playerid][pRank] = 0;
    UpdatePlayerData(playerid, "Rank", PI[playerid][pRank]);
    pSportZal[playerid]=0;
    TeamDuty[playerid] = false;
    format(string,sizeof(string),"{FFFFFF}%s выгнал вас из организации.\nПричина: %s",GetName(playerid), reason);
    SendClientMessage(id,COLOR_LIGHTBLUE,string);
    format(string,sizeof(string),"Вы выгнали %s. Причина: %s",GetName(playerid), reason);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
    format(string,sizeof(string),"[D]%s[%d] Уволил %s, Причина: %s",GetName(playerid),playerid,GetName(playerid), reason);
    SetPlayerColor(playerid,0xFDFCFC15);
    ResetPlayerWeaponsAC(playerid);
    SetPlayerArmour(playerid, 0);
    return true;
}

 

 

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

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

Вынес ваш вопрос и все его обсуждения в отдельную тему.

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


Ссылка на сообщение

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

  • 0
Cawfee
Великий Гуру

@Caracal2222, следующей строкой вы назначаете игрока руководителем организации:

PI[неважно][pLeader] = PI[неважно][pMember] = fractionid;

А снимаете следующей строкой:

PI[неважно][pMember] = 0;

Не замечаете, что вы устанавливаете две переменные, а сбрасываете одну? И после этого удивляетесь, что вы по-прежнему числитесь в организации.

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


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@Caracal2222, мы решаем проблему с командой demoute, а не с обработчиками диалогов, связанных с выдачей прав лидера.

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


Ссылка на сообщение
  • 0
Caracal2222
Свой человек

@Cawfee Да это так, но вы просто писали скинуть диалоги, я и думал что еще речь об этом пока что. Я не знаю что там должно быть, если бы я писал мод то мб и знал какие там используются, говорил что я команду взял просто и переделал под свой, поменяв лишь переменные на те что используются у меня. Дабы избавиться от ошибок.  Что тогда делать, раз не та строчка

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

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


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@Caracal2222, я нигде не говорил этого:

7 минут назад, Caracal2222 сказал:

раз не та строчка

 

Я сказал следующее:

13 минут назад, Cawfee сказал:

вы устанавливаете две переменные, а сбрасываете одну

 

При выдаче прав лидера вы записываете значение новой организации в две переменные (pLeader и pMember), а при увольнении из организации аннулируете только pMember. Как насчет того, чтобы аннулировать pLeader?

Уточню. pMember содержит информацию о том, в какой организации состоит игрок, а pLeader - информацию о том, в какой организации игрок является лидером. При назначении игрока лидером организации в pMember и pLeader вы фактически занесли значение номера фракции. При увольнении игрока через demoute вы сбросили только значение pMember, но не тронули pLeader. В итоге игрок так и остался лидером организации. Именно эту ситуацию вы и описали здесь:

Цитата

на деле игрок остается в дпс, пока его через setleader не снимут 

 

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


Ссылка на сообщение
  • 0
Caracal2222
Свой человек

@Cawfee ЧТо тогда нужно подправить ? Или добавить к Member - pLeader ? 

@Cawfee PI[playerid][pMember]  && PI[playerid][pLeader] !=0 тип того или что

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


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@Caracal2222, я уже сказал, что нужно сделать. Глагол аннулировать предполагает присвоить значение 0.

 

7 минут назад, Cawfee сказал:

Как насчет того, чтобы аннулировать pLeader?

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


Ссылка на сообщение
  • 0
Caracal2222
Свой человек

@Cawfee Добавить получается тоже самое, но вместо pMember - pLeader и также значение 0 ?

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

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


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@Caracal2222,

Только что, Caracal2222 сказал:

вместо pMember - pLeader

 

Если вы вместо pMember напишете pLeader, тогда игрок не будет лидером организации, но будет состоять в организации как обычный сотрудник. Вам нужно аннулировать и pMember, и pLeader.

 

PI[id][pMember] = 0;
PI[id][pLeader] = 0;

 

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


Ссылка на сообщение
  • 0
Caracal2222
Свой человек

@Cawfee Ну я и имел ввиду это. Сделал так и теперь все ровно. Но вот пока не перезайдет или не переспавнишь игрока (spawn 1 к примеру), костюм не пропадет с игрока,так и будет в дпс форме 

@Cawfee И все же текст почему выводится лишь тому кого увольняют, использовав ее выходит так,буд-то бы игрок(лидер) сам себя уволил. Прописал от имени Dima к примеру и на ак Pasha пришло в чате Pasha выгнал вас из организации с причиной и чуть ниже Вы выгнали Pasha с причиной 

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

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


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@Caracal2222 , я вам уже ответил насчет одежды.

 

Цитата

а почему одежда должна была измениться, если это не заложено в логике данной команды?


Если вы добавите функцию изменения одежды игрока, тогда она и изменится. Изменить можно через SetPlayerSkin.

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


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@Caracal2222, тогда жду от вас следующую информацию.

  1. Код команды из вашего мода (возьмите и скопируйте из мода, а не ссылайтесь на сообщения выше).
  2. Идентификатор аккаунта с именем Dima.
  3. Идентификатор аккаунта с именем Pasha.
  4. С какими параметрами вы вводите команду и на каком аккаунте.

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


Ссылка на сообщение
  • 0
Caracal2222
Свой человек

@Cawfee Вот что есть на данный момент, я добавил SetSkin при увольнении. 

2.Дима имеет например id на сервере 0, а Паша имеет id 1

От лица Dima (0 id) ввожу в чате /demoute 1 (Pasha) Причина 1(к примеру), после идет сообщение на аккаунт с ID 1 (Pasha)  о том что Pasha  выгнал вас из организации, ниже тоже самое но уже Вы выгнали Pasha. Хотя должно писаться так на аккаунте с ID 1 (Pasha): Dima выгнал вас из организации. Причина. А на ID 0 (Dima): Вы выгнали Pasha.Причина 

CMD:demoute(playerid, params[])
{
    if(PI[playerid][pMember] != TEAM_FBI && PI[playerid][pMember] != TEAM_MERIA) return SendClientMessage(playerid,COLOR_RED, "Доступно только ФСБ и Правительству!");
    if(PI[playerid][pRank] < 3return SendClientMessage(playerid,COLOR_RED, "Ваш ранг слишком мал");
    //if(PlayerInfo[playerid][pLeader] == 0) return SendClientMessage(playerid,COLOR_RED, "Отказано в доступе! (Доступно только лидеру)");
    new id,string[200],reason[100];
    if(sscanf(params,"us[100]",playerid,reason)) return SendClientMessage(playerid,COLOR_RED, "Используйте: /demoute [id] [причина]");
    if(!IsPlayerConnected(id) || !PlayerLogged[id]) return false;
    if(!ProxDetectorS(5.0, playerid, 1)) return SendClientMessage(playerid,COLOR_RED, "Вы далеко от игрока!");
    //if(playerid == playerid) return SendClientMessage(playerid,COLOR_RED, "Вы можете уволить только гос.служащих!");
    /*if(PI[id][pLeader] > 0 ) return SendClientMessage(playerid,COLOR_RED, "Вы не можете уволить лидера");*/
    if(IsACop(playerid))
    {
        if(IsPlayerAttachedObjectSlotUsed(playerid, 8))RemovePlayerAttachedObject(playerid, 7);
    }
    PI[playerid][pMember] = 0;
    PI[playerid][pLeader] = 0;
    PI[playerid][pDCTime]=0;
    SendClientMessage(playerid,COLOR_WHITE,">> {FF6347} Местом спавна автоматически назначен ЖД Вокзал. Изменить место спавна >> /setspawn!");
    PI[playerid][pRank] = 0;
    UpdatePlayerData(playerid, "Rank", PI[playerid][pRank]);
    pSportZal[playerid]=0;
    TeamDuty[playerid] = false;
    format(string,sizeof(string),"{FFFFFF}%s выгнал вас из организации.\nПричина: %s",GetName(playerid), reason);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
    format(string,sizeof(string),"Вы выгнали %s. Причина: %s",GetName(playerid), reason);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
    //format(string,sizeof(string),"[D]%s[%d] Уволил %s, Причина: %s",GetName(playerid),playerid,GetName(playerid), reason);
    SetPlayerColor(playerid,0xFDFCFC15);
    ResetPlayerWeaponsAC(playerid);
    SetPlayerArmour(playerid, 0);
    SetPlayerSkin(playerid, 299);
    return true;
}

 

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

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


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@Caracal2222, во всех командах, приведенных выше, вывод текста осуществлялся следующим образом:

format(string,sizeof(string),"{FFFFFF}%s выгнал вас из организации.\nПричина: %s",GetName(playerid), reason);
SendClientMessage(id,COLOR_LIGHTBLUE,string);
format(string,sizeof(string),"Вы выгнали %s. Причина: %s",GetName(id), reason);
SendClientMessage(playerid,COLOR_LIGHTBLUE,string);

Вы же сделали это следующим образом, никому не сообщив, и теперь требуете здесь объяснений, почему у вас не работает.

format(string,sizeof(string),"{FFFFFF}%s выгнал вас из организации.\nПричина: %s",GetName(playerid), reason);
SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
format(string,sizeof(string),"Вы выгнали %s. Причина: %s",GetName(playerid), reason);
SendClientMessage(playerid,COLOR_LIGHTBLUE,string);

 

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


Ссылка на сообщение
  • 0
Caracal2222
Свой человек

@Cawfee То что выше, где id указано у меня не работает. Тк такого нет с ID в самом моде, используется playerid соответственно я поменял на playerid,во вторых с этими изменениями (playerid) я и кидал 

@Cawfee Щас попробую вернуть исходное  с ID значениями  format(string,sizeof(string),"{FFFFFF}%s выгнал вас из организации.\nПричина: %s",GetName(playerid), reason); SendClientMessage(id,COLOR_LIGHTBLUE,string); format(string,sizeof(string),"Вы выгнали %s. Причина: %s",GetName(id), reason); SendClientMessage(playerid,COLOR_LIGHTBLUE,string);

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

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


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@Caracal2222, ну, конечно, вы убрали ото всюду переменную id, а теперь говорите, что ее нет. @Sleash изначально вам дал полностью рабочий код, который вы испортили везде, где только можно, и теперь ждете, что это заработает.

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


Ссылка на сообщение
  • 0
Caracal2222
Свой человек

@Cawfee Все может быть. Вернул исход 

format(string,sizeof(string),"{FFFFFF}%s выгнал вас из организации.\nПричина: %s",GetName(playerid), reason);
SendClientMessage(id,COLOR_LIGHTBLUE,string);
format(string,sizeof(string),"Вы выгнали %s. Причина: %s",GetName(id), reason);
SendClientMessage(playerid,COLOR_LIGHTBLUE,string);

Теперь от лица Dima(0 id) идет так в чате: Дима выгнал вас из организации, а на ID 1 (Pash) высвечивается в чате: Вы выгнали Dima 

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


Ссылка на сообщение
  • 0
Caracal2222
Свой человек

@Cawfee Настроил как надо, куча времени убил. Теперь надпись Уволил и Вы уволили появляется так как положено. Есть другой вопрос, хоть и нельзя новый вопрос в старом задавать, но все же, у меня при регистрации выдаются автоматом все лицензии(водительские, воздушные и тд), я уже не знаю что еще делать, но я нашел pLic там где указано 1 вместо 0, заменил на 0 и они все равно выдаются во время регистрации ака, как отключить можно ?

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


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@Caracal2222, отключить можно путем нахождения фрагмента кода, связанного с выдачей лицензий, и его изменения. Где у вас этот фрагмент и как он выглядит я не знаю. Если не найдете в коде, смотрите в базе данных (возможно, лицензии вписаны как значение по умолчанию).

 

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


Ссылка на сообщение
  • 0
Caracal2222
Свой человек

@Cawfee Хорошо, попробую поискать. А с sampvoice помочь сможете ? По нему я другой вопрос открыл 

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


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

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

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

    • Дебилойд
      От Дебилойд
      Здравствуйте!
      Мы ищем талантливого 3D-моделлера в команду нашего CRMP-проекта!
      Что нужно будет делать:
      Моделировать и адаптировать автомобили.
      Создавать и настраивать скины (модели персонажей).
      Большим плюсом будет:
      Умение создавать качественные и оптимизированные интерьеры.
      Если вы хотите стать частью нашей команды и развивать проект вместе с нами, пишите в ЛС. Ждем ваши портфолио!
    • LORDIKUS
      От LORDIKUS
      Уважаемые участники форума - всех приветствую, кто перешел в беседу моей темы обсуждения. В настоящее время у меня зарождается огромное желание и мысль создать собственный CR:MP проект, но столкнулся с единственной проблемой - с отсутствием команды людей, у которых будет искреннее желание ежедневно вкладывать свой труд на разработку проекта. Особого опыта в скриптинге, маппинге, дизайне или в моделировании у меня не имеется, поэтому такой критерий как опыт в определенной сфере для желающих вступить в команду я не рассматриваю. Так как проект не открыт и находится на начальной стадии создания, мое сотрудничество выстраивается на некоммерческой основе (без выплаты за проделанную работу и труд), однако я не собираюсь отрицать высокую ценность вложенного командой труд — труд, особенно на первой стадии разработки я рассматриваю превыше всего. После открытия проекта в зависимости от коммерции и чистой прибыли каждый участник будет получать настоящую выплату, однако это также может убить еще значительное время. Мне нужна команда, которая проявит искренний интерес в создании общего между командой CR:MP проекта, пожертвует свое время, а также вложит собственный труд благодаря заработанным навыкам. Если вас заинтересовала данная тема обсуждения, пожалуйста, свяжитесь со мной по любым возможным и удобным для вас контактам связи ниже. Спасибо всем, кто зашел в мою беседу!

      🔗 Спец. Связь:
      — DISCORD: https://discord.com/users/1452715348196589691 (перейти по ссылке и добавить в друзья) ИЛИ _shin833_ (ввести никнейм и отправить запрос дружбы)
      — VK: https://vk.com/shin833
      — TG: https://t.me/s_hin833
    • Korochansky
      От Korochansky
      Настало время объявить о скором выпуске первого релиза среды разработки под названием Spawn.

      В настоящее время программа находится на заключительных этапах доработки кода и локализации интерфейса.
      Таким образом, в течение следующей недели будет выпущена быстрая и современная среда разработки, обладающая следующими возможностями (о которых я расскажу сейчас, а о других — позже):
       
      Полнофункциональный локальный Git: 
      Индексирование, фиксации, индикаторы состояния и мягкий/жесткий сброс до любой точки сохранения одним щелчком мыши. Разрабатывайте свой игровой сервер, не боясь его сломать.
      Новички могут рассматривать это как историю кодовой базы вашего сервера (что и есть на самом деле).
       
      Чистый UTF-8 (без BOM): 
      Полный отказ от устаревшей кодировки Windows-1251 (CP1251) для абсолютной стабильности и идеальной совместимости с Git.
      Реализация поддержки CP1251 привела бы к нестабильному поведению программы и ухудшила бы пользовательский опыт.
       
      История изменений строк: Редактор выделяет измененные строки в реальном времени в полях рядом с номерами строк. Это позволяет мгновенно видеть границы изменений, внесенных с момента открытия файла.
       
      Сопоставление и выделение фигурных скобок: мгновенное выделение открывающих и закрывающих фигурных скобок для быстрой навигации по структуре кода и защиты от ошибок компиляции.
       
      Интеграция с SAMPCTL: готовая к использованию автоматизация процессов. Сборка, запуск сервера и менеджер зависимостей (управление библиотеками и плагинами) работают напрямую из интерфейса редактора.
       
      И многое другое...
       
      И самое главное: проект будет с открытым исходным кодом под лицензией GPLv3!
      Следите за новостями о выпуске в репозитории: https://github.com/daniilkorochansky/spawn
    • KodBi
      От KodBi
      шапка
      по одиночке работают
      нужны оба