Новая система наручников

Описание: Уроки по скриптингу
Модератор: SJplayer

SJplayer M
Автор темы, Модератор
Модератор
Аватара
SJplayer M
Автор темы, Модератор
Модератор
Сообщения: 196
Зарегистрирован: 25 мая 2013
С нами: 10 лет 10 месяцев

#1 SJplayer » 6 июля 2013, 11:05

Новая система наручников
Автор: Dark_Ilya

Описание: Вводим команду /cuff, у игрока достаются наручники, потом ударяем игрока с объектом наручников, тем самым, одеваем их на игрока, ну а потом можно его посадить в автомобиль.

Ко всем #define

Код: Выделить всё

#define GivePVarInt(%0,%1,%2) \
    
SetPVarInt(%0,%1,(GetPVarInt(%0,%1) + %2))  


В public OnPlayerCommandtext

Код: Выделить всё

else if(StrCmp(cmd"/cuff"))
        {
            if(
PlayerInfo[playerid][pMember] != 10 && PlayerInfo[playerid][pMember] != 11 && PlayerInfo[playerid][pMember] != 12) return SCM(playerid,COLOR_GREY,"Вы не полицейский!");
            else if(
GetPVarInt(playerid,"CufF") != 0SetPVarInt(playerid,"CufF",0),RemovePlayerAttachedObject(playerid8),format(stringsizeof(string), "%s %s убирает наручники",GetNameRank(playerid), PlayerInfo[playerid][pName]),GivePVarInt(playerid"Наручники"1);
            else if(
GetPVarInt(playerid,"Наручники") == 0) return SCM(playerid,COLOR_WHITE,"У вас нет наручников!");
            else if(
GetPVarInt(playerid,"CufF") == 0)SetPVarInt(playerid,"CufF",1),SetPlayerAttachedObject(playerid,8,19418,6,-0.031999,0.024000,-0.024000,-7.900000,-32.000011,-72.299987,1.115998,1.322000,1.406000),format(stringsizeof(string), "%s %s достаёт наручники",GetNameRank(playerid), PlayerInfo[playerid][pName]),GivePVarInt(playerid"Наручники", -1);
            
ProxDetector(30.0playeridstringCOLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
            return 
1;
        }
        else if(
StrCmp(cmd"/cput"))
        {
            if(
IsACop(playerid))
            {
                new 
vehicleid GetPlayerVehicleID(playerid);
                
tmp strtok(cmdtextidx);
                if(!
strlen(tmp))return SendClientMessage(playeridCOLOR_GRAD1"Используйте: /cput [id] [место (1-3)]");
                if(
ProxDetectorS(9.0playeridgiveplayerid))return SendClientMessage(playeridCOLOR_GRAD1"Игрок не рядом с вами!");
                
giveplayerid ReturnUser(tmp);
                
tmp strtok(cmdtextidx);
                new 
seatid strval(tmp);
                {
                    
PutPlayerInVehicle(giveplayeridvehicleidseatid);
                    return 
true;
                }
            }
            return 
true;
        }
        else if(
StrCmp(cmd"/uncuff"))
        {
            if(
PlayerInfo[playerid][pMember] != 10 && PlayerInfo[playerid][pMember] != 11 && PlayerInfo[playerid][pMember] != 12) return SCM(playerid,COLOR_GREY,"Вы не полицейский!");
            
tmp strtok(cmdtextidx);
            if(!
strlen(tmp)) return SendClientMessage(playeridCOLOR_WHITE"Используйте: /uncuff [id]");
            
giveplayerid strval(tmp);
            if(!
IsPlayerConnected(giveplayerid)) return SendClientMessage(playeridCOLOR_GREY"[Ошибка] Игрок не найден!");
            if(
ProxDetectorS(5.0playeridgiveplayerid))
            {
                
format(stringsizeof(string), "%s %s снимает наручники с %s",GetNameRank(playerid), PlayerInfo[playerid][pName],PlayerInfo[giveplayerid][pName]);
                   
ProxDetector(30.0playeridstringCOLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                  
SetPlayerSpecialAction(giveplayerid,SPECIAL_ACTION_NONE);
                  
RemovePlayerAttachedObject(giveplayerid,0);
                  
ClearAnimations(giveplayerid);
                
GameTextForPlayer(giveplayerid,"~g~UNCUFFED",2500,3);
                
GivePVarInt(playerid"Наручники"1);
                
GameTextForPlayer(playerid,"~g~UNCUFFED",2500,3);
            }
            return 
true;
        } 


в public OnPlayerKeyStateChange:

Код: Выделить всё

else if(newkeys 128  && newkeys )
    {
        new 
giveplayerid GetPlayerTargetPlayer(playerid);
        if(
IsACop(playerid))
        {
            if(
IsPlayerConnected(giveplayerid) && ProxDetectorS(5.0playeridgiveplayerid))
            {
                if(
IsACop(giveplayerid)) return SCM(playerid,COLOR_WHITE,"Нельзя надеть наручники на полицейского!");
                if((
GetPlayerWeapon(playerid) == || GetPlayerWeapon(playerid) == 46 || GetPlayerWeapon(playerid) == || GetPlayerWeapon(playerid) == || GetPlayerWeapon(playerid) == || GetPlayerWeapon(playerid) == 2) && GetPVarInt(playerid,"CufF") != 0)
                {
                    if(
PlayerCuffed[giveplayerid] >= 1) return true;
                    if(
IsPlayerInAnyVehicle(giveplayerid)||IsPlayerInAnyVehicle(playerid))return true;
                    
SetPVarInt(playerid,"CufF",0);
                    
RemovePlayerAttachedObject(playerid8);
                    
format(stringsizeof(string), "%s %s одел наручники на %s",GetNameRank(playerid), PlayerInfo[playerid][pName],PlayerInfo[giveplayerid][pName]);
                    
ProxDetector(30.0playeridstringCOLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                    
SetPlayerAttachedObject(giveplayerid0194186, -0.0110000.028000, -0.022000, -15.600012, -33.699977, -81.7000350.8919991.0000001.168000);
                      
SetPlayerSpecialAction(giveplayerid,SPECIAL_ACTION_CUFFED);
                      
GameTextForPlayer(giveplayerid,"~r~CUFFED",2500,3);
                    
GameTextForPlayer(playerid,"~g~CUFFED",2500,3);
                    
PlayerCuFFed[giveplayerid] = 1;
                    
PlayerCuFFedTime[giveplayerid] = 5;
                    
ApplyAnimation(giveplayerid,"CRACK","crckdeth2"4.000010);
                    
ApplyAnimation(giveplayerid,"CRACK","crckdeth2"4.000010);
                }
            }
        }
    }  


Ко всем stock

Код: Выделить всё

stock StrCmp(string_1[], string_2[])
{
    if(!
strcmp(string_1string_2true))
    {
        return 
true;
    }
    return 
false;
}  


Ну и сделайте где вам удобно выдачу наручников. Просто нужно добавить:

Код: Выделить всё

GivePVarInt(playerid"Наручники"1);  


P.S PlayerInfo[playerid][pName] использую, как оптимизацию, в public OnplayerConnect

Код: Выделить всё

GetPlayerName(playeridPlayerInfo[playerid][pName], MAX_PLAYER_NAME);  


Ну и в сам массив игрока pInfo

Код: Выделить всё

pName


Код: Выделить всё

GetNameRank


Узнаёт название ранга, если кому-то надо, то вот:

Код: Выделить всё

stock GetNameRank(playerid)
{
    new 
atext[50];
    switch(
PlayerInfo[playerid][pMember])
    {
    case 
0:
        {
            
        }
    case 
1
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Президент";
            case 
9atext "Вице-президент";
            case 
8atext "Советник по СМИ";
            case 
7atext "Контролёр по здравоохранения";
            case 
6atext "Советник по внутренних дел";
            case 
5atext "Советник по армиям";
            case 
4atext "Советник по Мафиям Бандам";
            case 
3atext "Пресс-Секретарь";
            case 
2atext "Охраник";
            case 
1atext "Водитель";
            }
        }
    case 
2..4:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Мэр";
            case 
9atext "Заместитель Мэра";
            case 
8atext "Депутат";
            case 
7atext "Старший лицензёр";
            case 
6atext "Лицензёр";
            case 
5atext "Старший секретарь";
            case 
4atext "Секретарь";
            case 
3atext "Начальник Охраны";
            case 
2atext "Охраник";
            case 
1atext "Водитель";
            }
        }
    case 
5:
        {
            if(
PlayerInfo[playerid][pRank] == 10atext "Министр обороны";
        }
    case 
6,7:
    {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Генерал";
            case 
9atext "Полковник";
            case 
8atext "Подполковник";
            case 
7atext "Майор";
            case 
6atext "Капитан";
            case 
5atext "Летинант";
            case 
4atext "Старшена";
            case 
3atext "Ст.Сержант";
            case 
2atext "Сержант";
            case 
1atext "Рядовой";
            }
    }
    case 
8:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Адмирал";
            case 
9atext "Капитан 1 ранга";
            case 
8atext "Капитан 2 ранга";
            case 
7atext "Капитан 3 ранга";
            case 
6atext "Лейтенант";
            case 
5atext "Старшина";
            case 
4atext "Cт. сержант";
            case 
3atext "Сержант";
            case 
2atext "Ст.Матрос";
            case 
1atext "Матрос";
            }
        }
    case 
9:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Министр Внутренних Дел";
            case 
9atext "Зам.министра внутренних дел";
            case 
8atext "Ген.Прокурор";
            case 
7atext "Зам.ген прокурора";
            case 
6atext "Нач.национальной безопасности";
            case 
5atext "Прокурор";
            case 
4atext "Нач.Kадров";
            case 
3atext "Инспектор МВД";
            case 
2atext "Охранник МВД";
            case 
1atext "Водитель МВД";
            }
        }
    case 
10..12:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Генерал";
            case 
9atext "Полковник";
            case 
8atext "Подполковник";
            case 
7atext "Майор";
            case 
6atext "Капитан";
            case 
5atext "Ст.Лейтенант";
            case 
4atext "Лейтенант";
            case 
3atext "Ст.Сержант";
            case 
2atext "Сержант";
            case 
1atext "Рядовой";
            }
        }
    case 
13:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Директор";
            case 
9atext "Заместитель Директора";
            case 
8atext "Инспектор";
            case 
7atext "Глава отдела КСО";
            case 
6atext "Глава отдела ГНК";
            case 
5atext "Старший Агент";
            case 
4atext "Агент КСО";
            case 
3atext "Агент ГНК";
            case 
2atext "Младший Агент";
            case 
1atext "Стажёр";
            }
        }
    case 
14..16:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Директор";
            case 
9atext "Зам.Директора";
            case 
8atext "Редактор";
            case 
7atext "Помощник редактора";
            case 
6atext "Корректор";
            case 
5atext "Старший журналист";
            case 
4atext "Журналист";
            case 
3atext "Радиотехник";
            case 
2atext "Верстальщик новостей";
            case 
1atext "Помощник редакции";
            }
        }
    case 
17:
        {
            if(
PlayerInfo[playerid][pRank] == 10atext "Министр Здравоохранения";
        }
    case 
18..20:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Главный врач";
            case 
9atext "Заведующий отделением";
            case 
8atext "Старший специалист";
            case 
7atext "Младший специалист";
            case 
6atext "Врач-хирург";
            case 
5atext "Врач-терапевт";
            case 
4atext "Врач-участковый";
            case 
3atext "Старший медработник";
            case 
2atext "Младший медработник";
            case 
1atext "Интерн";
            }
        }
    case 
21:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Mad Dog";
            case 
9atext "Legend";
            case 
8atext "Des King";
            case 
7atext "Mobsta";
            case 
6atext "O.G.";
            case 
5atext "Gangsta";
            case 
4atext "Yuong";
            case 
3atext "Killa";
            case 
2atext "Hustle";
            case 
1atext "Playa";
            }
        }
    case 
22:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Big Willy";
            case 
9atext "Legend";
            case 
8atext "Faulks";
            case 
7atext "Federal Block";
            case 
6atext "Gangster";
            case 
5atext "Up Bro";
            case 
4atext "Gong bro";
            case 
3atext "Craker";
            case 
2atext "Junior Niga";
            case 
1atext "Blyde";
            }
        }
    case 
23:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Padre";
            case 
9atext "Ajunta";
            case 
8atext "Autoridad";
            case 
7atext "Bandido";
            case 
6atext "Ermanno";
            case 
5atext "Junior";
            case 
4atext "Macho";
            case 
3atext "Amigo";
            case 
2atext "Ladron";
            case 
1atext "Novato";
            }
        }
    case 
24:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Padre";
            case 
9atext "Nestro";
            case 
8atext "Tesosero";
            case 
7atext "Invasor";
            case 
6atext "Sabio";
            case 
5atext "Mirando";
            case 
4atext "Las Gerras";
            case 
3atext "Gettor";
            case 
2atext "Tirador";
            case 
1atext "Perrault";
            }
        }
    case 
25:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Padre";
            case 
9atext "Padrino";
            case 
8atext "Asesor";
            case 
7atext "Authoritarian";
            case 
6atext "Asesino";
            case 
5atext "Amigo";
            case 
4atext "Estimado";
            case 
3atext "Soldado";
            case 
2atext "Crime";
            case 
1atext "Novato";
            }
        }
    case 
26:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Don";
            case 
9atext "Consigliere";
            case 
8atext "Strada Boss";
            case 
7atext "Capo";
            case 
6atext "Soldato";
            case 
5atext "Combatendo";
            case 
4atext "Razionate";
            case 
3atext "Controllato";
            case 
2atext "Associato";
            case 
1atext "Novizio";
            }
        }
    case 
27:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Вор в законе";
            case 
9atext "Блатной";
            case 
8atext "Смотрящий";
            case 
7atext "Бригадир";
            case 
6atext "Зам.Бригадира";
            case 
5atext "Авторитет";
            case 
4atext "Бык";
            case 
3atext "Браток";
            case 
2atext "Босяк";
            case 
1atext "Шнырь";
            }
        }
    case 
28:
        {
            switch(
PlayerInfo[playerid][pRank])
            {
            case 
10atext "Кумитэ";
            case 
9atext "Сайко-комон";
            case 
8atext "Оядзи";
            case 
7atext "Камбу";
            case 
6atext "Со-хонбуте";
            case 
5atext "Вакагасира";
            case 
4atext "Сямэйгасира";
            case 
3atext "Кёдай";
            case 
2atext "Томодати";
            case 
1atext "Вакасю";
            }
        }
    }
    return 
atext;
}  


Надо обязательно нажать ПКМ и ЛКМ, можете изменить, 128 - ПКМ, она нужна чтобы правильно использовать функцию

Код: Выделить всё

GetPlayerTargetPlayer(playerid); 


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Уроки»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 3 гостя