Доступ к архиву

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

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

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

Создание динамических организации/фракции

Статус
В этой теме нельзя размещать новые ответы.

Smart

Ученик
Этот урок я посвящяю простым динамическим организациям.
Во-первых, мы используем dini.inc, с целью сохранить файлы:df:.

PHP:
//добавте эти строчки в начале своего мода.
#include <a_samp>
#include <dini>
#include <dudb>
Теперь, define org.
PHP:
#define MAX_ORG 13 //можете добавить больше если хотите.
Ладно, теперь нам нужно определить всех членов организации, лидеров для playerid.
PHP:
enum playerinfo {
 Member,
 Leader,
};
new PlayerInfo[MAX_PLAYERS][playerinfo];
new request[MAX_PLAYERS];
Определяем организацию
PHP:
enum orginfo {
 Color, //Цвет игрока
 VColor, //Цвет авто
 Car1, //Авто
 Car2, //Авто
 Car3, //Авто..
 Car4,
 Car5,
 Car6,
 Car7,
 V8, //Максимальное колличество авто
 Skin1, //скин орг.
 Skin2, //скин орг.
 Lskin, //скин лидера.
 Genre, //тип
};
new OrgInfo[MAX_ORGS][orginfo];
Хорошо, давайте перейдем на Gamemodeinit: (Это используется, чтобы загрузить организацию из savefile, что вы создали ранее.)
PHP:
for(new i = 0;i<MAX_ORGS;i++)
    {
        new tformi[10];
        format(tformi,sizeof tformi,"org%d.ini",i);
        if(fexist(tformi))
        {
        printf("-----------------------------");
        printf("Загрузка организации ID %d конфигурация...",i);
        OrgInfo[i][Car1] = CreateVehicle(dini_Int(tformi,"Model1"),dini_Float(tformi,"X1"),dini_Float(tformi,"Y1"),dini_Float(tformi,"Z1"),dini_Float(tformi,"A1"),dini_Int(tformi,"Col1"),dini_Int(tformi,"Col2"),-1);
        OrgInfo[i][Car2] = CreateVehicle(dini_Int(tformi,"Model2"),dini_Float(tformi,"X2"),dini_Float(tformi,"Y2"),dini_Float(tformi,"Z2"),dini_Float(tformi,"A2"),dini_Int(tformi,"Col1"),dini_Int(tformi,"Col2"),-1);
        OrgInfo[i][Car3] = CreateVehicle(dini_Int(tformi,"Model3"),dini_Float(tformi,"X3"),dini_Float(tformi,"Y3"),dini_Float(tformi,"Z3"),dini_Float(tformi,"A3"),dini_Int(tformi,"Col1"),dini_Int(tformi,"Col2"),-1);
        OrgInfo[i][Car4] = CreateVehicle(dini_Int(tformi,"Model4"),dini_Float(tformi,"X4"),dini_Float(tformi,"Y4"),dini_Float(tformi,"Z4"),dini_Float(tformi,"A4"),dini_Int(tformi,"Col1"),dini_Int(tformi,"Col2"),-1);
        OrgInfo[i][Car5] = CreateVehicle(dini_Int(tformi,"Model5"),dini_Float(tformi,"X5"),dini_Float(tformi,"Y5"),dini_Float(tformi,"Z5"),dini_Float(tformi,"A5"),dini_Int(tformi,"Col1"),dini_Int(tformi,"Col2"),-1);
        OrgInfo[i][Car6] = CreateVehicle(dini_Int(tformi,"Model6"),dini_Float(tformi,"X6"),dini_Float(tformi,"Y6"),dini_Float(tformi,"Z6"),dini_Float(tformi,"A6"),dini_Int(tformi,"Col1"),dini_Int(tformi,"Col2"),-1);
        OrgInfo[i][Car7] = CreateVehicle(dini_Int(tformi,"Model7"),dini_Float(tformi,"X7"),dini_Float(tformi,"Y7"),dini_Float(tformi,"Z7"),dini_Float(tformi,"A7"),dini_Int(tformi,"Col1"),dini_Int(tformi,"Col2"),-1);
        OrgInfo[i][Car8] = CreateVehicle(dini_Int(tformi,"Model8"),dini_Float(tformi,"X8"),dini_Float(tformi,"Y8"),dini_Float(tformi,"Z8"),dini_Float(tformi,"A8"),dini_Int(tformi,"Col1"),dini_Int(tformi,"Col2"),-1);
OrgInfo[i][Genre] = dini_Int(tformi,"Genre");
        printf("Авто организаций загружены");
        printf("Конфигурация базовой фракции загружена");
        printf("Загрузка организаций, %s",dini_Get(tformi,"Name"));
        printf("-----------------------------");
        printf("");
        }
    }
