Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 6 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 58
  1. #1
    Аватар для DeimoS
    Модератор?

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

    Обход стандартного выбора скина (скрыть кнопки "<<", ">>" и "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; 14.02.2018 в 12:41.
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 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,466
    Репутация:
    265 ±
    Плохой, мальчик!
      Открыть/закрыть



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

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


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


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

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

    Steve Pavlina

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

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

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





    #FIXSAMP

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

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

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

    Steve Pavlina

  7. #6
    Аватар для $continue$
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,466
    Репутация:
    265 ±
    Нет!
    Цитата Сообщение от DeimoS Посмотреть сообщение
    ВСЁ, ДОВОЛЬНЫ!?

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    4,297
    Репутация:
    1615 ±
    Тащемта, вот фикс подвисания при первом появлении (пока на 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,466
    Репутация:
    265 ±
    111/1111 - это же не спроста? (привет, magic number)
    Есть, конечно, подозрение, что это число, кхм сколько раз тебя, * кхм *. Ну ты понял вообщем

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

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

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    4,297
    Репутация:
    1615 ±
    И ещё одна реализация подъехала. Тут всё работает через двойной спавн (собсно, обход кнопок остался тем же. Изменился только обход бага с появлением сигары/пива при смерти от нажатия 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)

Ваши права

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