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

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

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

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

Сис-ма патронов как на A-RP [RLS]

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

Unreal

Компетентный
Автор системы: Anril13
Автор доработки: Unreal

И так начнем:

Ко всем - forward

PHP:
forward patron3dtextnow(); //форвард обновления 3д текста 
forward spawnpatron(); //форвард спавна патронов
Ко все new
PHP:
new Text3D:patron3dtext;
В enum Finfo вставляем:
PHP:
fpatron,
Далее:
в public LoadBankFrac вставляем:
PHP:
ini_getInteger(iniFile,"FracBank[0][fpatron]",FracBank[0][fpatron]);
И в public SaveBankFrac
PHP:
ini_setInteger(iniFile, "FracBank[0][fpatron]",FracBank[0][fpatron]);
В enum pInfo
PHP:
pPatron,
B public OnGameModeInit(playerid)
Вставляем:
PHP:
new str[256]; 
new patroni1 = FracBank[0][fpatron]; 
format(str, sizeof(str), "Склад патронов\n-{FFFFFF} На складу армии\n{FFA500} %d патрон(ов).",patroni1); 
patron3dtext = Create3DTextLabel( str, 0xFF0000FF,312.6434,-165.7492,999.6010,20.0,0,0 );
В OnPlayerConnect
PHP:
PlayerInfo[playerid][pPatron] = 0;
Далее: public ShowStats

Вставляем
PHP:
new patron = PlayerInfo[targetid][pPatron];
И ниже в cаму статистику где у нас вся информация, вставляем:
PHP:
format(str,sizeof(str),"\t{ffffff}Патроны при себе: \t\t\t{ffffff}%d \n",patron);
strcat(string,str);

Теперь идем в public OnGameModeInit()
и создаем там два таймера:
PHP:
SetTimer("patron3dtextnow",3000,true); // где 3000 - 3 секунды (обновялем 3д текст раз в 3 сек) 
SetTimer("spawnpatron",100000,true); // спавн патронов на зоне 51
Теперь в OnPlayerRegister
PHP:
ini_setInteger(File,"Patron",PlayerInfo[playerid][pPatron]);
в OnPlayerUpdateRL:
PHP:
ini_setInteger(File,"Patron",PlayerInfo[playerid][pPatron]);
В OnPlayerLogin:
PHP:
ini_getInteger(File,"Patron",PlayerInfo[playerid][pPatron]);
Теперь 2 паблика в конец мода:

PHP:
//------------обновление 3д текста патронов---- 
public patron3dtextnow() 
        { 
        new stringers[256]; 
        new patroni = FracBank[0][fpatron]; 
        format(stringers, sizeof(stringers), "Склад патронов\n-{FFFFFF} На складу армии\n{FFA500} %d патрон(ов).",patroni); 
        Update3DTextLabelText(patron3dtext, 0xFF0000FF, stringers); 
        } 
//----паблик спавна патронов------ 
public spawnpatron() 
        { 
        if(FracBank[0][fpatron] <= 10000) 
            { 
              new ammo; 
                 ammo = random(20); 
              FracBank[0][fpatron] +=ammo; 
              return 1; 
            } 
            return 0; 
        }
Так сис-му + 3д тексты с обновлением сделали.
Теперь перейдем делать пикап + чекпоинт как на ARP чтоб когда становились на него нам давали патроны постепенно.

ко всем new
PHP:
new patrons;
действие пикапа в OnPlayerPickUpPickup:

PHP:
if(pickupid == patrons)        
{      
  new string[64];
  if(PlayerInfo[playerid][pPatron] >= 150) return GameTextForPlayer(playerid, "~r~full", 1000, 1);       
 PlayerInfo[playerid][pPatron] += 3; // Можно создать рандом new rand = random(6) и вставить сюда       
 FracBank[0][fpatron] -= 3;               
 format(string,sizeof(string),"~g~+%d",PlayerInfo[playerid][pPatron]);       
 GameTextForPlayer(playerid, string, 500, 3); // ...        
}
Ну теперь сам пикап:
PHP:
patrons = CreatePickup(1238,23,312.6635, -165.6983, 998.0000);
Он у нас в интерьере(под землей) так же как и 3д текст.

Теперь создадим чекпоинт.
Ко всем new
PHP:
new checkis[MAX_PLAYERS];

В действие пикапа на вход в склад (pickupid == sklad[0] ) вставляем:
PHP:
SetPlayerCheckpoint(playerid,312.6434,-165.7492,999.6010,1.0);
               checkis[playerid] = 555;
Теперь в действие пикапа на выход из склада:
PHP:
        DisablePlayerCheckpoint(playerid);
            checkis[playerid] = 0;
Теперь действие самого чекпоинтa, не обязательно текст.
PHP:
     if(checkis[playerid] == 555)
        {
                 SendClientMessage(playerid,COLOR_BLUE,"By unreal специально для P-I");
            return true;
        }

Дополнительно:
Тоже моя команда для того чтоб делать оружие из определенного кол-ва матов и своих патронов:
PHP:
if(strcmp(cmd,"/makegun",true)==0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(!IsAGang(playerid))
            {
                SendClientMessage(playerid,COLOR_GREY,"Âû íå ñîñòîèòå â áàíäå!");
                return 1;
            }
            new x_weapon[256],weapon[MAX_PLAYERS],ammo[MAX_PLAYERS],price[MAX_PLAYERS];
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD1, " {ffa200}[INFO]:{ffffff} /makegun [ID ïåðñîíàæà/Èìÿ ïåðñîíàæà] [Íîìåð îðóæèÿ]");
                return 1;
            }
            giveplayerid = ReturnUser(tmp);
            if (IsPlayerConnected(giveplayerid))
            {
                if(giveplayerid != INVALID_PLAYER_ID)
                {
                    x_weapon = strtok(cmdtext, idx);
                    if(!strlen(x_weapon))
                    {
                        SendClientMessage(playerid, COLOR_GREEN, "________________________________________________");
                        SendClientMessage(playerid, COLOR_GREY, "{ffffff} {ffa200}[INFO]:{ffffff} /makegun [ID/Имя игрока] [Номер оружия.] [Патроны]");
                        SendClientMessage(playerid, COLOR_GREEN, "________________________________________________");
                        return 1;
                    }
                }
                tmp = strtok(cmdtext, idx); //aaeaai i?iaae
                  ammo[playerid] = strval(tmp);
                //if(strcmp(x_weapon,"knife",true) == 0) { if(PlayerInfo[playerid][pMats] > 99) { weapon[playerid] = 4; price[playerid] = 100; ammo[playerid] = 1; PlayerInfo[giveplayerid][pGun1] = 4; PlayerInfo[giveplayerid][pAmmo1] = 1; } else { SendClientMessage(playerid,COLOR_GREY,"   Not enough Materials for that Weapon!"); return 1; } }
                if(strcmp(x_weapon,"1",true) == 0) { if(PlayerInfo[playerid][pMats] > 5) { weapon[playerid] = 23; price[playerid] = 5; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 23; PlayerInfo[giveplayerid][pAmmo2] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"Недостаточно металла или патронов для этого оружия!"); return 1; } }
                else if(strcmp(x_weapon,"2",true) == 0) { if(PlayerInfo[playerid][pMats] > 3) { weapon[playerid] = 4; price[playerid] = 30; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 14; PlayerInfo[giveplayerid][pAmmo1] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"Недостаточно металла или патронов для этого оружия!"); return 1; } }
                else if(strcmp(x_weapon,"3",true) == 0) { if(PlayerInfo[playerid][pMats] > 7) { weapon[playerid] = 24; price[playerid] = 110; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 24; PlayerInfo[giveplayerid][pAmmo2] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"   Недостаточно металла или патронов для этого оружия!"); return 1; } }
                else if(strcmp(x_weapon,"4",true) == 0) {    if(PlayerInfo[playerid][pMats] > 9) { weapon[playerid] = 29; price[playerid] = 9; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 29; PlayerInfo[giveplayerid][pAmmo2] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"Недостаточно металла или патронов для этого оружия!"); return 1; } }
                else if(strcmp(x_weapon,"5",true) == 0) {    if(PlayerInfo[playerid][pMats] > 11) { weapon[playerid] = 25; price[playerid] = 11; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 25; PlayerInfo[giveplayerid][pAmmo2] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"Недостаточно металла или патронов для этого оружия!!"); return 1; } }
                //else if(strcmp(x_weapon,"spas12",true) == 0) { if(PlayerInfo[playerid][pMats] > 599) { weapon[playerid] = 27; price[playerid1] = 600; ammo[playerid] = 50; PlayerInfo[giveplayerid][pGun2] = 27; PlayerInfo[giveplayerid][pAmmo2] = 50; } else { SendClientMessage(playerid,COLOR_GREY,"   Not enough Materials for that Weapon!"); return 1; } }
                else if(strcmp(x_weapon,"6",true) == 0) { if(PlayerInfo[playerid][pMats] > 13) { weapon[playerid] = 30; price[playerid] = 13; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 30; PlayerInfo[giveplayerid][pAmmo2] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"Недостаточно металла или патронов для этого оружия!"); return 1; } }
                else if(strcmp(x_weapon,"7",true) == 0) { if(PlayerInfo[playerid][pMats] > 14) { weapon[playerid] = 31; price[playerid] = 14; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 31; PlayerInfo[giveplayerid][pAmmo2] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"Недостаточно металла или патронов для этого оружия!"); return 1; } }
                else if(strcmp(x_weapon,"8",true) == 0) { if(PlayerInfo[playerid][pMats] > 16) { weapon[playerid] = 33; price[playerid] = 16; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 33; PlayerInfo[giveplayerid][pAmmo2] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"Недостаточно металла или патронов для этого оружия!"); return 1; } }
                else { SendClientMessage(playerid,COLOR_GREY,"Неверный номер оружия!"); return 1; }
                if (ProetectorS(5.0, playerid, giveplayerid))
                {
                    ConsumingMoney[playerid] = 1;
                    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                    GetPlayerName(playerid, sendername, sizeof(sendername));
                    format(string, sizeof(string), "%s изготовил оружие из %s кг. металла ",sendername,price[playerid],                         giveplayer,x_weapon, ammo[playerid], price[playerid]);
                    PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
                    SendClientMessage(playerid, COLOR_GRAD1, string);
                    format(string, sizeof(string), "   Вы получили оружие с %d боеприпасами от %s.", ammo[playerid], sendername);
                    SendClientMessage(giveplayerid, COLOR_GRAD1, string);
                    PlayerPlaySound(giveplayerid, 1052, 0.0, 0.0, 0.0);
                    Proetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                    GiveFreemanGun(giveplayerid,weapon[playerid],ammo[playerid]);
                    PlayerInfo[playerid][pMats] -= price[playerid];
                }
            }
            else
            {
                format(string, sizeof(string), "%d не активный игрок", giveplayerid);
                SendClientMessage(playerid, COLOR_GRAD1, string);
            }
        }
        return 1;
    }


Cкрин:
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу