Seaward.ru

Здравствуйте, гость ( Вход | Регистрация )

> Для программистов, вопросы по скриптам ПКМ
igor_pol
сообщение Aug 24 2005, 21:00
Сообщение #1


боцман
****


Группа: форумчанин
Сообщений: 140
Регистрация: 3-December 04
Пользователь №: 169



Первое что я хотел написать "АДМИНЫ!!!!" НЕ ЗВЕРЕЙТЕ ЗА "НЕНУЖНУЮ ТЕМУ"
**************************************************
на вопрос зачем создал эту тему отвечу так "Я например НЕ ПРОСТО ЮЗВЕРЬ А КОЕ ЧТО И САМ НАПИСАТЬ МОГУ.
И хотел бы чтобы на форуме была тема для тех кто сам хочет что-то добавить в игру.
На сайте аддона Алекс вікинул ссылку на описание скриптов ПКМ на английском.
Я хотел бы узнать где можно нарыть больше инфы по этом скриптам.
И кстати на каком языке они пишуться.
Если кто-то знает ----- пишите.
И вообще всем програмерам на форуме нужна своя тема.
так что ГОСПОДА ПРОГРАМЕРЫ ВАЛИТЕ СЮДА !!!!
Может из этого что небудь интересное выйдет!!!!!!(Если тему не УТРУТ)
Жду сообщений (может у когот есть идеи на эту тему )

Сообщение отредактировал Догева - Apr 24 2006, 13:36
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
35 страниц V « < 13 14 15 16 17 > »   
Reply to this topicStart new topic
Ответов(280 - 299)
Alexad_D
сообщение Aug 28 2009, 14:32
Сообщение #281


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



А вот события, как например - добавление/убавление денег, репутации, предметов, можно только через диалог или обязательно в квест реакшин вписывать это событие. Вот к примеру сидит мужик на земле тоскует, я подхожу спрашиваю - Что приуныл а он отвечает:
- жена за хлебом послала а я деньги потерял.
Я отвечаю:
- Так какие проблемы- сколько?
- 1000
- На тебе 1000
или
- Да пошел ты, раззява, следующий раз умнее будешь....

Ну это грубый пример конечно, но смысл что то вроде этого.... если дал, минус 1000. а репутация +5 а отказал деньги на месте но репутация -5
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
delfin_
сообщение Aug 28 2009, 14:48
Сообщение #282


Защитнег Бакланаф
*******

Ветеран ФорумаЗаслуженный КорсарЗнаток Игр Сиварда
Наставник Корсаров
Группа: форумчанин
Сообщений: 5,186
Регистрация: 5-December 04
Пользователь №: 174



С этим я баловался. Достаточно в диалогах прописать.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Black Angel
сообщение Aug 28 2009, 19:30
Сообщение #283


боцман
****


Группа: форумчанин
Сообщений: 252
Регистрация: 19-August 06
Из: Павлово(Нижегородская обл.)
Пользователь №: 3,985



Цитата(Warship @ Aug 28 2009, 00:40) *

Выключать функцией
void Ship_SetLightsOff(ref rCharacter, float fTime, bool bLights, bool bFlares, bool bNow)

Т.е., если нужно, чтобы за 3 секунды платно затухли, юзать как Ship_SetLightsOff(PChar, 3.0, true, true, false);
Если нужно, чтобы затухли сразу, последний параметр ставь в истину.

Включить динамически нельзя никак.

спасибо большое
в каком файле находятся проверки фортов на стрелять/не стрелять по вражеским судам?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Cyclopus
сообщение Aug 28 2009, 19:42
Сообщение #284


Exotic status, isn't it?
*****


Группа: форумчанин
Сообщений: 352
Регистрация: 20-August 09
Пользователь №: 21,051



Цитата(Black Angel @ Aug 28 2009, 22:30) *

спасибо большое
в каком файле находятся проверки фортов на стрелять/не стрелять по вражеским судам?

Насколько мне известно, в файле AIFort.c должен быть ответ.
Посмотрите там, кажется, видел там что-то подобное.
Вот путь: Пираты Карибского Моря\PROGRAM\SEA_AI\AIFort.c
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Aug 29 2009, 10:01
Сообщение #285


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



При редакции стартового диалога согласно нового сюжета столкнулся вот с какой проблемой:
В диалоге есть три проверки на наличае комплектации оружия
1. Все ли оружие забрали из сундука
case "TakeWeapon":
if(CheckCharacterItem(Pchar, "blade28") == 0 || CheckCharacterItem(Pchar, "Spyglass1") == 0 || CheckCharacterItem(Pchar, "pistol7") == 0)

2. Все взяли из сундука но ничего не одели
case "EquipWeapon":
if(IsEquipCharacterByItem(Pchar, "blade28") == false && IsEquipCharacterByItem(Pchar, "pistol7") == false )

3. Забыли одеть саблю
case "EquipWeapon":
if(IsEquipCharacterByItem(Pchar, "blade28") == false && IsEquipCharacterByItem(Pchar, "pistol7") == true )

4. Забыли одеть пистолет
case "EquipWeapon":
if(IsEquipCharacterByItem(Pchar, "blade28") == true && IsEquipCharacterByItem(Pchar, "pistol7") == false )

5.Все одели
case "EquipWeapon":
if(IsEquipCharacterByItem(Pchar, "blade28") == true && IsEquipCharacterByItem(Pchar, "pistol7") == true )

Так вот в чем глюк - если одеть сначала саблю (как это в диалоге у Моргана),а потом пистолет то пистолет виден но меня перебрасывает на - "забыли одеть саблю"
но если одеть сначала пистолет а потом саблю диалог продолжается как положено но.... пистолета не видно пока не перегрузимся в сл.локацию.

Видно у Моргана тоже что то похожее было. В чем ошибка
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Warship
сообщение Aug 29 2009, 10:59
Сообщение #286


Гроза морей
*****

Ветеран ФорумаЗаслуженный КорсарСоздатель Модов к ГПК
Создатель Модов к КВЛ
Группа: бета-тестер
Сообщений: 441
Регистрация: 29-April 07
Из: Прим. край г. Находка
Пользователь №: 9,103



Что значит "не виден"? По твоему кода, что привел, точно ничего не видно. smile.gif

Давай весь кусок кода, мож у тя там переходы стоят неверные. smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Aug 29 2009, 13:44
Сообщение #287


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



Цитата(Warship @ Aug 29 2009, 10:59) *

Что значит "не виден"? По твоему кода, что привел, точно ничего не видно. smile.gif
Давай весь кусок кода, мож у тя там переходы стоят неверные. smile.gif

Не видно - это значит визуально не отображается (хотя и присутствует) 1.gif
А вот кусок кода - но толку то там же мои изменения и все в принципе работает если не считать описанный выше нюанс. Можно конечно прописать последовательность нацепливания оружия в тексте диалога, чтобы не заморачиваться smile.gif Просто интересен сам факт - ПОЧЕМУ ТАК!!!
Код
case "See_Weapon":            
            if(CheckCharacterItem(Pchar, "blade28") == 0 || CheckCharacterItem(Pchar, "Spyglass5") == 0 || CheckCharacterItem(Pchar, "pistol7") == 0)
            {
                NextDiag.TempNode = "TakeWeapon";
                dialog.text = DLG_TEXT[17];                           //Ничего не взято из сундука
                link.l1 = DLG_TEXT[18];
                link.l1.go = "Exit";
            }
