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

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


Купить игры
 



Чат
 
500


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

Модератор форума: NikK  
Вопросы по созданию модификаций
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
Поиск:

Copyright Pirates-Life.Ru © 2008-2024


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