10 posts in this topic

Из названия уже понятно, что эта команда, надевает на Вас новогоднюю шапку.

Команда: /shapka

Спойлер

new shapka[MAX_PLAYERS];

 

Спойлер

  if(strcmp(cmd, "/shapka", true) == 0)
        {
            if(IsPlayerConnected(playerid))
            {
                if(shapka[playerid] == 0)
                {
                    SetPlayerAttachedObject(playerid,2, 19064, 2, 0.13, 0.0, 0.0, 0.0, 90.0, 90.0);
                    shapka[playerid] = 1;
                    GiveMoney(playerid, -0);// Сколько стоит
                    SendClientMessage(playerid, COLOR_YELLOW, "Вы надели новогоднюю шапку!");
                }
                else
                {
                    RemovePlayerAttachedObject(playerid, 2);
                    DestroyPlayerObject(playerid, 19064);
                    shapka[playerid] = 0;
                    SendClientMessage(playerid, COLOR_YELLOW, "Вы сняли шапку!");
                }
            }
            return 1;
}

 

 

Share this post


Link to post
Share on other sites

Не работает.

Share this post


Link to post
Share on other sites
2 часа назад, Асыл сказал:

Не работает.

Командный оборот какой ? 

Share this post


Link to post
Share on other sites
В 03.08.2017 в 14:06, RASTAMAN сказал:

Из названия уже понятно, что эта команда, надевает на Вас новогоднюю шапку.

Команда: /shapka

  Ко всем new (закрыть спойлер)


new shapka[MAX_PLAYERS];

 

  В public OnPlayerCommandText (закрыть спойлер)


  if(strcmp(cmd, "/shapka", true) == 0)
        {
            if(IsPlayerConnected(playerid))
            {
                if(shapka[playerid] == 0)
                {
                    SetPlayerAttachedObject(playerid,2, 19064, 2, 0.13, 0.0, 0.0, 0.0, 90.0, 90.0);
                    shapka[playerid] = 1;
                    GiveMoney(playerid, -0);// Сколько стоит
                    SendClientMessage(playerid, COLOR_YELLOW, "Вы надели новогоднюю шапку!");
                }
                else
                {
                    RemovePlayerAttachedObject(playerid, 2);
                    DestroyPlayerObject(playerid, 19064);
                    shapka[playerid] = 0;
                    SendClientMessage(playerid, COLOR_YELLOW, "Вы сняли шапку!");
                }
            }
            return 1;
}

 

 

Можно на CD_CMD??

Share this post


Link to post
Share on other sites

@Skezz_Guriro Конечно, замените эту строку

14 часов назад, Skezz_Guriro сказал:

if(strcmp(cmd, "/shapka", true) == 0)

на эту

CMD:shapka(playerid)

и добавить нужно тогда команду не в OnPlayerCommandText, а ко всем командам. 

Share this post


Link to post
Share on other sites
2 часа назад, DEST сказал:

@Skezz_Guriro Конечно, замените эту строку

на эту


CMD:shapka(playerid)

и добавить нужно тогда команду не в OnPlayerCommandText, а ко всем командам. 

Спасибо :D

Share this post


Link to post
Share on other sites

Лучше создать переменную типа "bool"

new bool: shapka[MAX_PLAYERS];

Тогда команда будет иметь такой вид.

if(strcmp(cmd, "/shapka", true) == 0)
        {
            if(IsPlayerConnected(playerid))
            {
                if(shapka[playerid] == false)
                {
                    SetPlayerAttachedObject(playerid,2, 19064, 2, 0.13, 0.0, 0.0, 0.0, 90.0, 90.0);
                    shapka[playerid] = true;
                    GiveMoney(playerid, -0);// Сколько стоит
                    SendClientMessage(playerid, COLOR_YELLOW, "Вы надели новогоднюю шапку!");
                }
                else
                {
                    RemovePlayerAttachedObject(playerid, 2);
                    DestroyPlayerObject(playerid, 19064);
                    shapka[playerid] = false;
                    SendClientMessage(playerid, COLOR_YELLOW, "Вы сняли шапку!");
                }
            }
            return true;
}

