Вопросы

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

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

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

 

  открыть спойлер

 

Отредактировано пользователем 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, я нигде не говорил этого:

  В 6/17/2023 в 15:00, Caracal2222 сказал:

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

Читать далее...  

 

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

  В 6/17/2023 в 14:53, 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.

 

  В 6/17/2023 в 15:09, Cawfee сказал:

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

Читать далее...  

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


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

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

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

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


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

@Caracal2222,

  В 6/17/2023 в 15:18, 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 пользователей онлайн

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

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

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


      Скачать файл Christmas Live » RPG | XS
      Приветствую, сливаю мод, который делал самолично. Мод недоработан, возможно где-то имеются баги, без лаунчера.
      Взят под основу от Phantom RolePlay. Отдельная благодарность за мод WW.INC
      Основная информация про мод:
       
      Информация про сервер:
      Записка:
      ПРИМЕР -  скриншот, сделанный для показа чего-либо и скриншот может является устаревшей информацией(Пояснение: Что-то изменилось, а что-то нет).
      Добавил Доналдо Фарекелка Добавлено 14.03.2025 Категория Моды Автор Donaldo_Farekelka  
    • KAIF HOST
      От KAIF HOST
      Если вы ищете надежный, стабильный и бюджетный хостинг для ваших серверов SAMP или CRMP, то KAIF-HOST.RU - лучший выбор для вас. Мы молодая компания среди игровых хостингов, но мы гарантируем стабильность и безопасность вашего сервера.
       
      Мы предлагаем защиту от TCP SYN и UDP флуда, а также от Spoofing атак. Мы также обеспечиваем защиту на уровнях L3, L4 и L7.
       
      Наши преимущества включают автоподнятие серверов после падения, удобную панель управления сервером и автоматическую установку сервера. Мы также гарантируем быструю техническую поддержку для всех наших клиентов.
       
       
       
      Наши серверы доступны всего от 20 рублей в месяц, что делает нас одним из самых доступных хостингов на рынке.
       
       
       
       
       
       Ссылки:
       
      Сайт kaif-host.ru
      Панель управления lk.kaif-host.ru
      Группа ВКонтакте https://vk.com/kaif_host_official
       
      P.s Промокод #pawnorus даст тебе скидку в размере 20%

    • watson
      От watson
      Привет всем!

      Выкладываю рабочий инструмент, который лично писал под задачи для крупных бонусных проектов. От меня недавно произошла доработка - теперь при записи маршрута сохраняются все сообщения, которые вы пишете в чат.
       
      Как это работает Запуск записи:
      Вводите /route с названием скрипта (или биндите на клавишу) — скрипт начинает фиксировать всё ваше передвижение (onfoot/incar/aim пакеты) и любые ваши сообщения в чат. Завершение:
      Ещё раз /route с названием скрипта или /stop — сохраняется маршрут вместе с чатом в файл формата .rt в папке MoonLoader/rakbotRoutes. Воспроизведение:
      Через команду !play <название> в консоли RakSamp LITE — бот воспроизводит маршрут один в один с вашими действиями, повторяет весь ввод, а так-же отправляет в чат все сохранённые сообщения (имитация через Enter). Поддержка цикла:
      Можно включить повтор маршрута (!loop), пока не надоест. Что важно в коде
      Запись всех синк-пакетов (движения, анимации, aim и т.д.):
      Пакеты по движению (onfoot/incar/aim) записываются подробно — никакой халтуры, каждое значение (позиция, кватернион, скорость, анимации, флаги и т.д.) фиксируется для полной копии.  

       
      Запись сообщений чата по индексам
      Каждое сообщение, которое отправляется в чат во время записи маршрута, сохраняется в отдельную таблицу с текущим индексом (counter). То есть при воспроизведении бот знает, на каком этапе какой текст нужно “цитировать” в чат.  

       
      Воспроизведение маршрута и чата
      На каждом этапе воспроизведения проверяется, было ли сообщение в этот момент — если да, оно “отправляется” как будто в оригинале, без задержек и рассинхрона. Пакеты проигрываются по индексу — как только доходит до конца, скрипт сам решает, останавливать ли выполнение или запускать по кругу (если включен loop).  

       
      Формат сохранения
      Файл маршрута содержит не только действия, но и отдельную секцию [chat], что позволяет воспроизвести всё как было, а не только беготню.  

       
       
      Если кому-то реально нужна автоматизация для бонусных серверов и не только как например фейковые игроки и вам важна последовательность действий и чата — этот инструмент сэкономит часы времени. Всё написано максимально просто для внедрения.

      P.S. Если есть определённые проблемы, вопросы или даже идеи для доработки — пишите.
      Desktop.zip