Системы QUEST на серверах SAMP

Регистрация
26.02.18
Сообщения
763
Симпатии
306
Автор темы #1
Обратите внимание, если Вы хотите провести сделку с данным пользователем, на то, что он заблокирован.
Думаю по названию поняли что тут будет описываться, квесты я буду добавлять по мере их поступления некоторые могу делать сам некоторые просто буду брать <3
Кол-во Квестов: 3
1 QUEST "ОХОТА НА ОЛЕНЕЙ"
Тема старая но я её подправил
PHP:
pQuest_1
В public OnGameModeInit()
PHP:
new actor_djoni = CreateActor(158, -382.6907,-1422.1689,25.7266,257.3999);

ApplyActorAnimation(actor_djoni, !"", !"",4.0,1,0,0,0,0);

CreateDynamicCP(-381.9926,-1422.0990,25.7266, 0.5,-1,-1,-1,0.8);
Create3DTextLabel(!"Нажми ваша L.Alt",0xF5DEB3FF,-381.9926,-1422.0990,25.7266,10.0,0,1);
В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
PHP:
if(newkeys == KEY_WALK)
{
    if(IsPlayerInRangeOfPoint(playerid, 2.0, -381.9890,-1422.1569,25.7266))
    {
        if(GetPVarInt(playerid, !"killed_deer") == 5)
        {
            ShowPlayerDialog(playerid,0, DIALOG_STYLE_MSGBOX,!"Дарк",!"{F5DEB3}Ох, большое тебе спасибо! Вот держи свое вознаграждение. ($5.000)",!"Закрыть",!"");
            PlayerInfo[playerid][pMoney] += 5000;

            DeletePVar(playerid, !"quest_djoni");
            DeletePVar(playerid, !"killed_deer");
            PlayerInfo[playerid][pQuest_1] = 1;
        }
        else
        {
            if(PlayerInfo[playerid][pQuest_1])
                return SendClientMessage(playerid,0xF5DEB3FF,!"Ты уже прошел этот Quest");

            if(GetPVarInt(playerid, !"quest_djoni"))
                return SendClientMessage(playerid,0xF5DEB3FF,!"Ты уже начал Quest #1");

            ShowPlayerDialog(playerid,701, DIALOG_STYLE_MSGBOX,!"Дарк",!"{F5DEB3}О, Привет! Слушай тут такое дело, я посеял пшеницу,\n\n\
            а эти Олени топчут мой урожай. Можешь помочь?",!"Да",!"Нет");
        }
    }
}
В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
PHP:
case 700:

{
    if(!response)return true;

    switch(listitem)
    {
        case 0:
        {
            if(PlayerInfo[playerid][pQuest_1])
                return SendClientMessage(playerid,0xF5DEB3FF,!"Ты уже прошел этот Quest");

            SetPlayerRaceCheckpoint(playerid,2,-382.6907,-1422.1689,26.2266,0.0,0.0,0.0,6.0);

            SendClientMessage(playerid,0xF5DEB3FF,!"Место расположения Quest`a расположено на мини карте!");
            SetPVarInt(playerid,!"quest_gps",1);
        }
    }
}

case 701:
{
    if(!response)return true;

    SetPVarInt(playerid,!"quest_djoni",1);
    GiveWeapon(playerid, 33, 10);

    SetPVarInt(playerid, !"object_djoni",CreatePlayerObject(playerid,19315, -550.15, -1860.14, 17.00, 0.00, 0.00, 0.00));

    ShowPlayerDialog(playerid,0, DIALOG_STYLE_MSGBOX,!"Джони",!"{F5DEB3}Олени находятся где то возле фермы\n\n\
    Найди их и застрели, оружие я тебе дал.",!"Закрыть",!"");
}
Если нет этого public`a то в конец мода
PHP:
forward OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);

public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
    new string[30];

    if(GetPVarInt(playerid, !"quest_djoni"))
    {
        new object = GetPVarInt(playerid, !"object_djoni"),
            killed_deer = GetPVarInt(playerid, !"killed_deer");

        if(hittype == BULLET_HIT_TYPE_PLAYER_OBJECT && hitid == object)
        {
            DestroyPlayerObject(playerid, object);

            SetPVarInt(playerid, !"killed_deer", killed_deer +1);

            format(string, sizeof(string), "Убито Оленей %d/5.",killed_deer + 1);
            SendClientMessage(playerid, 0xF5DEB3FF, string);

            if(killed_deer == 4)
            {
                ShowPlayerDialog(playerid,0, DIALOG_STYLE_MSGBOX,!"Quest #1",!"{F5DEB3}Молодец! ты убил всех Оленей,\
                теперь вернись к Джони забери свои деньги! ",!"Закрыть",!"");
                return DeletePVar(playerid, !"object_djoni");
            }
            switch(killed_deer + 1)
            {
                case 1:SetPVarInt(playerid, !"object_djoni",CreatePlayerObject(playerid,19315, -599.41, -1496.85, 11.91, 0.00, 0.00, 0.00));
                case 2:SetPVarInt(playerid, !"object_djoni",CreatePlayerObject(playerid,19315, -271.72, -1187.65, 12.60, 0.00, 0.00, 0.00));
                case 3:SetPVarInt(playerid, !"object_djoni",CreatePlayerObject(playerid,19315, -315.88, -1435.65, 14.50, 0.00, 0.00, 0.00));
                case 4:SetPVarInt(playerid, !"object_djoni",CreatePlayerObject(playerid,19315, -380.89, -1736.42, 12.30, 0.00, 0.00, 0.00));
            }
        }
    }
    return true;
}
В public OnPlayerEnterRaceCheckpoint(playerid)
PHP:
if(GetPVarInt(playerid, !"quest_gps"))
{
    SendClientMessage(playerid, 0x33CCFFFF, !"Ты достиг места назначения.");

    DeletePVar(playerid, !"quest_gps");
    DisablePlayerRaceCheckpoint(playerid);
}
Ко всем командам
PHP:
CMD:quest(playerid)
{
    new string[70],
        quest_one = PlayerInfo[playerid][pQuest_1];

    format(string,sizeof(string),"Название:\t\tПройдено:\n{eee6a3}Охота на Оленей.\t{ffffff}%s",!quest_one?("Нет"):("Да"));
    ShowPlayerDialog(playerid,700,DIALOG_STYLE_TABLIST_HEADERS,"Quest",string, !"Выбрать", !"Выход");
    return true;
}
Примечание: Сохранение думаю сделаете сами! (Сохранить нужно только вот, этот член перечисления pQuest_1)
 
Сверху