Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 13
  1. #1
    Аватар для TimoXa32
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.11.2013
    Сообщений
    195
    Репутация:
    21 ±

    DeathMatch арена

    Всем привет. Сегодня я расскажу, как сделать простую DM арену для вашего сервера SAMP.

    Оригинал ( на английском ) - Клик

    Ко всем new добавим:
    PHP код:
    new in_dm[MAX_PLAYERS]; 
    К #define ( если нет ):
    PHP код:
    #define     COLOR_GREEN         0x33AA33AA
    #define     COLOR_WHITE         0xFFFFFFFF 
    В public OnPlayerConnect:
    PHP код:
    in_dm[playerid] = 0
    В public OnPlayerSpawn:
    PHP код:
    if(in_dm[playerid] == 1)
    {
        
    SetPlayerHealth(playerid100); //здоровье
        
    SetPlayerArmour(playerid100); //броня
        
    ResetPlayerWeapons(playerid);
        
    GivePlayerWeapon(playerid26cellmax); //оружие
        
    GivePlayerWeapon(playerid28cellmax);
        
    GivePlayerWeapon(playerid24cellmax);
        
    GivePlayerWeapon(playerid34cellmax);
        
    SetPlayerInterior(playerid1); //спавн
        
    switch(random(5)) //рандомный спавн
        
    {
            case 
    0SetPlayerPos(playerid1412.639892,-1.787510,1000.924377);
            case 
    1SetPlayerPos(playerid1385.8126,-24.9797,1000.9221);
            case 
    2SetPlayerPos(playerid1410.6050,-43.1180,1000.9211);
            case 
    3SetPlayerPos(playerid1417.2075,-45.5887,1007.8926);
            case 
    4SetPlayerPos(playerid1417.8618,-32.7256,1007.8937);
        }
        
    SetPlayerVirtualWorld(playerid1);
        
    SetPlayerSkin(playerid167); //скин

    Ко всем stock ( если нет ):

    PHP код:
    stock GetName(playerid)
    {
        new 
    player_name_id[24];
        
    GetPlayerName(playerid,player_name_id,24);
        return 
    player_name_id;

    В public OnPlayerDeatch:
    PHP код:
    if(in_dm[playerid] == 1)
    {
        new 
    msg[60], msg2[60];
        
    format(msgsizeof(msg), "Вы убили %s!"GetName(playerid));
        
    format(msg2sizeof(msg2),"Вы были убиты %s!"GetName(killerid));
        
    SendClientMessage(playeridCOLOR_GREENmsg2);
        
    SendClientMessage(killeridCOLOR_GREENmsg);
        
    SetPlayerHealth(killerid100);
        
    SetPlayerArmour(killerid,100);
        
    SpawnPlayer(playerid);

    Теперь добавим команду, чтобы выйти с арены:
    PHP код:
    CMD:exitdm(playeridparams[])
    {
        if(
    in_dm[playerid] == 0)
        {
            
    SendClientMessage(playerid, -1"Вы не на DM арене!");
            return 
    1;
        }
        else if(
    in_dm[playerid] == 1)
        {
            
    InDM[playerid] = 0;
            
    SetPlayerVirtualWorld(playerid0);
            
    SetPlayerHealth(playerid0.00);
            
    ForceClassSelection(playerid);
            
    SetPlayerInterior(playerid0);
            
    SendClientMessage(playerid, -1"Вы покинули DM арену!");
            return 
    1;
        }
        return 
    1;

    Теперь, чтобы зайти на арену:
    PHP код:
    CMD:dm(playeridparams[])
    {
        
    in_dm[playerid] = 1
        
    GameTextForPlayer(playerid"/exitdm to exit!"30004);
        
    SendClientMessage(playerid, -1"{66FF66}Добро пожаловать на DM арену! {BABABA}");
        
    SetPlayerInterior(playerid1); 
        switch(
    random(5)) //рандомный спавн
        
    {
            case 
    0SetPlayerPos(playerid1412.639892,-1.787510,1000.924377);
            
    сase 1SetPlayerPos(playerid1385.8126,-24.9797,1000.9221);
            case 
    2SetPlayerPos(playerid1410.6050,-43.1180,1000.9211);
            case 
    3SetPlayerPos(playerid1417.2075,-45.5887,1007.8926);
            case 
    4SetPlayerPos(playerid1417.8618,-32.7256,1007.8937);
        }
        
    SetPlayerVirtualWorld(playerid1);
        
    SetPlayerTeam(playeridplayerid);
        
    ResetPlayerWeapons(playerid);
        
    SetPlayerColor(playeridCOLOR_WHITE);
        
    SetPlayerSkin(playerid167);
        
    SetPlayerHealth(playerid100);
        
    SetPlayerArmour(playerid100);
        
    GivePlayerWeapon(playerid26cellmax); //cellmax - бесконечные патроны. Вы можете выставить свое значение, которое вам нужно
        
    GivePlayerWeapon(playerid28cellmax);
        
    GivePlayerWeapon(playerid24cellmax);
        
    GivePlayerWeapon(playerid34cellmax);
        
    GivePlayerWeapon(playerid162);
        new 
    str[144], name[MAX_PLAYER_NAME];
        
    GetPlayerName(playeridnamesizeof(name));
        
    format(strsizeof(str), "{FFFFFF}%s {BABABA}(ID: %d) зашел на DM арену!"nameplayerid);
        
    SendClientMessageToAll(-1str);
        return 
    1;

    ( Прим. SooBad. Для бесконечного количества патронов вместо cellmax можно использовать число больше 10998 )

    Вот и все. Будут вопросы - пиши
    Последний раз редактировалось TimoXa32; 24.04.2017 в 20:16.
    Двойной класс

  2. #2
    Аватар для _[Bupyc]_
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.07.2015
    Адрес
    Челябинск
    Сообщений
    9
    Репутация:
    3 ±
    В OnPlayerDeath не хватает
    PHP код:
     if(InDM[playerid] == 1

  3. #3
    Аватар для TimoXa32
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.11.2013
    Сообщений
    195
    Репутация:
    21 ±
    Исправил
    Двойной класс

  4. #4
    Аватар для SooBad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.04.2017
    Адрес
    Краснодар
    Сообщений
    83
    Репутация:
    20 ±
    Вопрос к автору только один.

    PHP код:
    GivePlayerWeapon(playerid26cellmax); 
    WTF?! Причём тут cellmax?

  5. #5
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от SooBad Посмотреть сообщение
    Вопрос к автору только один.

    PHP код:
    GivePlayerWeapon(playerid26cellmax); 
    WTF?! Причём тут cellmax?
    Ты спрашиваешь что такое cellmax или почему он здесь используется? cellmax - константа в Pawn, значение которой равно максимальному целому значению, которое можно записать в переменную (4 байта). Почему он здесь используется - не знаю, особенно учитывая, что для хранения патрон отводится всего 2 байта, а не 4.

  6. #6
    Аватар для arzumanov
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.10.2015
    Сообщений
    3
    Репутация:
    0 ±
    Зачем в OnPlayerDeath объявлять два массива, если можно один массив использовать дважды?

  7. #7
    Аватар для TimoXa32
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.11.2013
    Сообщений
    195
    Репутация:
    21 ±
    Цитата Сообщение от SooBad Посмотреть сообщение
    Вопрос к автору только один.

    PHP код:
    GivePlayerWeapon(playerid26cellmax); 
    WTF?! Причём тут cellmax?
    В оригинале есть пояснение:
    Код HTML:
    // cellmax is to give the player infinite ammo.
    Двойной класс

  8. #8
    Аватар для SooBad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.04.2017
    Адрес
    Краснодар
    Сообщений
    83
    Репутация:
    20 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Ты спрашиваешь что такое cellmax или почему он здесь используется? cellmax - константа в Pawn, значение которой равно максимальному целому значению, которое можно записать в переменную (4 байта). Почему он здесь используется - не знаю, особенно учитывая, что для хранения патрон отводится всего 2 байта, а не 4.
    Да, я, собственно, про то же (про использование в данном случае).

    TimoXa32, так а смысл тут использовать cellmax, когда беск.патроны начинаются со значения 10998?

  9. #9
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от SooBad Посмотреть сообщение
    Да, я, собственно, про то же (про использование в данном случае).

    TimoXa32, так а смысл тут использовать cellmax, когда беск.патроны начинаются со значения 10998?
    Это форум для Pawn-, а не Cleo-скриптеров, чтобы знать такие подробности.

    Автору темы к прочтению: http://pro-pawn.ru/showthread.php?8347.

    (Знаю, что немного поздно, но всё же.)
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  10. #10
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Это форум для Pawn-, а не Cleo-скриптеров, чтобы знать такие подробности.
    Это описано в вики, вроде в статье GetPlayerAmmo. И знать это важно хотя-бы потому, что при превышении некого значения патроны будут уходить в минус (а то и вообще возвращать что-то невнятное, что может повлиять на какие-то системы), в отличие от оформления.


    ...Да и вообще мне кажется, что целью было просто перевести иноязычную статью, хотя также неплохо было бы внести и какие-то свои изменения.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •