Главная Форум Файлы Статьи СОСТАВ ZH&ZHS О НАС GITHUB КАНАЛ YouTube BlackList WhiteList
Добро пожаловать на уникальный игровой портал ZETA-HACK TEAM! Здесь Вы сможете найти самые интересные новости из мира игровой индустрии, найти самые свежие сотфины для различных онлайн игр, общаясь на форуме получать мнения специалистов и помогать тем кто не смог получить нужный ответ в той или иной сфере!
Авторизация Регистрация
Последние обсуждаемые темы на форуме
Последние комментарии к новостям
Топ-10 форумчан
Кракозябры в RakSamp'e AdCKuY_DpO4uLa 2
Списк обнаруженых багов сайта =AlexDrift= 14
- vitalik313RUSRUSRUS 4
Заявка JustSnile 6
PrivateVPN =AlexDrift= 0
ExpressVPN =AlexDrift= 0
Windscribe VPN =AlexDrift= 0
Голосовой чат в SA-MP [SAMPVOI... =AlexDrift= 2
[C++]Частичный фикс стиллера о... =AlexDrift= 0
DUEL SYSTEM =AlexDrift= 0
Microsoft назвала дату смерти Windows 7 26.02.2019
•Pro•Dm•Server• 15.01.2019
Дальнобойщики 0.3.7 15.01.2019
Приватный чит для Rust Experimental 21.11.2018
Приватный чит для Rust Experimental 21.11.2018
PS4-эксклюзив Spider-Man за четыре недел... 13.10.2018
[0.3e]Игровой мод сервера Street Workout... 12.10.2018
[0.3e]Игровой мод сервера Street Workout... 12.10.2018
PS4-эксклюзив Spider-Man за четыре недел... 12.10.2018
Новый вид крашинга 11.10.2018
1. =AlexDrift= 525
2. Pahanch1kkk 45
3. InFerNo 35
4. R4DUGA 32
5. d1amondl1on 31
6. AdCKuY_DpO4uLa 24
7. [NACIONAL]IST_BERZ 23
8. Julia 21
9. Lil_Jonson 17
10. Effect 15
Витрина ссылок Купить ссылку (4 р.) » | Ваша ссылка | Ваша ссылка | Ваша ссылка | Ваша ссылка | Ваша ссылка | Ваша ссылка | Ваша ссылка

  • Страница 1 из 1
  • 1
Форум » Pawno программирование » Мануалы/Уроки » Готовые решения » DUEL SYSTEM
DUEL SYSTEM
14.01.2019 в 01:13
#1
=AlexDrift=
Не важны козыри если игра не на счет...
Статус: Offline
Регистрация: 24.11.2012
Сообщения: 525
Репутация: 84
Что бы добавить медаль "Легенда портала" добавляем в ?if "or 1='ID пользователя'"
Что бы добавить медаль "Золотой страж" добавляем в ?if "or 1='ID пользователя'"
Код
//==============================================================================
//=============== NEW DUEL SYSTEM BY ESSLE (Mov1c) | version 2.0 ===============
//==============================================================================

#include <a_samp>

#define DUEL_MIR      2000
#define DUEL_ID            11777

new PlayerInDuel[MAX_PLAYERS];
new GetDuelCreate[MAX_PLAYERS];
new StartingDuel[MAX_PLAYERS];
new CountDuelTimer[MAX_PLAYERS];
new WeaponDuel = 24;
new MoneyDuel = 1000;
new bool:DuelPlaceVisit = false;

new Float:duelspawn[12][3] = {
{-1129.8909,1057.5424,1346.4141},
{-1103.7913,1086.7838,1341.9036},
{-1082.0232,1043.7269,1343.7159},
{-1053.5138,1023.3488,1343.1503},
{-1048.3635,1058.6753,1343.9337},
{-1060.6057,1092.9423,1342.9473},
{-1036.6921,1088.7567,1343.1466},
{-1015.7525,1069.8811,1344.1016},
{-1020.4619,1034.2771,1342.4492},
{-992.12230,1036.9589,1341.8861},
{-973.94290,1061.5148,1345.6714},
{-992.10420,1090.4716,1342.8617}
};

forward DuelStarting(playerid);

//==============================================================================

public OnPlayerConnect(playerid)
{
   PlayerInDuel [playerid]= 0;
   GetDuelCreate [playerid]= INVALID_PLAYER_ID;
   return 1;
}

//==============================================================================

public OnPlayerDisconnect(playerid, reason)
{
   KillTimer(CountDuelTimer[playerid]);
   for(new i=0; i<MAX_PLAYERS; i++)
   {
      if(IsPlayerConnected(i))
      {
         if(PlayerInDuel [i]== 1)
             {
            PlayerInDuel = 0;
            DuelPlaceVisit = false;
            SendClientMessage(i, -1, "Твой противник покинул дуэль!");
            OnPlayerSpawn(i);
         }
        }
   }
   return 1;
}

//==============================================================================

public OnPlayerSpawn(playerid)
{
   return 1;
}

//==============================================================================

public OnPlayerCommandText(playerid, cmdtext[])
{
       new string[1024], cmd[256], tmp[256], giveplayerid, idx;
   cmd = strtok(cmdtext, idx);
       if(strcmp(cmd, "/duel", true) == 0)
   {
      if(PlayerInDuel [playerid]== 1) return SendClientMessage(playerid, -1, "Ты уже участвуешь в дуэли.");
      if(DuelPlaceVisit) return SendClientMessage(playerid, -1, "Подождите пока место для дуэли освободится.");
      tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, -1, "Использование: /duel [ id игрока ] [ id оружия ] [ ставка ]");
        giveplayerid = strval(tmp);
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, -1, "Использование: /duel [ id игрока ] [ id оружия ] [ ставка ]");
        WeaponDuel = strval(tmp);
        if(WeaponDuel < 0 || WeaponDuel > 42) return SendClientMessage(playerid, -1, "Ты ввёл не верный id оружия. Используй id от 0 до 42");
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, -1, "Использование: /duel [ id игрока ] [ id оружия ] [ ставка ]");
        MoneyDuel = strval(tmp);
        if(MoneyDuel < 1 || MoneyDuel > 100000) return SendClientMessage(playerid, -1, "Ты ввёл не верную сумму ставки. Используй сумму от 1$ до 100000$");
        if(MoneyDuel > GetPlayerMoney(playerid)) return SendClientMessage(playerid, -1, "Тебе не хватает на ставку. Укажи другую сумму!");
      if(MoneyDuel > GetPlayerMoney(giveplayerid)) return SendClientMessage(playerid, -1, "Твоему противнику не хватает на ставку. Укажи другую сумму!");
      if(IsPlayerConnected(giveplayerid))
        {
         new Float:POS[3];
             GetPlayerPos(giveplayerid, POS[0], POS[1], POS[2]);
               if(playerid == giveplayerid) return SendClientMessage(playerid, -1, "Ты не можешь применить это действие к самому себе.");
              if(!IsPlayerInRangeOfPoint(playerid, 5, POS[0], POS[1], POS[2])) return SendClientMessage(playerid, -1, "Ты находишься слишком далеко от этого игрока.");
           if(PlayerInDuel [giveplayerid]== 1) return SendClientMessage(playerid, -1, "Этот игрок уже участвует в дуэли.");
               GetDuelCreate [giveplayerid]= playerid;
              format(string, sizeof(string), "Ты успешно пригласил игрока {9DDAF2}%s{FFFFFF} на дуэль! Дождись ответа.", pNick(giveplayerid));
              SendClientMessage(playerid, -1, string);
              format(string, sizeof(string), "Игрок %s приглашает тебя на дуэль.\n\nОружие: %d\nСтавка: %d$", pNick(playerid), WeaponDuel, MoneyDuel);
              ShowPlayerDialog(giveplayerid, DUEL_ID, DIALOG_STYLE_MSGBOX, "Приглашение на дуэль", string, "Да", "Нет");
            }
        else
        {
           SendClientMessage(playerid, -1, "Игрок с указанным тобой id не найден!");
        }
        return 1;
   }
   return 0;
}