И на DC_CMD

CMD:shapka(playerid)
{
    if(IsPlayerConnected(playerid))
    {
    	if(shapka[playerid] == false)
    	{
    		SetPlayerAttachedObject(playerid,2, 19064, 2, 0.13, 0.0, 0.0, 0.0, 90.0, 90.0);
    		shapka[playerid] = true;
    		GiveMoney(playerid, -0);// Сколько стоит
    		SendClientMessage(playerid, COLOR_YELLOW, "Вы надели новогоднюю шапку!");
    	}
    	else
    	{
            RemovePlayerAttachedObject(playerid, 2);
            DestroyPlayerObject(playerid, 19064);
            shapka[playerid] = false;
            SendClientMessage(playerid, COLOR_YELLOW, "Вы сняли шапку!");
    	}
    }
    return true;
}

 

Edited by SCRIPTMAN

Share this post


Link to post
Share on other sites

@SCRIPTMAN, только в команде не требуется проверка, подключен ли игрок.

Share this post


Link to post
Share on other sites

@odosenok от нечего делать решил проверить что написал и уже сам это понял, а изменить не смог))) Перепутал проверку, залогинен ли игрок.

Edited by SCRIPTMAN

Share this post


Link to post
Share on other sites

спс, все робит!:x

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

На форуме благодарность принято выражать через кнопку "+".

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • MetaLife Online
      By MetaLife Online
      Привествую! писал код. проверил работу, в БД отправилось информация криво 
      потом добавил к P_NICK[MAX_PLAYER_NAME] для того чтобы все было окей. Но после этого данные вообще не отпровляються и не показываеться %s. пару раз удалял и не помогло не чего 
      enum PLAYER_INFO {     P_ID,     P_NICK[MAX_PLAYER_NAME],     P_PASS,     P_GENDER,     P_SKIN,     P_LVL, };  

    • Danny_Marcelo
      By Danny_Marcelo
      Всех приветствую. Сегодня я решил обновить систему мероприятий, т.к. на самом проекте Advance RP уже давно видоизменили систему, добавили нового функционала. Мы не должны стоять на месте и я решил тоже свою систему доработать. Вы можете использовать данную систему как аналог Advance RP или же доработать для своего проекта. Все в ваших руках как говорится.
       
      Что нового?
       
      Итак приступим:
      Находим свои переменные и вставляем:
       
      new settp = 0; // Флаг включения/выключения телепортации new Float:TeleportFloat[3]; // Координаты точки телепортации new TeleportInfo[2]; // Интерьер и виртуальный мир new Float:PlayerLastPos[MAX_PLAYERS][3]; // Последние координаты игрока new PlayerLastInt[MAX_PLAYERS]; // Последний интерьер игрока new PlayerLastVW[MAX_PLAYERS]; // Последний виртуальный мир игрока new PlayerWeapons[MAX_PLAYERS][13][2]; // Оружие игрока (слот и патроны) new PlayerUsedTP[MAX_PLAYERS]; // Флаг для отслеживания использования /tp  
      Далее идём в команды, мой случай на Pawn.CMD, но +/- везде одинаково, разве что меняется шапка
       
      CMD:settp(playerid, params[]) {     if (PlayerInfo[playerid][pAdmin] < 4) return 1;     new string[95];     if (settp == 0)     {         GetPlayerPos(playerid, TeleportFloat[0], TeleportFloat[1], TeleportFloat[2]);         TeleportInfo[0] = GetPlayerInterior(playerid);         TeleportInfo[1] = GetPlayerVirtualWorld(playerid);         settp = 1;         format(string, sizeof(string), "[A] %s[%d] установил точку телепорта для игроков. {00CC00}ТП включен.", PlayerInfo[playerid][pName], playerid);         SendAdminMessage(0x52B2B5FF, string);     }     else     {         format(string, sizeof(string), "[A] %s[%d] удалил точку телепорта для игроков. {FF6600}ТП отключен.", PlayerInfo[playerid][pName], playerid);         SendAdminMessage(0x52B2B5FF, string);         settp = 0;     }     return 1; } CMD:tp(playerid, params[]) {     if (settp == 0) return SendClientMessage(playerid, 0xCECECEFF, !"Функция отключена администратором.");     if (PlayerInfo[playerid][pJailed] >= 1) return SendClientMessage(playerid, 0xCECECEFF, !"Арестованным не разрешено покидать камеру.");     if (PlayerInfo[playerid][pRabota] != 0) return SendClientMessage(playerid, 0xCECECEFF, !"Необходимо завершить все начатые работы и активные действия.");     if (bolkam[playerid] == true) return SendClientMessage(playerid, 0xCECECEFF, !"Необходимо завершить все начатые работы и активные действия.");     GetPlayerPos(playerid, PlayerLastPos[playerid][0], PlayerLastPos[playerid][1], PlayerLastPos[playerid][2]);     PlayerLastInt[playerid] = GetPlayerInterior(playerid);     PlayerLastVW[playerid] = GetPlayerVirtualWorld(playerid);     for (new i = 0; i < 13; i++)     {         GetPlayerWeaponData(playerid, i, PlayerWeapons[playerid][i][0], PlayerWeapons[playerid][i][1]);     }     PlayerUsedTP[playerid] = 1;     ShowPlayerDialog(playerid, 22, DIALOG_STYLE_MSGBOX, !"{6699FF}Телепортация",         !"{FFFFFF}Вы уверены, что хотите попасть на место проведения мероприятия?\n{FFCD00}Ваше оружие будет изъято для хранения и возвращено позже.", !"Да", !"Нет");     return 1; }  
       
      CMD:back(playerid, params[]) {     if (!PlayerUsedTP[playerid])     {         return SendClientMessage(playerid, 0xCECECEFF, !"Эту функцию можно использовать после {FF9933}/tp, /go {CECECE}или по окончании {FF9933}мероприятий");     }     SetPlayerPos(playerid, PlayerLastPos[playerid][0], PlayerLastPos[playerid][1], PlayerLastPos[playerid][2]);     SetPlayerInterior(playerid, PlayerLastInt[playerid]);     SetPlayerVirtualWorld(playerid, PlayerLastVW[playerid]);     ResetPlayerWeapons(playerid);     for (new i = 0; i < 13; i++)     {         if (PlayerWeapons[playerid][i][0] != 0)         {             GivePlayerWeapon(playerid, PlayerWeapons[playerid][i][0], PlayerWeapons[playerid][i][1]);         }     }     PlayerUsedTP[playerid] = 0;     SendClientMessage(playerid, 0x3399FFFF, !"Вы вернулись туда, где были до телепортации");     return 1; } Ну и в OnDialogResponse:
      case 22: // Не забудьте проверить и при надобности изменить id диалога на вашу цифру или ID_NAME         {             if (response)             {                 SetPlayerPos(playerid, TeleportFloat[0], TeleportFloat[1], TeleportFloat[2]);                 SetPlayerInterior(playerid, TeleportInfo[0]);                 SetPlayerVirtualWorld(playerid, TeleportInfo[1]);                 ResetPlayerWeapons(playerid);                 SendClientMessage(playerid, 0x66CCFFFF, "Вы были доставлены на место проведения мероприятия");                 SendClientMessage(playerid, 0x66CCFFFF, "Чтобы вернуться обратно, введите {FF9900}/back");             }         } Скриншоты:
       
      Если игрок сидит в КПЗ и вводит /tp:

       
      При включенном /tp:

       
      При выключенном /tp:

       
      Сообщение администраторам:

       
      Если работаешь или лечишься в больнице:

       
      Текст после телепортации:

       
      При вводе /back 1 и более раз:

       
      P.S. Команду /tp на Advance можно нажимать бесконечно, по этому я не стал сюда пихать аналогичную проверку как в /back.
      Если что, не сложно будет добавить 1 строчку проверки. Просто имейте ввиду, что это не баг. Просто нужно же соответствовать названию темы "На 100% КОПИЯ"))
       
      Автор: Danny_Marcelo
      Размещая на другие порталы, обязательно указать автора