| 
 
		
		 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
		
		
		
	
		
		
	
		
		
			| 
				
				Вопросы по созданию модификаций
				 |   |  
| 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 |  
 Контр-адмирал 
Группа: Капитан 
Сообщений: 8077 
Награды:  347 
Репутация:  1849 
Статус: В открытом море 
 
 | Камрады, а не подскажете ли, как сделать в "Корсарах" вот примерно такой же скриншот, но более качественный? В большем разрешении, под другим углом?.. Ну, к примеру, как в меню ККС сделано... 
   
  Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор.   Но я не нашёл там никого, кто не был бы моим другом!
 |  
 | 
 |    |  
| Джин-Бейн | Дата: Воскресенье, 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
 |  
 | 
 |    |     
		
		
 
  |