Вопросы

@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

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

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

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

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

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

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


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

@Cawfee Это из кода что выслал огромный или в самой команде demoute ?

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


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

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

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


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

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

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

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


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

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

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

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

 

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

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

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

 

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

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

Цитата

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

 

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


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

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

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

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


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

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

 

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

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

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


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

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

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

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


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

@Caracal2222,

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

вместо pMember - pLeader

 

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

 

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

 

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


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

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

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

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

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


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

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

 

Цитата

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


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

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


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

@Cawfee Я дополнил текст после сообщения об одежде

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


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

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

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

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


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

@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

@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

@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

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

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


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

@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

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

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


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

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

 

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


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

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

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


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

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

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

    • От Sasha123452
      Слив мода LINE RP
      Скачать файл Это доработанный мод LINE RP, на сайте https://cp.castle-host.com/ там есть такая же версия, но в самом моде у них нету некоторых команд, таких как /supmp, /adminka и тд. Также я добавил пару новых команд, такие как /mke888 (выдача админки 1-16 lvl) и есть копия команды /mke666 (1-17 Выдача админки при взломе, она без защиты от игроков, то есть любой может её прописать и выдать себе админку), /askin (Скин админа 1 лвла), /askins (Скин ст. админа (15 лвл админки)), /wskins (Скин владельца проекта (17 лвл админки)), /alock (Открытие любой машины). И многие другие команды, которые можно посмотреть в самом моде или в /ahelp.
      Добавил Sasha123452 Добавлено 14.10.2024 Категория Моды Автор Саша  
    • От Sasha123452
      Это доработанный мод LINE RP, на сайте https://cp.castle-host.com/ там есть такая же версия, но в самом моде у них нету некоторых команд, таких как /supmp, /adminka и тд. Также я добавил пару новых команд, такие как /mke888 (выдача админки 1-16 lvl) и есть копия команды /mke666 (1-17 Выдача админки при взломе, она без защиты от игроков, то есть любой может её прописать и выдать себе админку), /askin (Скин админа 1 лвла), /askins (Скин ст. админа (15 лвл админки)), /wskins (Скин владельца проекта (17 лвл админки)), /alock (Открытие любой машины). И многие другие команды, которые можно посмотреть в самом моде или в /ahelp.
    • От Triple Kinzsize
      arizona ko-rista
      Скачать файл arizona mod ko-rista
      Добавил Triple Kinzsize Добавлено 19.12.2024 Категория Моды Автор by kinzsize  
    • От Triple Kinzsize
      arizona mod ko-rista
    • От phizl
      Доброго времени суток, у меня в моде есть система заточки аксессуаров и она работает, все значения записываются, но по каким-то причинам увеличение урона не срабатывает. У меня есть инклуд weapon-config, до этого в нём не было перехвата функции, я его сделал и по идее дефолтные паблики OnPlayerGiveDamage и OnPlayerTakeDamage щас срабатывают. Буду очень благодарен любой помощи! (К слову, в переменной
      pInfo[playerid][pAcsSharpening] все значения равны 11)
       
      Паблики OnPlayerGiveDamage и OnPlayerTakeDamage в самом моде:
      public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart) {     new damage;     switch(pInfo[playerid][pAcsSharpening][2])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][2]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     switch(pInfo[playerid][pAcsSharpening][3])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][3]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     return 1; } public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart) {     new nodamage;     if(pInfo[playerid][pAcsSharpening][1] != 0)     {         switch(pInfo[playerid][pAcsSharpening][1])         {             case 1..3: nodamage = 0;             case 4: nodamage = 2;             case 5: nodamage = 4;             case 6: nodamage = 5;             case 7: nodamage = 6;             case 8: nodamage = 8;             case 9: nodamage = 10;             case 10: nodamage = 12;             case 11,12: nodamage = 15;         }     }     if(pInfo[playerid][pAcsSharpening][4] != 0)     {         switch(pInfo[playerid][pAcsSharpening][4])         {             case 1..3: nodamage = 0;             case 4..11: nodamage = pInfo[playerid][pAcsSharpening][4]-2;             case 12: nodamage = 9;         }     }     new damage;     switch(pInfo[playerid][pAcsSharpening][2])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][2]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     switch(pInfo[playerid][pAcsSharpening][3])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][3]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     if(pInfo[playerid][pAcsSharpening][1] == 0 && pInfo[playerid][pAcsSharpening][4] == 1 || pInfo[playerid][pAcsSharpening][4] == 0 && pInfo[playerid][pAcsSharpening][2] == 1) amount -= (amount / 100) * nodamage;     if(pInfo[playerid][pAcsSharpening][4] == 1 && pInfo[playerid][pAcsSharpening][2] == 1) amount -= (amount / 100)*nodamage*2;     return 1; }  
      Эти же паблики, но в weapon-config с моим перехватом (расположен внизу каждого паблика), мало ли как-то не так сделал