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

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

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

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

Мануал Система игровых комнат

JIEON_COJIORS

Изучающий
Пользователь
Регистрация
27 Авг 2015
Сообщения
357
Лучшие ответы
0
Репутация
188

Система игровых комнат
Автор:
Время работы: 30+ минут​
Простая, как бы, система. Разрабатывал для игротек в SAMP. То есть люди бы садились за ПК заходили бы в разные сервера(комнаты) и играли бы. Планирую еще добавить пару фишек в будущем!




Ко всем переменным:
PHP:
//__PaintBall
#define MAX_ROOMS 2
enum RumInfo
{
	rPlayers
}
new Room[MAX_ROOMS][RumInfo];
new Text:RoomsList[8],Text:GameMotd[5],PlayerText:StatsMotd[MAX_PLAYERS][2];
new PaintGun[] = {24,31,25,29,30,23};
new Float:PaintballSpawns[6][3] = {
	{2563.6877,2807.0288,10.8203},
	{2554.0505,2837.7419,10.8203},
	{2585.6748,2848.5283,10.8203},
	{2598.7083,2843.5200,10.8203},
	{2546.7622,2830.9004,14.2559},
	{2575.9900,2839.3103,19.9922}
};
public OnPlayerSpawn(playerid)
PHP:
	if(GetPVarInt(playerid, "InGame"))
	{
		GivePlayerWeapon(playerid, PaintGun[random(sizeof(PaintGun))], 300);
		new rand = random(sizeof(PaintballSpawns));
		SetPlayerPos(playerid, PaintballSpawns[rand][0], PaintballSpawns[rand][1], PaintballSpawns[rand][2]);
		SetPlayerVirtualWorld(playerid,GetPVarInt(playerid,"Room"));
		SetPlayerHealth(playerid,100);
		return 1;
	}
public OnPlayerClickTextDraw(playerid, Text:clickedid)
PHP:
	if(clickedid == Text:INVALID_TEXT_DRAW)
	{
		if(GetPVarInt(playerid,"RoomList") == 1)
		{
            for(new td; td < 8; td++) TextDrawHideForPlayer(playerid,RoomsList[td]);
			DeletePVar(playerid,"RoomList");
		}
	}
    if(clickedid == RoomsList[2])
    {
        if(Room[0][rPlayers] >= 10) return SendClientMessage(playerid,0xFF0000FF,"[i] Ошибка! Данная комната заполнена!");
        Room[0][rPlayers]++;
		GivePlayerWeapon(playerid, PaintGun[random(sizeof(PaintGun))], 300);
		new rand = random(sizeof(PaintballSpawns));
		SetPlayerPos(playerid, PaintballSpawns[rand][0], PaintballSpawns[rand][1], PaintballSpawns[rand][2]);
		SetPlayerVirtualWorld(playerid,0);
        for(new td; td < 8; td++) TextDrawHideForPlayer(playerid,RoomsList[td]);
		DeletePVar(playerid,"RoomList");
		CancelSelectTextDraw(playerid);

		SetPVarInt(playerid,"Kills",0);//Убийств
		SetPVarInt(playerid,"Death",0);//Смертей
		SetPVarInt(playerid,"InGame",1);//В игре
		SetPVarInt(playerid,"Room",1);//Комната
		for(new td; td < 5; td++) TextDrawShowForPlayer(playerid,GameMotd[td]);
		PlayerTextDrawSetString(playerid,StatsMotd[playerid][0], "0");
		PlayerTextDrawSetString(playerid,StatsMotd[playerid][1], "0");
		for(new td; td < 2; td++) PlayerTextDrawShow(playerid,StatsMotd[playerid][td]);
		SendClientMessage(playerid,0xFFFFFFFF ,"Вы вошли в первую комнату!");
    }
	if(clickedid == RoomsList[5])
	{
        if(Room[1][rPlayers] >= 10) return SendClientMessage(playerid,0xFF0000FF,"[i] Ошибка! Данная комната заполнена!");
        Room[1][rPlayers]++;
		GivePlayerWeapon(playerid, PaintGun[random(sizeof(PaintGun))], 300);
		new rand = random(sizeof(PaintballSpawns));
		SetPlayerPos(playerid, PaintballSpawns[rand][0], PaintballSpawns[rand][1], PaintballSpawns[rand][2]);
		SetPlayerVirtualWorld(playerid,1);
        for(new td; td < 8; td++) TextDrawHideForPlayer(playerid,RoomsList[td]);
		DeletePVar(playerid,"RoomList");
		CancelSelectTextDraw(playerid);
		
		SetPVarInt(playerid,"Kills",0);//Убийств
		SetPVarInt(playerid,"Death",0);//Смертей
		SetPVarInt(playerid,"InGame",1);//В игре
		SetPVarInt(playerid,"Room",2);//Комната
		for(new td; td < 5; td++) TextDrawShowForPlayer(playerid,GameMotd[td]);
		PlayerTextDrawSetString(playerid,StatsMotd[playerid][0], "0");
		PlayerTextDrawSetString(playerid,StatsMotd[playerid][1], "0");
		for(new td; td < 2; td++) PlayerTextDrawShow(playerid,StatsMotd[playerid][td]);
		SendClientMessage(playerid,0xFFFFFFFF ,"Вы вошли в вторую комнату!");
	}
public OnGameModeInit();
PHP:
	GameMotd[0] = TextDrawCreate(523.000000, 150.187500, "LD_SPAC:white");
	TextDrawLetterSize(GameMotd[0], 0.000000, 0.000000);
	TextDrawTextSize(GameMotd[0], 109.000000, 41.000000);
	TextDrawAlignment(GameMotd[0], 1);
	TextDrawColor(GameMotd[0], 186596351);
	TextDrawSetShadow(GameMotd[0], 0);
	TextDrawSetOutline(GameMotd[0], 0);
	TextDrawBackgroundColor(GameMotd[0], 255);
	TextDrawFont(GameMotd[0], 4);
	TextDrawSetProportional(GameMotd[0], 0);
	TextDrawSetShadow(GameMotd[0], 0);

	GameMotd[1] = TextDrawCreate(525.000000, 151.937500, "LD_SPAC:white");
	TextDrawLetterSize(GameMotd[1], 0.000000, 0.000000);
	TextDrawTextSize(GameMotd[1], 52.000000, 37.000000);
	TextDrawAlignment(GameMotd[1], 1);
	TextDrawColor(GameMotd[1], 288382207);
	TextDrawSetShadow(GameMotd[1], 0);
	TextDrawSetOutline(GameMotd[1], 0);
	TextDrawBackgroundColor(GameMotd[1], 255);
	TextDrawFont(GameMotd[1], 4);
	TextDrawSetProportional(GameMotd[1], 0);
	TextDrawSetShadow(GameMotd[1], 0);

	GameMotd[2] = TextDrawCreate(578.500000, 151.937500, "LD_SPAC:white");
	TextDrawLetterSize(GameMotd[2], 0.000000, 0.000000);
	TextDrawTextSize(GameMotd[2], 52.000000, 37.000000);
	TextDrawAlignment(GameMotd[2], 1);
	TextDrawColor(GameMotd[2], 288382207);
	TextDrawSetShadow(GameMotd[2], 0);
	TextDrawSetOutline(GameMotd[2], 0);
	TextDrawBackgroundColor(GameMotd[2], 255);
	TextDrawFont(GameMotd[2], 4);
	TextDrawSetProportional(GameMotd[2], 0);
	TextDrawSetShadow(GameMotd[2], 0);

	GameMotd[3] = TextDrawCreate(551.000000, 153.250000, "KILLS");
	TextDrawLetterSize(GameMotd[3], 0.286999, 0.659375);
	TextDrawAlignment(GameMotd[3], 2);
	TextDrawColor(GameMotd[3], -1);
	TextDrawSetShadow(GameMotd[3], 0);
	TextDrawSetOutline(GameMotd[3], 0);
	TextDrawBackgroundColor(GameMotd[3], 255);
	TextDrawFont(GameMotd[3], 2);
	TextDrawSetProportional(GameMotd[3], 1);
	TextDrawSetShadow(GameMotd[3], 0);

	GameMotd[4] = TextDrawCreate(605.399536, 153.250000, "DEATH");
	TextDrawLetterSize(GameMotd[4], 0.286999, 0.659375);
	TextDrawAlignment(GameMotd[4], 2);
	TextDrawColor(GameMotd[4], -1);
	TextDrawSetShadow(GameMotd[4], 0);
	TextDrawSetOutline(GameMotd[4], 0);
	TextDrawBackgroundColor(GameMotd[4], 255);
	TextDrawFont(GameMotd[4], 2);
	TextDrawSetProportional(GameMotd[4], 1);
	TextDrawSetShadow(GameMotd[4], 0);

	RoomsList[0] = TextDrawCreate(319.000000, 163.750000, "SELECT A ROOM");
	TextDrawLetterSize(RoomsList[0], 0.161500, 0.777500);
	TextDrawTextSize(RoomsList[0], 0.000000, 146.000000);
	TextDrawAlignment(RoomsList[0], 2);
	TextDrawColor(RoomsList[0], -1);
	TextDrawUseBox(RoomsList[0], 1);
	TextDrawBoxColor(RoomsList[0], 288382207);
	TextDrawSetShadow(RoomsList[0], 0);
	TextDrawSetOutline(RoomsList[0], 0);
	TextDrawBackgroundColor(RoomsList[0], 255);
	TextDrawFont(RoomsList[0], 2);
	TextDrawSetProportional(RoomsList[0], 1);
	TextDrawSetShadow(RoomsList[0], 0);

	RoomsList[1] = TextDrawCreate(244.000000, 172.500000, "LD_SPAC:white");
	TextDrawLetterSize(RoomsList[1], 0.000000, 0.000000);
	TextDrawTextSize(RoomsList[1], 150.000000, 131.000000);
	TextDrawAlignment(RoomsList[1], 1);
	TextDrawColor(RoomsList[1], 288382207);
	TextDrawSetShadow(RoomsList[1], 0);
	TextDrawSetOutline(RoomsList[1], 0);
	TextDrawBackgroundColor(RoomsList[1], 255);
	TextDrawFont(RoomsList[1], 4);
	TextDrawSetProportional(RoomsList[1], 0);
	TextDrawSetShadow(RoomsList[1], 0);

	RoomsList[2] = TextDrawCreate(245.500000, 173.812500, "LD_SPAC:white");
	TextDrawLetterSize(RoomsList[2], 0.000000, 0.000000);
	TextDrawTextSize(RoomsList[2], 147.000000, 19.000000);
	TextDrawAlignment(RoomsList[2], 1);
	TextDrawColor(RoomsList[2], 186596351);
	TextDrawSetShadow(RoomsList[2], 0);
	TextDrawSetOutline(RoomsList[2], 0);
	TextDrawBackgroundColor(RoomsList[2], 255);
	TextDrawFont(RoomsList[2], 4);
	TextDrawSetProportional(RoomsList[2], 0);
	TextDrawSetShadow(RoomsList[2], 0);
	TextDrawSetSelectable(RoomsList[2], true);

	RoomsList[3] = TextDrawCreate(248.000000, 176.000000, "Room N1");
	TextDrawLetterSize(RoomsList[3], 0.210999, 0.760000);
	TextDrawAlignment(RoomsList[3], 1);
	TextDrawColor(RoomsList[3], -1);
	TextDrawSetShadow(RoomsList[3], 0);
	TextDrawSetOutline(RoomsList[3], 0);
	TextDrawBackgroundColor(RoomsList[3], 255);
	TextDrawFont(RoomsList[3], 2);
	TextDrawSetProportional(RoomsList[3], 1);
	TextDrawSetShadow(RoomsList[3], 0);

	RoomsList[4] = TextDrawCreate(248.000000, 185.625000, "PLAYERS: 1/10");
	TextDrawLetterSize(RoomsList[4], 0.188499, 0.589375);
	TextDrawAlignment(RoomsList[4], 1);
	TextDrawColor(RoomsList[4], -1);
	TextDrawSetShadow(RoomsList[4], 0);
	TextDrawSetOutline(RoomsList[4], 0);
	TextDrawBackgroundColor(RoomsList[4], 255);
	TextDrawFont(RoomsList[4], 2);
	TextDrawSetProportional(RoomsList[4], 1);
	TextDrawSetShadow(RoomsList[4], 0);

	RoomsList[5] = TextDrawCreate(245.500000, 193.625061, "LD_SPAC:white");
	TextDrawLetterSize(RoomsList[5], 0.000000, 0.000000);
	TextDrawTextSize(RoomsList[5], 147.000000, 19.000000);
	TextDrawAlignment(RoomsList[5], 1);
	TextDrawColor(RoomsList[5], 186596351);
	TextDrawSetShadow(RoomsList[5], 0);
	TextDrawSetOutline(RoomsList[5], 0);
	TextDrawBackgroundColor(RoomsList[5], 255);
	TextDrawFont(RoomsList[5], 4);
	TextDrawSetProportional(RoomsList[5], 0);
	TextDrawSetShadow(RoomsList[5], 0);
	TextDrawSetSelectable(RoomsList[5], true);

	RoomsList[6] = TextDrawCreate(248.000000, 195.751098, "ROOM N2");
	TextDrawLetterSize(RoomsList[6], 0.210999, 0.760000);
	TextDrawAlignment(RoomsList[6], 1);
	TextDrawColor(RoomsList[6], -1);
	TextDrawSetShadow(RoomsList[6], 0);
	TextDrawSetOutline(RoomsList[6], 0);
	TextDrawBackgroundColor(RoomsList[6], 255);
	TextDrawFont(RoomsList[6], 2);
	TextDrawSetProportional(RoomsList[6], 1);
	TextDrawSetShadow(RoomsList[6], 0);

	RoomsList[7] = TextDrawCreate(248.000000, 205.050170, "PLAYERS: 1/10");
	TextDrawLetterSize(RoomsList[7], 0.188499, 0.589375);
	TextDrawAlignment(RoomsList[7], 1);
	TextDrawColor(RoomsList[7], -1);
	TextDrawSetShadow(RoomsList[7], 0);
	TextDrawSetOutline(RoomsList[7], 0);
	TextDrawBackgroundColor(RoomsList[7], 255);
	TextDrawFont(RoomsList[7], 2);
	TextDrawSetProportional(RoomsList[7], 1);
	TextDrawSetShadow(RoomsList[7], 0);
Ко всем командам:
PHP:
CMD:gameexit(playerid)
{
	if(!GetPVarInt(playerid,"InGame")) return 1;
	DeletePVar(playerid,"InGame");
	Room[GetPVarInt(playerid,"Room")][rPlayers]--;
	DeletePVar(playerid,"Room");
	SpawnPlayer(playerid);
	SendClientMessage(playerid,0xFFFFFFFF ,"Вы вышли из комнаты!");
	return 1;
}
CMD:gamelist(playerid,params[])
{
 	new string[101];
	format(string,sizeof(string),"PLAYERS: %d/10",Room[0][rPlayers]);
	TextDrawSetString( RoomsList[4], string);
	format(string,sizeof(string),"PLAYERS: %d/10",Room[1][rPlayers]);
	TextDrawSetString(RoomsList[7], string);
    for(new td; td < 8; td++) TextDrawShowForPlayer(playerid,RoomsList[td]);
    SelectTextDraw(playerid,0x43434350);
    SetPVarInt(playerid,"RoomList",1);
	return 1;
}
OnPlayerConnect
PHP:
	StatsMotd[playerid][0] = CreatePlayerTextDraw(playerid, 551.000000, 159.375000, "0");
	PlayerTextDrawLetterSize(playerid, StatsMotd[playerid][0], 0.501000, 2.689375);
	PlayerTextDrawAlignment(playerid, StatsMotd[playerid][0], 2);
	PlayerTextDrawColor(playerid, StatsMotd[playerid][0], -1);
	PlayerTextDrawSetShadow(playerid, StatsMotd[playerid][0], 0);
	PlayerTextDrawSetOutline(playerid, StatsMotd[playerid][0], 0);
	PlayerTextDrawBackgroundColor(playerid, StatsMotd[playerid][0], 255);
	PlayerTextDrawFont(playerid, StatsMotd[playerid][0], 2);
	PlayerTextDrawSetProportional(playerid, StatsMotd[playerid][0], 1);
	PlayerTextDrawSetShadow(playerid, StatsMotd[playerid][0], 0);

	StatsMotd[playerid][1] = CreatePlayerTextDraw(playerid, 604.500122, 159.375000, "0");
	PlayerTextDrawLetterSize(playerid, StatsMotd[playerid][1], 0.501000, 2.689375);
	PlayerTextDrawAlignment(playerid, StatsMotd[playerid][1], 2);
	PlayerTextDrawColor(playerid, StatsMotd[playerid][1], -1);
	PlayerTextDrawSetShadow(playerid, StatsMotd[playerid][1], 0);
	PlayerTextDrawSetOutline(playerid, StatsMotd[playerid][1], 0);
	PlayerTextDrawBackgroundColor(playerid, StatsMotd[playerid][1], 255);
	PlayerTextDrawFont(playerid, StatsMotd[playerid][1], 2);
	PlayerTextDrawSetProportional(playerid, StatsMotd[playerid][1], 1);
	PlayerTextDrawSetShadow(playerid, StatsMotd[playerid][1], 0);
public OnPlayerDeath(playerid, killerid, reason)
PHP:
	if(killerid != INVALID_PLAYER_ID && GetPVarInt(playerid,"InGame") && GetPVarInt(killerid,"InGame"))
	{
		SetPVarInt(playerid,"Death",GetPVarInt(playerid,"Death") + 1);
		SetPVarInt(killerid,"Kills",GetPVarInt(killerid,"Kills") + 1);
		new str[12];
		format(str,12,"%d",GetPVarInt(playerid,"Death"));
		PlayerTextDrawSetString(playerid,StatsMotd[playerid][1],str);
		format(str,12,"%d",GetPVarInt(playerid,"Kills"));
		PlayerTextDrawSetString(killerid,StatsMotd[playerid][0], str);
	}
 
Последнее редактирование:
Сверху Снизу