Форма входа
 
Приветствуем тебя, корсар Юнга!

Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!


Купить игры
 



Чат
 
500


Статистика
 
Пользователи, посетившие сайт за текущий день:
Andrey__3010, Ramaloce, Kriogener, ukdouble1
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

  • Страница 8 из 9
  • «
  • 1
  • 2
  • 6
  • 7
  • 8
  • 9
  • »
Модератор форума: NikK  
Addon Maker. Урок № 1. Добавить новый предмет в игру.
ReborodaДата: Вторник, 25.03.2014, 01:27 | Сообщение # 141
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
Цитата
Весь массив предметов, описанный в inititems, генерируется в начале игры...

Похоже что не только предметов. В нашем аддоне мы зафиксили лесничный марш дома в Кумане (модель из кс). Прописали ее в Cumana.c как .always и в итоге: ничего не изменилось! Со старой сохраненки. А вот при старте новой игры - любо дорого посмотреть, все на месте.


- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться?
- Да я вообще только одним глазком...
NathanielДата: Среда, 26.03.2014, 08:44 | Сообщение # 142
Контр-адмирал
Группа: Капитан
Сообщений: 8036
Награды: 347
Репутация: 1845
Статус: В открытом море
Цитата Reboroda ()
при старте новой игры - любо дорого посмотреть, все на месте

Что вполне логично! В массивы записывается очень много данных... И далеко не только предметы и NPC...


Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор.
Но я не нашёл там никого, кто не был бы моим другом!
ReborodaДата: Понедельник, 21.04.2014, 00:53 | Сообщение # 143
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
Такой вопрос:
Как сделать проверяльщик минимального HP у перса? Чтоб по достижению "порога" (минимума HP, напр = 10), у данного перса (допустим оффа) отбирался один предмет (напр бутыль вина с ядом), и выдавался другой (напр пустая бутыль). Т.е не успел отобрать яд у живого - он ее всю выпил.

Я пробовал юзать стандартную функцию "Квест после боя":
Код
void LAi_SetCheckMinHP(aref chr, float min, bool immortal, string quest)
{
    if(min < 0.9999999) min = 0.9999999;
    chr.chr_ai.hpchecker = min;
    chr.chr_ai.hpchecker.quest = quest;
    chr.chr_ai.hpchecker.immortal = immortal;
}

...Но она вызывает квест, а когда прописываешь в кейс нового квеста:
Код
TakeNItems(chr, "пустая бутыль",   1); TakeNItems(chr, "ядовитое вино",   -1);

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

Добавлено (21.04.2014, 00:53)
---------------------------------------------
А вообще я пробовал просто добавлять трупу новый предмет - пустую бутыль, с последующим вычитанием имевшейся полной, т.е ставил условие на наличие полной бутыли и смерти перса, в замен - выдачу пустой бутыли и вычет полной. Однако у меня ничего не получилось, у трупа пустой бутылки не обнаруживалось, полная оставалась на месте.(


- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться?
- Да я вообще только одним глазком...


Сообщение отредактировал Reboroda - Понедельник, 21.04.2014, 00:56
MettДата: Понедельник, 21.04.2014, 01:36 | Сообщение # 144
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
Код
case "1":
sld = CharacteFromId("Вася");
LAi_SetCheckMinHP(sld, 10.0, 0, "2");
break;

case "2":
sld = CharacteFromId("Вася");
TakeNItems(sld, "пустая бутыль", 1);
TakeNItems(sld, "ядовитое вино", -1);
break;


Что толку, если не можешь сделать мир лучше.
ReborodaДата: Среда, 30.04.2014, 19:56 | Сообщение # 145
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
Mett, понял, спасибо.

Добавлено (25.04.2014, 11:12)
---------------------------------------------
У меня все мушкетеры не хотят экипироваться добавленными в игру новыми мушкетами.
Никак не могу разобраться, в чем проблема. Попробовал экипировать их родным двуствольным квестовым, при этом конечно в файле items.c снял запрет на экипировку им

Код
// if(arItem.id == "mushket2x2") return false;
. Но и родным мушкетом они экипироваться не хотят. Тупо ходят с пустыми руками в режиме анимации мушкетера. Может кто сталкивался с подобной проблемой? Как решить? Что исправить?

Добавлено (26.04.2014, 18:25)
---------------------------------------------
Вопрос снимаю, тк осилил и это дело.) Как оказалось, ограничение стоит в файле characterUtilite.c, что в папке characters. Там есть строки кода:

Код
   if (chref.id == "OffMushketer")
    {
     if (groupName == GUN_ITEM_TYPE && itemID != "mushket2x2") return;
    }
    else
    {
     if (groupName == GUN_ITEM_TYPE && itemID != "mushket") return;
    }
   }
  }
  else
  {
   if (groupName == GUN_ITEM_TYPE && itemID == "mushket") return;
   if (groupName == GUN_ITEM_TYPE && itemID == "mushket2x2") return;
  }


Тут все понятно, если квестовый офф не имеет своего двуствольника - он забивает на экипировку полностью, (тк его экипировка стоит первым делом, и если условие не срабатывает - return). :) Затем прописано, мол если не "OffMushketer", то если у него нет фитильного мушкета - он тоже забивает на экипировку чем либо другим, вот почему даже двустволку солдафоны не брали. Вот такая система.

Добавлено (30.04.2014, 19:56)
---------------------------------------------
А как изъять важный добавленный айтем у трупа до обыска, но так чтобы остальные обязательно остались. Дело в том, что если отключить "chr.SaveItemsForDead", лут у трупа - всякая рандомная ерунда, если - включить, то ГГ может заполучить то, что ему нельзя, кроме того, что можно. Есть варианты?


- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться?
- Да я вообще только одним глазком...
korsar01Дата: Среда, 30.04.2014, 20:09 | Сообщение # 146
Мичман
Группа: Корсар
Сообщений: 186
Награды: 6
Репутация: 46
Статус: В открытом море
Цитата Reboroda ()
изъять важный добавленный айтем у трупа до обыска

Код
TakeItemFromCharacter(chr, "id");
ReborodaДата: Среда, 30.04.2014, 21:20 | Сообщение # 147
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
Цитата korsar01 ()
TakeItemFromCharacter(chr, "id");

Так он его изымает до смерти!)) Я забыл уточнить, в данном случае, важный айтем - квестовый мушкет, при его изъятии до смерти - мушкетер бегает с голыми руками. Вроде как chr относится к живому, а у трупа как? Я знаю, напр, что RemoveAllCharacterItems(chr, false) - трет все предметы и золото по желанию (true - трет, false - оставляет), но опять же - у живого...

Добавлено (30.04.2014, 21:07)
---------------------------------------------
Вот такой вар-нт, с проверкой на труп или нет, тоже не прокатывает:

Код
    if(CheckAttribute(chr, "chr_ai.hp") == false)
      {
     RemoveAllCharacterItems(chr, false) // тереть всё
     GiveItem2Character(chr, "тот что должен остаться");
      }

Добавлено (30.04.2014, 21:20)
---------------------------------------------
Точно, эт разовая проверка при загрузке...


- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться?
- Да я вообще только одним глазком...
MettДата: Среда, 30.04.2014, 22:03 | Сообщение # 148
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
Reboroda,
Код
if(CheckAttribute(chr, "chr_ai.hp") && stf(chr.chr_ai.hp) == 0.0)


Что толку, если не можешь сделать мир лучше.
ReborodaДата: Среда, 30.04.2014, 23:06 | Сообщение # 149
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
Mett, не срабатывает( Все предметы остаются в трупе.
Прописал так:

Код
    chr.SaveItemsForDead = true;
     if(CheckAttribute(chr, "chr_ai.hp") && stf(chr.chr_ai.hp) == 0.0)
      {
RemoveAllCharacterItems(chr, false)
GiveItem2Character(chr, "тот что должен остаться");
      }

Добавлено (30.04.2014, 23:00)
---------------------------------------------
Упс. ";" забыл поставить после терки....

Добавлено (30.04.2014, 23:06)
---------------------------------------------
Нет, по прежнему, не срабатывает.(


- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться?
- Да я вообще только одним глазком...
MettДата: Среда, 30.04.2014, 23:19 | Сообщение # 150
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
а в какую функцию дописываешь фишку, или функция новая?
просто можно было бы сделать так

Код
if(chr.id == "нужный_НПС")
{
RemoveAllCharacterItems(chr, false);
GiveItem2Character(chr, "тот что должен остаться");
}


и дописать такой участок в функцию, которая отвечает за смерть НПСа
Код
void LAi_Character_Dead_Process(aref chr)


Что толку, если не можешь сделать мир лучше.
ReborodaДата: Вторник, 27.05.2014, 12:23 | Сообщение # 151
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
В bool LAi_CreateEncounters(ref location), которая энкаунтеров креачит, типа патруля там и тд...

Добавлено (01.05.2014, 00:42)
---------------------------------------------
Прописал в void LAi_Character_Dead_Process(aref chr), так и осталось все, нифига не пойму в чем дело. Ну и ладно, придумаю что-то другое. Зато интересный прикол, когда я добавил эту тему в LAi_CreateEncounters, индейцы перестали воевать, признали таки в ГГ безобидного ингиза.))) Буду разбираться в чем соль.

Добавлено (27.05.2014, 12:02)
---------------------------------------------
Разобрался) Я случайно исправил в следующем коде минус "-1" на плюс "+1":

Код
LAi_SetCheckMinHP(chr, LAi_GetCharacterHP(chr)-1, true, "LandEnc_RaidersBeforeDialog");


Индейцы действовали как подранки, только без ранения. Сразу атаковали. jokingly

Добавлено (27.05.2014, 12:23)
---------------------------------------------
Я сделал рэндом код, чтоб индейцы сами выбирали: мачить либо угрожать диалогом. В 50% нападут без предупреждения короче.)

Код
     if (rand(10) > 5)
      {
     LAi_SetCheckMinHP(chr, LAi_GetCharacterHP(chr)-1, true, "LandEnc_RaidersBeforeDialog");
      }else
       {
     LAi_SetCheckMinHP(chr, LAi_GetCharacterHP(chr)+1, true, "LandEnc_RaidersBeforeDialog");
       }


Возможно, кому-нибудь пригодится.


- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться?
- Да я вообще только одним глазком...
MettДата: Вторник, 27.05.2014, 23:54 | Сообщение # 152
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
Цитата Reboroda ()
В 50% нападут без предупреждения короче.)

можно было бы и так
Код
if(rand(1)==0)


Что толку, если не можешь сделать мир лучше.
ReborodaДата: Среда, 28.05.2014, 02:42 | Сообщение # 153
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
Mett, это да.) Так типа, того, полегче движку чтоль?))

- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться?
- Да я вообще только одним глазком...
MettДата: Среда, 28.05.2014, 04:24 | Сообщение # 154
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
Цитата Reboroda ()
Так типа, того, полегче движку чтоль?))

ну, думаю, что да.. в случае 50на50 я б использовал свой вариант)


Что толку, если не можешь сделать мир лучше.
ReborodaДата: Суббота, 31.05.2014, 19:49 | Сообщение # 155
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
Я тут как-то раньше спрашивал, можно ли сделать предмет, типа черной метки, или проклятого амулета сектантов, способный снимать с владельца "иммунитет" (отключку френдлифаера для своей команды). Я нашел способ это сделать, однако пока не уверен точно, будут ли какие-нибудь дурные последствия от него в игре. =)

Код снимает с носящего атрибут "chr_ai.group" (чувак - принадлежит группе), ну а если "проклятого" предмета у перса не будет - иммунитет восстанавливается:
Код
    if(GetCharacterItem(chr, "jewelry6") > 0)
     {
      DeleteAttribute(chr, "chr_ai.group");
     }else{
      chr.chr_ai.group = true;
     }


