|
Вопросы по созданию модификаций
| |
shamaresqu | Дата: Вторник, 21.01.2014, 09:17 | Сообщение # 1301 |
Пороховая обезьяна
Группа: Пират
Сообщений: 4
Награды: 0
Репутация: 0
Статус: В открытом море
| ок, а если только свою команду во время абордажа поменять, такое возможно?
|
|
| |
sander28 | Дата: Вторник, 21.01.2014, 14:32 | Сообщение # 1302 |
Пороховая обезьяна
Группа: Пират
Сообщений: 9
Награды: 0
Репутация: 0
Статус: В открытом море
| А где можно включить\отключить\редактировать полоски состояния надо кораблями? В RESOURCE\INI\interfaces поковырялся,не нашел...
|
|
| |
Mett | Дата: Вторник, 21.01.2014, 20:56 | Сообщение # 1303 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| sander28, program\battle_interface\BattleInterface.c
shamaresqu, да, смотри файл (практически в самом низу файла) nations\nations_init
Что толку, если не можешь сделать мир лучше.
Сообщение отредактировал Mett - Вторник, 21.01.2014, 20:58 |
|
| |
Reboroda | Дата: Воскресенье, 26.01.2014, 03:24 | Сообщение # 1304 |
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
| Я добавил новый предмет - крысиный яд (навроде как в К:КС, приготавливается по спец рецепту), подрубил ему отключение жора у крыс на корабле (как крысиный бог). Вопрос такой: Как устроить, чтобы через месяц (30 дней) этот айтем исчез?
- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
|
|
| |
Mett | Дата: Воскресенье, 26.01.2014, 04:13 | Сообщение # 1305 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| Reboroda, писать функцию самому в оригинале ГПК такой функции нет
Что толку, если не можешь сделать мир лучше.
|
|
| |
Reboroda | Дата: Воскресенье, 26.01.2014, 11:11 | Сообщение # 1306 |
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
| Mett, выражаясь простым языком - это реально, но нереально геморно? Ну чтож, видимо придется искать обходные пути.)
- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
|
|
| |
NikK | Дата: Воскресенье, 26.01.2014, 12:13 | Сообщение # 1307 |
Капитан I ранга
Группа: Корсар
Сообщений: 1682
Награды: 91
Репутация: 689
Статус: В открытом море
| А как же торговая лицензия, не так действует?
Цитатами пользуются те, кто не в состоянии формулировать собственные мысли.
|
|
| |
Mett | Дата: Воскресенье, 26.01.2014, 13:18 | Сообщение # 1308 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| Цитата это реально, но нереально геморно это реально, и не так уже и нереально :)
Цитата А как же торговая лицензия, не так действует? а вот торговые лицензии у меня совсем из головы вылетели (надо мне спать по ночам, а не в скриптах сидеть )
в общем, Reboroda, смотри как сделана лицензия, и делай практически по аналогии (за исключением лично твоих технический требований к коду) или можешь просто в итем добавить атрибут с кол-вом дней, а потом, когда время прийдет, этот итем просто изъять
Что толку, если не можешь сделать мир лучше.
Сообщение отредактировал Mett - Воскресенье, 26.01.2014, 13:19 |
|
| |
Reboroda | Дата: Воскресенье, 26.01.2014, 20:59 | Сообщение # 1309 |
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
| Mett, NikK, блин, это здорово обрадовало! ) Спасиб за наводку! Начну ломать голову вечером. А то второй крысо-бог мне нафиг не сдался.
--------------------------------------------- Выдача торг лицензии завязана на нациях. Как бы это обойти? Никак не могу пока сообразить.
- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
Сообщение отредактировал Reboroda - Воскресенье, 26.01.2014, 20:59 |
|
| |
Mett | Дата: Воскресенье, 26.01.2014, 23:52 | Сообщение # 1310 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| Reboroda, Код void Tralala(string itemID, int _days) { ref item; item = Itemsfromid(itemID); if(GetItemIndex(itemID)==-1) return;
item.useDays = _days; }
что-то типо в таком роде
Что толку, если не можешь сделать мир лучше.
|
|
| |
Reboroda | Дата: Понедельник, 27.01.2014, 01:54 | Сообщение # 1311 |
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
| Mett, так, вот это уже интереснее. Спасибо. Не перестаю ощущать себя нубом.)
Добавлено (27.01.2014, 01:28) --------------------------------------------- Ничего не вышло. Яд не исчезает после просрочки.
Я попробовал на всякий случай и вар-нт типа торг лицензии. При активации ведра с крысиным ядом выскакивает "записка о протравке", а ведро с ядом изымается. Лучше ведь получать подобные метки о сроках протравки в описание предмета.
В файле QuestsUtilite.c я прописал:
Цитата ////////////////////////////////////////////// // Протравка от крыс. --> //////////////////////////////////////////////
void GiveRatPoisoned(int _days, int _validity) { string sTemp; ref rItem; for(int i=0; i<4; i++) { if (CheckRatPoisoned(i) && GetDaysContinueRatPoisoned(i) == -1) TakeRatPoisoned(i); } if (GetCharacterItem(pchar, "ID моей записки")>0) { if (CheckRatPoisoned(_days)) TakeRatPoisoned(_days); sTemp = "ID моей записки"; GiveItem2Character(pchar, sTemp); rItem = ItemsFromID(sTemp); SaveCurrentNpcQuestDateParam(rItem, "Action_date"); rItem.Action_date = GetCurrentDate(); rItem.Validity = FindRussianDaysString(_validity); //строка для дескрайба rItem.Validity.QtyDays = _validity; //время действия яда в днях для расчетов } } //убрать протравку void TakeRatPoisoned(int _days) { string sTemp; if (GetCharacterItem(pchar, "ID моей записки")>0 && CheckRatPoisoned(_days)) { sTemp = "ID моей записки"; TakeItemFromCharacter(pchar, sTemp); DeleteAttribute(ItemsFromID(sTemp), "Action_date"); DeleteAttribute(ItemsFromID(sTemp), "Validity"); } } //проверить наличие протравки bool CheckRatPoisoned(int _days) { if (GetCharacterItem(pchar, "ID моей записки")>0) { if (CheckCharacterItem(pchar, "ID моей записки")) return true; } return false; } //проверить сроки травли, сколько осталось дней. если -1, то просрочена или отсутствует int GetDaysContinueRatPoisoned(int _days) { int iTerms = -1; ref rItem; if (GetCharacterItem(pchar, "ID моей записки")>0) { if (CheckRatPoisoned(_days)) { rItem = ItemsFromID("ID моей записки");
if(!CheckAttribute(rItem, "Validity")) { return -1; }
int Validity = sti(rItem.Validity.QtyDays); iTerms = GetNpcQuestPastDayParam(rItem, "Action_date"); if (iTerms > Validity) iTerms = -1; else iTerms = Validity - iTerms; } } return iTerms; } } //////////////////////////////////////////////
Ну а в алгоритме выдачи записки прописал: Цитата GiveRatPoisoned(sti(pchar.days), 1);
Скорее всего я дико напортачил, тк сразу после того как выдается записка о протравке - она сразу изымается. Может неверно прописал чекер? Помогите нубу.)
Добавлено (27.01.2014, 01:54) --------------------------------------------- Когда убираю блоки ниже void GiveRatPoisoned(int _days, int _validity) записка появляется и отметки в ней тоже. (Срок для примера поставил 1 день)
...но чтобы юзать проверку и удаление предмета нужно подрубить остальные блоки. Только как правильно все прописать?...
- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
Сообщение отредактировал Reboroda - Понедельник, 27.01.2014, 02:08 |
|
| |
Mett | Дата: Понедельник, 27.01.2014, 02:26 | Сообщение # 1312 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| Reboroda, попробуй это Код ////////////////////////////////////////////// // Протравка от крыс. --> //////////////////////////////////////////////
void GiveRatPoisoned(int _days) { string sTemp; ref rItem; for(int i=0; i<4; i++) { if(CheckRatPoisoned(i) && GetDaysContinueRatPoisoned(i) == -1) TakeRatPoisoned(i); } if(GetCharacterItem(pchar, "ID моей записки")>0) { if(CheckRatPoisoned(_days)) { TakeRatPoisoned(_days); } sTemp = "ID моей записки"; GiveItem2Character(pchar, sTemp); rItem = ItemsFromID(sTemp); SaveCurrentNpcQuestDateParam(rItem, "Action_date"); rItem.Action_date = GetCurrentDate(); rItem.Validity = FindRussianDaysString(_days); //строка для дескрайба rItem.Validity.QtyDays = _days; //время действия яда в днях для расчетов } } //убрать протравку void TakeRatPoisoned(int _days) { string sTemp; if (GetCharacterItem(pchar, "ID моей записки")>0 && CheckRatPoisoned(_days)) { sTemp = "ID моей записки"; TakeItemFromCharacter(pchar, sTemp); DeleteAttribute(ItemsFromID(sTemp), "Action_date"); DeleteAttribute(ItemsFromID(sTemp), "Validity"); } } //проверить наличие протравки bool CheckRatPoisoned(int _days) { if(GetCharacterItem(pchar, "ID моей записки") > 0) { if(CheckCharacterItem(pchar, "ID моей записки")) return true; } return false; } //проверить сроки травли, сколько осталось дней. если -1, то просрочена или отсутствует int GetDaysContinueRatPoisoned(int _days) { int iTerms = -1; ref rItem; if(GetCharacterItem(pchar, "ID моей записки") > 0) { if(CheckRatPoisoned(_days)) { rItem = ItemsFromID("ID моей записки"); if(!CheckAttribute(rItem, "Validity")) return -1;
int Validity = sti(rItem.Validity.QtyDays); iTerms = GetNpcQuestPastDayParam(rItem, "Action_date"); if(iTerms > Validity) { iTerms = -1; } else { iTerms = Validity - iTerms; } } return iTerms; } }
а использовать так: Код GiveRatPoisoned(кол-во дней);
* * * Цитата GiveRatPoisoned(sti(pchar.days), 1); a переменную _days ты использовал вместо нации и вызывал ее по принципу вызова нации ГГ, поэтому и косячило для этой функции нужны только одна переменная для дней
Что толку, если не можешь сделать мир лучше.
Сообщение отредактировал Mett - Понедельник, 27.01.2014, 02:29 |
|
| |
Reboroda | Дата: Понедельник, 27.01.2014, 13:13 | Сообщение # 1313 |
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
| Mett, повторилась та же петрушка. Предмет появляется и сразу изымается.
- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
|
|
| |
Mett | Дата: Понедельник, 27.01.2014, 14:10 | Сообщение # 1314 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| Reboroda, значит нарушена логика: Цитата неверно прописал чекер
з.ы. как говорит один украинский футбольный тренер: "будем разбираться!"))
и если не секрет: какой принцип работы протравки крыс? так легче будет отловить ошибку
Что толку, если не можешь сделать мир лучше.
|
|
| |
Reboroda | Дата: Понедельник, 27.01.2014, 21:45 | Сообщение # 1315 |
Мичман
Группа: Корсар
Сообщений: 146
Награды: 10
Репутация: 111
Статус: В открытом море
| Цитата Mett ( ) какой принцип работы протравки крыс?
Да все подобно крысо-богу. Я не стал изобретать велосипед, есть записка о протравке - крысы не жрут ничего на вашем корабле. (Даже если пересядешь на другой).
В файле food.c (в scripts) я прописал:
Цитата // boal 21.04.04 крысы на корабле --> void DailyRatsEatGoodsUpdate(ref chref) { if(GetCharacterItem(chref, "indian11")) return; // проверка крысиного бога if(GetCharacterItem(chref, "MineralAntiRat")) return; // проверка крысиного яда int iGoods = и далее бла бла бла................
Добавлено (27.01.2014, 14:26) --------------------------------------------- MineralAntiRat - это условное обозначение моей записки о протравке
Добавлено (27.01.2014, 14:30) --------------------------------------------- А в файле items.c прописал следующее:
Цитата if (itmRef.id == "PoisonAntiRat") {// совершаем протравку корабля ГГ if (GetCharacterItem(pchar, "PoisonAntiRat")>0) { TakeNItems(xi_refCharacter, "PoisonAntiRat", -1); TakeNItems(pchar, "MineralAntiRat", 1); itmRef = &Items[Items_FindItem("MineralAntiRat", &itmRef)];
GiveRatPoisoned(число дней);
FillMapForTreasure(itmRef); SetVariable(); SetNewPicture("MAP_PICTURE", "interfaces\card_sukno.tga"); ShowMapWindow(); return; } }
Добавлено (27.01.2014, 14:32) --------------------------------------------- PoisonAntiRat - это условное обозначение моего крысиного яда, который нужно "взять", чтобы активировать протравку (те он подобен карте).
Добавлено (27.01.2014, 15:10) --------------------------------------------- И да, скрипт проверки и изъятия записки о протравке я разместил в characters\QuestsUtilite.c (там же где и выдача-изъятие лицухи на торговлю).
Текст записки думаю будет лучше изменить на такой: "Записка с датой начала травли корабля от крыс. Работы по протравке начаты #sAction_date#г. и будут вестись командой под руководством вахтенных офицеров. Яда в наличии приблизительно на #sValidity#."Добавлено (27.01.2014, 21:45) --------------------------------------------- Видимо придется отказаться от крысиного яда. Никак не получается все это организовать. Тем не менее, если вдруг у кого-то что-то получится, буду рад дельной подсказке. Mett, спасибо за старания.
- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
Сообщение отредактировал Reboroda - Понедельник, 27.01.2014, 15:29 |
|
| |
Nathaniel | Дата: Воскресенье, 02.02.2014, 01:27 | Сообщение # 1316 |
Контр-адмирал
Группа: Капитан
Сообщений: 8036
Награды: 347
Репутация: 1845
Статус: В открытом море
| Камрады, а не подскажете ли, как сделать в "Корсарах" вот примерно такой же скриншот, но более качественный? В большем разрешении, под другим углом?.. Ну, к примеру, как в меню ККС сделано...
Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор. Но я не нашёл там никого, кто не был бы моим другом!
|
|
| |
Джин-Бейн | Дата: Воскресенье, 02.02.2014, 10:51 | Сообщение # 1317 |
Капитан I ранга
Группа: Команда Аддона
Сообщений: 1073
Награды: 40
Репутация: 197
Статус: В открытом море
| А как ты этот сделал?
Сообщение отредактировал Джин-Бейн - Воскресенье, 02.02.2014, 14:05 |
|
| |
Xiks | Дата: Воскресенье, 02.02.2014, 13:42 | Сообщение # 1318 |
Матрос
Группа: Пират
Сообщений: 28
Награды: 1
Репутация: 0
Статус: В открытом море
| А как открыть скрипты?
|
|
| |
Джин-Бейн | Дата: Воскресенье, 02.02.2014, 14:05 | Сообщение # 1319 |
Капитан I ранга
Группа: Команда Аддона
Сообщений: 1073
Награды: 40
Репутация: 197
Статус: В открытом море
| Смотря какая версия игры
|
|
| |
Xiks | Дата: Воскресенье, 02.02.2014, 14:17 | Сообщение # 1320 |
Матрос
Группа: Пират
Сообщений: 28
Награды: 1
Репутация: 0
Статус: В открытом море
| Джин-Бейн, у меня 1.2
|
|
| |
|