Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 10 из 10
  1. #1
    Аватар для Иван Бубнов
    Пользователь

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

    AddPlayerClass - фокусы??? :read:

    Всем привет, недавно зашел на один бразильский мата-мата сервер, там когда нажимаешь НАПРАВО, дается мужской скин, налево женский. Как можно сделать такое?! Я весь форум прошарил, и даже англоязычные. Посоветуйте!) PS: Я так понял что все делается в OnPlayerRequestClass.

  2. #2
    Аватар для _lizard
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.02.2016
    Адрес
    Геленджик
    Сообщений
    193
    Репутация:
    26 ±
    AddPlayerClass(skin, Float:x, Float:y, Float:z, Float:Angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);

  3. #3
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Цитата Сообщение от _lizard Посмотреть сообщение
    AddPlayerClass(skin, Float:x, Float:y, Float:z, Float:Angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
    >PROFIT!

    - - - Добавлено - - -

    Ты кажется не правильно понял, когда нажимаешь стрелку "НАЛЕВО (<<)" то дается женский скин, "НАПРАВО (>>)" мужской.

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

    Статус
    Оффлайн
    Регистрация
    11.02.2016
    Адрес
    Геленджик
    Сообщений
    193
    Репутация:
    26 ±
    Цитата Сообщение от Иван Бубнов Посмотреть сообщение
    >PROFIT!

    - - - Добавлено - - -

    Ты кажется не правильно понял, когда нажимаешь стрелку "НАЛЕВО (<<)" то дается женский скин, "НАПРАВО (>>)" мужской.
    Ну тогда так: если игрок выбирает класс меньший, чем у него был (стрелка влево) - женский скин, если больше - мужской.

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

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Цитата Сообщение от _lizard Посмотреть сообщение
    Ну тогда так: если игрок выбирает класс меньший, чем у него был (стрелка влево) - женский скин, если больше - мужской.
    соль в том, что в OnPlayerRequestClass не определишь какую кнопку нажимал!

    - - - Добавлено - - -

    ОПача!!! Попробую создать переменную, запишу в него старый classid, и проверка: if(classid < variable) OnPlayerRequestClass(playerid, GetPlayerSkin(playerid) -1);!!

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

    Статус
    Оффлайн
    Регистрация
    11.02.2016
    Адрес
    Геленджик
    Сообщений
    193
    Репутация:
    26 ±
    Цитата Сообщение от Иван Бубнов Посмотреть сообщение
    соль в том, что в OnPlayerRequestClass не определишь какую кнопку нажимал!

    - - - Добавлено - - -

    ОПача!!! Попробую создать переменную, запишу в него старый classid, и проверка: if(classid < variable) OnPlayerRequestClass(playerid, GetPlayerSkin(playerid) -1);!!
    PHP код:
    new Class[MAX_PLAYERS];
    public 
    OnPlayerRequestClass(playerid,classid)
    {
        if(
    classid > Class[playerid]) SetPlayerSkin(playerid/* мужской скин */);
        else if(
    classid < Class[playerid]) SetPlayerSkin(playerid/* женский скин */);
        Class[
    playerid] = classid;
        return 
    1;


  8. #7
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Осталось только определить самый ближайшии ид скина (мужского или женского)

    - - - Добавлено - - -

    но по сути это не возможен. вроде.хз

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

    Статус
    Оффлайн
    Регистрация
    11.02.2016
    Адрес
    Геленджик
    Сообщений
    193
    Репутация:
    26 ±
    Цитата Сообщение от Иван Бубнов Посмотреть сообщение
    Осталось только определить самый ближайшии ид скина (мужского или женского)

    - - - Добавлено - - -

    но по сути это не возможен. вроде.хз
    Думаю, поработав с циклами и двумерном массивом можно такое сделать.

  10. #9
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Взял функцию GetSkinGender с инклуда az_gender.inc, спасибо. Close

    - - - Добавлено - - -

    Цитата Сообщение от _lizard Посмотреть сообщение
    Думаю, поработав с циклами и двумерном массивом можно такое сделать.
    Создал переменную:
    old_classid[MAX_PLAYERS] & PVAR:
    if(classid > old_classid[playerid])
    SetPVarInt(playerid, "ActGender", 1);//делаю метку что активен мужские скины
    и 2 если женские.

    Дальше если кого заинтересует, думаю логический сможете завершить. спасибо за помощь!

    - - - Добавлено - - -

    Функция.

    PHP код:
    stock GetSkinGender(skinid)
    {
        switch(
    skinid)
        {
            case 
    0..814..3032..3842..5257..6266..6870..7378..7980..848694..128132..137142..144146..147149153..156158..168170..177179..189200202..204206208..210212..213217220..223227..230234..236239..242247..250252..255258..262264..298299..305310..311: return 0;
            case 
    74: return 2// 74 - None Skin
            
    default: return 1;
        }
        return 
    1;


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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Я когда-то реализовывал что-то подобное путём перехвата всей системы выбора скинов с серверной стороны на сторону мода. Алгоритм построен на ориентировке по параметру "classid". В этот параметр передаётся не ID скина, который выбрал игрок в случае стандартного выбора скинов, а порядковый номер скина при загрузке его на сервер
     То бишь:
    PHP код:
        AddPlayerClass(01958.331343.1215.36269.1526362815000);//0
        
    AddPlayerClass(131958.331343.1215.36269.1526362815000);//1
        
    AddPlayerClass(1441958.331343.1215.36269.1526362815000);//2
        
    AddPlayerClass(211958.331343.1215.36269.1526362815000);//3
        
    AddPlayerClass(541958.331343.1215.36269.1526362815000);//4 

    Следовательно, если мы запишем текущее значение "classid" и сравним его со следующим, мы сможем понять то, на какую из кнопок нажал игрок (проблема лишь в адекватном отлове перехода с наибольшего ID на наименьшее (в случае с примером под спойлером: переход с ID 4 на ID 0 и наоборот) и при самом первом отображении выбора скинов).
    Я реализовывал всё на pVar и было что-то типа такого:
    Сначала глобальный массив, в котором записываются скины, которые нужно выдавать (можно два разных массива - м/ж)
    И теперь:
    PHP код:
    public OnPlayerConnect(playerid)
    {
        
    SetPVarInt(playerid"Select_Direct_ID", -1);// Этим мы решаем проблему с самым первым отображением
        
    return 1;

    PHP код:
    public OnPlayerRequestClass(playeridclassid)
    {
        new 
    last_id GetPVarInt(playerid"Select_Direct_ID");
        if(
    last_id != -1)
        {
            if(
    last_id classid && last_id != /*Номер последнего скина*/ && classid != 0
            {
                
    //Игрок нажимает кнопку "<<" - выдаём одни скины
            
    }
            else if(
    classid last_id && last_id != && classid != /*Номер последнего скина*/)
            {
                
    //Игрок нажимает кнопку ">>" - выдаём другие скины
            
    }    
        }
        else 
    SetPlayerSkin(playerid/*ID скина, который будешь давать при первом входе*/);
        
    SetPVarInt(playerid"Select_Direct_ID"classid);
        return 
    1;

    И при окончании выбора удаляем pVar
    P.S. В условиях мог накосячить, ибо на скорую руку накидал.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  12. Пользователь сказал cпасибо:
    Иван Бубнов (16.02.2016)
 

 

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

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

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

Ваши права

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