/*            else
            {

                NextDiag.TempNode = "EquipWeapon";
                dialog.text = DLG_TEXT[19];                            //Ничего не одето из оружия
                link.l1 = DLG_TEXT[18];
                link.l1.go = "Exit";
            }*/
            if(IsEquipCharacterByItem(Pchar, "blade28") == true && IsEquipCharacterByItem(Pchar, "pistol7") == true && IsEquipCharacterByItem(Pchar, "Spyglass5") == true )
            {
                dialog.text = DLG_TEXT[22];
                link.l1 = DLG_TEXT[23];
                link.l1.go = "YesDeal";
                link.l2 = DLG_TEXT[34];
                link.l2.go = "refusal";
                link.l3 = DLG_TEXT[28];
                link.l3.go = "Continue_ToSeriousFight";
            }
            else
            {
                addDialogExitQuest("Tut_EquipWeapon");
                NextDiag.TempNode = "EquipWeapon";
                dialog.text = DLG_TEXT[19];                            //Ничего не одето из оружия
                link.l1 = DLG_TEXT[18];
                link.l1.go = "Exit";
            }

        break;

        case "EquipWeapon":
            //NextDiag.TempNode = "EquipWeapon";
            dialog.text = DLG_TEXT[24];
            link.l1 = DLG_TEXT[18];                                 //Взята только труба
            link.l1.go = "Exit";

            if(IsEquipCharacterByItem(Pchar, "blade1") == true && IsEquipCharacterByItem(Pchar, "pistol7") == false )
            {
                //Dialog.TempNode = "EquipWeapon";
                dialog.text = DLG_TEXT[25];             //забыли пехаль
                link.l1 = DLG_TEXT[18];
                link.l1.go = "Exit";
            }
            if(IsEquipCharacterByItem(Pchar, "blade28") == false && IsEquipCharacterByItem(Pchar, "pistol7") == true )
            {
                //Dialog.TempNode = "EquipWeapon";
                dialog.text = DLG_TEXT[26];               //забыли саблю
                link.l1 = DLG_TEXT[18];
                link.l1.go = "Exit";
            }
            if(IsEquipCharacterByItem(Pchar, "blade28") == true && IsEquipCharacterByItem(Pchar, "pistol7") == true )
            {
                dialog.text = DLG_TEXT[22];
                link.l1 = DLG_TEXT[23];
                link.l1.go = "YesDeal";                  // Согласие завершить сделку
                link.l2 = DLG_TEXT[34];
                link.l2.go = "refusal";                         // Вежливо отказаться и получить трубу в подарок
                link.l3 = DLG_TEXT[28];
                link.l3.go = "Continue_ToSeriousFight";                          // Попытаться  ограбить
            }

        break;
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Black Angel
сообщение Aug 29 2009, 22:58
Сообщение #288


боцман
****


Группа: форумчанин
Сообщений: 252
Регистрация: 19-August 06
Из: Павлово(Нижегородская обл.)
Пользователь №: 3,985



Почему во время боя при попытке выключить огни они не выключаются?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Warship
сообщение Aug 30 2009, 01:32
Сообщение #289


Гроза морей
*****

Ветеран ФорумаЗаслуженный КорсарСоздатель Модов к ГПК
Создатель Модов к КВЛ
Группа: бета-тестер
Сообщений: 441
Регистрация: 29-April 07
Из: Прим. край г. Находка
Пользователь №: 9,103



Цитата(Alexad_D @ Aug 29 2009, 21:44) *

Не видно - это значит визуально не отображается (хотя и присутствует) 1.gif

Видимо оружие надевается флагом PChar.equip.gun = "pistol7", поэтому и не видно.
Уже много раз говорилось, что одевать нужно функцией void EquipCharacterByItem(ref chref, string itemID);

Убери лишнюю закрывающую фигурную скобку в кейсе "EquipWeapon" - наверное из-за нее и не работает.
+ стоит расположить проверки по-иному - сейчас у тебя будет вызываться квест "Tut_EquipWeapon" даже если все оружие надето (проверка ниже по коду).

Далее.
Не стоит юзать проверки "IsEquipCharacterByItem(Pchar, "blade28") == true" - ярчайший пример плохого кода. Функция IsEquipCharacterByItem() сама по себе возвращает логическое значение, зачем его еще и сравнивать?

Цитата(Black Angel @ Aug 30 2009, 06:58) *

Почему во время боя при попытке выключить огни они не выключаются?

Функцией, что я приводил, должны выключаться. Почему нет - хз.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Scatimon
сообщение Aug 30 2009, 07:45
Сообщение #290


...Welcome To Scatlend...
******

Ветеран Форума
Группа: форумчанин
Сообщений: 707
Регистрация: 14-April 05
Из: Москва
Пользователь №: 662



