Скрипты и моды для CRMP
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

Аптечки by Igrik

Перейти вниз

Аптечки by Igrik Empty Аптечки by Igrik

Сообщение  Rush Сб Мар 07, 2015 8:40 am

Здравствуйте пользователи [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]

Хочу выложить на всеобщее обозрение свою первую работу в области PAWN скриптинга.

Скрипт представляет из себя систему аптечек.
Игрок покупает аптечку за $1000 (цену можно поменять в макросе), затем, при необходимости использует её (/useapt или LSHIFT+ALT). Максимальное количество аптечек, переносимых с собой - 10.

Код оптимизировал как смог, если можно оптимизировать ещё лучше, то предлагайте свои варианты.

Так же рассмотрю любые предложения по улучшению.
Т.к это моя первая работа надеюсь на понимание.

Код:
#define                                 FILTERSCRIPT
 
#include                                a_samp
 
#pragma tabsize                 (0)
 
#define PRICE                   (1000)
#define MAX_APT                 (10)
#assert MAX_APT <=              (255) //! Не менять
 
new
        APT[MAX_PLAYERS char]
;
 
public OnFilterScriptInit()
{
        print("\n--------------------------------------");
        print(" • APTE4KI (V1) BY Igrik");
        print("--------------------------------------\n");
        return 1;
}
 
public OnPlayerDisconnect(playerid, reason)
{
    APT{playerid} = 0;
        return 1;
}
 
public OnPlayerCommandText(playerid, cmdtext[])
{
        if (strcmp("/buyapt", cmdtext, true, 10) == 0)
        {
            if (APT{playerid} == MAX_APT) return
                        SendClientMessage(playerid,-1,"Вы превысили лимит аптечек")
                ;
                if (GetPlayerMoney(playerid)<PRICE) return
                        SendClientMessage(playerid,-1,"Недостаточно средств")
                ;
              
                APT{playerid}++;
                GivePlayerMoney(playerid,-PRICE);
                SendClientMessage(playerid,-1,"Вы купили аптечку");
                return 1;
        }
        if (strcmp("/useapt", cmdtext, true, 10) == 0)
        {
                if (APT{playerid}<1) return
                        SendClientMessage(playerid,-1,"Аптечка не куплена")
                ;
 
                useApt(.p=playerid);
                SendClientMessage(playerid,-1,"Вы использовали аптечку");
                return 1;
        }
        return 0;
}
 
useApt(p)
{
        new Float:a;
        GetPlayerHealth(p,a);
        if(a>=100)return 0;
        APT{p}--;
        SetPlayerHealth(p,100);
        a = 0;
        return 1;
}
 
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
        if(newkeys & KEY_WALK && newkeys & KEY_SPRINT)
    {
                if (APT{playerid}>=1)
                {
                        if (useApt(.p=playerid))
                        {
                                SetPlayerChatBubble(playerid,"Использовал аптечку",0xff0000aa,50,5000);
                        }
                }
        }
        return 1;
}

Автор: Igrik
При копировании на сторонние ресурсы, обязательно указывать автора.
Rush
Rush

Сообщения : 201
Репутация : 46
Дата регистрации : 2012-12-10
Возраст : 26
Откуда : Россия

https://gs-games.forum2x2.com

Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения