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

Реклама



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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,660
    Репутация:
    1426 ±

    Обход стандартного выбора скина (скрыть кнопки "<<", ">>" и "Spawn")

    Вариант #1:

    При нажатии на F4 и смерти игрока отправляет на пол секунды в режим слежки (для исправления бага с появлением бутылки/сигары на спавне)
     Код
    В OnPlayerConnect вставим
    PHP код:
    SetPVarInt(playerid"OnPlayerRequestClassFix"1);
    TogglePlayerSpectating(playeridtrue);//Собстно, начало обхода
    SetTimerEx("SetPlayerCameraPosForReqClass"1000"i"playerid);//А это для того, чтоб камера изменилась при начале слежки 
    И в OnPlayerRequestClass вставим
    PHP код:
    SetSpawnInfo(playerid11102026.17041343.639410.8203266.7928243300000);
    if(!
    GetPVarInt(playerid"OnPlayerRequestClassFix"))
    {
        if(
    GetPVarInt(playerid"OnPlayerRequestClass_F4_Bug")) return SpawnPlayer(playerid);
        
    TogglePlayerSpectating(playeridtrue);
        
    SetTimerEx("TogglePlayerSpectatingOff"5000"i"playerid);
    }
    else 
    DeletePVar(playerid"OnPlayerRequestClassFix"), SpawnPlayer(playerid); 
    Ну и в OnPlayerSpawn нужно обязательно указать координаты, куда будет отправлен игрок. Например:
    PHP код:
    DeletePVar(playerid"OnPlayerRequestClass_F4_Bug");
    SetPlayerPos(playerid2026.17041343.639410.8203);//Можете вставить свои, если вы брезгуете моими координатами 
    + функции, вызываемые таймерами
    PHP код:
    forward SetPlayerCameraPosForReqClass(playerid);
    public 
    SetPlayerCameraPosForReqClass(playerid)
    {
        
    SetPlayerCameraPos(playerid2026.77041343.639410.8203);
        
    SetPlayerCameraLookAt(playerid2027.77041343.639410.8203);
    }

    forward TogglePlayerSpectatingOff(playerid);
    public 
    TogglePlayerSpectatingOff(playerid
    {
        
    TogglePlayerSpectating(playeridfalse),
        
    SetPVarInt(playerid"OnPlayerRequestClass_F4_Bug"GetPVarInt(playerid"OnPlayerRequestClass_F4_Bug")+1);//Чпок

    А так же во все места, после которых нужно спавнить игрока при первом входе (регистрация/авторизация)
    PHP код:
    TogglePlayerSpectating(playeridfalse); 
     Готовый код скрипта, в котором я проводил тест
    PHP код:
    #include <a_samp>

    main()
    {
        print(
    "\n----------------------------------");
        print(
    " Blank Gamemode by your name here");
        print(
    "----------------------------------\n");
    }

    public 
    OnGameModeInit()
    {
        
    // Don't use these lines if it's a filterscript
        
    SetGameModeText("Blank Script");
        
    AddPlayerClass(01958.37831343.157215.3746269.1425000000);
        
    AddStaticVehicle(560,1958.3876,2163.6729,10.5250,259.9205,9,39); // car
        
    return 1;
    }

    public 
    OnGameModeExit()
    {
        return 
    1;
    }

    public 
    OnPlayerRequestClass(playeridclassid)
    {
        
    SetSpawnInfo(playerid11102026.17041343.639410.8203266.7928243300000);
        if(!
    GetPVarInt(playerid"OnPlayerRequestClassFix"))
        {
            if(
    GetPVarInt(playerid"OnPlayerRequestClass_F4_Bug")) return SpawnPlayer(playerid);
            
    TogglePlayerSpectating(playeridtrue);
            
    SetTimerEx("TogglePlayerSpectatingOff"5000"i"playerid);
        }
        else 
    DeletePVar(playerid"OnPlayerRequestClassFix"), SpawnPlayer(playerid);
        return 
    1;
    }

    public 
    OnPlayerConnect(playerid)
    {
        
    SetPVarInt(playerid"OnPlayerRequestClassFix"1);
        
    TogglePlayerSpectating(playeridtrue);//Собстно, начало обхода
        
    SetTimerEx("SetPlayerCameraPosForReqClass"1000"i"playerid);//А это для того, чтоб камера изменилась при начале слежки
        
    return 1;
    }


    forward SetPlayerCameraPosForReqClass(playerid);
    public 
    SetPlayerCameraPosForReqClass(playerid)
    {
        
    SetPlayerCameraPos(playerid2026.77041343.639410.8203);
        
    SetPlayerCameraLookAt(playerid2027.77041343.639410.8203);
        
    ShowPlayerDialog(playerid1111DIALOG_STYLE_MSGBOX"Привет. Как дела?""Войти на сервер?""Да""Нет (Да)");
    }

    forward TogglePlayerSpectatingOff(playerid);
    public 
    TogglePlayerSpectatingOff(playerid
    {
        
    TogglePlayerSpectating(playeridfalse),
        
    SetPVarInt(playerid"OnPlayerRequestClass_F4_Bug"GetPVarInt(playerid"OnPlayerRequestClass_F4_Bug")+1);//Чпок


    public 
    OnPlayerSpawn(playerid)
    {
        
    DeletePVar(playerid"OnPlayerRequestClass_F4_Bug");
        
    SetPlayerPos(playerid1957.2458,2169.8950,10.8203);
        
    SetPlayerFacingAngle(playerid231.6659);
        
    GivePlayerMoney(playerid10000);
        
    GivePlayerWeapon(playerid241000);
        
    SendClientMessage(playerid, -1"/kill | /spawn | /gmx");
        return 
    1;
    }

    public 
    OnPlayerCommandText(playeridcmdtext[])
    {
        if (!
    strcmp("/kill"cmdtexttrue))
        {
            
    SetPlayerHealth(playerid'\0');
            
    SendClientMessage(playerid, -1"ЮАР Дед");
            return 
    1;
        }
        else if (!
    strcmp("/spawn"cmdtexttrue))
        {
            
    SpawnPlayer(playerid);
            
    SendClientMessage(playerid, -1"ЮАР Спавн");
            return 
    1;
        }
        else if (!
    strcmp("/gmx"cmdtexttrue))
        {
            
    SendRconCommand("gmx");
            
    SendClientMessage(playerid, -1"Рестарто");
            return 
    1;
        }
        return 
    0;
    }

    public 
    OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        if(
    dialogid == 1111)
        {
            
    TogglePlayerSpectating(playeridfalse);
        }
        return 
    1;






    Вариант #2:

    Подал идею - Alexey_Nikiforov
    Реализация - DS


    При нажатии на F4 игрок будет заспавнен 2 раза подряд с небольшим интервалом (для исправления того же самого бага:

     Код
    OnPlayerRequestClass:
    PHP код:
    SetSpawnInfo(playerid11100.00.00.00.0243300000);
    new 
    vid GetPlayerVehicleID(playerid);
    if (
    vid)
    {
        new 
    Float:x,
            
    Float:y,
            
    Float:z;
        
    GetVehiclePos(vidxyz),
        
    SetPlayerPos(playeridxyz-5);
    }
    SetPVarInt(playerid"OnPlayerRequestClassFix"1);
    SpawnPlayer(playerid); 
    OnPlayerConnect:
    PHP код:
    TogglePlayerSpectating(playeridtrue);//Собстно, начало обхода
    SetTimerEx("SetPlayerCameraPosForReqClass"1000"i"playerid);//А это для того, чтоб камера изменилась при начале слежки 
    OnPlayerSpawn:
    PHP код:
    if(GetPVarInt(playerid"OnPlayerRequestClassFix"))
    {
        
    SetPlayerPos(playerid0.00.00.0);
        
    SetTimerEx("DoublePlayerSpawn"500"i"playerid);
        
    DeletePVar(playerid"OnPlayerRequestClassFix");
        return 
    1;
    }
    SetPlayerPos(playerid1957.2458,2169.8950,10.8203);//Вот тут уже свои координаты
    //И далее нужные настройки, типа оружия, скина и т.п. (SetPlayerPos должен быть обязательно! 
    Функция, вызываемая таймером, для смены позиции камеры при входе:
    PHP код:
    forward SetPlayerCameraPosForReqClass(playerid);
    public 
    SetPlayerCameraPosForReqClass(playerid)
    {
        
    SetPlayerCameraPos(playerid2026.77041343.639410.8203);
        
    SetPlayerCameraLookAt(playerid2027.77041343.639410.8203);

    И в момент, когда нужно заспавнить игрока (при авторизации, например), добавьте:
    PHP код:
    TogglePlayerSpectating(playeridfalse); 

     Готовый скрипт, который использую я
    PHP код:
    #include <a_samp>

    main()
    {
        print(
    "\n----------------------------------");
        print(
    " Blank Gamemode by your name here");
        print(
    "----------------------------------\n");
    }

    public 
    OnGameModeInit()
    {
        
    // Don't use these lines if it's a filterscript
        
    SetGameModeText("Blank Script");
        
    AddPlayerClass(01958.37831343.157215.3746269.1425000000);
        
    AddStaticVehicle(560,1958.3876,2163.6729,10.5250,259.9205,9,39); // car
        
    return 1;
    }

    public 
    OnGameModeExit()
    {
        return 
    1;
    }

    public 
    OnPlayerConnect(playerid)
    {
        
    TogglePlayerSpectating(playeridtrue);//Собстно, начало обхода
        
    SetTimerEx("SetPlayerCameraPosForReqClass"1000"i"playerid);//А это для того, чтоб камера изменилась при начале слежки
        
    return 1;
    }

    forward SetPlayerCameraPosForReqClass(playerid);
    public 
    SetPlayerCameraPosForReqClass(playerid)
    {
        
    SetPlayerCameraPos(playerid2026.77041343.639410.8203);
        
    SetPlayerCameraLookAt(playerid2027.77041343.639410.8203);
        
    ShowPlayerDialog(playerid1111DIALOG_STYLE_MSGBOX"Привет. Как дела?""Войти на сервер?""Да""Нет (Да)");
    }

    public 
    OnPlayerRequestClass(playeridclassid)
    {
        
    SetSpawnInfo(playerid11100.00.00.00.0243300000);
        new 
    vid GetPlayerVehicleID(playerid);
        if (
    vid)
        {
            new 
    Float:x,
                
    Float:y,
                
    Float:z;
                
    // Remove them without the animation.
            
    GetVehiclePos(vidxyz),
            
    SetPlayerPos(playeridxyz-5);
        }
        
    SetPVarInt(playerid"OnPlayerRequestClassFix"1);
        
    SpawnPlayer(playerid);
        return 
    1;
    }

    forward DoublePlayerSpawn(playerid);
    public 
    DoublePlayerSpawn(playeridSpawnPlayer(playerid);

    public 
    OnPlayerSpawn(playerid)
    {
        if(
    GetPVarInt(playerid"OnPlayerRequestClassFix"))
        {
            
    SetPlayerPos(playerid0.00.00.0);
            
    SetTimerEx("DoublePlayerSpawn"500"i"playerid);
            
    DeletePVar(playerid"OnPlayerRequestClassFix");
            return 
    1;
        }
        
    SetPlayerPos(playerid1957.2458,2169.8950,10.8203);
        return 
    1;
    }

    public 
    OnPlayerCommandText(playeridcmdtext[])
    {
        if (!
    strcmp("/kill"cmdtexttrue))
        {
            
    SetPlayerHealth(playerid'\0');
            
    SendClientMessage(playerid, -1"ЮАР Дед");
            return 
    1;
        }
        else if (!
    strcmp("/spawn"cmdtexttrue))
        {
            
    SpawnPlayer(playerid);
            
    SendClientMessage(playerid, -1"ЮАР Спавн");
            return 
    1;
        }
        else if (!
    strcmp("/gmx"cmdtexttrue))
        {
            
    SendRconCommand("gmx");
            
    SendClientMessage(playerid, -1"Рестарто");
            return 
    1;
        }
        return 
    0;
    }

    public 
    OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        if(
    dialogid == 1111)
        {
            
    TogglePlayerSpectating(playeridfalse);
        }
        return 
    1;






     Старая версия темы (для потомков)
    Дело было вечером. Делать было нечего.

    В общем, решил я разобраться с этой проблемой для себя раз и навсегда (ибо забыл как я это делал когда-то, когда ещё держал сервер SA-MP, лол), а заодно и поделиться с вами.

    Если кто не понял, данный код позволяет обойти стандартный выбор скина, при этом спокойно работать с установкой камеры для игрока и не вызывает багов, типа появления на Грув Стрит или артефактов в виде сигары/пива на месте смерти/спавна игрока.

    Пишу в данный раздел, да и особо не заморачиваюсь с оформлением, я потому, что пока ещё не уверен в 100% работоспособности данного кода, ибо нет возможности его проверить на онлайне больше, чем я и мой воображаемый друг Витя, у которого, на его воображаемом компьютере, не идёт воображаемая GTA. Да и вообще не ясно как этот код поведёт себя в боевых условиях. Но всё (или почти всё), что касается работы кода для одного человека, я проверил полностью и код работает отлично... В общем, если кому не трудно, протестируйте этот код. Позже, если он окажется рабочим, создам мануал и увековечу ваши имена в нём.

    Собстно, код:
      Открыть/закрыть

    В OnPlayerConnect вставим
    PHP код:
    SetPVarInt(playerid"OnPlayerRequestClassFix"1);
    TogglePlayerSpectating(playeridtrue);//Собстно, начало обхода
    SetTimerEx("SetPlayerCameraPosForReqClass"1000"i"playerid);//А это для того, чтоб камера изменилась при начале слежки 
    И в OnPlayerRequestClass вставим
    PHP код:
    SetSpawnInfo(playerid11102026.17041343.639410.8203266.7928243300000);
    if(!
    GetPVarInt(playerid"OnPlayerRequestClassFix"))
    {
        
    TogglePlayerSpectating(playeridtrue);
        
    SetTimerEx("TogglePlayerSpectatingOff"5000"i"playerid);
    }
    else 
    DeletePVar(playerid"OnPlayerRequestClassFix"), SpawnPlayer(playerid); 
    Ну и координаты спавна в OnPlayerSpawn, дабы ваш мод не перерезал всю вашу семью и не утопил ваших рыбок в их же аквариуме в приступе бешенства
    PHP код:
    SetPlayerPos(playerid2026.17041343.639410.8203);//Можете вставить свои, если вы брезгуете моими координатами 
    + функции, вызываемые таймерами
    PHP код:
    forward SetPlayerCameraPosForReqClass(playerid);
    public 
    SetPlayerCameraPosForReqClass(playerid)
    {
        
    SetPlayerCameraPos(playerid2026.77041343.639410.8203);
        
    SetPlayerCameraLookAt(playerid2027.77041343.639410.8203);
    }

    forward TogglePlayerSpectatingOff(playerid);
    public 
    TogglePlayerSpectatingOff(playeridTogglePlayerSpectating(playeridfalse); 
    А так же во все места, после которых нужно спавнить игрока при первом входе (регистрация/авторизация)
    PHP код:
    TogglePlayerSpectating(playeridfalse); 


    Кто решит придраться к названиям функций, тот вообще не очень и я на него обиделся. Код писался в условиях максимальной лени, как и эта тема, так что вот. Всем спасибо, все свободны

    P.S. Вот мой pwn, с которого я тестировал
      Открыть/закрыть
    PHP код:
    #include <a_samp>

    main()
    {
        print(
    "\n----------------------------------");
        print(
    " Blank Gamemode by your name here");
        print(
    "----------------------------------\n");
    }

    public 
    OnGameModeInit()
    {
        
    // Don't use these lines if it's a filterscript
        
    SetGameModeText("Blank Script");
        
    AddPlayerClass(01958.37831343.157215.3746269.1425000000);
        return 
    1;
    }

    public 
    OnGameModeExit()
    {
        return 
    1;
    }

    public 
    OnPlayerRequestClass(playeridclassid)
    {
        
    SetSpawnInfo(playerid11102026.17041343.639410.8203266.7928243300000);
        if(!
    GetPVarInt(playerid"OnPlayerRequestClassFix"))
        {
            
    TogglePlayerSpectating(playeridtrue);
            
    SetTimerEx("TogglePlayerSpectatingOff"5000"i"playerid);
        }
        else 
    DeletePVar(playerid"OnPlayerRequestClassFix"), SpawnPlayer(playerid);
        return 
    1;
    }  

    public 
    OnPlayerConnect(playerid)
    {
        
    SetPVarInt(playerid"OnPlayerRequestClassFix"1);
        
    TogglePlayerSpectating(playeridtrue);//Собстно, начало обхода
        
    SetTimerEx("SetPlayerCameraPosForReqClass"1000"i"playerid);//А это для того, чтоб камера изменилась при начале слежки
        
    return 1;
    }
    forward SetPlayerCameraPosForReqClass(playerid);
    public 
    SetPlayerCameraPosForReqClass(playerid)
    {
        
    SetPlayerCameraPos(playerid2026.77041343.639410.8203);
        
    SetPlayerCameraLookAt(playerid2027.77041343.639410.8203);
        
    ShowPlayerDialog(playerid1111DIALOG_STYLE_MSGBOX"Привет. Как дела?""Войти на сервер?""Да""Нет (Да)");
    }

    forward TogglePlayerSpectatingOff(playerid);
    public 
    TogglePlayerSpectatingOff(playeridTogglePlayerSpectating(playeridfalse);

    public 
    OnPlayerSpawn(playerid)
    {
        
    SetPlayerPos(playerid2026.17041343.639410.8203);
        
    SendClientMessage(playerid, -1"/kill | /spawn | /gmx");
        return 
    1;
    }

    public 
    OnPlayerCommandText(playeridcmdtext[])
    {
        if (!
    strcmp("/kill"cmdtexttrue))
        {
            
    SetPlayerHealth(playerid'\0');
            
    SendClientMessage(playerid, -1"ЮАР Дед");
            return 
    1;
        }
        else if (!
    strcmp("/spawn"cmdtexttrue))
        {
            
    SpawnPlayer(playerid);
            
    SendClientMessage(playerid, -1"ЮАР Спавн");
            return 
    1;
        }
        else if (!
    strcmp("/gmx"cmdtexttrue))
        {
            
    SendRconCommand("gmx");
            
    SendClientMessage(playerid, -1"Рестарто");
            return 
    1;
        }
        return 
    0;
    }

    public 
    OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        if(
    dialogid == 1111)
        {
            
    TogglePlayerSpectating(playeridfalse);
        }
        return 
    1;



     Ещё раз суть
    Протестировать надо:
    • Правильность смены камеры при входе на сервер (у меня её не меняло только если в АФК сидеть во время смены камеры)
    • Появление сигар при смерти (в том числе и при прожатии F4)
    • Общее качество спавна (задержки могут быть только при прожатии F4, ибо если не делать задержек, появляется сигара на месте спавна)



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

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

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

    Steve Pavlina

  2. 4 пользователя(ей) сказали cпасибо:
    Alexey_Nikiforov (25.02.2016)HarrWe (27.07.2016)vovandolg (25.02.2016)[ForD] (08.03.2016)
  3. #2
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,402
    Репутация:
    253 ±
    Плохой, мальчик!
      Открыть/закрыть


    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,660
    Репутация:
    1426 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Плохой, мальчик!
      Открыть/закрыть


    Опять у тебя переизбыток запятых в крови :с
      Открыть/закрыть


    P.S. Это не я, меня подставили!
    Последний раз редактировалось DeimoS; 20.07.2017 в 19:02.
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    704
    Репутация:
    104 ±
    /del (проглядел в предыдущем посте)
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,660
    Репутация:
    1426 ±
    ВСЁ, ДОВОЛЬНЫ!?
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,402
    Репутация:
    253 ±
    Нет!
    Цитата Сообщение от DeimoS Посмотреть сообщение
    ВСЁ, ДОВОЛЬНЫ!?
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,660
    Репутация:
    1426 ±
    Тащемта, вот фикс подвисания при первом появлении (пока на pVar, ибо это первое, что пришло в голову. Потом мб ещё что придумаю)
    PHP код:
    public OnPlayerRequestClass(playeridclassid)
    {
        
    SetSpawnInfo(playerid11102026.17041343.639410.8203266.7928243300000);
        if(!
    GetPVarInt(playerid"OnPlayerRequestClassFix"))
        {
            
    TogglePlayerSpectating(playeridtrue);
            
    SetTimerEx("TogglePlayerSpectatingOff"5000"i"playerid);
        }
        else 
    DeletePVar(playerid"OnPlayerRequestClassFix"), SpawnPlayer(playerid);
        return 
    1;

    PHP код:
    public OnPlayerConnect(playerid)
    {
        
    SetPVarInt(playerid"OnPlayerRequestClassFix"1);
        
    TogglePlayerSpectating(playeridtrue);//Собстно, начало обхода
        
    SetTimerEx("SetPlayerCameraPosForReqClass"1000"i"playerid);//А это для того, чтоб камера изменилась при начале слежки
        
    return 1;

    PHP код:
    public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        if(
    dialogid == 1111)
        {
            
    TogglePlayerSpectating(playeridfalse);
        }
        return 
    1;

    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,402
    Репутация:
    253 ±
    111/1111 - это же не спроста? (привет, magic number)
    Есть, конечно, подозрение, что это число, кхм сколько раз тебя, * кхм *. Ну ты понял вообщем
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,660
    Репутация:
    1426 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    111/1111 - это же не спроста? (привет, magic number)
    Есть, конечно, подозрение, что это число, кхм сколько раз тебя, * кхм *. Ну ты понял вообщем
    Для вечно молодых, вечно пьяных я в конце темы пояснил, что это набросок, накиданный за считанные минуты.

    Я тоже хочу оставлять ссылки, поэтому вот тебе рандомная статья с лурка
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,660
    Репутация:
    1426 ±
    И ещё одна реализация подъехала. Тут всё работает через двойной спавн (собсно, обход кнопок остался тем же. Изменился только обход бага с появлением сигары/пива при смерти от нажатия F4)

      Открыть/закрыть
    PHP код:
    #include <a_samp>

    main()
    {
        print(
    "\n----------------------------------");
        print(
    " Blank Gamemode by your name here");
        print(
    "----------------------------------\n");
    }

    public 
    OnGameModeInit()
    {
        
    // Don't use these lines if it's a filterscript
        
    SetGameModeText("Blank Script");
        
    AddPlayerClass(01958.37831343.157215.3746269.1425000000);
        return 
    1;
    }

    public 
    OnGameModeExit()
    {
        return 
    1;
    }

    public 
    OnPlayerConnect(playerid)
    {
        
    TogglePlayerSpectating(playeridtrue);//Собстно, начало обхода
        
    SetTimerEx("SetPlayerCameraPosForReqClass"1000"i"playerid);//А это для того, чтоб камера изменилась при начале слежки
        
    return 1;
    }

    forward SetPlayerCameraPosForReqClass(playerid);
    public 
    SetPlayerCameraPosForReqClass(playerid)
    {
        
    SetPlayerCameraPos(playerid2026.77041343.639410.8203);
        
    SetPlayerCameraLookAt(playerid2027.77041343.639410.8203);
        
    ShowPlayerDialog(playerid1111DIALOG_STYLE_MSGBOX"Привет. Как дела?""Войти на сервер?""Да""Нет (Да)");
    }

    public 
    OnPlayerRequestClass(playeridclassid)
    {
        
    SetSpawnInfo(playerid11100.00.00.00.0243300000);
        if(
    IsPlayerInAnyVehicle(playerid)) SetPlayerHealth(playerid0.0);
        
    SetPVarInt(playerid"OnPlayerRequestClassFix"1);
        
    SpawnPlayer(playerid);
        return 
    1;
    }

    forward DoublePlayerSpawn(playerid);
    public 
    DoublePlayerSpawn(playeridSpawnPlayer(playerid);

    public 
    OnPlayerSpawn(playerid)
    {
        if(!
    GetPVarInt(playerid"OnPlayerRequestClassFix"))
        {
            
    SetPlayerPos(playerid2026.17041343.639410.8203);
            
    SendClientMessage(playerid, -1"/kill | /spawn | /gmx");
        }
        else
        {
            
    SetPlayerPos(playerid0.00.00.0);
            
    SetTimerEx("DoublePlayerSpawn"500"i"playerid);
            
    DeletePVar(playerid"OnPlayerRequestClassFix");
        }
        return 
    1;
    }

    public 
    OnPlayerCommandText(playeridcmdtext[])
    {
        if (!
    strcmp("/kill"cmdtexttrue))
        {
            
    SetPlayerHealth(playerid'\0');
            
    SendClientMessage(playerid, -1"ЮАР Дед");
            return 
    1;
        }
        else if (!
    strcmp("/spawn"cmdtexttrue))
        {
            
    SpawnPlayer(playerid);
            
    SendClientMessage(playerid, -1"ЮАР Спавн");
            return 
    1;
        }
        else if (!
    strcmp("/gmx"cmdtexttrue))
        {
            
    SendRconCommand("gmx");
            
    SendClientMessage(playerid, -1"Рестарто");
            return 
    1;
        }
        return 
    0;
    }

    public 
    OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        if(
    dialogid == 1111)
        {
            
    TogglePlayerSpectating(playeridfalse);
        }
        return 
    1;


    Спасибо Alexey_Nikiforov за предоставленную идею

    Если кто-то займётся тестированием этого или предложит свои идеи, буду очень признателен
    Последний раз редактировалось DeimoS; 26.02.2016 в 14:45.
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

 

 
Страница 1 из 6 123 ... ПоследняяПоследняя

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

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

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

Ваши права

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