В ПКМ был такой косяк. Нужно перезапустить перса ядром при одевании пекаля. Когда одеваем саблю перезапуск происходит, при одевании пекаля - нет. Поэтому одеваем пекаль, затем саблю - перезапуск - все видно. Кароче поищи ссылку на ядно, тока с масагой про пекаль. Она вроде идентична сабле. Сувать сий кусок кода в место где происходит одевание. Это в CharacterUtilite.c
Поиском ищи фразу MSG_CHARACTER_SETBLADE. Попробуй просто копернуть кусок кода про саблю - в код про пистолет (там рядом). Я делал давным давно - работало.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Black Angel
сообщение Aug 30 2009, 11:35
Сообщение #291


боцман
****


Группа: форумчанин
Сообщений: 252
Регистрация: 19-August 06
Из: Павлово(Нижегородская обл.)
Пользователь №: 3,985



Цитата(Warship @ Aug 30 2009, 02:32) *

Функцией, что я приводил, должны выключаться. Почему нет - хз.

А если принудительно попробовать через сендмеседж?Кстати,надо было рефреш ставить?
И еще заметил не утром не вечером при использовании функции огни не тухнут,хотя програмно говорит что выключины(проверку сделал)...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Aug 30 2009, 21:27
Сообщение #292


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



6.gif У меня возник такой вопрос - Если проверить отсутствие определенного предмета у перса, и добавить его в случае чего - можно функцией:

Код


  if(CheckCharacterItem(Pchar, "предмет") == 0) GiveItem2Character(Pchar, "предмет");



То как тогда наоборот - как проверить его присутствие и если есть то удалить .... 3.gif Заменить 0 на 1? Если да, то тогда удалить как? Или это вообще не так делается?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dolphin_sv
сообщение Aug 31 2009, 01:48
Сообщение #293


матрос
***


Группа: форумчанин
Сообщений: 88
Регистрация: 23-May 05
Из: Донецк
Пользователь №: 771



Код
if(CheckCharacterItem(Pchar, "id предмета")) TakeItemFromCharacter(Pchar, "id предмета");


Как уже говорили выше - сравнивать bool функции с 1 и 0 глупо, т.к. эта функция сама по себе возвращает или 0 (false) или 1 (true)

CheckCharacterItem(Pchar, "id предмета"), если есть предмет = 1 (true), если нет предмета = 0 (false) (функция сама по себе вызращает логическое значение)

Оператор if основывается на результате логического выражения, результатом которого могут быть ТОЛЬКО два значения (0 и 1) и имеет следующий синтаксис:

Код
if(истина)
{
     оператор 1;
}
else
{
     оператор 2;
}
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Sep 1 2009, 22:35
Сообщение #294


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



Цитата( @ Aug 31 2009)
Как уже говорили выше - сравнивать bool функции с 1 и 0 глупо, т.к. эта функция сама по себе возвращает или 0 (false) или 1 (true)

Цитата( @ Aug 30 2009)
Не стоит юзать проверки "IsEquipCharacterByItem(Pchar, "blade28") == true" - ярчайший пример плохого кода. Функция IsEquipCharacterByItem() сама по себе возвращает логическое значение, зачем его еще и сравнивать?
Отредактировано..
-------------------------------------------------------------------------------------------------------------------------------------------------
1.gif Dolphin_sv и Warship - Если можно то давайте по понятней. Давайте разберем на примере кода диалога, описанного мной выше [quote post='289460'] В чем конкретно у меня ошибка.....
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dolphin_sv
сообщение Sep 1 2009, 23:38
Сообщение #295


матрос
***


Группа: форумчанин
Сообщений: 88
Регистрация: 23-May 05
Из: Донецк
Пользователь №: 771



Если так, то:
Код
if (CheckCharacterItem(Pchar, "blade28"))    
  {
     TakeItemFromCharacter(Pchar, "blade28");
   }
else
  {
    GiveItem2Character(Pchar, "blade1");
   }


ты пропустил скобки, должно быть if(CheckCharacterItem(Pchar, "blade28")) и без ";" в конце

этот кусок кода проверяет: если у игрока есть сабля "blade28", то у него ее забирают; если у него ее нет, то дают саблю "blade1". Если это то, что тебе надо, то тогда так.

Еще хочу обратить внимание, что данный метод не будет работать с саблей, которая экипирована на персонаже.

PS
То, как ты писал до этого, не то чтобы неправильно, просто неккорректно с точки зрения рациональности кода и правил хорошего тона программирования.