Самое смешное, что если сей предмет имеет сам Гг - он может крошить в капусту любого из своих, а те, в свою очередь, покрошат его в схватке френдлифаером.

Зы. Теперь только проверить, не приведет ли это к глюкам в ходе игры, это - раз, и добавить код, от которого покоцанный героем офф становился бы врагом и принимал решение контратаковать имеющ оружием.) Это - два. И в угоду прокачки нормуль и правильнее такая реакция. Но в репу Гг минус однозначно. Кто-нибудь сможет набросать такую добавку?

Добавлено (31.05.2014, 19:49)
---------------------------------------------
Плохая была идея)) Не пробуйте этот код! Лучше удалить этот пост. От этого кода все путается с врагами-друзьями. Враги перестают получать повреждения, отказываются бить и вообще мраки. Cold


- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться?
- Да я вообще только одним глазком...


Сообщение отредактировал Reboroda - Воскресенье, 01.06.2014, 00:07
MettДата: Воскресенье, 01.06.2014, 18:15 | Сообщение # 156
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
Reboroda, пост пусть остается, чтоб другие знали, что такой код использовать нельзя!)

Что толку, если не можешь сделать мир лучше.
SalkynДата: Среда, 29.10.2014, 21:34 | Сообщение # 157
Матрос
Группа: Корсар
Сообщений: 31
Награды: 0
Репутация: 10
Статус: В открытом море
мастера есть тут еще живые?)) у меня вопрос по поводу дополнительных сундуков/рюкзаков - эт что такое и где они появятся в итоге?
fedya228Дата: Вторник, 07.06.2016, 23:07 | Сообщение # 158
Пороховая обезьяна
Группа: Пират
Сообщений: 1
Награды: 0
Репутация: 0
Статус: В открытом море
пытаюсь добавить новую саблю в Корсары: ПКМ, вот только нихрена не добавляется! всех торговцев обьездил несколько раз - нету! что делать?
вот код, мож тут чето не так?
стоит пак моргана
Код
makeref(itm,Items[n]);
    itm.id = "blade28";
    itm.groupID = BLADE_ITEM_TYPE;
    itm.name = "itmname_blade28";
    itm.describe = "itmdescr_blade28";
    itm.folder = "items";
    itm.model = "blade28";
    itm.picIndex = 13;
    itm.picTexture = "ITEMS_1";
    itm.price = 1;
    itm.dmg_min = 30.0;
    itm.dmg_max = 50.0;
    itm.piercing = 100.0;
    itm.minlevel = 1;
    itm.rare = 0.1;
    itm.block = 100.0;
    itm.param.time = 0.1;
    itm.param.colorstart = argb(64, 64, 64, 64);
    itm.param.colorend = argb(0, 32, 32, 32);
    n++;
NathanielДата: Вторник, 07.06.2016, 23:44 | Сообщение # 159
Контр-адмирал
Группа: Капитан
Сообщений: 8036
Награды: 347
Репутация: 1845
Статус: В открытом море
Цитата fedya228 ()
мож тут чето не так?

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


Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор.
Но я не нашёл там никого, кто не был бы моим другом!
starkbeeДата: Понедельник, 29.08.2016, 22:42 | Сообщение # 160
Пороховая обезьяна
Группа: Пират
Сообщений: 10
Награды: 0
Репутация: 0
Статус: В открытом море
Цитата Igorek-96 ()
открывай utils в папке /корсары 3 гпк/PROGRAM/scripts
находи строки
и по примеру добавляй..


Перейди по ссылке на первоисточник - там все описано (стрелка справа от Igorek-96).
  • Страница 8 из 9
  • «
  • 1
  • 2
  • 6
  • 7
  • 8
  • 9
  • »
Поиск:

Copyright Pirates-Life.Ru © 2008-2024


Семь Футов под Килем - Бухта Корсаров и Пиратов!