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

    Статус
    Оффлайн
    Регистрация
    05.05.2014
    Сообщений
    47
    Репутация:
    11 ±

    Камера при входе.

    Здравствуйте. Уже не первый день меня мучает камера при входе на сервер.
    Дело в том, что когда я добавляю две функции RemovePlayerObjects(playerid) и TextDrawShowForPlayer(playerid, URL) камера перестаёт работать. Без них она работает замечательно. Я и вверх добавлял и вниз, но камера все равно не работает. Без этих функций работает хорошо, но без них мне ни куда. Вот код колбэка OnPlayerConnect(playerid);
    PHP код:
    public OnPlayerConnect(playerid)
    {
        new 
    userip[16], string[80];
        
    RemovePlayerInfo(playerid);
        
    GetPlayerName(playerid,pInfo[playerid][pName],MAX_PLAYER_NAME);
        
    SendClientMessage(playeridCOLOR_NEWS"Добро пожаловать на сервер!");
        
    GetPlayerIp(playerid,userip,sizeof(userip));
        
    format(string,sizeof(string), "Игрок %s[%d] заходит на сервер. IP: %s",pNick(playerid),playerid,userip);
        
    SendAdminMessage(COLOR_YELLOW,string);
        
    // TextDraw.
        
    VehicleHealth[playerid] = CreatePlayerTextDraw(playerid512.245912314.000000" ");
        
    PlayerTextDrawLetterSize(playeridVehicleHealth[playerid], 1.2618082.151998);
        
    PlayerTextDrawAlignment(playeridVehicleHealth[playerid], 1);
        
    PlayerTextDrawColor(playeridVehicleHealth[playerid], -1);
        
    PlayerTextDrawSetShadow(playeridVehicleHealth[playerid], 0);
        
    PlayerTextDrawSetOutline(playeridVehicleHealth[playerid], 1);
        
    PlayerTextDrawBackgroundColor(playeridVehicleHealth[playerid], 51);
        
    PlayerTextDrawFont(playeridVehicleHealth[playerid], 2);
        
    PlayerTextDrawSetProportional(playeridVehicleHealth[playerid], 1);
        
    //--------------------------------------------------------------------------
        
    Speed[playerid] = CreatePlayerTextDraw(playerid512.3421421.12321" ");
        
    PlayerTextDrawLetterSize(playeridSpeed[playerid], 0.4351412.909866);
        
    PlayerTextDrawAlignment(playeridSpeed[playerid], 1);
        
    PlayerTextDrawColor(playeridSpeed[playerid], -1);
        
    PlayerTextDrawSetShadow(playeridSpeed[playerid], 0);
        
    PlayerTextDrawSetOutline(playeridSpeed[playerid], 1);
        
    PlayerTextDrawBackgroundColor(playeridSpeed[playerid], 51);
        
    PlayerTextDrawFont(playeridSpeed[playerid], 2);
        
    PlayerTextDrawSetProportional(playeridSpeed[playerid], 1);
        
    //--------------------------------------------------------------------------
        
    Fuels[playerid] = CreatePlayerTextDraw(playerid523.284912345.00000" ");
        
    PlayerTextDrawLetterSize(playeridFuels[playerid], 0.2618081.151998);
        
    PlayerTextDrawAlignment(playeridFuels[playerid], 1);
        
    PlayerTextDrawColor(playeridFuels[playerid], -1);
        
    PlayerTextDrawSetShadow(playeridFuels[playerid], 0);
        
    PlayerTextDrawSetOutline(playeridFuels[playerid], 1);
        
    PlayerTextDrawBackgroundColor(playeridFuels[playerid], 51);
        
    PlayerTextDrawFont(playeridFuels[playerid], 2);
        
    PlayerTextDrawSetProportional(playeridFuels[playerid], 1);
        
    //--------------------------------------------------------------------------
        
    ZamokVeh[playerid] = CreatePlayerTextDraw(playerid542.541912423.40500" ");
        
    PlayerTextDrawLetterSize(playeridZamokVeh[playerid], 0.2618081.151998);
        
    PlayerTextDrawAlignment(playeridZamokVeh[playerid], 1);
        
    PlayerTextDrawColor(playeridZamokVeh[playerid], -1);
        
    PlayerTextDrawSetShadow(playeridZamokVeh[playerid], 0);
        
    PlayerTextDrawSetOutline(playeridZamokVeh[playerid], 1);
        
    PlayerTextDrawBackgroundColor(playeridZamokVeh[playerid], 51);
        
    PlayerTextDrawFont(playeridZamokVeh[playerid], 2);
        
    PlayerTextDrawSetProportional(playeridZamokVeh[playerid], 1);
        
    //--------------------------------------------------------------------------
        
    VehicleName[playerid] = CreatePlayerTextDraw(playerid522.21121316.240000" ");
        
    PlayerTextDrawLetterSize(playeridVehicleName[playerid], 0.2069521.130664);
        
    PlayerTextDrawAlignment(playeridVehicleName[playerid], 1);
        
    PlayerTextDrawColor(playeridVehicleName[playerid], 0x007FFFFF);
        
    PlayerTextDrawSetShadow(playeridVehicleName[playerid], 0);
        
    PlayerTextDrawSetOutline(playeridVehicleName[playerid], 1);
        
    PlayerTextDrawBackgroundColor(playeridVehicleName[playerid], 51);
        
    PlayerTextDrawFont(playeridVehicleName[playerid], 2);
        
    PlayerTextDrawSetProportional(playeridVehicleName[playerid], 1);
        
    //--------------------------------------------------------------------------
        
    new account[37];
        
    format(account,sizeof(account),"users/%s.ini",pNick(playerid));
        if(!
    fexist(account)) ShowRegisterDialog(playerid);
        else if(
    fexist(account)) ShowLoginDialog(playerid);
        
    SetPlayerFacingAngle(playerid270);
        
    SetPlayerCameraPos(playerid1688.4673, -1484.924697.7186);
        
    SetPlayerCameraLookAt(playerid1687.9570, -1485.787797.5284);
        
    //RemovePlayerObjects(playerid);
        //TextDrawShowForPlayer(playerid, URL);
        
    return true;

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

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

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    72
    Репутация:
    16 ±
    Почему так - незнаю.
    У меня смена камеры в
    PHP код:
    public OnPlayerRequestSkin(playerid
    Можешь попробовать удалить с коннекта и поставить в него.

    Но можно сделать так:
    PHP код:
    new ConnectCameraTimer
    PHP код:
    public OnPlayerConnect(playerid)
    {
        ...
        
    SetTimerEx("ConnectCamera",1000,false,"d",playerid);
        return 
    1;

    PHP код:
    forward ConnectCamera(playerid);
    public 
    ConnectCamera(playerid)
    {
        
    SetPlayerFacingAngle(playerid270);
        
    SetPlayerCameraPos(playerid1688.4673, -1484.924697.7186);
        
    SetPlayerCameraLookAt(playerid1687.9570, -1485.787797.5284);
        return 
    1;


    И зачем два раза проверять файл?
    PHP код:
        if(!fexist(account)) ShowRegisterDialog(playerid);
        else 
    ShowLoginDialog(playerid); 

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

    Статус
    Оффлайн
    Регистрация
    05.05.2014
    Сообщений
    47
    Репутация:
    11 ±
    Цитата Сообщение от KakbeYura Посмотреть сообщение
    Почему так - незнаю.
    У меня смена камеры в
    PHP код:
    public OnPlayerRequestSkin(playerid
    Можешь попробовать удалить с коннекта и поставить в него.

    Но можно сделать так:
    PHP код:
    new ConnectCameraTimer
    PHP код:
    public OnPlayerConnect(playerid)
    {
        ...
        
    SetTimerEx("ConnectCamera",1000,false,"d",playerid);
        return 
    1;

    PHP код:
    forward ConnectCamera(playerid);
    public 
    ConnectCamera(playerid)
    {
        
    SetPlayerFacingAngle(playerid270);
        
    SetPlayerCameraPos(playerid1688.4673, -1484.924697.7186);
        
    SetPlayerCameraLookAt(playerid1687.9570, -1485.787797.5284);
        return 
    1;


    И зачем два раза проверять файл?
    PHP код:
        if(!fexist(account)) ShowRegisterDialog(playerid);
        else 
    ShowLoginDialog(playerid); 
    Ну как бы :) Интересно, и где же я его два раза проверяю?
    Проверка стоит на существование файла игрока, если файла нет - регистрируем. Если есть - посылаем на авторизацию.
    На счёт OnPlayerRequestClass (что за OnPlayerRequestSkin я так и не понял). Он не вызывается при коннекте игрока, только при выборе класса. Смысла мне его использовать нет. Хотелось также бы обойтись без таймера.

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

    Я вот тут подумал. В колбэке OnPlayerConnect стоит функция RemovePlayerInfo. С ней всё хорошо работает, может RemoveObjects и TextDrawShowForPlayer засунуть в неё? При входе/выходе правда будет обновляться. Или лучше не надо?

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

    Статус
    Оффлайн
    Регистрация
    05.05.2014
    Сообщений
    47
    Репутация:
    11 ±
    Поднимаю тему вверх.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Just_Fenix Посмотреть сообщение
    Я вот тут подумал. В колбэке OnPlayerConnect стоит функция RemovePlayerInfo. С ней всё хорошо работает, может RemoveObjects и TextDrawShowForPlayer засунуть в неё? При входе/выходе правда будет обновляться. Или лучше не надо?
    Легче тогда сделать отдельный stock, в который и поместить нужный код. Но вряд ли это даст какой-то результат
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  7. Пользователь сказал cпасибо:
    Just_Fenix (24.05.2014)
  8. #6
    Аватар для Just_Fenix
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.05.2014
    Сообщений
    47
    Репутация:
    11 ±
    Сделал как все делают. В колбэк OnPlayerConnect поставил проверку на существование аккаунта.
    Если аккаунта нет - присваиваем значение false переменной gPlayerAccount. Если аккаунт есть - присваиваем значение true переменной gPlayerAccount. Далее в колбэке OnPlayerRequestClass ставим проверку с этой переменной.
    PHP код:
        if(gPlayerAccount[playerid] == falseShowRegisterDialog(playerid);
        else if(
    gPlayerAccount[playerid] == trueShowLoginDialog(playerid); 
    Если значение переменной gPlayerAccount равно false, то отправляем игрока на регистрацию.
    Если значение переменной gPlayerAccount равно true, то отправляем игрока на авторизацию.
    Выше этой проверки я поставил координаты камеры, и всё прекрасно работает. Только внизу появились << >> и кнопка spawn.
    Придётся не обращать на них внимания :) Спасибо всем, кто попытался помочь. Тему можно закрывать.

 

 

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

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

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

Ваши права

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