Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
BorizzK

Передача параметров в функцию и класс Param. Need help!

Ситуация такая

В функцию надо передать 27 разнашерстных параметров

если указывать больше 19 при запуске сервер крашит без крашлога и тп

Передавать через массивы? вариант, но хотелось бы сделать красиво-красиво

 

Взялся за класс Param

прикинул - Param'сы бывают от 1 до 5 параметровые

Значит можно передать 5 шт Param5 и 1 Param2

 

Взялся тестить

void FormingAreas()
{
		private ref Param5<string, int, vector, float, int> MainParams;
		MainParams									= new Param5<string, int, vector, float, int>("", 0, vector.Zero, 0.0, 0);
		MainParams.param1 								= "AREA 1";
		MainParams.param2 								= 1;
		MainParams.param3 								= vector.Zero;
		MainParams.param4 								= 1.1;
		MainParams.param5 								= 2;

        AddAreaParams(MainParams);
}

 

Собственно ошибка возникает тут

 

void AddAreaParams(Param p)
 {
  ref Areas Area        = new ref Areas;

  //AreaMainParams
  Param AreaMainParams  = Param.Cast(p);
  Area.name         	= AreaMainParams.param1; //318 строка
  Area.id         	= AreaMainParams.param2;
  Area.center       	= AreaMainParams.param3;
  Area.center[1]    	= GetGame().SurfaceY(Area.center[0], Area.center[2]);
  Area.radius       	= AreaMainParams.param4;
  Area.maxplayers      	= AreaMainParams.param5;

Тут про компиляции ошибочка

$CurrentDir://mpmissions//dayzOffline.chernarusplus//_MOD//StrikeAreas//StrikeAreasClass.c(318): Can't find variable 'param1'

 

Можно конечно определить MainParams в классе и передавать через него вызывая AddAreaParams без параметров

 

Но хотелось бы разобраться именно с таким вариантом

 

Спасибо!

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0
44 минуты назад, BorizzK сказал:

Передавать через массивы? вариант, но хотелось бы сделать красиво-красиво

 

а через массивы не красиво-красиво?

Share this post


Link to post
Share on other sites









  • 0

AntonivkA 

Не красиво

Ключевое разнотипность

Тип Param  в нативных классах много где используется именно для передачи различных РАЗНОТИПНЫХ параметров, поэтому хочу использовать тименно его.

 

 

 

 

Share this post


Link to post
Share on other sites
  • 0

Все

Разобрался

Усе получилось

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By thessend
      Начну сначала.
      У меня стоит радиационная зона на скриптах перенесенная в мод( с добавлением агента и лечением) собственно при нахождении в зоне накапливаются агенты(логично,да) и есть от этих агентов лечение, тоже добавленное на основе витаминок сделанное которое при использовании убирает N кол-во агентов. Их в пачке 10 штук. 
      Суть темы в том, что при использовании этой самой таблетки остальные таблетки становятся зараженными сальмонеллой. Откуда она берется я так и не смог выяснить вообще. 
      Если нужна еще какая то информация - пишите, дополню. 
       
       
    • By BorizzK
      В проверке где убит игрок
      Если игрок убит в сейфзоне
      Телепортим убивца на лобное место
      Убираем ему весь лут
      Публично казним!
       
      ну это потом
       
      пока просто p_Killer.SetHealth(0);
       
      Все как бы почти хорошо, кроме одного момента
      Функцию нужно вызвать не сразу, а с задержкой секунд 10
       
      что-то типа
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(p_Killer.KaznFunction, 10000, true);
       
      но это будет вызывать KaznFunction каждые 10 сек, а мне надо 1 раз
       
      Вопрос - как?
       
      Всем спасибо!))
       
      P.S.
      понятно что в своей функции я теоретически могу
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).Remove(p_Killer.KaznFunction);
       
       
    • By 123new
      Автор скрипта: http://s-platoon.ru/profile/48-nonameultima/
      Все благодарности за этот скрипт непосредственно автору скрипта, не мне!

       
      Установка:
      1. Описание: Создаем собственный класс, для сохранения логов.
      Код класса:
      class Ultima_Server_Class_Logs { private FileHandle fhandle; void Ultima_Server_Class_Logs() { } void ~Ultima_Server_Class_Logs() { } void SaveLog(string fName, string fLine) { if ( !FileExist(fName) ) { fhandle = OpenFile(fName, FileMode.WRITE); } else { fhandle = OpenFile(fName, FileMode.APPEND); } if ( fhandle == 0 ) { Print("[#Ultima]: [Журналы]: Не удалось открыть файл для записи: " + fName); Print("[#Ultima]: [Журналы]: [Запись]: " + fLine); return; } FPrintln(fhandle, fLine); CloseFile(fhandle); } } 2. Данный файл сохраняем под именем класса:
      Ultima_Server_Class_Logs.c
      И помещаем в папку:
      ....\DayZServer\scripts\5_Mission\mission
       
      Пример использования:
      *Для примера берем файл:
      missionServer.c
      В область переменных добавляем:
      private ref Ultima_Server_Class_Logs Log = new Ultima_Server_Class_Logs(); И далее в любой процедуре, можем логгировать события.
      К примеру так:
      Log.SaveLog("$profile:MyLogFile.txt", "Записываем строку");  
      Добавлено от 123new:
      Если у вас нет папки scripts в папке с сервером игры, откройте папку dta, распакуйте папку scripts из pbo-файла scripts.pbo и переместите в папку с сервером.
      Чтобы папка считывалась сервером, необходимо добавить параметр запуска сервера '-FilePatching'.
      Чтобы запись в файлы работала, необходимо добавить параметр запуска сервера '-scrAllowFileWrite'
    • By DrTauren
      Собственно, из названия понятно, что в этом гайде мы научимся отключать уровень стамины игрока, отключать усталость

      Инструкция:
      1) Находим файл dta/scripts.pbo и распаковываем его при помощи PBO Manager и копируем только что распакованную папку scripts в корневую папку сервера
      2) Открываем файл scripts/3_Game/constants.c и изменяем этот код под себя:
      const int STAMINA_DRAIN_STANDING_SPRINT_PER_SEC = 5; //в единицах (сколько единиц выносливости отбавляется при ускорении) const int STAMINA_DRAIN_CROUCHED_SPRINT_PER_SEC = 1; //в единицах (сколько единиц выносливости отбавляется при ускорении на корточках) const int STAMINA_DRAIN_PRONE_SPRINT_PER_SEC = 3; //в единицах (сколько единиц выносливости отбавляется при ускорении лёжа) const float STAMINA_DRAIN_HOLD_BREATH = 0.2; //в единицах (сколько единиц выносливости отбавляется при задержке дыхания) const int STAMINA_DRAIN_JUMP = 20; //в единицах (сколько единиц выносливости отбавляется при прыжке) const int STAMINA_DRAIN_MELEE_LIGHT = 5; //в единицах (сколько единиц выносливости отбавляется при лёгком ударе в ближнем бою) const float STAMINA_DRAIN_MELEE_HEAVY = 20; //в единицах (сколько единиц выносливости отбавляется при сильном ударе в ближнем бою) const int STAMINA_DRAIN_MELEE_EVADE = 8; //в единицах (сколько единиц выносливости отбавляется при уклонении) Таким образом мы можем отключить усталость игрока, стамина всегда будет максимальная. Для этого нужно всего лишь установить все параметры на значение 0
       
    • By MRX818
      как добавить свой класс при спавне.(для випок)
      я так понял надо в файле classConfig ?
      например так ["VIP Снайпер","FR_Assault_GL","SurvivorWcombat_DZ",["30Rnd_556x45_Stanag",2],["M4A1_AIM_CAMO"],"",[],[],0,20000,0], (а где прописывать для отдельного игрока).
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.