//==============================================================================

public DuelStarting(playerid)
{
       new string[256];
       StartingDuel [playerid]-= 1;
       format(string, sizeof(string), "~y~STARTING: ~w~%d", StartingDuel[playerid]);
       GameTextForPlayer(playerid, string, 999, 3);
       SetPlayerHealth(playerid, 100);
       if(StartingDuel [playerid]== 0)
       {
         GameTextForPlayer(playerid, "~g~DUEL START", 3000, 3);
         TogglePlayerControllable(playerid, true);
         KillTimer(CountDuelTimer[playerid]);
       }
   return 1;
}

//==============================================================================

public OnPlayerDeath(playerid, killerid, reason)
{
   if(PlayerInDuel [killerid]== 1 && PlayerInDuel [playerid]== 1)
   {
      new string[256];
      DuelPlaceVisit = false;
      PlayerInDuel [killerid]= 0;
      PlayerInDuel [playerid]= 0;
      GetDuelCreate [killerid]= INVALID_PLAYER_ID;
      GetDuelCreate [playerid]= INVALID_PLAYER_ID;
      GivePlayerMoney(killerid, MoneyDuel);
      GivePlayerMoney(playerid, -MoneyDuel);
      format(string, sizeof(string), "~g~+%d$", MoneyDuel);
      GameTextForPlayer(killerid, string, 1000, 1);
      format(string, sizeof(string), "~r~-%d$", MoneyDuel);
      GameTextForPlayer(playerid, string, 1000, 1);
      format(string, sizeof(string), ">>> В дуэли между игроками {FFFFFF}%s{00FF00} и {FFFFFF}%s{00FF00} победил игрок {FFFFFF}%s", pNick(killerid), pNick(playerid), pNick(killerid));
        SendClientMessageToAll(0x00FF00FF, string);
        SetTimerEx("OnPlayerSpawn", 1000, false, "i", killerid);
      return 1;
     }
   return 1;
}

