Доступ к готовым решениям

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

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

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

[FS] Experience & Level System

OKStyle

Адвокат по делам семейным
Administrator
Wiki Team
Регистрация
4 Мар 2011
Сообщения
7,094
Лучшие ответы
226
Репутация
2,455
Награды
11
Система уровней для ДМ- и РПГ-серверов, построенная на количестве убийств. Высшего уровня не существует, максимально возможное кол-во киллов без растягивания текстдрава - 9999. Скрипт построен на персональных текстдравах, поэтому глобальный лимит не затронут (используется 1 личный из 256 возможных). По-сути, можно было сделать на глобальных (как в заказе), так бы мы тоже уложились в лимит 2048, используя максимально 2000 штук, но в целях оптимизации это было изменено. Скрипт был сделан на заказ, а для релиза было выпущено переиздание. Уровень поднимается каждые 50 киллов.

Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!


PHP:
#include <a_samp>
// Experience & Level System v 1.4 by O.K.Style™
new PlayerText:KillsLevel[MAX_PLAYERS];
public OnFilterScriptExit()
{
	for(new i = GetMaxPlayers() - 1; i != -1; i--)
	{
		if(!IsPlayerConnected(i)) continue;
		PlayerTextDrawDestroy(i, KillsLevel[i]);
	}
	return 1;
}
public OnPlayerConnect(playerid)
{
	KillsLevel[playerid] = CreatePlayerTextDraw(playerid, 499.0, 101.0, "Kills: 0/0\nLevel: 0");
	PlayerTextDrawFont(playerid, KillsLevel[playerid], 1);
	PlayerTextDrawLetterSize(playerid, KillsLevel[playerid], 0.34, 1.5);
	PlayerTextDrawSetOutline(playerid, KillsLevel[playerid], 1);
	PlayerTextDrawColor(playerid, KillsLevel[playerid], 0xFDE39DFF);
	PlayerTextDrawAlignment(playerid, KillsLevel[playerid], 1);
	PlayerTextDrawShow(playerid, KillsLevel[playerid]);

	SetPVarInt(playerid, "Level", 1);
	return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
	#pragma unused reason
	PlayerTextDrawDestroy(playerid, KillsLevel[playerid]);
	return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
	#pragma unused reason
	if(killerid == INVALID_PLAYER_ID || killerid == playerid) return 1;
	SetPVarInt(killerid, "Kills", GetPVarInt(killerid, "Kills") + 1);
	new kills = GetPVarInt(killerid, "Kills");
	if(kills % 50 == 0) SetPVarInt(killerid, "Level", GetPVarInt(playerid, "Level") + 1);
	new level = GetPVarInt(playerid, "Level"), string[32];
	format(string, sizeof(string), "Level: %d\nKills: %d/%d", level, kills, level * 50);
	PlayerTextDrawSetString(killerid, KillsLevel[killerid], string);
	return 1;
}
Автор: OKStyle
 
Сверху Снизу