Дмитрий |
Дата: Суббота, 22.11.2014, 17:27 | Сообщение # 1 | Сообщить о нерабочей теме
|
Регистрация: | 03.12.2011
|
Страна: | Российская Федерация |
Репутация: |
14
|
Сообщений: | 1421 |
Награды: |
4
+
|
Статус: |
|
| Здравствуйте, уважаемые пользователи. Автор: TheJIsusGang Хочу вам представить систему информационных окошек с помощью, как в одиночной игре. Возможно вы уже видели что-то подобное, но моя система более облегчена и приближена к оригиналу. И так начнём: Добавляем ко всем new: Код new PlayerText:INFO_BOX[2]; new bool:ShowInfoBox[MAX_PLAYERS]; Добавляем ко всем forward: Код forward OnInfoBoxUpdate(); Добавляем в public OnGameModeInit: Код SetTimer("OnInfoBoxUpdate", 1000, true); Добавляем в public OnPlayerConnect: Код CreateInfoBox(playerid, 450, 100); ShowInfoBox[playerid] = false; Создаём public: Код public OnInfoBoxUpdate() { foreach(new i : Player) { if(ShowInfoBox[i]) { if(GetPVarInt(i,"InfoBox") < gettime()) { PlayerTextDrawHide(i, INFO_BOX[1]); PlayerTextDrawHide(i, INFO_BOX[0]); ShowInfoBox[i] = false; } } } } Добавляем ко всем stock: Код stock CreateInfoBox(playerid, Float:posX, Float:posY) { INFO_BOX[0] = CreatePlayerTextDraw(playerid, posX, posY, "usebox"); SetPlayerTextDrawSettings(playerid, INFO_BOX[0],0,6.5, 185+posX,0, 1, 0, 0,0,110, 0,0, false, true, false); INFO_BOX[1] = CreatePlayerTextDraw(playerid, posX, posY+0.5, ""); SetPlayerTextDrawSettings(playerid, INFO_BOX[1],0.42,2, 0,0, 1, 1, 0xB6B2B5FF,0,0, 0,0, false, false, true); return true; }
stock DrawInfoBoxForPlayer(playerid, message[], time) { new lines; for(new i = 0; i < strlen(message); i++) { switch(message[i]) { case 'n': lines++; } } PlayerTextDrawLetterSize(playerid, INFO_BOX[0], 0, (lines+1) * 2.16); PlayerTextDrawSetString(playerid, INFO_BOX[1], message); PlayerTextDrawShow(playerid, INFO_BOX[1]); PlayerTextDrawShow(playerid, INFO_BOX[0]); SetPVarInt(playerid,"InfoBox",gettime() + time); ShowInfoBox[playerid] = true; return true; }
stock SetPlayerTextDrawSettings(playerid, PlayerText:TextDraw, Float:Lsize1, Float:Lsize2, Float:Tsize1, Float:Tsize2, Alignment, Font, Color1, Color2, Color3, Shadows, Outline, bool:Selectable, bool:UseBox, bool:Proportional) { PlayerTextDrawLetterSize(playerid, TextDraw, Lsize1, Lsize2); if(Tsize1 == 0 && Tsize2 == 0){} else PlayerTextDrawTextSize(playerid, TextDraw, Tsize1, Tsize2); PlayerTextDrawAlignment(playerid, TextDraw, Alignment); PlayerTextDrawFont(playerid, TextDraw, Font); PlayerTextDrawColor(playerid, TextDraw, Color1); PlayerTextDrawBackgroundColor(playerid, TextDraw, Color2); PlayerTextDrawBoxColor(playerid, TextDraw, Color3); PlayerTextDrawSetShadow(playerid, TextDraw, Shadows); PlayerTextDrawSetOutline(playerid, TextDraw, Outline); PlayerTextDrawSetSelectable(playerid, TextDraw, Selectable); PlayerTextDrawUseBox(playerid, TextDraw, UseBox); PlayerTextDrawSetProportional(playerid, TextDraw, Proportional); return true; } Добавляем к командам: Код if(!strcmp(cmd,"/connectfaq",true)) { new str[264]; strcat(str, "~w~Welcome to -~n~"); strcat(str, "~r~Brilliant RP - Amethyst~n~"); strcat(str, "~w~Good game you!"); DrawInfoBoxForPlayer(playerid, str, 30); } Можно придумать что либо, с использованием данной функции! Можно еще добавить при OnPlayerSpawn (при спавне игрока): Код new str[264]; strcat(str, "~w~Welcome to -~n~"); strcat(str, "~r~Brilliant RP - Amethyst~n~"); strcat(str, "~w~Good game you!"); DrawInfoBoxForPlayer(playerid, str, 30);
From Russia With Love!
|
|
|
|