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

    Статус
    Оффлайн
    Регистрация
    01.11.2016
    Адрес
    Очень Далеко
    Сообщений
    37
    Репутация:
    1 ±

    Cистема уровней и Ранг во фракции

    Всем доброго времени суток! Хочу создать систему уровней по убийствам к примеру: 20 убийств - 1лв, 60 - 2лвл, 180 - 3 и тд
    А так же хочу сделать фракцию без лидера. Ну то есть что бы ранги давались вместе с апом лвл и что б вступить во фракцию можно было через диалог. Например: У игрока появляется диалог в котором говорится - "Что бы вступить в банду нужно сделать взнос в виде 1000$" далее он нажимает заплатить и вступает во фракцию и автоматом получает 1й лвл. И так на 4 уровне он получает 2 ранг на 8лвл 3 ранг и тд. А так же если он выйдет из фракции то он получает 1й лвл ( что бы было легче развиваться в другой фракции ). Кто подскажет как сделать систему ну и то что ниже?

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Создавай переменную и каждое убийство прибавляй к ней единицу. А заодно и смотри сколько убийство совершил игрок, выдавая соответствующий уровень + выдавая ранг во фракции.

    Готовый код тебе тут вряд ли кто-то даст. Пробуй сам и если чего-то не будешь понимать - спрашивай.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. Пользователь сказал cпасибо:
    Max_Tolk (03.11.2016)
  4. #3
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Пример:

    PHP код:
    #include <a_samp>

    enum pInfo {
        
    pKills// Кол-во убийств
        
    pLevel // Уровень игрока
    };
    new 
    PlayerInfo[MAX_PLAYERS][pInfo];

    public 
    OnPlayerDeath(playeridkilleridreason)
    {
        if(
    killerid != INVALID_PLAYER_ID)
        {
            if(++ 
    PlayerInfo[playerid][pKills] % 20 == 0)
            {
                    
    SendClientMessage(playerid, -1"Ваш уровень повышен.");
                    
    PlayerInfo[playerid][pLevel] ++;
                    
    SetPlayerScore(playeridPlayerInfo[playerid][pLevel]);
            }
        }
        return 
    1;

    Если что-то непонятно конкретно по этому коду - спрашивай :)

  5. Пользователь сказал cпасибо:
    Max_Tolk (03.11.2016)
  6. #4
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от Иван Бубнов Посмотреть сообщение
    Пример:

    PHP код:
    #include <a_samp>

    enum pInfo {
        
    pKills// Кол-во убийств
        
    pLevel // Уровень игрока
    };
    new 
    PlayerInfo[MAX_PLAYERS][pInfo];

    public 
    OnPlayerDeath(playeridkilleridreason)
    {
        if(
    killerid != INVALID_PLAYER_ID)
        {
            if(++ 
    PlayerInfo[playerid][pKills] % 20 == 0)
            {
                    
    SendClientMessage(playerid, -1"Ваш уровень повышен.");
                    
    PlayerInfo[playerid][pLevel] ++;
                    
    SetPlayerScore(playeridPlayerInfo[playerid][pLevel]);
            }
        }
        return 
    1;

    Если что-то непонятно конкретно по этому коду - спрашивай :)
    У тебя лвл будет расти каждые 20 килов, а до второго лвла автор хотел 60 (пропуская 40).
    Лучше сделать обычным switch/case, так хоть полностью настраивать можно будет
    И да, прибавление килов killerid'у
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  7. Пользователь сказал cпасибо:
    Max_Tolk (03.11.2016)
  8. #5
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    У тебя лвл будет расти каждые 20 килов, а до второго лвла автор хотел 60 (пропуская 40).
    Лучше сделать обычным switch/case, так хоть полностью настраивать можно будет
    И да, прибавление килов killerid'у
    Немножк математики и switch будет не нужен.
    А вообще эта тема столько раз перемалывалась, лень гуглить ?

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    Немножк математики и switch будет не нужен.
    А, ну да. Если конечно число с каждым разом будет в 3 раза больше
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

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

    Статус
    Оффлайн
    Регистрация
    21.08.2016
    Сообщений
    58
    Репутация:
    24 ±
    Цитата Сообщение от Nexius_Tailer
    Если конечно число с каждым разом будет в 3 раза больше
    Типа этого?
    PHP код:
    public OnPlayerDeath(playeridkilleridreason)
    {
        if(
    killerid != INVALID_PLAYER_ID)
        {
            
    PlayerInfo[playerid][pLevel] += PlayerInfo[playerid][pKills]++ / 20;
            
    SetPlayerScore(playeridPlayerInfo[playerid][pLevel]);
        }
        return 
    1;

    Только вот хз, получается, если делать без условного оператора, то перечисление pLevel, будет каждый раз инициализироваться.
    Последний раз редактировалось Saibot; 03.11.2016 в 03:58.

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

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    PHP код:
    stock GetKillsToLevel(level)
    {
        new 
    kills 20;
        for (new 
    1leveli++) {
            
    kills *= 3;
        }
        return 
    kills;
    }

    public 
    OnPlayerDeath(playeridkilleridreason)
    {
        if (
    killerid != INVALID_PLAYER_ID) {
            
    PlayerInfo[playerid][pKills]++;
            if (
    PlayerInfo[playerid][pKills] >= GetKillsToLevel(PlayerInfo[playerid][pLevel])) {
                
    PlayerInfo[playerid][pLevel]++;
            }
            
    SetPlayerScore(playeridPlayerInfo[playerid][pLevel]);
        }
        return 
    1;


  12. 2 пользователя(ей) сказали cпасибо:
    Max_Tolk (03.11.2016) Nexius_Tailer (03.11.2016)
  13. #9
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    PHP код:
    stock GetKillsToLevel(level)
    {
        new 
    kills 20;
        for (new 
    1leveli++) {
            
    kills *= 3;
        }
        return 
    kills;
    }

    public 
    OnPlayerDeath(playeridkilleridreason)
    {
        if (
    killerid != INVALID_PLAYER_ID) {
            
    PlayerInfo[playerid][pKills]++;
            if (
    PlayerInfo[playerid][pKills] >= GetKillsToLevel(PlayerInfo[playerid][pLevel])) {
                
    PlayerInfo[playerid][pLevel]++;
            }
            
    SetPlayerScore(playeridPlayerInfo[playerid][pLevel]);
        }
        return 
    1;

    Только здесь цикл не нужен, достаточно просто (kills *= 3) умножать на pLevel - 1, при условии что он больше 1
    Последний раз редактировалось Nexius_Tailer; 03.11.2016 в 03:44.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

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

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Только здесь цикл не нужен, достаточно просто (kills *= 3) умножать на pLevel - 1, при условии что он больше 1
    Нет.

 

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

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

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

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

Ваши права

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