Суть заключается в том что игроку присылается сообщение,вы приглашены во фракцию,и игрок может отказаться или принять приглашение
Ко всем new добавим:
в public OnPlayerConnect(playerid) добавим:
Заменяем свою команду /invite на эту:
Внимание если у вас не стандартная команда то добавьте pInvite[para1] = playerid;
Код который отправляет на респавн убрать а также убрать смену скина,если у вас больше фракций чем в стандартном ГФ(да полюбому больше) то добавляем в команду /invite так
в команду /accept добавить
в команду /cancel добавить:
Автор: Сергей68
При копировании материала ссылка и указание автора обезательна!
Ко всем new добавим:
PHP:
new pInvite[MAX_PLAYERS];
PHP:
pInvite[playerid] = 999;
PHP:
if(strcmp(cmd, "/invite", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "ИСПОЛЬЗОВАНИЕ: /invite [id_игрока/ЧастьИмени]");
return 1;
}
new para1;
new ftext[20];
para1 = ReturnUser(tmp);
if (PlayerInfo[playerid][pLeader] >= 1)
{
if(IsPlayerConnected(para1))
{
if(para1 != INVALID_PLAYER_ID)
{
if (PlayerInfo[para1][pMember] == 0)
{
if(PlayerInfo[playerid][pLeader] == 1) { ftext = "Police Force"; }
else if(PlayerInfo[playerid][pLeader] == 2) { ftext = "FBI"; }
else if(PlayerInfo[playerid][pLeader] == 3) { ftext = "Armia"; }
else if(PlayerInfo[playerid][pLeader] == 4) { ftext = "Ambulance"; }
else if(PlayerInfo[playerid][pLeader] == 5) { ftext = "La Cosa Nostra"; }
else if(PlayerInfo[playerid][pLeader] == 6) { ftext = "Yakuza"; }
else if(PlayerInfo[playerid][pLeader] == 7) { ftext = "Meria"; }
else if(PlayerInfo[playerid][pLeader] == 8) { ftext = "Hitman Agency"; }
else if(PlayerInfo[playerid][pLeader] == 9) { ftext = "CNN Studio"; }
else if(PlayerInfo[playerid][pLeader] == 10) { ftext = "Taxi Cab Company"; }
else if(PlayerInfo[playerid][pLeader] == 11) { ftext = "School Instructors"; }
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "[Администрация]: Вы были приглашены в %s, Лидером %s", ftext, sendername);
SendClientMessage(para1, COLOR_WHITE, string);
SendClientMessage(para1, COLOR_WHITE, "[Администрация]: Введите /accept team чтобы принять приглашение");
SendClientMessage(para1, COLOR_WHITE, "[Администрация]: Введите /cancel team чтобы отвергнуть приглашение");
format(string, sizeof(string), "[Администрация]: Вы пригласили игрока %s в %s.", giveplayer,ftext);
SendClientMessage(playerid, COLOR_WHITE, string);
pInvite[para1] = playerid;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Этот игрок состоит во фракции!");
return 1;
}
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Вы не лидер !");
}
}
return 1;
}
Код который отправляет на респавн убрать а также убрать смену скина,если у вас больше фракций чем в стандартном ГФ(да полюбому больше) то добавляем в команду /invite так
PHP:
else if(PlayerInfo[playerid][pLeader] == ID фраки) { ftext = "Название"; }
в команду /accept добавить
PHP:
else if(strcmp(x_job,"team",true) == 0)
{
if(pInvite[playerid] < 999)
{
if(IsPlayerConnected(pInvite[playerid]))
{
if (gTeam[playerid]==TEAM_GREEN && PlayerInfo[playerid][pMember] == 0 && PlayerInfo[playerid][pFMember] == 255)
{
if(PlayerInfo[pInvite[playerid]][pLeader] == 1) { PlayerInfo[playerid][pTeam] = 2; gTeam[playerid] = 2; ChosenSkin[playerid] = 280; SetPlayerSkin(playerid, 280); }
else if(PlayerInfo[pInvite[playerid]][pLeader] == 2) { PlayerInfo[playerid][pTeam] = 2; gTeam[playerid] = 2; ChosenSkin[playerid] = 286; SetPlayerSkin(playerid, 286); }
else if(PlayerInfo[pInvite[playerid]][pLeader] == 3) { PlayerInfo[playerid][pTeam] = 2; gTeam[playerid] = 2; ChosenSkin[playerid] = 287; SetPlayerSkin(playerid, 287); }
else if(PlayerInfo[pInvite[playerid]][pLeader] == 4) { PlayerInfo[playerid][pTeam] = 1; gTeam[playerid] = 1; ChosenSkin[playerid] = 70; SetPlayerSkin(playerid, 70); }
else if(PlayerInfo[pInvite[playerid]][pLeader] == 5) { PlayerInfo[playerid][pTeam] = 5; gTeam[playerid] = 5; ChosenSkin[playerid] = 98; SetPlayerSkin(playerid, 98); }
else if(PlayerInfo[pInvite[playerid]][pLeader] == 6) { PlayerInfo[playerid][pTeam] = 5; gTeam[playerid] = 5; ChosenSkin[playerid] = 120; SetPlayerSkin(playerid, 258); }
else if(PlayerInfo[pInvite[playerid]][pLeader] == 7) { PlayerInfo[playerid][pTeam] = 11; gTeam[playerid] = 11; ChosenSkin[playerid] = 127; SetPlayerSkin(playerid, 127); }
else if(PlayerInfo[pInvite[playerid]][pLeader] == 8) { PlayerInfo[playerid][pTeam] = 10; gTeam[playerid] = 12; ChosenSkin[playerid] = 127; SetPlayerSkin(playerid, 127); }
else if(PlayerInfo[pInvite[playerid]][pLeader] == 9) { PlayerInfo[playerid][pTeam] = 12; gTeam[playerid] = 12; ChosenSkin[playerid] = 148; SetPlayerSkin(playerid, 148); }
else if(PlayerInfo[pInvite[playerid]][pLeader] == 10) { PlayerInfo[playerid][pTeam] = 12; gTeam[playerid] = 12; ChosenSkin[playerid] = 255; SetPlayerSkin(playerid, 255); }
else if(PlayerInfo[pInvite[playerid]][pLeader] == 11) { PlayerInfo[playerid][pTeam] = 12; gTeam[playerid] = 12; ChosenSkin[playerid] = 59; SetPlayerSkin(playerid, 59); }
PlayerInfo[playerid][pMember] = PlayerInfo[pInvite[playerid]][pLeader];
PlayerInfo[playerid][pRank] = 1;
SetPlayerInterior(playerid,0);
new rand = random(sizeof(gInviteSpawns));
SetPlayerPos(playerid, gInviteSpawns[rand][0], gInviteSpawns[rand][1], gInviteSpawns[rand][2]); // Warp the player
SetPlayerFacingAngle(playerid, gInviteSpawns[rand][3]);
SetPlayerCameraPos(playerid,gInviteSpawns[rand][0] + 3, gInviteSpawns[rand][1], gInviteSpawns[rand][2]);
SetPlayerCameraLookAt(playerid,gInviteSpawns[rand][0], gInviteSpawns[rand][1], gInviteSpawns[rand][2]);
TogglePlayerControllable(playerid, 0);
SelectChar[playerid] = 255;
SelectCharID[playerid] = PlayerInfo[playerid][pMember];
SelectCharPlace[playerid] = 1;
PlayerInfo[playerid][pModel] = ChosenSkin[playerid];
PlayerInfo[playerid][pChar] = ChosenSkin[playerid];
new str[64];
GetPlayerName(pInvite[playerid], sendername, sizeof(sendername));
format(str,sizeof(str),"[Администрация]: %s принял ваше приглашение!",sendername);
SendClientMessage(pInvite[playerid], COLOR_WHITE, str);
SendClientMessage(playerid, COLOR_LIGHTRED, "* Используйте next для выбора скина.");
SendClientMessage(playerid, COLOR_LIGHTRED, "* Если вы нашли скин, который хотите использовать введите done.");
pInvite[playerid] = 999;
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Вы состоите во фракции");
return 1;
}
}
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Никто вам не приглашал вступить в Фракцию/Банду/Мафию");
return 1;
}
}
PHP:
else if(strcmp(x_job,"team",true) == 0)
{
pInvite[playerid] = 999;
new str[64];
GetPlayerName(pInvite[playerid], sendername, sizeof(sendername));
format(str,sizeof(str),"[Администрация]: %s не принял ваше приглашение!",sendername);
SendClientMessage(pInvite[playerid], COLOR_WHITE, str);
}
При копировании материала ссылка и указание автора обезательна!