PDA

Просмотр полной версии : [Мануал] Сис-ма баров by velix.



Cat Dave
16.05.2013, 19:22
И снова здравствуйте, господа. Когда-то вшивал в свой мод интересную системку "баров" от velix'a. Решил написать ее Вам.
Автор: velix

Ко всем new


const MAX_DRINKS = 8;// Количество напитков
const MAX_BAR_POS = 4;// Количество позиций баров

enum DrinkBar//By velix
{
DrinkName[10],
Float:DrinkHP,
DrinkPrice
};

new DrinkInfo[ MAX_DRINKS ][ DrinkBar ] = {// Напитки
/* Название, хп, цена */
{"Водка", 20.0, 5},
{"Вино", 25.0, 5},
{"Коньяк", 23.0, 5},
{"Пиво", 25.0, 3},
{"Coca-Cola", 15.0, 2},
{"Sprite", 15.0, 2},
{"Кофе", 30.0, 2},
{"Какао", 5.0, 2}
};

enum DrinkBarCoords
{
Float:drX,
Float:drY,
Float:drZ
};

new DrinkCoordsInfo[ MAX_BAR_POS ][ DrinkBarCoords ] = {// Координаты
{495.7801,-76.0305,998.7578},// Бар на грув
{499.9654,-20.2515,1000.6797},// Бар
{1215.9480,-13.3519,1000.9219},// Стрип 1
{-2658.9749,1407.4136,906.2734}// Стрип 2
};

Далее, идем в public OnPlayerCommandText


if(strcmp(cmd, "/drink", true) == 0)
{
if(!IsAtBar(playerid))
return SendClientMessage(playerid, 0xFFFFFFFF, "* Чувак, ты не около бара!");
return ShowBarDialog(playerid);
}

Это, желательно, в конец мода

stock ShowBarDialog(playerid)
{
new string[600];
for(new i=0;i<sizeof(DrinkInfo);i++)
format(string,sizeof(string),"%s{FFFFFF}[{00D900}%d{FFFFFF}] {00D900}%s{FFFFFF}\t [{00D900}$%d{FFFFFF}]\n",string,i,DrinkInfo[i][DrinkName],DrinkInfo[i][DrinkPrice]);
return ShowPlayerDialog(playerid,200,DIALOG_STYLE_LIST,"{FFFFFF}Покупка алкоголя",string,"Выпить","Отмена");
}

stock IsAtBar(playerid)
{
for(new id=0;id<sizeof(DrinkCoordsInfo);id++)
if(IsPlayerInRangeOfPoint(playerid, 2.0, DrinkCoordsInfo[id][drX], DrinkCoordsInfo[id][drY], DrinkCoordsInfo[id][drZ]))
return 1;
return 0;
}

Идем в public OnDialogResponse

else if(dialogid == 200)
{
if(response == 0) return 1;
if(GetPlayerMoney(playerid) < DrinkInfo[listitem][DrinkPrice]) return SendClientMessage(playerid, 0xFFFFFFAA, "* Братка, подзаработаешь бабосов - приходи!");
GivePlayerMoney(playerid,-DrinkInfo[listitem][DrinkPrice]);
ApplyAnimation(playerid,"FOOD","EAT_Burger",4.0,1,1,1,1,1);
new Float:health;
GetPlayerHealth(playerid, health);
SetPlayerHealth(playerid, health+DrinkInfo[listitem][DrinkHP]);
}

Nike54
16.05.2013, 20:01
Молодчина)

GERMAN4SV
16.05.2013, 23:50
Отлично

Takeshi
23.05.2013, 22:43
Отлично!

Tony_Rich
24.05.2013, 15:13
норма

Mentos
26.05.2013, 23:42
Если бы я писал эту систему, то признаю что она была бы не оптимизирована :D