Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 10 из 10
  1. #1
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    162
    Репутация:
    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
    Сообщений
    162
    Репутация:
    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
    Сообщений
    162
    Репутация:
    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
    Сообщений
    162
    Репутация:
    8 ±
    Осталось только определить самый ближайшии ид скина (мужского или женского)

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

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

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

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

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

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

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

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    162
    Репутация:
    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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Я когда-то реализовывал что-то подобное путём перехвата всей системы выбора скинов с серверной стороны на сторону мода. Алгоритм построен на ориентировке по параметру "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. В условиях мог накосячить, ибо на скорую руку накидал.
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

 

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

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

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

Ваши права

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