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

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

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

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

Редактирование фракции онлайн из игры (GF)

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

nevagno

Умник
Здравствуйте! В этом уроке я попытаюсь научить создать систему, которая позволит изменять/создавать фракции из игры. Урок изначально для мода GF, но если правильно использовать, то получится и на остальных.
Найдём примерно такой код:
PHP:
enum fInfo 
{ 
    FamilyTaken, 
    FamilyName[20], 
    FamilyMOTD[128], 
    FamilyColor[20], 
    FamilyLeader[MAX_PLAYER_NAME], 
    FamilyMembers, 
    Float:FamilySpawn[4], // запись спавна X,Y,Z,Angle 
    FamilyInterior, // запись интерьера 
        // здесь идёт запись в файл только место спавна и интерьер, вы можете добавить запись координат самой респы, оружия, патронов и т.д. 
};
new FamilyInfo[10][fInfo];// 10меняем на максимум фракций
Команда создания фракции:
PHP:
if(strcmp(cmd, "/createfam", true) == 0) 
{ 
    if(IsPlayerConnected(playerid)) 
    { 
        if(PlayerInfo[playerid][pAdmin] < 5) // проверка на 5 админку 
        { 
             SendClientMessage(playerid, COLOR_GRAD1, " У вас нет прав!"); 
               return 1; 
           } 
           tmp = strtok(cmdtext, idx); 
        if(!strlen(tmp)) 
        { 
            SendClientMessage(playerid, COLOR_GRAD2, " /createfam: [айди новой фракции]"); 
            return 1; 
        } 
        new id; 
        new str[MAX_PLAYER_NAME]; 
        id = strval(tmp); 
        GetPlayerPos(playerid, FamilyInfo[id][FamilySpawn][0],FamilyInfo[id][FamilySpawn][1],FamilyInfo[id][FamilySpawn][2]); 
        GetPlayerFacingAngle(playerid, FamilyInfo[id][FamilySpawn][3]); 
        FamilyInfo[id][FamilyInterior] = GetPlayerInterior(playerid); 
        format(str, sizeof(str), "None"); 
        FamilyInfo[id][FamilyTaken] = 0; 
        strmid(FamilyInfo[id][FamilyName], str, 0, strlen(str), 255); 
        strmid(FamilyInfo[id][FamilyMOTD], str, 0, strlen(str), 255); 
        strmid(FamilyInfo[id][FamilyLeader], str, 0, strlen(str), 255); 
        format(str, sizeof(str), "0xFF000069"); 
        strmid(FamilyInfo[id][FamilyColor], str, 0, strlen(str), 255); 
        FamilyInfo[id][FamilyMembers] = 0; 
        SaveFamilies(); 
           format(string, 126," Вы создали фракцию, ID:%d",id); 
        SendClientMessage(playerid, COLOR_GRAD1, string); 
     } 
     return 1; 
}
Изменение фракции:

PHP:
if(strcmp(cmd, "/editfam", true) == 0) 
{ 
    if(IsPlayerConnected(playerid)) 
    { 
        if(PlayerInfo[playerid][pAdmin] < 5) 
        { 
             SendClientMessage(playerid, COLOR_GRAD1, " У вас нет прав!"); 
               return 1; 
           } 
           tmp = strtok(cmdtext, idx); 
        if(!strlen(tmp)) 
        { 
            SendClientMessage(playerid, COLOR_GRAD2, " /editfam: [айди фракции] [что меняем?(1-спавн,2-интерьер)]"); 
            return 1; 
        } 
        new id; 
        id = strval(tmp); 
        tmp = strtok(cmdtext, idx); 
        if(!strlen(tmp)) 
        { 
            SendClientMessage(playerid, COLOR_GRAD2, " /editfam: [айди фракции] [что меняем?(1-спавн,2-интерьер)]"); 
            return 1; 
        } 
        new change; 
        change = strval(tmp); 
        if(change > 2 || change < 1) { SendClientMessage(playerid, COLOR_GREY, " [что меняем?(1-спавн,2-интерьер)]"); return 1; } 
        if(change == 1) 
        { 
            FamilyInfo[id][FamilyInterior] = GetPlayerInterior(playerid); // узнаёт ваш интерьер и записывает в переменную фракции. 
        } 
        if(change == 2) 
        { 
            GetPlayerPos(playerid, FamilyInfo[id][FamilySpawn][0],FamilyInfo[id][FamilySpawn][1],FamilyInfo[id][FamilySpawn][2]);// узнаёт ваши координаты и записывает в переменную фракции. 
            GetPlayerFacingAngle(playerid, FamilyInfo[id][FamilySpawn][3]); 
        } 
        SaveFamilies(); 
        format(string, 126," Вы изменили фракцию, ID:%d",id); 
        SendClientMessage(playerid, COLOR_GRAD1, string); 
     } 
     return 1; 
}
Для удаления используй ClearFamily(family);

PHP:
if(strcmp(cmd, "/deletefam", true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
        if(PlayerInfo[playerid][pAdmin] < 5)
        {
             SendClientMessage(playerid, COLOR_GRAD1, " У вас нет прав!");
               return 1;
           }
           tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, COLOR_GRAD2, " /deletefam: [айди фракции]");
            return 1;
        }
        new id;
        id = strval(tmp);
        ClearFamily(id);
        format(string, 126," Вы очистили фракцию, ID:%d",id);
        SendClientMessage(playerid, COLOR_GRAD1, string);
     }
     return 1;
}
вот и все
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу