отступ
Achievements
Начеркал на досуге. Глядишь - кому полезно будет.
Система состоит из 2ух комплектов текстдравов (12 всего), и управляющей ими конструкции. "Дизайн" играет только роль демонстрации механики.
Полный функционал (с сохранением, с корректировкой длины бокса в зависимости от длины описания, усовершенствованным "механизмом" показа, красивым оформлением)
готов реализовать по заказу. (Есть много идей для красивой и практичной реализации, но самому это не нужно)
Использование:
PHP код:
Achievement(playerid, "Loser", "Lose more than $ 10,000", 800, 3);
Название ачивки - Loser
Описание достижения - Lose more than $ 10,000
Денежное вознаграждение - 800
Опыт - 3
Пример использования:
PHP код:
public OnPlayerDeath(playerid, killerid, reason)
{
new dengi = GetPlayerMoney(playerid)/4;
SetPlayerMoney(playerid,GetPlayerMoney(playerid)-dengi);
SetPlayerMoney(killerid,GetPlayerMoney(killerid)+dengi);
If (dengi > 10000)
{
Achievement(playerid, "Loser", "Lose more than $ 10,000", 800, 3);
}
}
Установка:
Ко всем new[/o]
PHP код:
new Text:BoxUp; new Text:BoxDown;
new Text:AchievementUp; new Text:AchievementDown;
new Text:AchievementNameUp; new Text:AchievementNameDown;
new Text:AchievementDescriptionUp; new Text:AchievementDescriptionDown;
new Text:AchievementMoneyUp; new Text:AchievementMoneyDown;
new Text:AchievementExpUp; new Text:AchievementExpDown;
new bool:FASN; // First Achievement Showing Now ?
new bool:SASN; // Second Achievement Showing Now ?
PHP код:
forward Achievement(playerid,aname[],adescr[],amoney,aexp);
forward killmepleaseup(playerid); forward killmepleasedown(playerid);
К пабликам:
PHP код:
public Achievement(playerid,aname[],adescr[],amoney,aexp)
{
if (FASN == true)
{
if (SASN == true)
{
TextDrawHideForAll(Text:BoxUp);
TextDrawHideForAll(Text:AchievementUp);
TextDrawHideForAll(Text:AchievementNameUp);
TextDrawHideForAll(Text:AchievementDescriptionUp);
TextDrawHideForAll(Text:AchievementMoneyUp);
TextDrawHideForAll(Text:AchievementExpUp);
goto assist;
}
else
{
assist:
SASN = true;
TextDrawSetString(AchievementNameDown, aname);
TextDrawSetString(AchievementDescriptionDown, adescr);
new resultmoney[10];
format(resultmoney,sizeof(resultmoney),"$%i",amoney);
TextDrawSetString(AchievementMoneyDown, resultmoney);
SetPlayerMoney(playerid,GetPlayerMoney(playerid)+amoney); // Если есть античит - надо изменить.
new resultexp [7];
format(resultexp,sizeof(resultexp),"%iexp",aexp);
TextDrawSetString(AchievementExpDown, resultexp);
GiveExp(playerid,aexp);// Необходимо подстроить под свой мод !
TextDrawShowForPlayer(playerid,Text:BoxDown);
TextDrawShowForPlayer(playerid,Text:AchievementDown);
TextDrawShowForPlayer(playerid,Text:AchievementNameDown);
TextDrawShowForPlayer(playerid,Text:Text:AchievementDescriptionDown);
TextDrawShowForPlayer(playerid,Text:AchievementMoneyDown);
TextDrawShowForPlayer(playerid,Text:AchievementExpDown);
SetTimer("killmepleasedown",5000,false);
}
}
else
{
FASN = true;
TextDrawSetString(AchievementNameUp, aname);
TextDrawSetString(AchievementDescriptionUp, adescr);
new resultmoney[10];
format(resultmoney,sizeof(resultmoney),"$%i",amoney);
TextDrawSetString(AchievementMoneyUp, resultmoney);
new resultexp [7];
format(resultexp,sizeof(resultexp),"%iexp",aexp);
TextDrawSetString(AchievementExpUp, resultexp);
TextDrawShowForPlayer(playerid,Text:BoxUp);
TextDrawShowForPlayer(playerid,Text:AchievementUp);
TextDrawShowForPlayer(playerid,Text:AchievementNameUp);
TextDrawShowForPlayer(playerid,Text:Text:AchievementDescriptionUp);
TextDrawShowForPlayer(playerid,Text:AchievementMoneyUp);
TextDrawShowForPlayer(playerid,Text:AchievementExpUp);
SetTimer("killmepleaseup",5000,false);
}
}
PHP код:
public killmepleaseup(playerid)
{
TextDrawHideForPlayer(playerid,Text:BoxUp);
TextDrawHideForPlayer(playerid,Text:AchievementUp);
TextDrawHideForPlayer(playerid,Text:AchievementNameUp);
TextDrawHideForPlayer(playerid,Text:Text:AchievementDescriptionUp);
TextDrawHideForPlayer(playerid,Text:AchievementMoneyUp);
TextDrawHideForPlayer(playerid,Text:AchievementExpUp);
FASN = false;
}
PHP код:
public killmepleasedown(playerid)
{
TextDrawHideForPlayer(playerid,Text:BoxDown);
TextDrawHideForPlayer(playerid,Text:AchievementDown);
TextDrawHideForPlayer(playerid,Text:AchievementNameDown);
TextDrawHideForPlayer(playerid,Text:Text:AchievementDescriptionDown);
TextDrawHideForPlayer(playerid,Text:AchievementMoneyDown);
TextDrawHideForPlayer(playerid,Text:AchievementExpDown);
SASN = false;
}
В OnGameModInit
PHP код:
// TextDraws Up
BoxUp = TextDrawCreate(276.000000, 107.000000, " ");
TextDrawBackgroundColor(BoxUp, 255);
TextDrawFont(BoxUp, 1);
TextDrawLetterSize(BoxUp, 0.500000, 1.000000);
TextDrawColor(BoxUp, -1);
TextDrawSetOutline(BoxUp, 0);
TextDrawSetProportional(BoxUp, 1);
TextDrawSetShadow(BoxUp, 1);
TextDrawUseBox(BoxUp, 1);
TextDrawBoxColor(BoxUp, 255);
TextDrawTextSize(BoxUp, 18.000000, 0.000000);
TextDrawSetSelectable(BoxUp, 0);
AchievementUp = TextDrawCreate(22.000000, 99.000000, "Achievement Unlocked:");
TextDrawBackgroundColor(AchievementUp, 255);
TextDrawFont(AchievementUp, 1);
TextDrawLetterSize(AchievementUp, 0.350000, 1.300000);
TextDrawColor(AchievementUp, -1);
TextDrawSetOutline(AchievementUp, 1);
TextDrawSetProportional(AchievementUp, 1);
TextDrawSetSelectable(AchievementUp, 0);
AchievementNameUp = TextDrawCreate(162.000000, 98.000000, "%aname");
TextDrawBackgroundColor(AchievementNameUp, 255);
TextDrawFont(AchievementNameUp, 1);
TextDrawLetterSize(AchievementNameUp, 0.500000, 1.500000);
TextDrawColor(AchievementNameUp, -1);
TextDrawSetOutline(AchievementNameUp, 1);
TextDrawSetProportional(AchievementNameUp, 1);
TextDrawSetSelectable(AchievementNameUp, 0);
AchievementDescriptionUp = TextDrawCreate(28.000000, 112.000000, "%adescr");
TextDrawBackgroundColor(AchievementDescriptionUp, 255);
TextDrawFont(AchievementDescriptionUp, 1);
TextDrawLetterSize(AchievementDescriptionUp, 0.320000, 1.000000);
TextDrawColor(AchievementDescriptionUp, -1);
TextDrawSetOutline(AchievementDescriptionUp, 0);
TextDrawSetProportional(AchievementDescriptionUp, 1);
TextDrawSetShadow(AchievementDescriptionUp, 1);
TextDrawSetSelectable(AchievementDescriptionUp, 0);
AchievementMoneyUp = TextDrawCreate(220.000000, 121.000000, "$%amoney");
TextDrawBackgroundColor(AchievementMoneyUp, 255);
TextDrawFont(AchievementMoneyUp, 1);
TextDrawLetterSize(AchievementMoneyUp, 0.500000, 1.000000);
TextDrawColor(AchievementMoneyUp, 433854970);
TextDrawSetOutline(AchievementMoneyUp, 1);
TextDrawSetProportional(AchievementMoneyUp, 1);
TextDrawSetSelectable(AchievementMoneyUp, 0);
AchievementExpUp = TextDrawCreate(170.000000, 121.000000, "%aexp exp");
TextDrawBackgroundColor(AchievementExpUp, 255);
TextDrawFont(AchievementExpUp, 1);
TextDrawLetterSize(AchievementExpUp, 0.500000, 1.100000);
TextDrawColor(AchievementExpUp, -65281);
TextDrawSetOutline(AchievementExpUp, 1);
TextDrawSetProportional(AchievementExpUp, 1);
TextDrawSetSelectable(AchievementExpUp, 0);
// TextDraws Down
BoxDown = TextDrawCreate(276.000000, 139.000000, " ");
TextDrawBackgroundColor(BoxDown, 255);
TextDrawFont(BoxDown, 1);
TextDrawLetterSize(BoxDown, 0.500000, 1.000000);
TextDrawColor(BoxDown, -1);
TextDrawSetOutline(BoxDown, 0);
TextDrawSetProportional(BoxDown, 1);
TextDrawSetShadow(BoxDown, 1);
TextDrawUseBox(BoxDown, 1);
TextDrawBoxColor(BoxDown, 255);
TextDrawTextSize(BoxDown, 18.000000, 0.000000);
TextDrawSetSelectable(BoxDown, 0);
AchievementDown = TextDrawCreate(22.000000, 131.000000, "Achievement Unlocked:");
TextDrawBackgroundColor(AchievementDown, 255);
TextDrawFont(AchievementDown, 1);
TextDrawLetterSize(AchievementDown, 0.350000, 1.300000);
TextDrawColor(AchievementDown, -1);
TextDrawSetOutline(AchievementDown, 1);
TextDrawSetProportional(AchievementDown, 1);
TextDrawSetSelectable(AchievementDown, 0);
AchievementNameDown = TextDrawCreate(162.000000, 130.000000, "%aname");
TextDrawBackgroundColor(AchievementNameDown, 255);
TextDrawFont(AchievementNameDown, 1);
TextDrawLetterSize(AchievementNameDown, 0.500000, 1.500000);
TextDrawColor(AchievementNameDown, -1);
TextDrawSetOutline(AchievementNameDown, 1);
TextDrawSetProportional(AchievementNameDown, 1);
TextDrawSetSelectable(AchievementNameDown, 0);
AchievementDescriptionDown = TextDrawCreate(28.000000, 144.000000, "%adescr");
TextDrawBackgroundColor(AchievementDescriptionDown, 255);
TextDrawFont(AchievementDescriptionDown, 1);
TextDrawLetterSize(AchievementDescriptionDown, 0.320000, 1.000000);
TextDrawColor(AchievementDescriptionDown, -1);
TextDrawSetOutline(AchievementDescriptionDown, 0);
TextDrawSetProportional(AchievementDescriptionDown, 1);
TextDrawSetShadow(AchievementDescriptionDown, 1);
TextDrawSetSelectable(AchievementDescriptionDown, 0);
AchievementMoneyDown = TextDrawCreate(220.000000, 155.000000, "$%amoney");
TextDrawBackgroundColor(AchievementMoneyDown, 255);
TextDrawFont(AchievementMoneyDown, 1);
TextDrawLetterSize(AchievementMoneyDown, 0.500000, 1.000000);
TextDrawColor(AchievementMoneyDown, 433854970);
TextDrawSetOutline(AchievementMoneyDown, 1);
TextDrawSetProportional(AchievementMoneyDown, 1);
TextDrawSetSelectable(AchievementMoneyDown, 0);
AchievementExpDown = TextDrawCreate(170.000000, 155.000000, "%aexp exp");
TextDrawBackgroundColor(AchievementExpDown, 255);
TextDrawFont(AchievementExpDown, 1);
TextDrawLetterSize(AchievementExpDown, 0.500000, 1.100000);
TextDrawColor(AchievementExpDown, -65281);
TextDrawSetOutline(AchievementExpDown, 1);
TextDrawSetProportional(AchievementExpDown, 1);
TextDrawSetSelectable(AchievementExpDown, 0);
Автор: LMapper