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

Реклама


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

    Статус
    Оффлайн
    Регистрация
    30.10.2014
    Сообщений
    148
    Репутация:
    36 ±

    Виртуальный мир пассажиров транспорта

    Доброго времени суток уважаемые форумчане! Делал систему гаража, и столкнулся с небольшой проблемкой. Когда водитель сигналит, он перемещается в гараж. У него изменяется виртуальный мир и интерьер (у транспорта тоже). Но! Если в транспорте есть пассажир, то у него (у пассажира) не изменяется виртуальный мир и интерьер. Он остаётся нулевым. Вопрос остаётся за малым: как сделать так, чтобы при перемещении водителя в другой интерьер и вирт. мир, у пассажиров тоже они изменялись?
    PHP код:
    if(newkeys == клавиша сигнала)
    {
      
    // проверка на местонахождение игрока.в
      
    {
        
    SetVehiclePos(GetPlayerVehicleID(playerid), xyz);
      }


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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    467
    Репутация:
    13 ±
    Узнавай так же проверкой, если за местами сидят какие-либо люди, узнаём их айди, и передаём виртуальный мир/интерьер.
    Я лично так сделал у себя в моде..

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,362
    Репутация:
    771 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Узнавай так же проверкой, если за местами сидят какие-либо люди, узнаём их айди, и передаём виртуальный мир/интерьер.
    Я лично так сделал у себя в моде..
    Совершенно верно.
    Верно вам подсказал StevenH, ТС.
    Я же подскажу немного больше и оформлю это всё в виде кода:
    PHP код:
    if(newkeys == <некоторая_нажатая_клавиша>)
    {
        new
            
    current_client_vehicle GetPlayerVehicleID(playerid),
            
    current_client_world GetPlayerVehicleWorld(playerid),
            
    current_client_interior GetPlayerInterior(playerid);

        
    // возможно чуть ниже смена: интерьера, мира?
        
    for(new GetPlayerPoolSize(); --> -1; )
        {
            if(
    IsPlayerInVehicle(icurrent_client_vehicle))
            {
                
    SetVehicleVirtualWorld(icurrent_client_world);
                
    LinkVehicleToInterior(icurrent_client_interior);
            }
        }

    Но использовать ли этот способ, - это ваше решение.
    Последний раз редактировалось Londlem; 23.01.2016 в 19:37.

  5. 2 пользователя(ей) сказали cпасибо:
    VVWVV (23.01.2016)Wise (23.01.2016)
  6. #4
    Аватар для seriu
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.11.2013
    Сообщений
    64
    Репутация:
    5 ±
    Можно так.
    PHP код:
    if(newkeys == клавиша сигнала
    {
        if(
    GetPlayerState(playerid) != 2) return 1;
        new 
    vehicleid GetPlayerVehicleID(playerid);
        new 
    pass1 GetVehicleSeat(vehicleid,1);
        new 
    pass2 GetVehicleSeat(vehicleid,2);
        new 
    pass3 GetVehicleSeat(vehicleid,3);
        
    LinkVehicleToInterior(vehicle1ид интерьера);
        
    SetVehicleVirtualWorld(vehicleidид вирт мира);
        
    SetPlayerVirtualWorld(playeridид вирт мира);
        
    SetPlayerInterior(playerid,ид интерьера);
        if(
    pass1 != INVALID_PLAYER_ID)
        {
            
    // меняем инт/вирт игроку 1
            
    SetPlayerInterior(pass1,ид интерьера);
            
    SetPlayerVirtualWorld(pass1,ид вирт мира);
        }
        if(
    pass2 != INVALID_PLAYER_ID)
        {
            / 
    меняем инт/вирт игроку 2
            SetPlayerInterior
    (pass2,ид интерьера);
            
    SetPlayerVirtualWorld(pass2,ид вирт мира);
        }
        if(
    pass3 != INVALID_PLAYER_ID)
        {
            / 
    меняем инт/вирт игроку 3
            SetPlayerInterior
    (pass3,ид интерьера);
            
    SetPlayerVirtualWorld(pass3,ид вирт мира);
        }

    PHP код:
    stock GetVehicleSeat(vehicleid,mesto)
    {
        for(new 
    0GetPlayerPoolSize(); <= ji++)
        {
            if(!
    IsPlayerConnected(i)) continue;
            if(
    PI[i][pSpawn] == false) continue; // тут свою проверку на авторизацию
            
    if(IsPlayerInVehicle(i,vehicleid))
            {
                if(
    GetPlayerVehicleSeat(i) == mesto) return i;
            }
        }
        return 
    INVALID_PLAYER_ID;

    п.с надеюсь зайдет в эту тему профик и скажет, что я бомж и предложит как узнать ид пассажира не используя перебор игроков.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Цитата Сообщение от seriu Посмотреть сообщение
    Можно так.
      Открыть/закрыть
    PHP код:
    if(newkeys == клавиша сигнала
    {
        if(
    GetPlayerState(playerid) != 2) return 1;
        new 
    vehicleid GetPlayerVehicleID(playerid);
        new 
    pass1 GetVehicleSeat(vehicleid,1);
        new 
    pass2 GetVehicleSeat(vehicleid,2);
        new 
    pass3 GetVehicleSeat(vehicleid,3);
        
    LinkVehicleToInterior(vehicle1ид интерьера);
        
    SetVehicleVirtualWorld(vehicleidид вирт мира);
        
    SetPlayerVirtualWorld(playeridид вирт мира);
        
    SetPlayerInterior(playerid,ид интерьера);
        if(
    pass1 != INVALID_PLAYER_ID)
        {
            
    // меняем инт/вирт игроку 1
            
    SetPlayerInterior(pass1,ид интерьера);
            
    SetPlayerVirtualWorld(pass1,ид вирт мира);
        }
        if(
    pass2 != INVALID_PLAYER_ID)
        {
            / 
    меняем инт/вирт игроку 2
            SetPlayerInterior
    (pass2,ид интерьера);
            
    SetPlayerVirtualWorld(pass2,ид вирт мира);
        }
        if(
    pass3 != INVALID_PLAYER_ID)
        {
            / 
    меняем инт/вирт игроку 3
            SetPlayerInterior
    (pass3,ид интерьера);
            
    SetPlayerVirtualWorld(pass3,ид вирт мира);
        }

    PHP код:
    stock GetVehicleSeat(vehicleid,mesto)
    {
        for(new 
    0GetPlayerPoolSize(); <= ji++)
        {
            if(!
    IsPlayerConnected(i)) continue;
            if(
    PI[i][pSpawn] == false) continue; // тут свою проверку на авторизацию
            
    if(IsPlayerInVehicle(i,vehicleid))
            {
                if(
    GetPlayerVehicleSeat(i) == mesto) return i;
            }
        }
        return 
    INVALID_PLAYER_ID;


    п.с надеюсь зайдет в эту тему профик и скажет, что я бомж и предложит как узнать ид пассажира не используя перебор игроков.
    Профик выше уже показал как сделать всё с помощью одного цикла, а не вызывать функцию с циклом 3 раза ;) Да и у того же автобуса может быть гораздо больше 3-х пассажиров... А у мотоцикла их лишь один :( Так что вариант профика выше добротнее :с
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

  8. Пользователь сказал cпасибо:
    seriu (23.01.2016)
  9. #6
    Аватар для Wise
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.10.2014
    Сообщений
    148
    Репутация:
    36 ±
    Огромное спасибо всем, кто отозвался. Помог способ StevenH`a и Londlem`a.

 

 

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

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

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

Ваши права

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