Окей, теперь идем в OnPlayerConnect
PHP:
PlayerInfo[playerid][Member] = -255;
PlayerInfo[playerid][Leader] = 0;
request[playerid] = -255;
Теперь вы должны поместить этот код в ваш логин/cmd, когда игрок успешно вошел в систему.
PHP:
new name[MAX_PLAYER_NAME];
new file[25];
format(file, sizeof(file), "%s.ini",GetPlayerName(playerid,name,sizeof(name)));
PlayerInfo[playerid][Member] = dini_Int(file,"Member"); //Сохранение файла
PlayerInfo[playerid][Leader] = dini_Int(file,"Leader"); //Получаем сохранение
Теперь давайте перейдем к onplayerdisconnect (используется для сохранения файлов)
PHP:
[PHP]new name[MAX_PLAYER_NAME];
new file[25];
format(file, sizeof(file), "%s.ini",GetPlayerName(playerid,name,sizeof(name)));
if(!fexist(file)) 
{
  dini_Create(file);
}
dini_IntSet(file,"Member",PlayerInfo[playerid][Member]);
dini_IntSet(file,"Leader",PlayerInfo[playerid][Member]);

PlayerInfo[playerid][Member] = -255;
PlayerInfo[playerid][Leader] = 0;
[/PHP]

Теперь давайте перейдем к, CMDS.

Первый CMD, что нам нужно будет /createorg
(он используется для создания организаций так же его сохранения)
PHP:
if(strcmp(cmd,"/createorg",true) == 0)
    {
    new tmp[256],tmp2[256];
    tmp = strtok(cmdtext,idx);
    tmp2 = strtok(cmdtext,idx);
    new orgid = strval(tmp);
    new orggenre = strval(tmp2);
    if(!IsPlayerAdmin(playerid)) return 0;
    if(!strlen(tmp) || !strlen(tmp2)) return SendClientMessage(playerid,COLOR_ORED,"USAGE: /createorg [ID орг.] [тип] [название]");
    if(orgid > MAX_ORGS) return SendClientMessage(playerid,COLOR_ORED,"Максимальное колличество организаций превышено");
    new file[55];
    format(file,sizeof file,"org%d.ini",orgid);
    if(fexist(file)) return SendClientMessage(playerid,COLOR_ORED,"Организация уже используется");
    if(orggenre > 3 || orggenre < 1) return SendClientMessage(playerid,COLOR_ORED,"Всего 3 типа");
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    dini_Create(file);
    dini_Set(file,"Name",result);
    dini_IntSet(file,"Genre",orggenre);
    dini_IntSet(file,"Ammo",100);
    new str2[256];
    format(str2,256,"* Вы создали организацию ** id %d, %s.",orgid,result);
    SendClientMessage(playerid,COLOR_YELLOW,str2);
    return 1;
    }