//==============================================================================

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
   new string[1024];
   new dueledid = GetDuelCreate[playerid];
   if(dialogid == DUEL_ID)
   {
      if(response)
      {
         if(PlayerInDuel [playerid]== 1)
         {
             SendClientMessage(playerid, -1, "Ты уже участвуешь в дуэли.");
            SendClientMessage(dueledid, -1, "При соглашении на участие в дуэли произошла ошибка!");
            GetDuelCreate [playerid]= INVALID_PLAYER_ID;
            return 1;
         }
         if(PlayerInDuel [dueledid]== 1)
         {
             SendClientMessage(playerid, -1, "Игрок, отославший тебе приглашение, уже участвует в дуэли.");
            SendClientMessage(dueledid, -1, "При соглашении на участие в дуэли произошла ошибка!");
            GetDuelCreate [playerid]= INVALID_PLAYER_ID;
            return 1;
           }
         if(DuelPlaceVisit)
         {
             SendClientMessage(playerid, -1, "Подожди пока место для дуэли освободится.");
            SendClientMessage(dueledid, -1, "Подожди пока место для дуэли освободится.");
            GetDuelCreate [playerid]= INVALID_PLAYER_ID;
            return 1;
         }
         if(IsPlayerConnected(dueledid))
           {
                PlayerInDuel [playerid]= 1;
            PlayerInDuel [dueledid]= 1;
            DuelPlaceVisit = true;
             new rand1 = random(sizeof(duelspawn));
                SetPlayerPos(playerid, duelspawn[rand1][0], duelspawn[rand1][1], duelspawn[rand1][2]);
                new rand2 = random(sizeof(duelspawn));
                SetPlayerPos(dueledid, duelspawn[rand2][0], duelspawn[rand2][1], duelspawn[rand2][2]);
                SetCameraBehindPlayer(playerid);
            SetCameraBehindPlayer(dueledid);
               SetPlayerInterior(playerid, 10);
            SetPlayerInterior(dueledid, 10);
            SetPlayerHealth(dueledid, 100);
            SetPlayerHealth(playerid, 100);
               SetPlayerVirtualWorld(playerid, DUEL_MIR);
            SetPlayerVirtualWorld(dueledid, DUEL_MIR);
               TogglePlayerControllable(playerid, false);
            TogglePlayerControllable(dueledid, false);
               StartingDuel [playerid]= 6;
            StartingDuel [dueledid]= 6;
               CountDuelTimer [playerid]= SetTimerEx("DuelStarting", 1000, true, "i", playerid);
               CountDuelTimer [dueledid]= SetTimerEx("DuelStarting", 1000, true, "i", dueledid);
               ResetPlayerWeapons(playerid);
            ResetPlayerWeapons(dueledid);
            GivePlayerWeapon(playerid, WeaponDuel, 99999);
            GivePlayerWeapon(dueledid, WeaponDuel, 99999);
            GetDuelCreate [playerid]= INVALID_PLAYER_ID;
               }
               else
         {
            SendClientMessage(playerid, -1, "Игрок, отославший тебе приглашение, отсоеденился!");
            GetDuelCreate [playerid]= INVALID_PLAYER_ID;
         }
        }
        else
        {
         format(string, sizeof(string), "Ты отказался на участие в дуэли с игроком {9DDAF2}%s", pNick(dueledid));
         SendClientMessage(playerid, -1, string);
         format(string, sizeof(string), "Игрок {9DDAF2}%s{FFFFFF} отказался на участие в дуэли с тобой!", pNick(playerid));
           SendClientMessage(GetDuelCreate[playerid], -1, string);
         GetDuelCreate [playerid]= INVALID_PLAYER_ID;
        }
        return 1;
     }
   return 1;
}

//==============================================================================

stock pNick(playerid)
{
   new nick[MAX_PLAYER_NAME];
   GetPlayerName(playerid, nick, MAX_PLAYER_NAME);
   return nick;
}

//==============================================================================

strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string [index]<= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string [index]> ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}[/i]

Автор: ESSLE (Mov1c)

В ЛС не отвечу даже не старайтесь. Все вопросы на форум, создавайте тему там ответим.

Форум » Pawno программирование » Мануалы/Уроки » Готовые решения » DUEL SYSTEM
  • Страница 1 из 1
  • 1
Поиск:

условия предоставления информации
Авторские права и контакты
счетчики
счетчики
счетчики
Новости и публикации в новостной ленте предоставлены исключительно в ознакомительных целях. Все материалы принадлежат исключительно их владельцам! Администрация портала не несет ответственности за последствия использования вами сторонних материалов, опубликованных на форуме, каталоге файлов, каталоге статей, но гарантирует отсутствие вредоносного кода в новостях и публикациях на главной.
  • Основатель портала - AlexDrift
  • Автор дизайна, разработчик - Lil Jonson
  • По возникшим вопросам дизайна - [email protected]
  • По всем возникшим вопросам - vk.com/alexdrift1137
  • Уникальный игровой портал ZETA-HACK.RU ® 2011 - 2019
  • Сайт создан в системе uCoz

  • Яндекс.Метрика
    Рейтинг@Mail.ru