В принципе, вообще всю программу можно писать в одну строку:
if (CheckCharacterItem(Pchar, "blade28")){TakeItemFromCharacter(Pchar, "blade28");}elsе{GiveItem2Character(Pchar, "blade1");}
и так далее, но так никто не делает, потомучто существуют определенные правила и стандарты, то же самое относится и к вышеупомянутому случаю со сравниваемым значением результата логической функции.
Тебя можно понять, ты равняешься на скрипты от Акеллы, но в некоторых местах их явно скриптовали студенты-первокурсники, да еще и двоечники...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Sep 2 2009, 00:17
Сообщение #296


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



Dolphin_sv 1.gif ...Ну вот, а теперь еще эти коды пытается писать двоечник - девятикласник, который запятые вечно пропускает ........ lol.gif
В смысле: "данный метод не будет работать с саблей, которая экипирована на персонаже"....? - Работает...... перса раздевает как надо.... 1.gif Правда без проверки, сразу, одно снимаем, другое одеваем..... smile.gif
А как грамотней построить проверку - все ли одето или взято из сундука? Пост с кодом выше... Там у меня в чем ошибки? Сейчас у меня не срабатывает указание какой именно предмет не одет, но если все одеты дальше идет все как надо.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dolphin_sv
сообщение Sep 2 2009, 00:25
Сообщение #297


матрос
***


Группа: форумчанин
Сообщений: 88
Регистрация: 23-May 05
Из: Донецк
Пользователь №: 771



CheckCharacterItem не проверяет одет предмет или нет, она проверяет - есть ли данный прдмет в инвентаре персонажа или нет, экипированые предметы при это не учитываются.

Проверка - экипирован персонаж предметом или нет, это функция
bool IsEquipCharacterByItem(ref chref, string itemID);

Если тебе нужно забрать предмет, который гипотетически может быть на герое, то:
1. Проверить - одет ли предмет на персонаж, если одет, то снять предмет.
2.Отобрать предмет.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alexad_D
сообщение Sep 2 2009, 14:24
Сообщение #298


матрос
***


Группа: форумчанин
Сообщений: 89
Регистрация: 11-July 09
Из: Беларусь. г. Поставы
Пользователь №: 20,710



Цитата(dolphin_sv @ Sep 2 2009, 00:25) *

Dolphin_sv Добрый день. Так у меня же так и сделано!!!!! Имелся ввиду самый верхний пост про диалог ГГ с евреем - торговцем. Сам диалог работает и проверка тоже. Так, как задумывалось.
Но вот насколько грамотно построена эта проверка?(ниже структура)

Если согласились посмотреть что у него есть -

case "See_Weapon":
if(CheckCharacterItem(Pchar, "blade28") == 0 || CheckCharacterItem(Pchar, "Spyglass5") == 0 || CheckCharacterItem(Pchar, "pistol7") == 0)
{
dialog.text = Ничего не взято из сундука - возми
}
else
{
NextDiag.TempNode = "EquipWeapon";
dialog.text = Что то не одето из оружия - одень
}
if(IsEquipCharacterByItem(Pchar, "blade28") == true && IsEquipCharacterByItem(Pchar, "pistol7") == true && IsEquipCharacterByItem(Pchar, "Spyglass5") == true )
{
dialog.text = запрс на согласие сделки
link.l1.go = "YesDeal"; - Согласие
link.l2.go = "refusal"; - Отказ
link.l3.go = " Begin_ToSeriousFight"; Пытаемся ограбить, старик начинает защищать свое добро
}
else
{
addDialogExitQuest("Tut_EquipWeapon");
NextDiag.TempNode = "EquipWeapon";
dialog.text = Ничего не одето из оружия
}
break;

case "EquipWeapon":
if(IsEquipCharacterByItem(Pchar, "blade28") == false && IsEquipCharacterByItem(Pchar, "pistol7") == false )
{
dialog.text = ничего не одето
}
if(IsEquipCharacterByItem(Pchar, "blade28") == true && IsEquipCharacterByItem(Pchar, "pistol7") == false )
{
dialog.text = забыли пехаль
}
if(IsEquipCharacterByItem(Pchar, "blade28") == false && IsEquipCharacterByItem(Pchar, "pistol7") == true )
{
dialog.text = забыли саблю
}
if(IsEquipCharacterByItem(Pchar, "blade28") == true && IsEquipCharacterByItem(Pchar, "pistol7") == true )
{
dialog.text = запрс на согласие сделки
link.l1.go = "YesDeal"; - Согласие
link.l2.go = "refusal"; - Отказ
link.l3.go = " Begin_ToSeriousFight"; - Пытаемся ограбить, старик начинает защищать свое добро
}
break;

Как я понял Ошибка в записи первых двух проверок? Надо так?
if(CheckCharacterItem(Pchar, "blade28") || CheckCharacterItem(Pchar, "Spyglass5") || CheckCharacterItem(Pchar, "pistol7"))
if(IsEquipCharacterByItem(Pchar, "blade28") && IsEquipCharacterByItem(Pchar, "pistol7") && IsEquipCharacterByItem(Pchar, "Spyglass5"))
Первой проверкой, мы проверяем забрали ли мы все из сундука, второй - все ли одели. В чем разница между - || и && ?
================================================================================
===================================
И еще..... Кто знает, где храняться данные о локаторах (goto, sit, reload, box randitem)- чтобы можно было назначить или поменять и как это делается? Имеется ввиду на самой модели помещения. Если на короблях эти локаторы видны в гмвивере то при просмотре помещеня sad.gif - нет
=========================================================

Scatimon и Dolphin_sv - Большое спасибо за объяснения
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Scatimon
сообщение Sep 2 2009, 17:16
Сообщение #299


...Welcome To Scatlend...
******

Ветеран Форума
Группа: форумчанин
Сообщений: 707
Регистрация: 14-April 05
Из: Москва
Пользователь №: 662



|| - или
&& - и

if(a || b || c)
{
хоть что-то тру то сюда
}else{
все фалс
}

if(a && b && c)
{
все тру
}else{
хоть что-то фалс то сюда
}
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dolphin_sv
сообщение Sep 2 2009, 18:29
Сообщение #300


матрос
***


Группа: форумчанин
Сообщений: 88
Регистрация: 23-May 05
Из: Донецк
Пользователь №: 771



Цитата
Как я понял Ошибка в записи первых двух проверок? Надо так?
if(CheckCharacterItem(Pchar, "blade28") || CheckCharacterItem(Pchar, "Spyglass5") || CheckCharacterItem(Pchar, "pistol7"))
if(IsEquipCharacterByItem(Pchar, "blade28") && IsEquipCharacterByItem(Pchar, "pistol7") && IsEquipCharacterByItem(Pchar, "Spyglass5"))


Да, именно так. Только надо писать не "Ничего не взято из сундука", а "Что-то не взято из сундука". Почему так, читай ниже.

Цитата
Первой проверкой, мы проверяем забрали ли мы все из сундука, второй - все ли одели. В чем разница между - || и && ?


&& как и говорили, логическое "и"
|| как и говорили, логическое "или"

a && b - результат true если оба значения true. false, если хотябы одно из них false

a || b - результат true, если хотя бы одно значение true. false - если оба значения false

Еще полезна операция отрицания - !
!true = false и !false = true

Например,
if(IsEquipCharacterByItem(Pchar, "blade28")) - ты проверяешь, экипирован ли НПС предметом "blade28"
а можно с помощью логического отрицания поверить на то, что НПС не экипирован этим предметом:
if(!IsEquipCharacterByItem(Pchar, "blade28"))

Цитата
И еще..... Кто знает, где храняться данные о локаторах (goto, sit, reload, box randitem)- чтобы можно было назначить или поменять и как это делается? Имеется ввиду на самой модели помещения. Если на короблях эти локаторы видны в гмвивере то при просмотре помещеня - нет


Локаторы лучше смотреть в TOOL. В GMViewer их можно просмотреть, для локаций они находятся в отдельных файлах, как правило, для ПКМ это: "имя_локации"_l.gm, а для К3/КВЛ/ГПК "имя локации"_locators.gm
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

35 страниц V « < 13 14 15 16 17 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 25th April 2024 - 12:37

Блок рекламы
Яндекс цитирования Rambler's Top100
Rambler's Top100