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

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

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

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

Бомбы и "занятие" терроризмом (NEW)

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

Чемодан

Изучающий
Пользователь
Регистрация
11 Янв 2013
Сообщения
283
Лучшие ответы
0
Репутация
49
Так-с, коротко о командах и небольшое описание:
Вы покупаете бомбу, которую можно либо взорвать на себе (ком. "/boom"), либо заложить бомбу с задержкой в 1 минуту (ком. "/booms"). Кроме того, есть возможность взорвать бомбу детонатором (ком."/boomd"). Кстати, к персонажу прикрепляется обхект в виде бомбы.

Итак, первым делом, добавляем ко всем дефайнам:
PHP:
#define COLOR_RED 0xFFD9D991
new BombBuy, Bomba[MAX_PLAYERS],BombaOb[MAX_PLAYERS], BoomGotov[MAX_PLAYERS];
new OldWeapon[MAX_PLAYERS],WeaponRes[MAX_PLAYERS];
new Float:BombPos[MAX_PLAYERS][3];
forward BombTimer(playerid);
После этого, ищем паблик "public OnGameModeInit". И вставляем туда следующий код:
PHP:
BombBuy = CreatePickup(1239,23, -382.6660,-1426.5121,26.2410);
Create3DTextLabel("Покупка бомб",0x008080FF,-382.6660,-1426.5121,26.2410,40.0,0,1);
Далее, нужно обнудять кол-во бомб при заходе на сервер:
в public OnPlayerConnect:
PHP:
Bomba[playerid] = 0;
BoomGotov[playerid] = 0;
Теперь самое основное:
В public OnPlayerCommandText вписываем сами команды:
PHP:
if(strcmp(cmdtext, "/boom", true) == 0)
    {
    if(Bomba[playerid] == 0) return SendClientMessage(playerid,COLOR_RED,"У вас нет бомбы");
    new boom;
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    while(boom++ < 10)
    CreateExplosion(X+random(5),Y-random(5),Z,6,15.0);
    SendClientMessage(playerid, COLOR_RED, "Вы взорвали себя и возможно убили  людей");
    GameTextForPlayer(playerid, "~w~Bomb ~r~Explode",5000,1);
    RemovePlayerAttachedObject(playerid, 1);
        Bomba[playerid] = 0;
    return 1;
    }

    if(strcmp(cmdtext, "/booms", true) == 0)
    {
    if(Bomba[playerid] == 0) return SendClientMessage(playerid,COLOR_RED,"У вас нет бомбы");
    GetPlayerPos(playerid, BombPos[playerid][0],BombPos[playerid][1],BombPos[playerid][2]);
    SendClientMessage(playerid, COLOR_RED, "У вас есть 1 минута чтобы убежать");
    GameTextForPlayer(playerid, "~w~Time Bomb ~y~Placed",5000,1);
    BombaOb[BombaOb[playerid]] = CreateObject(1654, BombPos[playerid][0],BombPos[playerid][1]+0.25,BombPos[playerid][2]-0.9, 270.0,90.0,0.0, 150);
    ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.0,0,0,0,0,0);
    Bomba[playerid] = 0;
    SetTimerEx("BombTimer",1000*60,false,"i",playerid);
    RemovePlayerAttachedObject(playerid, 1);
        return 1;
        }

    if(strcmp(cmdtext, "/boomd", true) == 0)
    {
    if(Bomba[playerid] == 0) return SendClientMessage(playerid,COLOR_RED,"У вас нет бомбы");
    GetPlayerPos(playerid, BombPos[playerid][0],BombPos[playerid][1],BombPos[playerid][2]);
    BombaOb[BombaOb[playerid]] = CreateObject(1654, BombPos[playerid][0],BombPos[playerid][1]+0.25,BombPos[playerid][2]-0.9, 270.0,90.0,0.0, 150);
    ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.0,0,0,0,0,0);
    Bomba[playerid] = 0;
    BoomGotov[playerid] = 1;
    RemovePlayerAttachedObject(playerid, 1);
    GivePlayerWeapon(playerid,40,1);
    SendClientMessage(playerid,COLOR_RED,"Когда будете готовы , нажмите на детонатор для взрыва");
    GameTextForPlayer(playerid, "~w~Detonator Bomb ~y~Placed",5000,1);
        return 1;
        }

    if(strcmp(cmdtext, "/tp", true) == 0) return SetPlayerPos(playerid,-382.6660,-1426.5121,26.2410);
Небольшое дополнение к OnPlayerPickUpPickup:
PHP:
if(pickupid == BombBuy)
{
if(Bomba[playerid] == 1) return SendClientMessage(playerid, COLOR_RED, "У вас уже есть бомба");
ShowPlayerDialog(playerid,8000,DIALOG_STYLE_MSGBOX,"Покупка бомбы","Хотите ли вы купить бомбу за 10000$ ?","Купить","Нет");
}
Выводим диалог о покупке бомбы и добавляем персонажу объект:
В public OnDialogResponse:
PHP:
if(dialogid == 8000 && response)
{
Bomba[playerid] = 1;
ShowPlayerDialog(playerid,1500,DIALOG_STYLE_MSGBOX,"Инфо","Вы приобрели бомбу , используйте /boom чтобы взорвать ее\nлибо /booms чтобы поставить таймер\nлибо /boomd что использовать детонатор","Ок","");
GivePlayerMoney(playerid,-10000);
SetPlayerAttachedObject(playerid,1,1654,5,0.300000,0.000000,0.000000,-18.000000,-93.000000,-177.000000,1.000000,1.000000,1.000000);
return 1;
}
Взрываем бомбу
в OnPlayerKeyStateChange:
PHP:
if(newkeys == KEY_FIRE && BoomGotov[playerid] == 1 && GetPlayerOldWeapon(playerid) == 40)
{
    if(!IsPlayerInAnyVehicle(playerid))
    {
    new boom;
    while(boom++ < 10)
    CreateExplosion(BombPos[playerid][0]+random(5),BombPos[playerid][1]-random(5),BombPos[playerid][2],6,15.0);
    SendClientMessage(playerid, COLOR_RED, "Бомба уничтожена");
    GameTextForPlayer(playerid, "~w~Detonator Bomb ~r~Explode",5000,1);
    DestroyObject(BombaOb[playerid]);
    BoomGotov[playerid] = 0;
    }
    }
следующий шаг- добавление в public OnPlayerUpdate строчки:
PHP:
SetOldWeapon(playerid);
PHP:
Ну и финальный шаг, создаем "детонатор", ну и возвращаем персонажу прошлое оружие:
В любое место в моде (лучше куда-нибудь под конец), где все паблики, вставляем:
PHP:
public BombTimer(playerid)
    {
    new boom;
    while(boom++ < 10)
    CreateExplosion(BombPos[playerid][0]+random(5),BombPos[playerid][1]-random(5),BombPos[playerid][2],6,15.0);
    SendClientMessage(playerid, COLOR_RED, "Бомба уничтожена");
    GameTextForPlayer(playerid, "~w~Time Bomb ~r~Explode",5000,1);
    DestroyObject(BombaOb[playerid]);
    return 1;
    }
и где все Стоки:
PHP:
stock SetOldWeapon(playerid)
{
    new weaponid = GetPlayerWeapon(playerid);
    if(weaponid != GetPlayerOldWeapon(playerid))
    {
        if(GetPlayerOldWeapon(playerid) != 40)
        {
            OldWeapon[playerid] = weaponid;
            WeaponRes[playerid] = 0;
        }
        else
        {
            WeaponRes[playerid] ++;
            if(WeaponRes[playerid] >= 3)
            {
                OldWeapon[playerid] = weaponid;
                WeaponRes[playerid] = 0;
            }
        }
    }
    return true;
}

stock GetPlayerOldWeapon(playerid)
{
    return OldWeapon[playerid];
}

Автор данного скрипта: Mr.Brooks
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу