Система уровней для ДМ- и РПГ-серверов, построенная на количестве убийств. Высшего уровня не существует, максимально возможное кол-во киллов без растягивания текстдрава - 9999. Скрипт построен на персональных текстдравах, поэтому глобальный лимит не затронут (используется 1 личный из 256 возможных). По-сути, можно было сделать на глобальных (как в заказе), так бы мы тоже уложились в лимит 2048, используя максимально 2000 штук, но в целях оптимизации это было изменено. Скрипт был сделан на заказ, а для релиза было выпущено переиздание. Уровень поднимается каждые 50 киллов.
Автор: OKStyle
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
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;
}