Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

[Урок] Пишем мод с I'm Cobra(3 урок)

Статус
В этой теме нельзя размещать новые ответы.

I'm Cobra

Специалист
Здравствуйте пользователи pawno-info.ru.
Не было времени доделать урок, но вот сейчас он готов.
В этом уроке мы создадим простую систему PayDay и LvL Exp.
Ну начнём.

Действие первое. Создание системы Pay-Day:

1) Ко всем #define:
PHP:
#define COLOR_RED 0xFFD9D991//       Бело-Розывый (запрещающий)
#define COLOR_ISPOLZUY 0x7FB151FF//  цвет для '*используйте:'
#pragma tabsize 0// От Варнингов 217

2) Ко всем forward'aм:
PHP:
forward PayDay();
forward SyncTime();
forward GameModeExitFunc();
forward SyncUp();
3) Ко всем new:
PHP:
new synctimer;
4) В enum pInfo, после pAdmin вставляем:
PHP:
	pPayDay,// Зарплата
	pPayDayHad,// Зарплата
5) Вставляем в public OnPlayerConnect, после:
PHP:
    if(fexist(string))// Проверка на файл, если он есть то выполняется следующее действие.
 	{
		PAccount[playerid] = 1;// Аккаунт есть
	}
	else// Если файла с именем нет, то выполняется это действие.
	{
	    PAccount[playerid] = 0;// Аккаунта нет
	}
Вставляем:
PHP:
	PlayerInfo[playerid][pPayDay] = 0;
	PlayerInfo[playerid][pPayDayHad] = 0;
6) В public OnPlayerCommandText вставляем:
PHP:
			if(strcmp(cmd, "/payday", true) == 0)
		{
			if (PlayerInfo[playerid][pAdmin] >= 1338)
			{
				PayDay();
			}
			else
			{
				SendClientMessage(playerid, COLOR_RED, "** У Вас недостаточно прав для того, чтобы использовать эту команду!");
			}
			return 1;
		}
7) В public OnPlayerRegister, после:
PHP:
ini_setString(iniFile,"Pass",PlayerInfo[playerid][pPass]);// Записываем пароль игрока в файл
Вставляем:
PHP:
			ini_setInteger(iniFile, "PayDay", PlayerInfo[playerid][pPayDay]);
			ini_setInteger(iniFile, "PayDayHad", PlayerInfo[playerid][pPayDayHad]);
8) В public OnPlayerLogin, после:
PHP:
ini_getInteger(iniFile,"Admin",PlayerInfo[playerid][pAdmin]);// Загружаем уровень админа
Вставляем:
PHP:
			ini_getInteger(iniFile, "PayDay", PlayerInfo[playerid][pPayDay]);
			ini_getInteger(iniFile, "PayDayHad", PlayerInfo[playerid][pPayDayHad]);
9) В конец мода вставляем:
PHP:
public SyncTime()
{
    PayDay();// Выдача зарплаты каждый час
    return 1;
}
public PayDay()
{
                    new string[128];
                    new sendername[MAX_PLAYER_NAME];
                    for(new i = 0; i < MAX_PLAYERS; i++)
                    {
                    if(IsPlayerConnected(i))
                    {
                    if(PlayerInfo[i][pLevel] > 0)
                    {
                    new playername2[MAX_PLAYER_NAME];
                    GetPlayerName(i, playername2, sizeof(playername2));
                    new exp = PlayerInfo[i][pExp];
                    new nxtlevel = PlayerInfo[i][pLevel]+1;
                    new expamount = nxtlevel;
                    if(exp == expamount)
                    {
                        PlayerInfo[i][pLevel] += 1;
                        PlayerInfo[i][pExp] = 0;
                    }
                     PlayerInfo[i][pExp]++;
                      format(string, sizeof(string), "~w~PayDay");
                    GameTextForPlayer(i, string, 5000, 1);
                        }
                     }
                    if(PlayerInfo[i][pLevel] >= 2 && PlayerInfo[i][pExp] == 0)
                    {
                             SendClientMessage(i, COLOR_ISPOLZUY, "???????????, ??? lvl ?????????!");
                    }
                    if(PlayerInfo[i][pLevel] == 3 && PlayerInfo[i][pExp] == 0)
                    {
                        GetPlayerName(i, sendername, sizeof(sendername));
                        format(string, sizeof(string), "/players/%s.ini",sendername);
                        new file = ini_openFile(string);
                        if(file < 0) print("???? ?????");
                        else
                        {
                           format(string, sizeof(string), "/players/%s.ini",string);
                           new file2 = ini_openFile(string);
                           ini_setInteger(file2,"Text",3);
                           ini_closeFile(file2);//?? ???????? ????????? ????? ??????
                           ini_closeFile(file);//?? ???????? ????????? ????? ??????
                        }
                    }
                     PlayerInfo[i][pPayDayHad] += 1;
                    PlayerInfo[i][pPayDay]++;
                    }
                    return true;
        }
public SyncUp()
	{
		SyncTime();
		return 1;
	}
public GameModeExitFunc()
	{
		KillTimer(synctimer);
		GameModeExit();
	}
10) В public OnGameModeInit вставляем:
PHP:
synctimer = SetTimer("SyncUp", 60000, 1);
Действие второе. Создание ТекстДрава LvL и Exp:

1) Ко всем forward'ам:
PHP:
forward OtherTimer();
2) В enum pInfo после pAdmin, вставляем:
PHP:
	pLevel,// Уровень игрока
	pExp,// Респекты
3) В public OnPlayerConnect, после:
PHP:
GetPlayerName(playerid,playername,sizeof(playername));// Узнаем имя игрока
Вставляем:
PHP:
	levelexp[playerid] = TextDrawCreate(500.000000,3.500000,"_");
	TextDrawAlignment(levelexp[playerid],0);
	TextDrawBackgroundColor(levelexp[playerid],0x000000ff);
	TextDrawFont(levelexp[playerid],1);
	TextDrawLetterSize(levelexp[playerid],0.38,2.000000);
	TextDrawColor(levelexp[playerid],0xffffffff);
	TextDrawSetOutline(levelexp[playerid],0);
	TextDrawSetProportional(levelexp[playerid],2);
	TextDrawSetShadow(levelexp[playerid],2);
	TextDrawShowForPlayer(playerid, levelexp[playerid]);
4) В public OnPlayerDisconnect вставляем:
PHP:
    TextDrawDestroy(levelexp[playerid]);
5) В конец мода вставляем:
PHP:
public OtherTimer()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i))
            {
            new string[256];
            new exp = PlayerInfo[i][pExp];
            new nxtlevel = PlayerInfo[i][pLevel]+1;
            new sled = nxtlevel;
            format(string,sizeof(string),"~w~LvL: ~g~%d    ~w~Exp: ~g~%d~w~/~g~%d",PlayerInfo[i][pLevel],exp,sled);
            TextDrawSetString(levelexp[i], string);
        }
    }
}
Вот что получится:


Вот и всё. Основа системa PayDay и ТекстДрав LvL и Exp сделанны.
Думаю этот урок был полезен.
Автор урока: I'm Cobra

Полезные ссылки:


Первый урок
Второй урок


Специально для PAWNO-INFO.RU​
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу