Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
123new

Триггеры с газом[1.0][By NoNameUltima]

Рекомендованные сообщения

123new Я делал отдельным таймером на стороне сервера - норм работало - на ШТАТНЫЕ лагания сервера не влияло

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах





123new На клиентах - жалоб не возникало

на 4х зонах дымило до 100 шашек из под земли

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В мастерской мод прикольный зараженных зон Toxic Zone как раз дымом

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

danisimus и чо?

 тут за серверную часть обсуждают, без клиентского мода.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Парни, помогите с триггерами газа в 1.04. Они работают, но не видит, что на персонаже противогаз.

 

Скрытый текст

class Zone {
    int id;
    int type;
    vector pos;
    float radius;
}

enum ZoneType {
    SAFE,
    GAS,
    RAD,
    BIO
}

ref array<ref Zone> ga_zones = new array<ref Zone>;

ref ControllerZones ctrl_zones = new ControllerZones;

class ControllerZones {
    void ControllerZones() {
        
        int id = 0;
        vector pos;
        float radius;
        int type = 0;

        id = 1; // Pavlovo
        pos = "2125 0 3400"; 
        radius = 200.0;
        AddZone(id, pos, radius);
        
        id = 2; // Zeleno
        pos = "2530 0 5112";
        radius = 150.0;
        AddZone(id, pos, radius);
        
        id = 3; // Dichina
        pos = "4524 0 8290";
        radius = 50.0;
        AddZone(id, pos, radius);
        
        id = 4; // Mushkino
        pos = "332 0 9368";
        radius = 100.0;
        AddZone(id, pos, radius);
        
        id = 5; // Aero SW
        pos = "4586 0 9533";
        radius = 220.0;
        AddZone(id, pos, radius);
        
        id = 6; // Aero SE
        pos = "5177 0 9960";
        radius = 350.0;
        AddZone(id, pos, radius);
        
        id = 7; // Aero W
        pos = "4228 0 10400";
        radius = 350.0;
        AddZone(id, pos, radius);
        
        id = 8; // Aero E
        pos = "4785 0 10530";
        radius = 250.0;
        AddZone(id, pos, radius);
        
        id = 9; // Aero N
        pos = "4290 0 10956";
        radius = 250.0;
        AddZone(id, pos, radius);
        

        
        GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(CheckZones, 5000, true);
    }
    
    void ~ControllerZones() {
    }
    
    void AddZone(int id, vector pos, float radius, int type = ZoneType.BIO) {
        ref Zone zone = new ref Zone;
        
        zone.id = id;
        zone.pos = pos;
        zone.radius = radius;
        zone.type = type;

        ga_zones.Insert(zone);
    }
    
    bool InZone(PlayerBase player, ref Zone zone) {
        vector player_position = player.GetPosition();
        player_position[1] = 0;

        if( (vector.Distance(player_position, zone.pos)) < zone.radius ) {
            
            EntityAI attachment;
            ItemBase item;
            string className;
            float biosafe = 0;
            
            attachment = player.FindAttachmentBySlotName("Mask");
            if ( attachment && attachment.IsItemBase() ) {
                item        =    Class.Cast(attachment);
                className    =    item.GetType();
                if ( className.Contains("GP5GasMask") ) {
                    //return true; // TEMP FIX
                    biosafe = biosafe + 1.0;                }
            }

            }
            
            if ( biosafe > 1.0 )
                return true;
            
            float damage_player;
            float damage_zone = 6.0;
            damage_player = player.GetHealth("GlobalHealth", "Health");
            player.SetHealth("GlobalHealth", "Health", damage_player - (damage_zone - ((damage_zone / 6) * biosafe)));
            
            player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_COUGH);
            
            Param1<string> m_MessageParam = new Param1<string>("Вам нужны химзащита и противогаз!");
            GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_MessageParam, true, player.GetIdentity()); 
            
            return true;
        }
        
        return false;
    }
    
    void CheckZones() {
        ref array<Man> players = new array<Man>;
        GetGame().GetPlayers( players );
        
        for ( int i = 0; i < players.Count(); i++ )
        {
            PlayerBase player;
            Class.CastTo(player, players.Get(i));
            
            for ( int j = 0; j < ga_zones.Count(); j++ ) {
                if(InZone(player, ga_zones.Get(j))) {
                    break;
                }
            }
        }
    }
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 09.07.2019 в 16:56, 123new сказал:

SinSin визуальных эффектов нет в dayz

Похоже, вы не правы.

S3ZdaMT.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

SinSin на клиенте есть
на сервере для клиента нет
хотя

Вот soundevents оказывается работает с сервера, но там ограниченное кол-во звуков

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 12.08.2019 в 05:04, SinSin сказал:

Похоже, вы не правы.

S3ZdaMT.png

это оффлайн, изменения на клиентской стороне в клиент-серверном соединении тока на клиенте можно внести, т.е. априори мод, в теме обсуждение имелось ввиду чисто от сервера, без моддинга сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Народ,как в скрипте прописать фильтры для модовских противогазов,чтобы они давали защиту когда одеты на противогаз?

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

BorizzK А как,можно хотя бы написать пропись.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Dread ну проверка так же как у игрока

проверили игрока

нашил противогаз

проверили аттачмент у противогаза

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
20.09.2019 в 21:44, BorizzK сказал:

Dread ну проверка так же как у игрока

проверили игрока

нашил противогаз

проверили аттачмент у противогаза

 

Подсказали бы нам убогим)))

player.FindAttachmentBySlotName("Mask").FindAttachment()

player.Slot("Mask").FindAttachment()

 

как оть правильно будет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Никто не подскажет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
09.07.2019 в 19:30, BorizzK сказал:

grehoff партикли тут не при чем совершенно - партикли ток на клиенте

тут все просто

спавним на стороне сервера дымовые шашки ниже уровня земли - метров 5
ну и включаем

 

 

 


EntityAI Effect = EntityAI.Cast(GetGame().CreateObject( "класснеймдымовойшашки", "1000 2 1000" )); //Создаем обьект шашки
SmokeGrenadeBase smokegrenade = NULL; //инициализируем переменную класса SmokeGrenadeBase (дымовой шашки)
smokegrenade = SmokeGrenadeBase.Cast(Effect); //апкастим созданный обьект в класс дамовой шашки
if (smokegrenade) smokegrenade.Unpin(); //если все успешно прошло включаем гранату
smokegrenade.SetSynchDirty(); //вызываем принудительную синхру этой шашки с клиентами / хотя и без этого работает

усе - пошел дым - и игроки это у видят

на и что бы дым не заканчивался в процессе проверок зон я проверяю гранату на предмет состояния и если она потухла - делаю переспавн
if (smokegrenade)
    if (smokegrenade.GetSmokeGrenadeState() == ESmokeGrenadeState.NO_SMOKE)
	{
  	 //граната не дымит вызываем респавн
	 smokegrenadeю.SetHealth(0);
	 smokegrenade.Delete(); //Удаляем - но она не всегда удаляется, однако она пропадет сама со временем
	}
  //граната исчезла вызываем респавн
}

Немного изменил про проверку и респавн

как и где добавить то

Изменено пользователем dimker12345 (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
22.08.2019 в 11:29, 123new сказал:

это оффлайн, изменения на клиентской стороне в клиент-серверном соединении тока на клиенте можно внести, т.е. априори мод, в теме обсуждение имелось ввиду чисто от сервера, без моддинга сделать.

Было бы интересно почитать про реализацию данного скрипта в виде мода с эффектами на клиентской стороне.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, SinSin сказал:

Было бы интересно почитать про реализацию данного скрипта в виде мода с эффектами на клиентской стороне.

в мастерской торсик зон есть, этого за глаза хватает как по мне. Желающие могут обучиться скриптингу самостоятельно и дописать нужные эффекты

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не понимаю из за чего такая дискуссия если это всё не работает?)
Хотя на дворе уже 1.08
Или только у меня?
1149021362_.png.5eab2906c5493556dcea02b0670e0f92.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
27 минут назад, Schigari сказал:

Не понимаю из за чего такая дискуссия если это всё не работает?)
Хотя на дворе уже 1.08
Или только у меня?
1149021362_.png.5eab2906c5493556dcea02b0670e0f92.png

У тебя этот скрипт есть уже или аналогичный с таким же названием класса

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, 123new сказал:

У тебя этот скрипт есть уже или аналогичный с таким же названием класса

Вот и я думаю, от куда может взяться этот класс на новом, вчера скачанном, локальном сервере, где из модов только:
"-mod=@CF;@ToxicZone;@MedicalAttention;@AP Zombie Animals;@VPPAdminTools;@VPPNotifications"
Посмотрел в init.c и там такого класса нет.
Загадка!
В самом скрипте это есть только в двух строках.
enum ZoneType {

void AddZone(int id, vector pos, float radius, int type = ZoneType.BIO) {

Отключал мод Toxic Zone, не помогло.
идеи закончились...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1/2 ОФФ @VPPNotifications кстати дааано не нужен

Блин

Когда же народ начнет читать дискрипшены к модам и их обновлениям

 

По ошибке

смотрите

может вы скрипт 2 раза где подключили или он в файле 2 раза (копипастой) присутствует

чудес не бывает

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот так я подключил файл. Что могло пойти не так?)

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: 123new
      Автор скрипта: http://s-platoon.ru/profile/48-nonameultima/
      Все благодарности за этот скрипт непосредственно автору скрипта, не мне!
       
      В данной теме, расскажу как сделать зараженные газом области на карте.
      Автор: NoNameUltima
      1. Открываем на сервере файл: missionServer.c
      2. После строки:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(this.UpdatePlayersStats, 30000, true); Добавляем:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(this.GAS_ZONE_TRIGGER, 10000, true); *10000 - Время в мс(10 секунд). С такой частотой будет наноситься урон в данной области.
      После строки:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).Remove(this.UpdatePlayersStats); Добавляем:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).Remove(this.GAS_ZONE_TRIGGER); Ищем строку:
      void UpdatePlayersStats() Вставляем ВЫШЕ нее, следующий код:
      void GAS_ZONE_TRIGGER() { /* GAS_ZONE_TRIGGER Автор: NoNameUltima skype: hf-trade */ // Зараженные зоны TVectorArray gas_points = {"13249 0 3962", "6389 0 2683", "6612 0 2561"}; // Массив намордников TStringArray gas_masks = {"GasMask", "GP5GasMask"}; // Радиус зон int radius = 350; // Наносимый урон float damage_value = 10; ref array<Man> players = new array<Man>; GetGame().GetPlayers( players ); PlayerBase player; vector position_player; int x; bool isGasMask; int attCount; int attIdx; EntityAI attachment; ItemBase item; string className; float damage_player; for (int i = 0; i < players.Count(); i++) { Class.CastTo(player, players.Get(i)); position_player = player.GetPosition(); for (x = 0; x < gas_points.Count(); x++) { if ( (vector.Distance(position_player, gas_points.Get(x))) < radius ) { isGasMask = false; attCount = player.GetInventory().AttachmentCount(); for (attIdx = 0; attIdx < attCount; attIdx++) { attachment = player.GetInventory().GetAttachmentFromIndex(attIdx); if ( attachment.IsItemBase() ) { item = Class.Cast(attachment); className = item.GetType(); if ( gas_masks.Find(className) >= 0 ) { //Print ("Намордник найден!"); isGasMask = true; break; } } } if (isGasMask == false) { //Print ("Намордник не найден!"); damage_player = player.GetHealth("GlobalHealth", "Health"); player.SetHealth("GlobalHealth", "Health", damage_player - damage_value); } } } } } P.S.
      1. Так же можно изменить формат массива, и сделать зоны с разным радиусом
      2. Можно при желании добавить вывод оповещения, в зараженных зонах.
      *Скрипт предоставлен мной, в обрезанном виде намерено - остальное на Ваш вкус и цвет
      Изменено 4 октября пользователем NoNameUltima
       
      Добавлено от 123new:
      Файл missionServer.c располагается в {папка сервера}\scripts\5_Mission\MissionServer\missionServer.c
      Если у вас нет папки scripts в папке с сервером игры, откройте папку dta, распакуйте папку scripts из pbo-файла scripts.pbo и переместите в папку с сервером.
      Чтобы папка считывалась сервером, необходимо добавить параметр запуска сервера '-FilePatching'.
      P.S. Гайд не проверялся на актуальной версии серверной части игры со steam!
    • Автор: NotMeyson404
      Создал триггер в редакторе, что бы при заходе в область триггера играла музыка (Проверил в редакторе все работате на ура), сохранил как положено, закинул все файлы на сервер arma 3 epoch, и не работает ничего, пол дня провозился....подскажите как быть?
       
      class Item130
      {
      dataType="Trigger";
      position[]={7850.2622,17.753777,11198.521};
      angle=4.7678905;
      class Attributes
      {
      onActivation="1 fadeMusic 1; playMusic ""sidr11"";";
      onDeactivation="1 fadeMusic 0;";
      sizeA=3;
      sizeB=7;
      sizeC=4;
      repeatable=1;
      activationBy="ANY";
      isRectangle=1;
      isServerOnly=1;
      };
      id=40;
      type="EmptyDetectorArea10x10";
      atlOffset=-0.052999496;
      };
      class Item131
      {
      dataType="Trigger";
      position[]={7853.6118,17.391575,11197.52};
      angle=4.6931028;
      class Attributes
      {
      onActivation="playSound ""sidr22"";";
      onDeactivation="playSound ""sidr33"";";
      sizeA=2;
      sizeB=2;
      sizeC=4;
      repeatable=1;
      activationBy="ANY";
      isRectangle=1;
      isServerOnly=1;
      };
      id=41;
      type="EmptyDetectorArea10x10";
      atlOffset=0.1210022;
      };
    • Автор: exploadead
      Привет всем! Арма 1.58 Эпоч 0380 Пытаюсь перенести триггеры с 1.56 армы на 1.58....   Вот например такая конструкция по удалению ботов из зоны успешно работала на 1.56:   class Sensors { items=1; class Item0 { position[]={13325,0,14515}; a=200; b=200; activationBy="GUER"; repeating=1; interruptable=1; age="UNKNOWN"; expActiv="{deleteVehicle _x} forEach thisList;"; class Effects { }; }; };    
      Но в 1.58 появился новый общий для всего класс class Entities. Уже пробовал вот так:      
      class Entities { items=1; class Item1 { dataType="Trigger"; position[]={13325,0,14515}; class Attributes { name="delbot"; onActivation="{deleteVehicle _x} forEach thisList;"; sizeA=200; sizeB=200; repeatable=1; interruptable=1; activationBy="GUER"; }; id=210; type="EmptyDetector"; }; };    
      Но не сработало((... пробовал то же самое прямо в редакторе сделать... на 1.56 получалось... на 1.58 не пашет((
    • Автор: Mac2706
      Создал Триггер на определённых координатах, который должен вызывать скрипт, но когда захожу в триггер ничего не происходит.Триггер динамический :
       
       
      Я подозреваю, что это происходит, потому что скрипт исполняется только на стороне клиента и не передаёт данные на сервер Danger.Sqf
  • Наш выбор

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.