Итак, после создания организационной базы, конечно, вы захотите чтобы у организации было транспортное средство...
/setorgveh
PHP:
if(strcmp(cmd,"/setorgveh",true) == 0)
    {
    if(!IsPlayerAdmin(playerid)) return 0;
    new tmp[256],tmp2[256];
    tmp = strtok(cmdtext,idx);
    tmp2 = strtok(cmdtext,idx);
    if(!strlen(tmp) || !strlen(tmp2)) return SendClientMessage(playerid,COLOR_ORED,"Используйте: /setorgveh [ID орг.] [car[1-8]]");
    if(!IsNumeric(tmp) || !IsNumeric(tmp2)) return SendClientMessage(playerid,COLOR_ORED,"Используйте: /setorgveh [ID орг.] [car[1-8]]");
    new filo[256];
    new orgids = strval(tmp);
    new cars = strval(tmp2);
    if(cars > 8 || cars < 1) return SendClientMessage(playerid,COLOR_ORED,"ID 1-8");
    format(filo,256,"org%d.ini",orgids);
    if(!fexist(filo)) return SendClientMessage(playerid,COLOR_ORED,"ID организации не существует");
    new Float:X,Float:Y,Float:Z,Float:A;
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,COLOR_ORED,"Ошибка");
    GetVehiclePos(GetPlayerVehicleID(playerid),X,Y,Z);
    GetVehicleZAngle(GetPlayerVehicleID(playerid),A);
    if(cars == 1)
    {
    dini_IntSet(filo,"Model1",GetVehicleModel(GetPlayerVehicleID(playerid)));
    dini_FloatSet(filo,"X1",X);
    dini_FloatSet(filo,"Y1",Y);
    dini_FloatSet(filo,"Z1",Z);
    dini_FloatSet(filo,"A1",A);
    OrgInfo[orgids][Car1] = CreateVehicle(GetVehicleModel(GetPlayerVehicleID(playerid)),X,Y,Z,A,-1,-1,-1);
    }
    if(cars == 2)
    {
    dini_IntSet(filo,"Model2",GetVehicleModel(GetPlayerVehicleID(playerid)));
    dini_FloatSet(filo,"X2",X);
    dini_FloatSet(filo,"Y2",Y);
    dini_FloatSet(filo,"Z2",Z);
    dini_FloatSet(filo,"A2",A);
    OrgInfo[orgids][Car2] = CreateVehicle(GetVehicleModel(GetPlayerVehicleID(playerid)),X,Y,Z,A,-1,-1,-1);
    }
    if(cars == 3)
    {
    dini_IntSet(filo,"Model3",GetVehicleModel(GetPlayerVehicleID(playerid)));
    dini_FloatSet(filo,"X3",X);
    dini_FloatSet(filo,"Y3",Y);
    dini_FloatSet(filo,"Z3",Z);
    dini_FloatSet(filo,"A3",A);
    OrgInfo[orgids][Car3] = CreateVehicle(GetVehicleModel(GetPlayerVehicleID(playerid)),X,Y,Z,A,-1,-1,-1);
    }
    if(cars == 4)
    {
    dini_IntSet(filo,"Model4",GetVehicleModel(GetPlayerVehicleID(playerid)));
    dini_FloatSet(filo,"X4",X);
    dini_FloatSet(filo,"Y4",Y);
    dini_FloatSet(filo,"Z4",Z);
    dini_FloatSet(filo,"A4",A);
    OrgInfo[orgids][Car4] = CreateVehicle(GetVehicleModel(GetPlayerVehicleID(playerid)),X,Y,Z,A,-1,-1,-1);
    }
    if(cars == 5)
    {
    dini_IntSet(filo,"Model5",GetVehicleModel(GetPlayerVehicleID(playerid)));
    dini_FloatSet(filo,"X5",X);
    dini_FloatSet(filo,"Y5",Y);
    dini_FloatSet(filo,"Z5",Z);
    dini_FloatSet(filo,"A5",A);
    OrgInfo[orgids][Car5] = CreateVehicle(GetVehicleModel(GetPlayerVehicleID(playerid)),X,Y,Z,A,-1,-1,-1);
    }
    if(cars == 6)
    {
    dini_IntSet(filo,"Model6",GetVehicleModel(GetPlayerVehicleID(playerid)));
    dini_FloatSet(filo,"X6",X);
    dini_FloatSet(filo,"Y6",Y);
    dini_FloatSet(filo,"Z6",Z);
    dini_FloatSet(filo,"A6",A);
    OrgInfo[orgids][Car6] = CreateVehicle(GetVehicleModel(GetPlayerVehicleID(playerid)),X,Y,Z,A,-1,-1,-1);
    }
    if(cars == 7)
    {
    dini_IntSet(filo,"Model7",GetVehicleModel(GetPlayerVehicleID(playerid)));
    dini_FloatSet(filo,"X7",X);
    dini_FloatSet(filo,"Y7",Y);
    dini_FloatSet(filo,"Z7",Z);
    dini_FloatSet(filo,"A7",A);
    OrgInfo[orgids][Car7] = CreateVehicle(GetVehicleModel(GetPlayerVehicleID(playerid)),X,Y,Z,A,-1,-1,-1);
    }
    if(cars == 8)
    {
    dini_IntSet(filo,"Model8",GetVehicleModel(GetPlayerVehicleID(playerid)));
    dini_FloatSet(filo,"X8",X);
    dini_FloatSet(filo,"Y8",Y);
    dini_FloatSet(filo,"Z8",Z);
    dini_FloatSet(filo,"A8",A);
    OrgInfo[orgids][Car8] = CreateVehicle(GetVehicleModel(GetPlayerVehicleID(playerid)),X,Y,Z,A,-1,-1,-1);
    }
    new sl[256];
    format(sl,256,"** Вы создали автомобиль id %d для организации, %s (Carid:%d).",GetVehicleModel(GetPlayerVehicleID(playerid)),dini_Get(filo,"Name"),cars);
    SendClientMessage(playerid,COLOR_MAIN,sl);
    return 1;
    }
Сделали? Хорошо, перейдем к следующему шагу, который является создание имени игрока, цвета, а также цвета автомобиля.
(Примечание: после установки orgcolor, игрок организация должен перезайти, чтобы применить изменения)
PHP:
if(strcmp(cmd,"/setorgskin", true) == 0)
    {
    if(!IsPlayerAdmin(playerid)) return 0;
    new tmp[256],tmp2[256],tmp3[256];
    tmp = strtok(cmdtext, idx);
    tmp2 = strtok(cmdtext,idx);
    tmp3 = strtok(cmdtext,idx);
    if(!strlen(tmp) || !strlen(tmp2) || !strlen(tmp3)) return SendClientMessage(playerid,COLOR_ORED,"Используйте: /setorgskin [ID орг.] [Cкин [1-2]] [CкинID]");
    new orgido = strval(tmp);
    new wichskin = strval(tmp2);
    new skinid = strval(tmp3);
    new filo[256];
    format(filo,256,"org%d.ini",orgido);
    if(!fexist(filo)) return SendClientMessage(playerid,COLOR_ORED,"Организация не существует");
    if(wichskin < 1 || wichskin > 2) return SendClientMessage(playerid,COLOR_ORED,"Пожалуйста, выберите 1-2 и ID скина");
    if(wichskin == 1)
    {
    dini_IntSet(filo,"Skin1",skinid);
    }
    if(wichskin == 2)
    {
    dini_IntSet(filo,"Skin2",skinid);
    }
    new stringo[256];
    format(stringo,256,"** Вы успешно сменили скин %d.",skinid);
    SendClientMessage(playerid,COLOR_MAIN,stringo);
    return 1;
    }

    if(strcmp(cmd,"/setorgcol",true) == 0)
    {
    if(!IsPlayerAdmin(playerid)) return 0;
    new tmp[256],tmp2[256];
    tmp = strtok(cmdtext,idx);
    tmp2 = strtok(cmdtext,idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_ORED,"Используйте: /setorgcol [орг. ID] [Новый цвет]");
    new format1[256];
    new filo[256];
    format(filo,256,"org%d.ini",strval(tmp));
    if(!fexist(filo)) return SendClientMessage(playerid,COLOR_ORED,"ID организации не существует");
    format(format1,256,"** Вы успешно изменили организацию %s цвет ID %s.",dini_Get(filo,"Name"),tmp2);
    SendClientMessage(playerid,COLOR_MAIN,format1);
    dini_Set(filo,"Color",tmp2);
    return 1;
    }

    if(strcmp(cmd,"/setorggenre",true) == 0)
    {
    if(!IsPlayerAdmin(playerid)) return 0;
    new tmp[256],tmp2[256];
    tmp = strtok(cmdtext,idx);
    tmp2 = strtok(cmdtext,idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_ORED,"Используйте/setorggenre [орг. ID] [тип][1-3]");
    if(!strlen(tmp2) || strval(tmp2) > 3 || strval(tmp2) < 1) return SendClientMessage(playerid,COLOR_ORED,"Genre 1-3");
    if(OrgInfo[strval(tmp)][Genre] == strval(tmp2)) return SendClientMessage(playerid,COLOR_ORED,"Организация уже есть в этом типе");
    new filo[256];
    format(filo,55,"org%d.ini",strval(tmp));
    if(!fexist(filo)) return SendClientMessage(playerid,COLOR_ORED,"ID организации не существует");
    dini_IntSet(filo,"Genre",strval(tmp2));
    OrgInfo[strval(tmp)][Genre] = strval(tmp2);
    return 1;
    }

    if(strcmp(cmd,"/setorgcarcol",true) == 0)
    {
    if(!IsPlayerAdmin(playerid)) return 0;
    new tmp[256],tmp2[256],tmp3[256];
    tmp = strtok(cmdtext,idx);
    tmp2 = strtok(cmdtext,idx);
    tmp3 = strtok(cmdtext,idx);
    if(!strlen(tmp) || !strlen(tmp2) || !strlen(tmp3)) return SendClientMessage(playerid,COLOR_ORED,"Используйте: /setorgcol [оргID] [цвет1] [цвет2]");
    new orgid12 = strval(tmp);
    new col1 = strval(tmp2);
    new col2 = strval(tmp3);
    new filo[256];
    format(filo,256,"org%d.ini",orgid12);
    if(!fexist(filo)) return SendClientMessage(playerid,COLOR_ORED,"ID орг. не существует");
    dini_IntSet(filo,"Col1",col1);
    dini_IntSet(filo,"Col2",col2);
    ChangeVehicleColor(OrgInfo[orgid12][Car1],col1,col2);
    ChangeVehicleColor(OrgInfo[orgid12][Car2],col1,col2);
    ChangeVehicleColor(OrgInfo[orgid12][Car3],col1,col2);
    ChangeVehicleColor(OrgInfo[orgid12][Car4],col1,col2);
    ChangeVehicleColor(OrgInfo[orgid12][Car5],col1,col2);
    ChangeVehicleColor(OrgInfo[orgid12][Car6],col1,col2);
    ChangeVehicleColor(OrgInfo[orgid12][Car7],col1,col2);
    ChangeVehicleColor(OrgInfo[orgid12][Car8],col1,col2);
    SendClientMessage(playerid,COLOR_ORED,"Вы успешно сменили цвет");
    return 1;
    }

    if(strcmp(cmd,"/setorgname",true) == 0)
    {
    if(!IsPlayerAdmin(playerid)) return 0;
    new tmp[256];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_ORED,"UASGE: /setorgname [оргID] [Новое имя]");
    new filo[256];
    format(filo,256,"org%d.ini",strval(tmp));
    if(!fexist(filo)) return SendClientMessage(playerid,COLOR_ORED,"ID орг. не существует");
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result)) return SendClientMessage(playerid,COLOR_ORED,"USAGE: /setorgname [оргID] [Новое имя]");
    dini_Set(filo,"Name",result);
    new fm2[256];
    format(fm2,256,"** Вы успешно изменили название организации %s.",result);
    SendClientMessage(playerid,COLOR_MAIN,fm2);
    return 1;
    }
