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

Реклама


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

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    247
    Репутация:
    2 ±

    Снимаем деньги с пассажира.

    Здравствуйте, подскажите, как для такси сделать, чтобы когда садились пассажиры, каждые 30 секунд снимались деньги с него, а при выходе, все что заработало, давалось водителю. Буду очень благодарен.

    Нашел такую функцию как GetPlayerVehicleSeat, так вот 1,2,3 места - это пассажир, я думаю, что когда пассажир садится в мшину, нужно запускать таймер, с повтором на каждые 30 секунд. Вот так:

    PHP код:
            if(DogovorTaxi{playerid} == true)
            {
                new 
    mesto GetPlayerVehicleSeat(playerid);
                if(
    mesto == && mesto == && mesto == 3)
                {
                     
    taxitimer SetTimer("TaxiTime"30000true);
                }
            } 

    Как осуществить остальное, не могу сообразить.(

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    113 ±
    Ну вот где ты видел даже в рили чтобы ты ехал в такси и закидывал деньгами бомбилу каждые 30 сек,
    ты сел в тачку сказал куда ехать пока вы ехали километраж мотал счётчик и когда ты собрался выходить тогда уже и заплатил за пройденный километраж
    Тут тебе так если с жизни пример взять надо при выходе оплату делать, а вот как ты считать будешь сколько проехал или сколько просидел он в машине уже на своё усмотрение

    И да кстате:
    PHP код:
    if(mesto == && mesto == && mesto == 3)// сидеть на 3 местах сразу невозможно

    if(mesto == || mesto == || mesto == 3)//так наверное надо было 
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

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

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    247
    Репутация:
    2 ±
    Я и не сказал чтобы каждые каждые 30 сек закидывали деньгами. Нужно чтобы прибавлялись они, ну например по 15$ за каждые 30 сек, вот сколько проедет, столько и получит в конце. Осуществить просто не пойму как с проверкой на пассажира и деньгами.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Цитата Сообщение от Skyline Посмотреть сообщение
    Я и не сказал чтобы каждые каждые 30 сек закидывали деньгами. Нужно чтобы прибавлялись они, ну например по 15$ за каждые 30 сек, вот сколько проедет, столько и получит в конце. Осуществить просто не пойму как с проверкой на пассажира и деньгами.
    Когда игрок садиться в авто, проверяй, сел ли он в такси и сел ли он пассажиром. Если всё сошлось, записывай gettime в массив и когда игрок авто покидает, текущее значение gettime отнимай от записанного. Это и будет время, которое игрок просидел в авто. Далее дели его на 30 (если ты хочешь, чтоб каждые 30 секунд снимало деньги) и умножай на сумму, которую ты хочешь отнимать каждые 30 секунд.
    Получится как-то так
    PHP код:
    (gettime()-array)/30*15 
    Это и выйдет сумма, которую нужно отнять у пассажира и отдать водителю
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    247
    Репутация:
    2 ±
    А я сделал так.

    PHP код:
        if(vehicleid >= taxicar[0] && vehicleid <= taxicar[1])
        {
            if(
    DogovorTaxi{playerid} == true)
            {
                new 
    mesto GetPlayerVehicleSeat(playerid);
                if(
    mesto == || mesto == || mesto == 3)
                {
                     
    taxitimer SetTimer("TaxiTime"30000true);
                }
            }
        } 
    При посадке пассажира в такси, запускается таймер, на повтор каждые 30 сек.
    PHP код:
    public TaxiTime(playerid)
    {
        new 
    giveplayerid;
        new 
    vehicleid GetPlayerVehicleID(playerid);
        if(
    vehicleid >= taxicar[0] && vehicleid <= taxicar[1])
        {
            if(
    DogovorTaxi{playerid} == true)
            {
                new 
    mesto GetPlayerVehicleSeat(playerid);
                if(
    mesto == || mesto == || mesto == 3)
                {
                    new 
    sendername[MAX_PLAYER_NAME];
                    new 
    giveplayer[MAX_PLAYER_NAME];
                    
    GetPlayerName(playeridsendernamesizeof(sendername));
                    
    GetPlayerName(giveplayeridgiveplayersizeof(giveplayer));
                    
    PlayerInfo[giveplayerid][MONEY] -= moneys;
                    
    PlayerInfo[playerid][ZP] += moneys;
                }
            }
        }
        return 
    1;

    Отнимаю деньги у игрока который в Такси, а водителю в ЗП добавляю эту сумму.

    А в OnPlayerExitVehicle
    PHP код:
    if(DogovorTaxi{playerid} == true)
                {
                    new 
    mesto GetPlayerVehicleSeat(playerid);
                        if(
    mesto == || mesto == || mesto == 3)
                    {
                        new 
    string[50];
                        new 
    giveplayerid;
                        new 
    sendername[MAX_PLAYER_NAME];
                        new 
    giveplayer[MAX_PLAYER_NAME];
                        
    DogovorTaxi{playerid} = false;
                        
    GetPlayerName(playeridsendernamesizeof(sendername));
                        
    GetPlayerName(giveplayeridgiveplayersizeof(giveplayer));
                        
    format(stringsizeof(string), "Вы покинули такси и заплатили $%s"moneys);
                        
    SendClientMessage(giveplayeridCOLOR_GREENstring);
                        
    PlayerInfo[giveplayerid][MONEY] += moneys;
                        
    format(stringsizeof(string), "Клиент покинул такси, вы заработали $%s"moneys);
                        
    SendClientMessage(playeridCOLOR_GREENstring);
                        
    PlayerInfo[playerid][ZP] += moneys;
                    }
                } 
    Так не верно?

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

    Статус
    Оффлайн
    Регистрация
    21.08.2016
    Сообщений
    49
    Репутация:
    24 ±
    Тебе выше написали, как можно обойтись без таймера, и как правильно сделать.

    Цитата Сообщение от Skyline
    Так не верно?
    А, что мешает проверить?

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    113 ±
    Зачем узнавать никнейм если ты его не используешь в коде?
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

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

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    247
    Репутация:
    2 ±
    Да я вообще запутался, не могу сообразить как и что. Да DeimoS дал путь к решению, но я не могу додумать и сообразить как это будет все в коде(

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

    Так же записать данные в массив?
    PHP код:
    SetPVarInt(playerid,"Taxi",gettime()); 
    И так получается нужно вывести сумму?
    PHP код:
    SetPVarInt(playerid,"Taxi",(gettime())/30*moneys ); 

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

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±
    Цитата Сообщение от Skyline Посмотреть сообщение
    Да я вообще запутался, не могу сообразить как и что. Да DeimoS дал путь к решению, но я не могу додумать и сообразить как это будет все в коде(

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

    Так же записать данные в массив?
    PHP код:
    SetPVarInt(playerid,"Taxi",gettime()); 
    И так получается нужно вывести сумму?
    PHP код:
    SetPVarInt(playerid,"Taxi",(gettime())/30*moneys ); 
    new PlayerEnterTaxi[MAX_PLAYERS];

    В OnPlayerEnterVehicle:

    if(проверка на такси, место в салоне и т.д)
    {
    PlayerEnterTaxi[playerid] = gettime();
    }

    В OnPlayerLeaveVehicle:

    if(проверки..)
    {
    GivePlayerMoney(playerid,-(gettime()-PlayerEnterTaxi[playerid])/30*15);
    GivePlayerMoney(водитель такси,(gettime()-PlayerEnterTaxi[playerid])/30*15);
    }

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Цитата Сообщение от Saibot Посмотреть сообщение
    Тебе выше написали, как можно обойтись без таймера, и как правильно сделать.
    Прошу заметить, что я не говорил о том, что мой вариант правильный. С моим вариантом не получится сделать счётчик, который будет постоянно обновляться, и т.п.
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

 

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

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

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

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

Ваши права

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