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

    Статус
    Оффлайн
    Регистрация
    24.12.2014
    Сообщений
    109
    Репутация:
    0 ±

    Обнулине оружия

    Я придумал интересное решение для сохранения оружия после выхода и сильного античита на оружие.
    Всё оружие которое игрок получает сохраняется в его базу данных.
    Чтобы взять оружие наруки нужно "Достать обойму из разгрузки). Т. е. игрок нажимает Y. Выводится диалог с выбором оружия которое нужно зарядить. Если в "Разгрузке" оружие есть, то оно зарядится (1 обойма), сработает анимация и т. д.

    Я хочу чтобы патронов нельзя было иметь "на руках" больше чем 1 обойма. Античит заключается в том что проверяет сколько у игрока на руках патронов. Если больше одной обоймы - кикает/банит и т. д.

    Т. е. когда игрок заряжает дигл, то ему даётся 7 патронов. Второй раз заряжает и даётся вновь +7 патронов. Т, е. если он не потратил их, то будет уже 14 патронов.

    Как жаль что нет команды SetPlayerWeapon. Чтобы устанавливало значение, а не добавляло.

    Если я вначале ставлю -7 патронов, а потом выдаю 7 патронов, то как быть если игрок потратил патроны? У него становится патронов -7. Затем +7 и того при второй зарядке патронов 0, хотя зарядил новую обойму.

    Я придумал выход из этой ситуации. Сделал систему "Разряжания оружия". Т. е. если игрок зарядил 1 обойму, то он не сможет зарядить вторую пока не разрядит.

    Разрядка подразумевает обнуление количества патрон которое у игрока не на руках, а вообще при нём.

    Т. е. игрок пострелял и у него осталось 3 патрона. Пистолет в руках не держит. Спрятал в карман. А для разряжания нужно обнулить эти патроны. Как жаль что нет команды "УСТАНОВИТЬ" колличество, а лишь прибавить либо отнять. Тут нужен сканер патронов.

    Это функция GetPlayerWeaponData(playerid, слот, Ид оружия, колличество патронов);

    Проблемма в том, что у меня не получается ею воспользоваться. Я пытаюсь сделать так:
    Хочу сканировать сколько у игрока осталось патронов дигла и их отнять.

    new ammo; // переменная, которая будет хранить колличество патронов в дигле
    GetPlayerWeaponData(playerid, 2, 24, ammo); // сканирую игрока, второй солт, дигл и колличество патронов записывается в переменную

    GivePlayerWeapon(playerid,24,-ammo); // Отнимается то количество патронов, которое было у игрока. Ведь если загнать количество в минус, то так и будет бегать с оружием в минусе. Ведь нет команды "УСТАНОВИТЬ", а не выдать количество патронов.

    Выдаёт ошибку
    Код:
    error 035: argument type mismatch (argument 3)
    На строку
    Код:
    GetPlayerWeaponData(playerid, 2, 24, ammo);
    Подскажите как мне лучше поступить? Может вы мне подскажите создать STOCK который будет обнулять отдельное оружие.
    Я использую только следующее оружие и мне не предётся делать систему разрядки. Просто вызов стока поставлю в заряжание дабы он обнулял прежде чем выдать новую обойму. Научите меня пожалуйста пользоватьс функцией GetPlayerWeaponData чтобы сканировать только определённое оружие.
    Дигл, кольт, шотган, спас12, МП5, АК, М4, Рифл, Снайперка, РПГ
    Не злитесь. Я всего лишь учусь скриптить

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

    Статус
    Оффлайн
    Регистрация
    14.12.2014
    Сообщений
    63
    Репутация:
    20 ±
    С данной функцией еще не разбирался, попробуй что нибудь придумать с функцией.
    PHP код:
     GetPlayerAmmo(playerid); 

  3. Пользователь сказал cпасибо:
    Albert (07.01.2015)
  4. #3
    Аватар для Albert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2014
    Сообщений
    109
    Репутация:
    0 ±
    Перед обнулением всего оружия я сделал скрипт, который будет сохранять патроны имеющегося оружия в базу данных игрока. Сделал сток в конце. В нужный паблик ставлю его вызов. Ошибок не выдаёт. Однако оружие обнуляется, но не сохраняется.


    начало стока:
    Код:
    stock SetPlayerReload(playerid) // Разрежание в разгрузку
    {
    new ammo;
    new weap;
    new slot;
    GetPlayerWeaponData(playerid, slot, weap, ammo);
    if (weap == 22) // если ид оружия кольт, то
    {
    pInfo[playerid][pRcolt] += ammo; // сохранение колличество патронов для кольта
    
    }
    Вот так в паблике:
    Код:
    SetPlayerReload(playerid); // вызываю сток
    ResetPlayerWeapons(playerid); // анулирую всё оружие в руках
    патроны не сохраняются в pRcolt. Не знаешь в чём может быть дело?
    Последний раз редактировалось Albert; 07.01.2015 в 18:57.
    Не злитесь. Я всего лишь учусь скриптить

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

    Статус
    Оффлайн
    Регистрация
    14.12.2014
    Сообщений
    63
    Репутация:
    20 ±
    Проверь сохранение кольта.

 

 

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

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

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

Ваши права

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