Чат организации
PHP:
if(strcmp(cmd, "/oc", true) == 0)
    {
        if(Member[playerid] == -255) return 0;
        new length = strlen(cmdtext);
        new playrname[MAX_PLAYERS];
        new string[256];
        while ((idx < length) && (cmdtext[idx] <= ' '))
        {
            idx++;
        }
        new offset = idx;
        new result[64];
        while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
        {
            result[idx - offset] = cmdtext[idx];
            idx++;
        }
        result[idx - offset] = EOS;
        if(!strlen(result)) return SendClientMessage(playerid, COLOR_WHITE, "Используйте: /oc [текст]");
        GetPlayerName(playerid, playrname, sizeof(playrname));
        format(string,sizeof(string),"Орг. Чат - %s : %s", playrname,result);
        if(Member[playerid] != -255)
        {
        for(new i=0;i<MAX_PLAYERS;i++)
        {           if(IsPlayerConnected(i) && Member[i] == Member[playerid])
                SendClientMessage(i,COLOR_MAIN,string);
        }
        }
        return 1;
    }
Onplayerspawn
PHP:
new filo[55];
format(filo,55,"org%d.ini",Member[playerid]);
SetPlayerColor(ID,HexToInt(dini_Get(filo,"Color")));
А также в OnplayerstateChange
(Это необходимо для предотвращения других игроков, которые не в организации, чтобы не использовали авто орг.)
PHP:
for(new i = 0;i<MAX_ORGS;i++)
        {
            if(newstate == 2)
            {
            new filo[55];
            format(filo,55,"org%d.ini",i);
            if(OrgInfo[i][Car1] == GetPlayerVehicleID(playerid))
            {
            if(Member[playerid] != i)
            {
            new str[256];
            format(str,sizeof(str),"** Ошибка: Вы не можете управлять транспортным средством, которое принадлежит %s.",dini_Get(filo,"Name"));
            SendClientMessage(playerid,COLOR_ORED,str);
            RemovePlayerFromVehicle(playerid);
            return 1;
            }
            }
            if(OrgInfo[i][Car2] == GetPlayerVehicleID(playerid))
            {
            if(Member[playerid] != i)
            {
            new str[256];
            format(str,sizeof(str),"** Ошибка: Вы не можете управлять транспортным средством, которое принадлежит %s.",dini_Get(filo,"Name"));
            SendClientMessage(playerid,COLOR_ORED,str);
            RemovePlayerFromVehicle(playerid);
            return 1;
            }
            }
            if(OrgInfo[i][Car3] == GetPlayerVehicleID(playerid))
            {
            if(Member[playerid] != i)
            {
            new str[256];
            format(str,sizeof(str),"** Ошибка: Вы не можете управлять транспортным средством, которое принадлежит %s.",dini_Get(filo,"Name"));
            SendClientMessage(playerid,COLOR_ORED,str);
            RemovePlayerFromVehicle(playerid);
            return 1;
            }
            }
            if(OrgInfo[i][Car4] == GetPlayerVehicleID(playerid))
            {
            if(Member[playerid] != i)
            {
            new str[256];
            format(str,sizeof(str),"** Ошибка: Вы не можете управлять транспортным средством, которое принадлежит %s.",dini_Get(filo,"Name"));
            SendClientMessage(playerid,COLOR_ORED,str);
            RemovePlayerFromVehicle(playerid);
            return 1;
            }
            }
            if(OrgInfo[i][Car5] == GetPlayerVehicleID(playerid))
            {
            if(Member[playerid] != i)
            {
            new str[256];
            format(str,sizeof(str),"** Ошибка: Вы не можете управлять транспортным средством, которое принадлежит %s.",dini_Get(filo,"Name"));
            SendClientMessage(playerid,COLOR_ORED,str);
            RemovePlayerFromVehicle(playerid);
            return 1;
            }
            }
            if(OrgInfo[i][Car6] == GetPlayerVehicleID(playerid))
            {
            if(Member[playerid] != i)
            {
            new str[256];
            format(str,sizeof(str),"** Ошибка: Вы не можете управлять транспортным средством, которое принадлежит %s.",dini_Get(filo,"Name"));
            SendClientMessage(playerid,COLOR_ORED,str);
            RemovePlayerFromVehicle(playerid);
            return 1;
            }
            }
            if(OrgInfo[i][Car7] == GetPlayerVehicleID(playerid))
            {
            if(Member[playerid] != i)
            {
            new str[256];
            format(str,sizeof(str),"** Ошибка: Вы не можете управлять транспортным средством, которое принадлежит %s.",dini_Get(filo,"Name"));
            SendClientMessage(playerid,COLOR_ORED,str);
            RemovePlayerFromVehicle(playerid);
            return 1;
            }
            }
            if(OrgInfo[i][Car8] == GetPlayerVehicleID(playerid))
            {
            if(Member[playerid] != i)
            {
            new str[256];
            format(str,sizeof(str),"** Ошибка: Вы не можете управлять транспортным средством, которое принадлежит %s.",dini_Get(filo,"Name"));
            SendClientMessage(playerid,COLOR_ORED,str);
            RemovePlayerFromVehicle(playerid);
            return 1;
            }
            }
            }
        }
/setmember для лидера.
PHP:
if(strcmp(cmd,"/setmember",true) == 0)
    {
    new tmp[256];
    tmp = strtok(cmdtext, idx);
    if(Leader[playerid] == 0) return 0;
    new ID = strval(tmp);
    if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_ORED,"Используйте: /setmember [ID]");
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid,COLOR_ORED,"Этот игрок оффлайн");
    if(request[ID] == -255) return SendClientMessage(playerid,COLOR_ORED,"Вы отправили проcьбу о вступлению в организацию");
    if(Member[ID] != -255) return SendClientMessage(playerid,COLOR_ORED,"Этот игрок уже в организации");
    if(request[ID] != Member[playerid]) return SendClientMessage(playerid,COLOR_ORED,"Этот игрок не с просьбой присоединиться к вашей организации.");
        Member[ID] = Member[playerid];
    request[ID] = -255;
    Leader[ID] = 0;
    SendClientMessage(ID,COLOR_MAIN,"Организация, которые вы просили, чтобы присоединиться, был одобрен.");
    SendClientMessage(playerid,COLOR_GREEN,"Этот игрок в организации");
    SetPlayerColor(ID,HexToInt(dini_Get(filo,"Color")));
    return 1;
    }
/resign /setleader для изменения лидеров (для админов)
PHP:
if(strcmp(cmd,"/resign",true) == 0)
    {
    if(Member[playerid] == -255) return 0;
    if(Leader[playerid] == 1)
    {
    SendClientMessage(playerid,COLOR_ORED,"Вы являетесь лидером. Вы не можете выйти из вашей организации.");
    return 1;
    }
    SendClientMessage(playerid,COLOR_YELLOW,"** Вы успешно ушли из организации **");
    SetPlayerColor(playerid,0xFFFFFFFF); // вы можите установить любой цвет
    SetPlayerSkin(playerid,0); //вы можите установить любой skin

        Member[playerid] = -255;
    return 1;
    }

    if(strcmp(cmd,"/setleader",true) == 0)
    {
    new tmp[256], tmp2[256];
    tmp = strtok(cmdtext, idx);
    tmp2 = strtok(cmdtext, idx);
    if(!IsPlayerAdmin) return 0;
    if(!strlen(tmp) || !strlen(tmp2))
    {
    SendClientMessage(playerid,COLOR_ORED,"Используйте: /setleader [ID] [оргID]");
    return 1;
    }
    new ID = strval(tmp);
    new OrgID = strval(tmp2);
    new filo[256];
    format(filo,sizeof(filo),"org%d.ini",OrgID);
    if(Member[ID] != -255) return SendClientMessage(playerid,COLOR_ORED,"Вы не можите установить лидера, который уже в организации");
    if(!fexist(filo)) return SendClientMessage(playerid,COLOR_ORED,"ID орг. не существует");
    new form[256];
    new nama[55];
    new nama2[55];
    GetPlayerName(ID,nama2,55);
    GetPlayerName(playerid,nama,55);
    format(form,sizeof(form),"[Администратор] %s дал лидерку %s.",nama,dini_Get(filo,"Name")); // можите изменить
    SendClientMessage(ID,COLOR_YELLOW,form);
    OrgInfo[OrgID][Count]++;
    Member[ID] = OrgID;
    Leader[ID] = 1;
    request[ID] = -255;
    return 1;
    }
И наконец-то ! /request и /cancelrequest команды для присоедининения к организации!
PHP:
if(strcmp(cmd, "/request", true) == 0)
    {
    new orgcounting = 0;
    new tmp[256];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_LIGHTGREEN,"-------- Список организаций ---------");
    new strr[256];
    for(new i = 0;i<MAX_ORGS;i++)
    {
        new tformi[256];
        format(tformi,sizeof tformi,"org%d.ini",i);
        if(fexist(tformi))
        {
        format(strr,256,"%s - Орг. ID: %d || Лидер: %s",dini_Get(tformi,"Name"),i,dini_Get(tformi,"Leader"));
        SendClientMessage(playerid,COLOR_WHITE,strr);
        orgcounting++;
        }
        if(orgcounting == 0)
        {
        SendClientMessage(playerid,COLOR_GREY,"Организация не создана в данный момент");
        return 1;
        }
    }
    SendClientMessage(playerid,COLOR_ORED,"Используйте: /request [orgid]");
    return 1;
    }
    if(!IsNumeric(tmp))
    {
    SendClientMessage(playerid,COLOR_LIGHTGREEN,"-------- Список организаций ---------");
    new strr[256];
    for(new i = 0;i<MAX_ORGS;i++)
    {
        new tformi[256];
        format(tformi,sizeof tformi,"org%d.ini",i);
        if(fexist(tformi))
        {
        format(strr,256,"%s - Орг. ID: %d || Лидер: %s",dini_Get(tformi,"Name"),i,dini_Get(tformi,"Leader"));
        SendClientMessage(playerid,COLOR_WHITE,strr);
        orgcounting++;
        }
        if(orgcounting == 0) return SendClientMessage(playerid,COLOR_GREY,"Организация не создана в данный момент");
    }
    SendClientMessage(playerid,COLOR_ORED,"Ошибка: ID орг. не найден");
    return 1;
    }
    new filo[256];
    format(filo,256,"org%d.ini",strval(tmp));
    if(!fexist(filo))
    {
    SendClientMessage(playerid,COLOR_LIGHTGREEN,"-------- Список организаций ---------");
    new strr[256];
    for(new i = 0;i<MAX_ORGS;i++)
    {
        new tformi[256];
        format(tformi,sizeof tformi,"org%d.ini",i);
        if(fexist(tformi))
        {
        format(strr,256,"%s - Орг. ID: %d || Лидер: %s",dini_Get(tformi,"Name"),i,dini_Get(tformi,"Leader"));
        SendClientMessage(playerid,COLOR_WHITE,strr);
        orgcounting++;
        }
        if(orgcounting == 0) return SendClientMessage(playerid,COLOR_GREY,"Организация не создана в данный момент");
    }
    SendClientMessage(playerid,COLOR_ORED,"Ошибка: ID орг. нужно вводить цифрами");
    return 1;
    }
    if(fexist(filo))
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i) && Leader[i] == 1 && Member[i] == strval(tmp))
        {
        if(request[playerid] != -255) return SendClientMessage(playerid,COLOR_ORED,"Вы уже отправили просьбу для вступления в орг.");
        if(Member[playerid] != -255) return SendClientMessage(playerid,COLOR_ORED,"Вы уже в организации");
        new stringa[256];
        new nama[MAX_PLAYER_NAME];
        GetPlayerName(playerid,nama,MAX_PLAYER_NAME);
        format(stringa,256,"** %s просит, чтобы присоедениться %s.",nama,dini_Get(filo,"Name"));
        SendClientMessageToAll(COLOR_MAIN,stringa);
        request[playerid] = strval(tmp);
        new strin[256];
        format(strin,256,"[Запрос] %s просит для присоеденения в орг. /setmember для потверждения || /decline для отмены.",nama);
        SendClientMessage(i,COLOR_WHITE,strin);
        return 1;
        }
        else
        {
        SendClientMessage(playerid,COLOR_ORED,"Ошибка: Глава Организации по-видимому, будет в автономном режиме.");
        return 1;
        }
    }
    return 1;
    }
    return 1;
    }
    if(strcmp(cmd,"/cancelrequest",true) == 0)
    {
    new form[256];
    new nama[MAX_PLAYER_NAME];
    GetPlayerName(playerid,nama,sizeof(nama));
    new file[256];
    format(file,256,"org%d.ini",request[playerid]);
    if(!fexist(file))
    {
    SendClientMessage(playerid,COLOR_ORED,"Орг. больше не существует");
    request[playerid] = -255;
    return 1;
    }
    format(form,256,"** %s отменил приглашение %s.",nama,dini_Get(file,"Name"));
    SendClientMessageToAll(COLOR_MAIN,form);
    request[playerid] = -255;
    return 1;
    }
если у вас есть какая-то ошибка с цветами..
PHP:
#DEFINE COLOR_ORED 0xFF0000FF
#define COLOR_MAIN 0x43C6DBFF
#define COLOR_GREEN 0x00FF00FF
#define COLOR_WHITE 0xFFFFFFFF
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_POWDERBLUE 0xB0E0E6FF
#define COLOR_BLUE 0x0000BBAA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_ORANGE 0xFF9900AA
#define COLOR_GOLD 0xFFD700FF
#define COLOR_LIGHTGREEN 0x90EE90FF
HexToInt
PHP:
stock HexToInt(string[]) 
{
    if (string[0]==0) return 0;
    new i;
    new cur=1;
    new res=0;
    for (i=strlen(string);i>0;i--) 
    {
        if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
        cur=cur*16;
    }
    return res;
}
ах да забыл /oskin
PHP:
if(strcmp(cmd, "/oskin", true) == 0)
    {
    if(Member[playerid] == -255) return 0;
    new filo[256];
    format(filo,256,"org%d.ini",Member[playerid]);
    if(GetPlayerSkin(playerid) != dini_Int(filo,"Skin1"))
    {
    SetPlayerSkin(playerid, dini_Int(filo,"Skin1"));
        SetPlayerColor(playerid,HexToInt(dini_Get(filo,"Color")));
    return 1;
    }
    if(GetPlayerSkin(playerid) == dini_Int(filo,"Skin1"))
    {
    SetPlayerSkin(playerid, dini_Int(filo,"Skin2"));
    return 1;
    }
    return 1;
    }
P.s Все ошибка пишем сюда
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу