Gressie
Мастер
Здравствуйте форумчане pawno-info.ru я вижу новички хотят создать копию самп рп а именно такие как эти команды: /giverank | /invite | /uninvite
итак начнём.
Первое удалим старые команды и вставим эти:
итак начнём.
Первое удалим старые команды и вставим эти:
PHP:
if(strcmp(cmd, "/giverank", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "*Используйте: /giverank [id] [ранг]");
return 1;
}
new para1;
new level;
para1 = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
level = strval(tmp);
if(PlayerInfo[playerid][pLeader] <= 0 && PlayerInfo[playerid][pRank] <= PlayerInfo[para1][pRank]) return SendClientMessage(playerid, COLOR_GREY, "Вы не можите давать ранг тому,кто старше вас по рангу");
if(PlayerInfo[playerid][pMember] > 0 && playerid == para1) return SendClientMessage(playerid, COLOR_GREY, "Вы не можете дать ранг самому себе!");//ну и проверяем не себе ли он даёт!
if(IsPlayerConnected(para1))
{
if(!IsValidRank(playerid,level)) return SendClientMessage(playerid,COLOR_GREY,"Неправильный номер ранга");
if(PlayerInfo[para1][pMember] == PlayerInfo[playerid][pLeader] || PlayerInfo[para1][pLeader] == PlayerInfo[playerid][pLeader])
{
if(CanGiverankPlayer(playerid,para1))
{
if(para1 != INVALID_PLAYER_ID)
{
new mem = 0;
if(PlayerInfo[playerid][pLeader] > 0) mem = PlayerInfo[playerid][pLeader];
else if(PlayerInfo[playerid][pMember] > 0) mem = PlayerInfo[playerid][pMember];
if(PlayerInfo[para1][pMember] != mem) return SendClientMessage(playerid,COLOR_RED,"Этот игрок не в вашей фракции");
if(PlayerInfo[playerid][pMember] > 0 && PlayerInfo[playerid][pRank] < level) return SendClientMessage(playerid,COLOR_GREY,"Вы не можете повысить ранг выше своего");
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
PlayerInfo[para1][pRank] = level;
format(string, sizeof(string), "%s повысил/понизил вас до %d ранга", sendername,level);
SendClientMessage(para1, 0x6495EDFF, string);
format(string, sizeof(string), "Вы повысили/понизили %s до %d ранга", giveplayer,level);
SendClientMessage(playerid, 0x6495EDFF, string);
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Нет прав на использование команды!");
}
}
else
{
SendClientMessage(playerid,COLOR_GRAD1,"Этот игрок не из вашей фракции");
}
}
}
return 1;
}
PHP:
if(strcmp(cmd, "/invite", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "/invite [id]");
return 1;
}
new para1;
new ftext[50];
para1 = ReturnUser(tmp);
if(CanUninvitePlayer(playerid,para1))
{
if(IsPlayerConnected(para1))
{
if(para1 != INVALID_PLAYER_ID)
{
if (PlayerInfo[para1][pMember] == 0 && PlayerInfo[para1][pLeader] == 0)
{
if(PlayerInfo[playerid][pLeader] == 3 || PlayerInfo[playerid][pMember] == 3 && PlayerInfo[playerid][pRank] >= 14) { ftext = "Армия: Авианосец"; InviteSkin[para1] = 287; }
else if(PlayerInfo[playerid][pLeader] == 4 || PlayerInfo[playerid][pMember] == 4 && PlayerInfo[playerid][pRank] >= 7) { ftext = "МЧС"; InviteSkin[para1] = 70; }
else if(PlayerInfo[playerid][pLeader] == 5 || PlayerInfo[playerid][pMember] == 5 && PlayerInfo[playerid][pRank] >= 9) { ftext = "ЛКН"; InviteSkin[para1] = 223; }
else if(PlayerInfo[playerid][pLeader] == 6 || PlayerInfo[playerid][pMember] == 6 && PlayerInfo[playerid][pRank] >= 9) { ftext = "Якудза"; InviteSkin[para1] = 120; }
else if(PlayerInfo[playerid][pLeader] == 7 || PlayerInfo[playerid][pMember] == 7 && PlayerInfo[playerid][pRank] >= 5) { ftext = "Мэрия"; InviteSkin[para1] = 57; }
else if(PlayerInfo[playerid][pLeader] == 8 || PlayerInfo[playerid][pMember] == 8 && PlayerInfo[playerid][pRank] >= 4) { ftext = "Casino Rich"; InviteSkin[para1] = 171; }
else if(PlayerInfo[playerid][pLeader] == 9 || PlayerInfo[playerid][pMember] == 9 && PlayerInfo[playerid][pRank] >= 5) { ftext = "SF NEWS"; InviteSkin[para1] = 250; }
else if(PlayerInfo[playerid][pLeader] == 11 || PlayerInfo[playerid][pMember] == 11 && PlayerInfo[playerid][pRank] >= 7) { ftext = "Инструкторы"; InviteSkin[para1] = 59; }
else if(PlayerInfo[playerid][pLeader] == 12 || PlayerInfo[playerid][pMember] == 12 && PlayerInfo[playerid][pRank] >= 9) { ftext = "The Ballas Gang"; InviteSkin[para1] = 102; }
else if(PlayerInfo[playerid][pLeader] == 13 || PlayerInfo[playerid][pMember] == 13 && PlayerInfo[playerid][pRank] >= 10) { ftext = "Los Santos Vagos"; InviteSkin[para1] = 108; }
else if(PlayerInfo[playerid][pLeader] == 14 || PlayerInfo[playerid][pMember] == 14 && PlayerInfo[playerid][pRank] >= 9) { ftext = "Russian Mafia"; InviteSkin[para1] = 111; }
else if(PlayerInfo[playerid][pLeader] == 15 || PlayerInfo[playerid][pMember] == 15 && PlayerInfo[playerid][pRank] >= 9) { ftext = "Grove Street Gang"; InviteSkin[para1] = 106; }
else if(PlayerInfo[playerid][pLeader] == 16 || PlayerInfo[playerid][pMember] == 16 && PlayerInfo[playerid][pRank] >= 5) { ftext = "LS NEWS"; InviteSkin[para1] = 261; }
else if(PlayerInfo[playerid][pLeader] == 17 || PlayerInfo[playerid][pMember] == 17 && PlayerInfo[playerid][pRank] >= 9) { ftext = "Varios Los Aztecas"; InviteSkin[para1] = 115; }
else if(PlayerInfo[playerid][pLeader] == 18 || PlayerInfo[playerid][pMember] == 18 && PlayerInfo[playerid][pRank] >= 9) { ftext = "The Rifa Gang";InviteSkin[para1] = 174; }
else if(PlayerInfo[playerid][pLeader] == 19 || PlayerInfo[playerid][pMember] == 19 && PlayerInfo[playerid][pRank] >= 14) { ftext = "Зона 51"; InviteSkin[para1] = 287; }
else if(PlayerInfo[playerid][pLeader] == 20 || PlayerInfo[playerid][pMember] == 20 && PlayerInfo[playerid][pRank] >= 5) { ftext = "LV NEWS";InviteSkin[para1] = 261;}
else if(PlayerInfo[playerid][pLeader] == 22 || PlayerInfo[playerid][pMember] == 22 && PlayerInfo[playerid][pRank] >= 7) { ftext = "4 Drakona"; InviteSkin[para1] = 29; }
else { return 1; }
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
PlayerInfo[para1][pMember] = PlayerInfo[playerid][pMember];
PlayerInfo[para1][pRank] = 1;
format(string, sizeof(string), "Вы приглашены в %s лидером %s", ftext, sendername);
SendClientMessage(para1, 0x6495EDFF, string);
format(string, sizeof(string), "Вы пригласили %s присоедениться к %s.", giveplayer,ftext);
SendClientMessage(playerid, 0x6495EDFF, string);
SetPlayerInterior(para1,5);
ShowMenuForPlayer(ChoseSkin,para1);
new rand = random(sizeof(gInviteSpawns));
SetPlayerPos(para1, gInviteSpawns[rand][0], gInviteSpawns[rand][1], gInviteSpawns[rand][2]); // Warp the player
SetPlayerFacingAngle(para1, gInviteSpawns[rand][3]);
SetPlayerCameraPos(para1,gInviteSpawns[rand][0] + 3, gInviteSpawns[rand][1], gInviteSpawns[rand][2]);
SetPlayerCameraLookAt(para1,gInviteSpawns[rand][0], gInviteSpawns[rand][1], gInviteSpawns[rand][2]);
TogglePlayerControllable(para1, 0);
SelectChar[para1] = 255;
PlayerInfo[para1][pJob] = 0;
SelectCharID[para1] = PlayerInfo[para1][pMember];
SelectCharPlace[para1] = 1;
PlayerInfo[para1][pModel] = ChosenSkin[para1];
SetPlayerVirtualWorld(para1,1);
OnPlayerUpdateRL(para1);
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Игрок уже состоит в организации");
return 1;
}
}
}//not connected
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Команда доступна только лидерам!");
}
}
return 1;
}
PHP:
if(strcmp(cmd, "/uninvite", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, " Используйте: /uninvite [id]");
return 1;
}
new para1;
para1 = ReturnUser(tmp);
if(para1 == playerid) return SendClientMessage(playerid,-1,"Себя невозможно уволить");
if(PlayerInfo[para1][pMember] == PlayerInfo[playerid][pLeader] ||PlayerInfo[para1][pMember] == PlayerInfo[playerid][pMember])
{
if(IsPlayerConnected(para1))
{
if(CanUninvitePlayer(playerid,para1))
{
if(para1 != INVALID_PLAYER_ID)
{
if(PlayerInfo[para1][pMember] > 0)
{
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "%s выгнал вас из организации", sendername);
SendClientMessage(para1, 0x6495EDFF, string);
format(string, sizeof(string), "Вы снова гражданский", sendername);
SendClientMessage(para1, 0x6495EDFF, string);
format(string, sizeof(string), "Вы выгнали %s из организации", giveplayer);
SendClientMessage(playerid, 0x6495EDFF, string);
PlayerInfo[para1][pMember] = 0;
PlayerInfo[para1][pRank] = 0;
PlayerInfo[para1][pLeader] = 0;
PlayerInfo[para1][pJob] = 0;
SetPlayerArmourAC(para1,0);
SpawnPlayer(para1);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Вы не уполномочены использовать эту команду!");
}
}
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Этот игрок не в вашей фракции");
}
}
return 1;
}
и паблики:
PHP:
//================================================================================================//
stock CanUninvitePlayer(playerid,playerid2)// ранги, которые могут увольнять из фракции/принимать во фракцию
{
if(PlayerInfo[playerid][pLeader] >= 1) return 1;
new rank = PlayerInfo[playerid][pRank];
if(PlayerInfo[playerid][pMember] > 0 && PlayerInfo[playerid2][pMember] > 0 &&
rank < PlayerInfo[playerid2][pRank]) return 0;
switch(PlayerInfo[playerid][pMember])
{
case 1:
{
switch(rank)
{
case 14:return 1;
case 13:return 1;
case 12:return 1;
}
}
case 2:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
}
}
case 3:
{
switch(rank)
{
case 15:return 1;
case 14:return 1;
case 13:return 1;
}
}
case 4:
{
switch(rank)
{
case 8:return 1;
case 7:return 1;
case 6:return 1;
}
}
case 5:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
}
}
case 6:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
}
}
case 7:
{
switch(rank)
{
case 6:return 1;
case 5:return 1;
case 4:return 1;
}
}
case 8:
{
switch(rank)
{
case 5:return 1;
case 4:return 1;
case 3:return 1;
}
}
case 9:
{
switch(rank)
{
case 6:return 1;
case 5:return 1;
case 4:return 1;
}
}
case 10:
{
switch(rank)
{
case 14:return 1;
case 13:return 1;
case 12:return 1;
}
}
case 11:
{
switch(rank)
{
case 8:return 1;
case 7:return 1;
case 6:return 1;
}
}
case 12:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
}
}
case 13:
{
switch(rank)
{
case 11:return 1;
case 10:return 1;
case 9:return 1;
}
}
case 14:
{
switch(rank)
{
case 7:return 1;
case 6:return 1;
case 8:return 1;
}
}
case 15:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
}
}
case 16:
{
switch(rank)
{
case 6:return 1;
case 5:return 1;
case 4:return 1;
}
}
case 17:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
}
}
case 18:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
}
}
case 19:
{
switch(rank)
{
case 15:return 1;
case 14:return 1;
case 13:return 1;
}
}
case 20:
{
switch(rank)
{
case 6:return 1;
case 5:return 1;
case 4:return 1;
}
}
case 21:
{
switch(rank)
{
case 14:return 1;
case 13:return 1;
case 12:return 1;
}
}
case 22:
{
switch(rank)
{
case 5:return 1;
case 4:return 1;
}
}
}
return 0;
}
stock CanGiverankPlayer(playerid,playerid2)// ранги, которые могут давать ранг
{
if(PlayerInfo[playerid][pLeader] >= 1) return 1;
new rank = PlayerInfo[playerid][pRank];
if(PlayerInfo[playerid][pMember] > 0 && PlayerInfo[playerid2][pMember] > 0 &&
rank < PlayerInfo[playerid2][pRank]) return 0;
switch(PlayerInfo[playerid][pMember])
{
case 1:
{
switch(rank)
{
case 14:return 1;
case 13:return 1;
case 12:return 1;
case 11:return 1;
}
}
case 2:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
case 7:return 1;
}
}
case 3:
{
switch(rank)
{
case 15:return 1;
case 14:return 1;
case 13:return 1;
case 12:return 1;
}
}
case 4:
{
switch(rank)
{
case 8:return 1;
case 7:return 1;
case 6:return 1;
case 5:return 1;
}
}
case 5:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
case 7:return 1;
}
}
case 6:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
case 7:return 1;
}
}
case 7:
{
switch(rank)
{
case 6:return 1;
case 5:return 1;
case 4:return 1;
}
}
case 8:
{
switch(rank)
{
case 5:return 1;
case 4:return 1;
case 3:return 1;
}
}
case 9:
{
switch(rank)
{
case 6:return 1;
case 5:return 1;
case 4:return 1;
case 3:return 1;
}
}
case 10:
{
switch(rank)
{
case 14:return 1;
case 13:return 1;
case 12:return 1;
case 11:return 1;
}
}
case 11:
{
switch(rank)
{
case 8:return 1;
case 7:return 1;
case 6:return 1;
case 5:return 1;
}
}
case 12:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
case 7:return 1;
}
}
case 13:
{
switch(rank)
{
case 11:return 1;
case 10:return 1;
case 9:return 1;
case 8:return 1;
}
}
case 14:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
case 7:return 1;
}
}
case 15:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
case 7:return 1;
}
}
case 16:
{
switch(rank)
{
case 6:return 1;
case 5:return 1;
case 4:return 1;
case 3:return 1;
}
}
case 17:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
case 7:return 1;
}
}
case 18:
{
switch(rank)
{
case 10:return 1;
case 9:return 1;
case 8:return 1;
case 7:return 1;
}
}
case 19:
{
switch(rank)
{
case 15:return 1;
case 14:return 1;
case 13:return 1;
case 12:return 1;
}
}
case 20:
{
switch(rank)
{
case 6:return 1;
case 5:return 1;
case 4:return 1;
case 3:return 1;
}
}
case 21:
{
switch(rank)
{
case 14:return 1;
case 13:return 1;
case 12:return 1;
case 11:return 1;
}
}
case 22:
{
switch(rank)
{
case 5:return 1;
case 4:return 1;
}
}
}
return 0;
}
stock IsValidRank(playerid,rank)
{
new mem = 0;
if(PlayerInfo[playerid][pLeader] > 0) mem = PlayerInfo[playerid][pLeader];
else if(PlayerInfo[playerid][pMember] > 0) mem = PlayerInfo[playerid][pMember];
switch(mem)
{
case 1:
{
switch(rank)
{
case 1..13:return 1;
}
}
case 2:
{
switch(rank)
{
case 1..9:return 1;
}
}
case 3:
{
switch(rank)
{
case 1..14:return 1;
}
}
case 4:
{
switch(rank)
{
case 1..7:return 1;
}
}
case 5:
{
switch(rank)
{
case 1..9:return 1;
}
}
case 6:
{
switch(rank)
{
case 1..9:return 1;
}
}
case 7:
{
switch(rank)
{
case 1..5:return 1;
}
}
case 8:
{
switch(rank)
{
case 1..5:return 1;
}
}
case 9:
{
switch(rank)
{
case 1..5:return 1;
}
}
case 10:
{
switch(rank)
{
case 1..13:return 1;
}
}
case 11:
{
switch(rank)
{
case 1..7:return 1;
}
}
case 12:
{
switch(rank)
{
case 1..9:return 1;
}
}
case 13:
{
switch(rank)
{
case 1..10:return 1;
}
}
case 14:
{
switch(rank)
{
case 1..9:return 1;
}
}
case 15:
{
switch(rank)
{
case 1..9:return 1;
}
}
case 16:
{
switch(rank)
{
case 1..5:return 1;
}
}
case 17:
{
switch(rank)
{
case 1..9:return 1;
}
}
case 18:
{
switch(rank)
{
case 1..9:return 1;
}
}
case 19:
{
switch(rank)
{
case 1..14:return 1;
}
}
case 20:
{
switch(rank)
{
case 1..5:return 1;
}
}
case 21:
{
switch(rank)
{
case 1..13:return 1;
}
}
case 22:
{
switch(rank)
{
case 1..4:return 1;
}
}
}
return 0;
}
P.S Ранги и тд заменить на свои.
Последнее редактирование:
