BestGamer.Ru Уроки по коддингу от (AddonMeiker) [Архив] - Игровые Форумы
Архив форумов Best Gamer.
Оригинал форумов можно найти здесь Игровые форумы BestGamer.Ru.


PDA

Просмотр полной версии : Уроки по коддингу от (AddonMeiker)


AddonMeiker
06.06.2010, 14:15
Здравствуйте Урок по коддингу (проверка имени перса и действия всё собрано в функцию)

void CheckMyPcharName(pchar.name){

if(pchar.name == MyNameIsTEST) {
//Если имя нашего перса МуНамеИсТЕСТ то действие
}
else {
//Если нет то действие
}
}

To bee Continued...

AddonMeiker
06.06.2010, 14:28
Урок по коддингу (проверка сколько денег заделано в функцию)

//> БОЛЬШЕ
//< МЕНШЕ

void CheckMyMoney(pchar.money) {

if(pchar.money >= 1000) { //Действие }
else { //Действие }

if(pchar.money <= 1000) { //Действие }
else { //Действие }
}

//Вызов
CheckMyMoney();

AddonMeiker
06.06.2010, 14:35
Урок по коддингу (вызвать функцию из файла)

создадим 2 файла
test12345.c and testruner.c

в test12345.c запишем
void TestCharacter(CharacterFromId()) {
CharacterFromID();
}

а в testruner.c
include "test12345.c";
TestCharacter();

всё функция вызвана:)

AddonMeiker
12.06.2010, 20:51
Здравствуйте решил написать вам исходник моих тестов загрузки
3D Моделий из игры К3 нет нет нет вам ненужно качать С++ компилятора и прочие штуки ненужно уметь кодить на С++ нужно всего знать основы К3 Скриптинга и уметь скомпилить мой код на ШТОРМЕ (как скомпилить писал в теме Уроки по коддингу от AddonMeiker) и так начнём всем известно что при загрузке мира игры и конечно моделий скриптинг чирпаит функцию загрузки у двига то йсть что мешает нам написать загрузку моделий формата К3? На скриптах движка да нечего не мешате значит напишем сийчяс:).

//создали функцию и так по параметрам можно узнать что первая строка черпает название модели для загрузки из переменной или дефиниты а остальные кординаты отображения модели.
//&& || and = Логические (И)

#define ModelName "ModelName";
void Load3DK3Model(string ModelName,int posx,int posy, int posz)
{
if(!ModelName && posx || posy and posz) { ExitProgram(); //ERROR IF DON'T CORRECT } else { //ALL OK CONTINUE
float x;
float y;
float z;
if('FLOAT' == posx) { //CONTINUE
#extern_program "ModelName" } else { ExitProgram(); //ERROR IF DON'T CORRECT }
if('FLOAT' == posy) { //CONTINUE
#extern_program "ModelName" } else { ExitProgram(); //ERROR IF DON'T CORRECT }
IF('FLOAT' == posz) { //Если все проверки пройдены то грузим модель
SendMessage(&&iiiii, "loadmodel", ". RESOURCE/Models/ModelName .");
} else { //Если непройдены выходим из проги
ExitProgram(); }
}
теперь компилим на ШТОРМЕ впишим название модели в дефиниту т,е сотрём то что в стрингах и вставим имя модели для загрузки код дальше понятен я думаю а скомпилить очь просто сохраним код как 3dloag.c заходим в енгине конфиг и меняем выполняем файл с seadogs.c на 3dload.c и незабудьте потом когда захотите поиграть обратно изменить а то будете гадать чё нетак ГЫ ГЫ. а забыл написать как запустить просто запускаем игру и вместо игры наш код
С уважением АддонМейкер Удачи вам:)

AddonMeiker
18.06.2010, 21:17
Приветствутю скоро уроки со всеми из данных функций:)



//открываем квест в судовом журнале
SetQuestHeader(string idQuest)

//делаем запись в судовом журнале....
AddQuestRecord(string idQuest,string idText)

//закрываем квест в суд. журнале
CloseQuestHeader(string idQuest)

//проверить флаг состояние квеста...
CheckQuestAttribute(string attributeName, string attributeValue)

//удалить флаг состояния квеста
DeleteQuestAttribute(string attributeName)

//установить персонажа в ближайший локатор группы goto (но не ближе минимальной дистанции)
SetCharacterToNearLocatorFromMe(string characterID, float minDistance)

//получить ссылку на персонаж через его ID-шник
CharacterFromID(string characterID)

//пропустить некоторое время с фэйдом экрана
WaitDate(string postName,int year, int month, int day, int hour, int minute)

//установить камеру на просмотр корабля персонажа и вызвать квест через заданное число секунд
SetCameraToShipView(string characterName, string questCheckName, float viewTimeInSec)

//Закрыть все выходы на море в районе расположения своего корабля
QuestCloseSeaExit()

//Открыть все выходы на море в районе расположения своего корабля
QuestOpenSeaExit()

//найти локатор в локации по имени
FindLocator(string locationName, string locatorName, ref locatorRef, bool fromRealLoadedLocators)

//проверить попадает ли координата в заданный локатор в текущей локации
CheckCurLocator(string group,string locator,float x,float y,float z)

//заменить один локатор на новый адрес перегрузкии
ChangeReloadData(string locationName,string locatorName, string toLocationName,string toLocatorName)

//вернуть локатору старый адрес перегрузки
ChangeBackReloadData(string locationName,string locatorName)

//вызвать проверку квеста через заданное число секунд
DoQuestCheckDelay(string questCheckName, float delayInSecond)

//хм... выход наверное
DoQuestDelayExit()

//Временно сохранить все данные о нашем корабле в памяти
ShipTempRemove(ref _refCharacter)

//Восстановить данные о нашем старом корабле из памяти
RestoreTempRemovedShip(ref _refCharacter)

//Обменять двух персонажей кораблями
ExchangeCharacterShip(ref oneCharacter, ref twoCharacter)

//Задать квест, выполняемый после выхода из диалога
AddDialogExitQuest(string questName)

//Перегрузить главного персонажа в другую локацию и по завершению вызвать квест
DoQuestReloadToLocation(string idLocation, string idGroup, string idLocator, string questName)

//Перегрузить главного персонажа в другую локацию
DoReloadCharacterToLocation(string idLocation, string idGroup, string idLocator)

//Перегрузить главного персонажа в другую локацию из карты мира
DoReloadFromWorldMapToLocation(string idLocation, string idGroup, string idLocator)

//назад наверное перезагрузка....
ReloadFromWMtoL_complete()

//Перегрузить главного персонажа в другую локацию из моря
DoReloadFromSeaToLocation(string idLocation, string idGroup, string idLocator)

//назад в море
EndReloadToLocation()

//Удалить квест из списка проверяемых квестов
DeleteQuestCheck(string sQuestName)

//Получить полное имя персонажа
GetCharacterFullName(string idCharacter)

//Сохранить состояние о пассажирах во временной переменной и временно удалить их всех
StorePassengers(string idCharacter)

//Восстановить запомненных ранее пассажиров и по возможности офицеров
RestorePassengers(string idCharacter)

//Смотрим на какого нибудь персонажа
StartLookAftepchararacter(string idCharacter)

//Прекратили смотреть на персонаж
EndLookAftepchararacter()

//восстановить персонаж (на случай, если он был до этого убит)
ReanimateCharacter(string characterID)

//установить случайное имя для персонажа
SetCharacterRandomName(string characterID)

//обработка события об уничтожении форта
QuestFortDestroyed()

//обработка события об захвате форта
QuestFortCaptured()

//о захвате корабля....
QuestShipCaptured()

//хм... о смерти группы видимо
QuestGroupDeath()

//подготовиться к выгрузке в море по квесту
QuestToSeaLogin_PrepareLoc(string islandID, string locGroup, string locName, bool sailUP)

//подготовить персонажа для выгрузки в море по квесту
QuestToSeaLogin_Add(string groupName)

//запустить квестовую выгрузку в море
QuestToSeaLogin_Launch()

//убрать из локации всех персов указанного типа
RemoveCharactersFromLocation(string idLocation, string modelName, string type)



//------------------------------------------------------------------------------------------
//Character types
//------------------------------------------------------------------------------------------

//Установить персонажу тип игрока
void LAi_SetPlayerType(aref chr);

//Установить персонажу тип офицера
void LAi_SetOfficerType(aref chr);

//Установить персонажу тип горожанина
void LAi_SetCitizenType(aref chr);
//Установить персонажу тип горожанина, без перемещения в группу
void LAi_SetCitizenTypeNoGroup(aref chr);

//Установить персонажу тип стражника
void LAi_SetGuardianType(aref chr);
//Установить персонажу тип стражника, без перемещения в группу
void LAi_SetGuardianTypeNoGroup(aref chr)

//Установить персонажу тип патруля
void LAi_SetPatrolType(aref chr);
//Установить персонажу тип патруля, без перемещения в группу
void LAi_SetPatrolTypeNoGroup(aref chr);

//Установить персонажу тип война
void LAi_SetWarriorType(aref chr);
//Установить персонажу тип война, без перемещения в группу
void LAi_SetWarriorTypeNoGroup(aref chr);
//Установить войну командира
void LAi_warrior_SetCommander(aref chr, aref commander);
//Разрешить или запретить диалоги для война
void LAi_warrior_DialogEnable(aref chr, bool isEnable);
//Сказать войну стоять при отсутствие целей
void LAi_warrior_SetStay(aref chr, bool isStay);

//Установить персонажу тип уличного торговца
void LAi_SetMerchantType(aref chr);
//Установить персонажу тип торговца, без перемещения в группу
void LAi_SetMerchantTypeNoGroup(aref chr);

//Установить персонажу тип стоячего
void LAi_SetStayType(aref chr);
//Установить персонажу тип стоячего, без перемещения в группу
void LAi_SetStayTypeNoGroup(aref chr);

//Установить персонажу тип сидячего
void LAi_SetSitType(aref chr);
//Установить персонажу тип сидячего, без перемещения в группу
void LAi_SetSitTypeNoGroup(aref chr);

//Установить персонажу тип бармена (only man)
void LAi_SetBarmanType(aref chr);
//Установить персонажу тип официантки, без перемещения в группу (only man)
void LAi_SetBarmanTypeNoGroup(aref chr);

//Установить персонажу тип официантки (only woman)
void LAi_SetWaitressType(aref chr);
//Установить персонажу тип официантки, без перемещения в группу (only woman)
void LAi_SetWaitressTypeNoGroup(aref chr);

//Установить персонажу тип бедника
void LAi_SetPoorType(aref chr);
//Установить персонажу тип бедника, без перемещения в группу
void LAi_SetPoorTypeNoGroup(aref chr);

//Установить персонажу тип губернатора
void LAi_SetHuberType(aref chr);
//Установить персонажу тип губернатора, без перемещения в группу
void LAi_SetHuberTypeNoGroup(aref chr);

//Установить персонажу тип губернатора, ходячего по комнате
void LAi_SetHuberStayType(aref chr);
//Установить персонажу тип губернатора, ходячего по комнате, без перемещения в группу
void LAi_SetHuberStayTypeNoGroup(aref chr);
//Указать губернатору точку возле карты
void LAi_SetStayHuberPointMap(aref chr, string group, string locator);
//Указать губернатору точку возле окна
void LAi_SetStayHuberPointWindow(aref chr, string group, string locator);

//Установить персонажу тип священика
void LAi_SetPriestType(aref chr);
//Установить персонажу тип священика, без перемещения в группу
void LAi_SetPriestTypeNoGroup(aref chr);

//Установить персонажу тип актёра
void LAi_SetActorType(aref chr);
//Установить персонажу тип актёра, без перемещения в группу
void LAi_SetActorTypeNoGroup(aref chr);


//------------------------------------------------------------------------------------------
//Actor
//------------------------------------------------------------------------------------------
//
// параметр quest:
// если "" то никакой реакции по окончанию действия не будет
// если "questName" то по окончанию действия сработает указанный квест
// параметр timeout:
// если -1 то задание будет выполняться, пока не выполниться
// если >= 0 то по истечении заданного времени просимулируется выполнение задания в секундах
//
//
// команды актёру можно отдавать только когда он загружен в локацию
//
//
//------------------------------------------------------------------------------------------

//Указать актёру стоять, нелочиться
void LAi_ActorStay(aref chr);

//Указать актёру идти в заданный локатор, лочиться
void LAi_ActorGoToLocator(aref chr, string group, string locator, string quest, float timeout);
//Указать актёру бежать в заданный локатор, лочиться
void LAi_ActorRunToLocator(aref chr, string group, string locator, string quest, float timeout);

//Указать актёру идти в заданную локацию, лочиться
void LAi_ActorGoToLocation(aref chr, string groupExit, string locatorExit, string locID, string groupEnter, string locatorEnter, string quest, float timeout);
//Указать актёру бежать в заданную локацию, лочиться
void LAi_ActorRunToLocation(aref chr, string groupExit, string locatorExit, string locID, string groupEnter, string locatorEnter, string quest, float timeout);

//Указать актёру cледовать за персонажем в пределах локации, лочиться до подхода
//При первом подходе или истечении времени сработает квест
void LAi_ActorFollow(aref chr, aref follow, string quest, float timeout);

//Указать актёру cледовать за персонажем по всем локациям, нелочиться
//При первом подходе или истечении времени сработает квест
void LAi_ActorFollowEverywhere(aref chr, string quest, float timeout);

//Указать актёру на кого напасть, лочиться
void LAi_ActorAttack(aref chr, aref enemy, string quest);

//Указать актёру бояться другого персонажа, нелочиться
void LAi_ActorAfraid(aref chr, aref by, bool canMove);

//Активировать диалог между актёром и другим персонажем с подходом друг к другу, лочиться
void LAi_ActorDialog(aref chr, aref to, string quest, float timeout, float dlgTime);
//Активировать диалог между актёром и другим персонажем немедленно, лочиться
void LAi_ActorDialogNow(aref chr, aref to, string quest, float dlgTime);
//Активировать диалог с самим собой, лочиться
void LAi_ActorSelfDialog(aref chr, string quest);
//Указать актёру стоять и ждать диалог, лочиться
void LAi_ActorWaitDialog(aref chr, aref by);

//Проиграть анимацию для актёра, по окончанию вызвать квест, лочиться
//Если анимация зацикленна, то квест вызовется по истечению времени
void LAi_ActorAnimation(aref chr, string animation, string quest, float timeout);

//Ориентировать актёра на персонажа (одноразово), нелочиться
void LAi_ActorTurnToCharacter(aref chr, aref to);
//Ориентировать актёра по локатору, нелочиться
void LAi_ActorTurnByLocator(aref chr, string group, string locator);
//Ориентировать актёра на локатор, нелочиться
void LAi_ActorTurnToLocator(aref chr, string group, string locator);

//Установить анимацию стоячего персонажа, модификатор idle-анимации
void LAi_ActorSetStayMode(aref chr);
//Установить анимацию сидячего персонажа, модификатор idle-анимации
void LAi_ActorSetSitMode(aref chr);
//Установить анимацию лежачего персонажа
void LAi_ActorSetLayMode(aref chr);

//Перейти в состояние ожидания новой команды, пользоваться этой функцией не рекомендуется
void LAi_type_actor_Reset(aref chr)

//------------------------------------------------------------------------------------------
//Characters control
//------------------------------------------------------------------------------------------

//Установить время загрузки персонажа
void LAi_SetLoginTime(aref chr, float start, float end);
//Удалить время загрузки персонажа
void LAi_RemoveLoginTime(aref chr);
//Данный персонаж является верующим, и в определённое время находиться в церкви
void LAi_SetFanatic(aref chr, string churchID, strung group, string locator, float start, float end);
//Сделать обычным персонаж
void LAi_RemoveFanatic(aref chr);
//Запретить перерождение персонажа после убийства
void LAi_NoRebirthEnable(aref chr);
//Разрешить перерождение персонажа после убийства
void LAi_NoRebirthDisable(aref chr);
//Разрешить/запретить персонажу загружаться в захваченную локацию
void LAi_LoginInCaptureTown(aref chr, bool isEnable);

//Установить хитпойнты
void LAi_SetHP(aref chr, float cur, float max);
//Установить текущии хитпойнты
void LAi_SetCurHP(aref chr, float cur);
//Установить текущии хитпойнты максимальными
void LAi_SetCurHPMax(aref chr);
//Скорость изменения хп в секунду
void LAi_SetDltHealth(aref chr, float healthPerSec);
//Использовать бутылочку
void LAi_UseHealthBottle(aref chr, float healthInBottle);
//Сделать персонажа бессмертным
void LAi_SetImmortal(aref chr, bool isImmortal);
//Получить хп персонажа
float LAi_GetCharacterHP(aref chr);
//Получить максимальные хп персонажа
float LAi_GetCharacterMaxHP(aref chr);
//Получить относительные хп персонажа 0..1
float LAi_GetCharacterRelHP(aref chr);
//Получить относительную энергию персонажа 0..1
float LAi_GetCharacterRelEneggy(aref chr);

//Установить проверяльщик хп, если их становиться меньше чем, вызвать квест
void LAi_SetCheckMinHP(aref chr, float min, bool immortal, string quest);
//Удалить проверяльщик хп
void LAi_RemoveCheckMinHP(aref chr);

//Убить персонажа
void LAi_KillCharacter(aref chr);
//Убит ли персонаж
bool LAi_IsDead(aref chr);

//Получить относительный заряд пистолета
float LAi_GetCharacterRelCharge(aref chr);

//Запретить диалог с персонажем
void LAi_CharacterDisableDialog(aref chr);
//Разрешить диалог с персонажем
void LAi_CharacterEnableDialog(aref chr);

//Разрешить при смерти порождить фантома
void LAi_CharacterReincarnation(aref chr, bool isEnable, bool isUseCurModel);

//Скил fencing для персонажа при логине выставляется относительно игрока
void LAi_SetAdjustFencingSkill(aref chr, float min, float max);
//Удалить выставлялку скила
void LAi_DelAdjustFencingSkill(aref chr);


//Проиграть звук
void LAi_CharacterPlaySound(aref chr, string soundname);

//Переключиться в режим боя и обратно
void LAi_SetFightMode(aref chr, bool isFightMode);
//Заблокировать текущий режим (!!! сбрасывается при смене шаблона !!!)
void LAi_LockFightMode(aref chr, bool isLockFightMode);

AddonMeiker
24.06.2010, 00:21
Здравствуйте урок как сделать ГГ или перса неуязвимым и обратно на самом деле очень просто
LAi_SetImmortal(Pchar, true); вот и всё ГГ неуязвим:) а если хотите обратно уязвимым зделать то вместо true пишем false:rolleyess: теперь расмотрем пример работы с персами по ID
LAi_SetImmortal(CharacterFromID("TestCharacter"), true); вместо ТестЧхарацтер пишем ID Перса всё остальное как у ГГ вот и всё.:)

dima12
24.06.2010, 00:41
В чём смысл уроков если они не приследуют конкретную цель?
Описание изменения входных атрибутов функций - это не урок.

AddonMeiker
24.06.2010, 00:43
я напишу скоро примеры работы с квестами на основе данных уроков.:rolleyess:

Здравствуйте по замечанию что в моих уроках нету целы что я уже и сам понял решил написать урок по созданию простого квеста.:)

case "TestQuest":
Pchar.quest.TestQuest.win_condition.l1 = "ExitFromLocation";
Pchar.quest.TestQuest.location.l1 = "Pchar.location";
Pchar.quest.TestQuest.win_condition = "nextquest";
break;сохраним в PROGRAM/quest/story_line.c а вызвать можно очень просто
AddDialogExitQuest("TestQuest");тойсть после выхода из диалога вызвать квест под именем которое указано в переменной string.
и так в данном квесте мы удачно завершаем квест если ГГ выйдет из той локации где он находиться сейчяс и после чего будет переход на квест(кейс) nextquest.
Скоро продолжение уроков по созданию квестов.:)

Kopcap
24.06.2010, 10:09
Здравствуйте по замечанию что в моих уроках нету целы что я уже и сам понял решил написать урок по созданию простого квеста.
этот "урок" тоже ни о чем.
К тому же я несколько лет назад это все у нас на форуме уже описывал. Можно без труда найти=) + можно найти список фунций с комменатариями небольшими по их работе.

VladAtamanUa
19.08.2010, 23:40
Не ругайте AddonMeikerа, он выложил список ООООЧень полездных функций:rolleyess: ! Пусть продолжает:)

Педро Сангре
20.09.2011, 23:30
Скажите пожалуйста чайнику-самоучке как заложить предметы в определенный сундук (в данном случае в каюте своего корабля)?:)

Navarra
22.09.2011, 00:35
Скажите пожалуйста чайнику-самоучке как заложить предметы в определенный сундук (в данном случае в каюте своего корабля)?:)

Типовые примеры...
Locations[FindLocation("Grotto")].box1.items.Jewelry5 = 500;
Locations[FindLocation("Grotto")].box1.money = 1000000;
или так
pchar.GenQuestBox.Guadeloupe_town.box1.items.blade 4 = 1; но на К3 может и не сработает, не пробовал.

Ну, дальше, думаю, сам разберешься...

Педро Сангре
24.09.2011, 21:54
Ух ты, сам Navarra ответил!) :blush2: Спасибо! :thank_you:

А скажите пожалуйста еще, как сделать себе офицера с определенным скином, именем, рангом, опытом, навыками и кораблем? Я везде искал, но так и не нашел. :sorry:

Navarra
27.09.2011, 01:15
А скажите пожалуйста еще, как сделать себе офицера с определенным скином, именем, рангом, опытом, навыками и кораблем? Я везде искал, но так и не нашел.
Ээээ не товарищ, так дело не пойдет! Это то самое элементарное с чего начинается жизнь любого программиста на Шторме! И еще - плохо искал! Все и у всех уроки с этого и начинаются... Ищи и учись!

P.S. Хм... Только обратил внимание, не часто тут земляков встретишь, особенно из Мариуполя!:)

Педро Сангре
01.10.2011, 20:21
Ээээ не товарищ, так дело не пойдет! Это то самое элементарное с чего начинается жизнь любого программиста на Шторме! И еще - плохо искал!

Вся проблема в том, что в Шторм я влетел абсолютно без знания ЯП и основ программирования и плохим знанием английского и без доступа к интернету, поэтому разобраться в этом было довольно сложно. :sorry: Запись с офицером я сначала искал в story_line.c в начале, когда еще в Сан-Себастьяне в компаньоны добавляется торговец, которого надо сопровождать. Там я нашел только две строчки, которые могли бы давать эту программу, но они мне никак бы не помогли. В скрипте с таверной копаться - у меня мало опыта, а другие файлы, которые я нашел через Винду с помощью поиска файла с текстом внутри мне так и не помогли. Поэтому я отложил это до появления интернета, а вот сейчас снова это ищу.

Все и у всех уроки с этого и начинаются... Ищи и учись!

Какие уроки??? :)

P.S. Хм... Только обратил внимание, не часто тут земляков встретишь, особенно из Мариуполя!

Да, я видел!)) Просто не знал, как вы на это отреагируете, если я вам об этом напишу. Тем более, что я в 2 раза вас младше... :blush2: А в каком районе вы живете? :rolleyess:

Navarra
01.10.2011, 22:56
Вся проблема в том, что в Шторм я влетел абсолютно без знания ЯП
Сам с этого начинал когда-то...

Запись с офицером я сначала искал в story_line.c
Вот это правильно, нужно читать и анализировать код...

Какие уроки???
Для начала эти...
http://forum.bestgamer.ru/showthread.php?t=984
http://forum.bestgamer.ru/showthread.php?t=978
http://forum.bestgamer.ru/showthread.php?t=38005

Да, я видел!)) Просто не знал, как вы на это отреагируете, если я вам об этом напишу. Тем более, что я в 2 раза вас младше...
Я что, такой старый?!:)

А в каком районе вы живете?
Орджоникидзевском...

Педро Сангре
02.10.2011, 21:34
Сам с этого начинал когда-то...

Значит у меня есть все шансы!) :wiink:

Вот это правильно, нужно читать и анализировать код...

:thank_you:

Для начала эти...
http://forum.bestgamer.ru/showthread.php?t=984
http://forum.bestgamer.ru/showthread.php?t=978
http://forum.bestgamer.ru/showthread.php?t=38005


Огромное спасибо!!! :thank_you: :yahoo:

Я что, такой старый?!

:rofl: Скорее я молодой!)

Орджоникидзевском...

А-а-а, а я в Приморском!) :rolleyess:

Babb
11.10.2011, 00:17
Как сделать офицеру принудительную анимацию LAI_TYPE_GROUNDSIT; или лежать "Lay_1 через диалог с офицером, где находиться этот диалог.

Navarra
11.10.2011, 23:36
Как сделать офицеру принудительную анимацию LAI_TYPE_GROUNDSIT; или лежать "Lay_1 через диалог с офицером, где находиться этот диалог.
LAi_SetGroundSitType(aref chr);
и
LAi_ActorSetLayMode(aref chr);

Ну, а то как это в диалогах или квестовых файлах прописать описано в уроках выше.

Babb
12.10.2011, 17:25
LAi_SetGroundSitType(aref chr);
и
LAi_ActorSetLayMode(aref chr);

Ну, а то как это в диалогах или квестовых файлах прописать описано в уроках выше.
Это ни о чём говорящая информация, просто название нужной анимации, если допустим вариант с сидящим на земле работает, то с лежачим никак не хочет, наверное потому что это анимация трупа, и делается наверное не так просто, допустим если её прописать городским персонажам, то ничего не призойдёт, вот здесь.

void LAi_type_citizen_Init(aref chr)
{
DeleteAttribute(chr, "location.follower");
bool isNew = false;
if(CheckAttribute(chr, "chr_ai.type") == false)
{
isNew = true;
}else{
if(chr.chr_ai.type != LAI_TYPE_CITIZEN) isNew = true;
}
if(isNew == true)
{
DeleteAttribute(chr, "chr_ai.type");
chr.chr_ai.type = LAI_TYPE_CITIZEN;
//Установим шаблон гуляния
LAi_tmpl_walk_InitTemplate(chr);
}
chr.chr_ai.type.notalk = rand(10);
chr.chr_ai.type.checkFight = rand(5)+2;
//Установим анимацию персонажу
LAi_SetDefaultStayAnimation(chr);
SendMessage(&chr, "lsl", MSG_CHARACTER_EX_MSG, "SetFightWOWeapon", false);

а вот сидяший на земле сработает.

Navarra
13.10.2011, 01:50
Это ни о чём говорящая информация
Для того, чтоб она была "о чём-то говорящей" нужно правильно изъясняться...

А с лежачим дело не в анимации и не в трупе... Все довольно таки просто, эти скрипты используют разные типы персонажей: для обычных - LAi_SetGroundSitType(aref chr), а вот LAi_ActorSetLayMode(aref chr) это только для актера.

Babb
13.10.2011, 02:26
Для того, чтоб она была "о чём-то говорящей" нужно правильно изъясняться...

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

Если я вас правильно поняла про анимацию лёжа, нужно сначала перевести персонаж в группу LAI_TYPE_ACTOR, а потом уже назначать анимацию или есть другие методы.

Navarra
13.10.2011, 02:58
поняла
Хм... Забавненько... Удивлен.

Если я вас правильно поняла про анимацию лёжа, нужно сначала перевести персонаж в группу LAI_TYPE_ACTOR, а потом уже назначать анимацию или есть другие методы.
Отчасти да, НО если у citizen использовать тип actor, то с подходом к НПСу диалог завести не выйдет, как например с "сидящим" бедняком или блуждающим стандартным ситизеном. Данный тип, actor, используется в блоках для принудительного (т.с. скриптового) вызова диалога в определенный момент, например с входом в локацию, на локатор и т.п. Впринципе, примеры использования типа actor можно посмотреть в story_linе, quest_reaction и т.п., т.е. в готовых квестовых эпизодах.

Кстати, в положении LAi_ActorSetLayMode как-то не доводилось actor'ом заводить диалог... Фантазия до такого не дошла!:) На 100% не могу быть уверен в работоспособности, но теоретически должно.

Babb
13.10.2011, 19:44
Тип actor если я ничего не перепутала у офицеров, и это позволяет ими манипулировать как хочешь. Что касается горожан сидячих, то разговаривают как миленькие, может и с лежачими удастся разобраться.

Navarra
14.10.2011, 00:31
Кажется мои слова не дошли до пункта назначения...:) Но так даже лучше, программист должен уметь анализировать код и методом проб и ошибок находить нужное решение... От такого подхода будет толк! Поэтому, пока не мешаю...:)

Babb
14.10.2011, 04:32
Вообще то из меня программист пока, как испанский лётчик, полтора месяца копаюсь со скриптами, срок более чем скромный. Вот опять тупой вопрос возник, кто считается НПС игроком.

Вот маленько издевалась над скриптами. Женский патруль и девочки бандитки.

http://s017.radikal.ru/i421/1110/46/60338ef539b2.jpg (http://www.radikal.ru)

http://s57.radikal.ru/i158/1110/22/8e57cb31ae82.jpg (http://www.radikal.ru)

Ну а это просто баловство.

http://s003.radikal.ru/i201/1110/34/e2f24137e91d.jpg (http://www.radikal.ru)

http://s60.radikal.ru/i168/1110/61/6fd73b32a371.jpg (http://www.radikal.ru)

Babb
14.10.2011, 18:45
LAI_TMPL_WALK это функция является инструкцией к действиям персонажей, которые болтаются в городе, здесь есть указание что персонаж либо стоит, либо идёт, если беднягам присвоить анимацию LAi_SetSitPoorAnimation в LAi_citizen.c получается несоответствие с их шаблоном гуляния, так как в нём нет указаний на то что персонаж может сидеть. Но горожане исправно изображают нищих, несмотря на эту ошибку, значит, должны образоваться глюки в игре, вопрос, как эти таинственные глюки выглядят, не в виде цветных полос на экране которые появляются иногда на долю секунды?

Чтобы обойти это безобразие с LAi_actor.c в смысле полное нежелание разговаривать с ГГ может попробовать разрешить нужную анимацию в другом месте, ( интересно в каком, очень смешно, когда не знаешь о чём спрашиваешь), ну допустим разрешить это делать офицерам непосредственно в LAi_officer.c, или может просто в templates изобразить нужную функцию с нуля и добавить её в LAi_templates.c, второй вариант мне больше нравиться. Хотя все эти мои размышления больше похожи на бред сумасшедшего, но есть один вразумительный вопрос: есть ли ещё какая-нибудь зависимость у LAi_templates. кроме как с LAi_init.c?

Navarra
16.10.2011, 01:38
Вот опять тупой вопрос возник, кто считается НПС игроком.
Здрасте... Гугл, на крайняк, в помощь!
НПС (NPC - Non Player Character) - персонажи в игре, которые управляются компьютером, а не игроком.

LAI_TMPL_WALK это функция является инструкцией к действиям персонажей, которые болтаются в городе, здесь есть указание что персонаж либо стоит, либо идёт, если беднягам присвоить анимацию LAi_SetSitPoorAnimation в LAi_citizen.c получается несоответствие с их шаблоном гуляния, так как в нём нет указаний на то что персонаж может сидеть. Но горожане исправно изображают нищих, несмотря на эту ошибку, значит, должны образоваться глюки в игре, вопрос, как эти таинственные глюки выглядят, не в виде цветных полос на экране которые появляются иногда на долю секунды?
LAi_poor.c посмотри, и разберись что там и как.
А ошибки ловятся только тестом и анализом!

Чтобы обойти это безобразие с LAi_actor.c в смысле полное нежелание разговаривать с ГГ может попробовать разрешить нужную анимацию в другом месте, ( интересно в каком, очень смешно, когда не знаешь о чём спрашиваешь), ну допустим разрешить это делать офицерам непосредственно в LAi_officer.c, или может просто в templates изобразить нужную функцию с нуля и добавить её в LAi_templates.c, второй вариант мне больше нравиться. Хотя все эти мои размышления больше похожи на бред сумасшедшего, но есть один вразумительный вопрос: есть ли ещё какая-нибудь зависимость у LAi_templates. кроме как с LAi_init.c?
С вопросом ты конечно перемудрила, ясно что ничего не ясно! А самое главное - зачем такую муть придумывать и потом пытаться реализовать?!
Для понимания зависимостей ответ простой - поиск в помощь!

Babb
16.10.2011, 20:42
По поводу мути, всё очень просто, у меня нет специального образования. мне проще придумать безумную идею, потом сделать чтоб это работало, так быстрее доходит до моей тупой башки. Хотя она и не совсем безумна, персонажи в игре много чего умеют, в смысле движений, но в игре это не используется. Речь идёт не об изменении анимации, а об уже готовых фрагментах. Вот например лежачая анимация, почему хочу её приспособить, вовсе не из глупости, допустим если научится её использовать, то можно будет позволить персонажем падать во время боя, от сильных пробивных например, понятно что здесь надо будет уже и анимацию герою добавлять, не каждый игрок будет ждать когда соперник подымется, здесь опять всё зависит от фантазии создателей игры, можно репутацию к примеру уронить за удар лежачего.

Есть ещё одно движение которое используется в одном месте.

http://s001.radikal.ru/i196/1110/8c/617377243263.jpg (http://www.radikal.ru)
http://s017.radikal.ru/i429/1110/4d/8dea80076dc8.jpg (http://www.radikal.ru)

Здесь видно что персонаж может сидеть на корточках и прыгать с высоты, но если выискивая в что-нибудь связанное с лежачей, я обнаружила что она связана с фрагментом death, то про вышесказанные движения пока не нашла ничего, кстати в гугле вряд ли кто знает ответ на этот вопрос. Я полностью согласна в этом вопросе с вами, нужно самим искать, но у меня порой просто не хватает времени, особенно с моим интернетом, мне слишком много лет, а с возрастом просто проблем больше.
На одном форуме мне сказали, что хватит разбрасываться идеями, собери команду и делай моды. Я считаю это полнейшим тупизмом, можно наковырять квестов своих, напихать в игру и орать на весь мир, что мол де мы мод сотворили, но ведь это по прежнему старая игра, со старым игровым миром, анимацией персонажей, и т.д. В модах новых элементарно не хватает озвучки действий НПС, (спасибо вам, просветили тупицу), это здорово разнообразило бы игровой если бы можно было привязать реплики к действиям персонажей, для примера у нас немые города, это неестественно, если представить что при проходе персонажа мимо уличной торговки он услышит вслед что-нибудь, какой красавчик пошёл, игра от этого только бы выграла, а ведь это можно сделать, на репликах стоит дистанция, если её увеличить, то наша торговка будет балоболить без перерыва, как её и подобает, прошу меня простить за то что может это всё не в тему.

P.S Кстати чтобы создать новую реплику в игре нужно её записать, а потом отправить в ogg и вставлять в игру, или это невозможно.

SeadogX
17.10.2011, 13:41
P.S Кстати чтобы создать новую реплику в игре нужно её записать, а потом отправить в ogg и вставлять в игру, или это невозможно.
Да даже мп3 Шторм читает, а актёры озвучивания у вас есть знакомые? :)

Из остального не понял особо ничего, что вы хотели сказать)) Моды это моды, полноценную другую игру на Шторме вы не сделаете, доступ есть только к скриптам, а двиг настолько корявый, что трогать его по серьёзному себе дороже.

З.Ы. Скрины выкладывайте мини-образом хотя бы, думаю не у всех пользователей форума анлим.

Babb
18.10.2011, 23:10
[quote=SeadogX;164138]Да даже мп3 Шторм читает, а актёры озвучивания у вас есть знакомые? :)

Из остального не понял особо ничего, что вы хотели сказать)) Моды это моды, полноценную другую игру на Шторме вы не сделаете, доступ есть только к скриптам, а двиг настолько корявый, что трогать его по серьёзному себе дороже.

Вот интересно не поняли друг друга, а зачем вообще этот гнилой движок трогать, пусть жуёт что уже умеет, анимацию эту он и не изменённый читает, заставить просто по другому это делать.

Navarra
20.10.2011, 16:02
у меня нет специального образования
И у меня не малейшего...

Вот например лежачая анимация, почему хочу её приспособить, вовсе не из глупости, допустим если научится её использовать, то можно будет позволить персонажем падать во время боя, от сильных пробивных например, понятно что здесь надо будет уже и анимацию герою добавлять, не каждый игрок будет ждать когда соперник подымется, здесь опять всё зависит от фантазии создателей игры, можно репутацию к примеру уронить за удар лежачего.
Фантазии, фантазии... Имеют право на жизнь, но требуют на много больших трудозатрат, что зачастую не оправдывается игроками...

На одном форуме мне сказали, что хватит разбрасываться идеями, собери команду и делай моды.
Ответь им, что это самое тупое предложение, которое может быть! От идеи до реализации - пропасть!

считаю это полнейшим тупизмом, можно наковырять квестов своих, напихать в игру и орать на весь мир, что мол де мы мод сотворили, но ведь это по прежнему старая игра, со старым игровым миром, анимацией персонажей, и т.д.
Нет, не совсем... Вселить в игру жизнь - это многое, избавившись от примитивизма ГПК и уж тем более К3, а вот одними фишками внеся якобы "изменения в игру" сыт не будешь - это вопрос 20 минут и все. В игре должен быть баланс, а для команды расчет трудозатрат и полезности...

модах новых элементарно не хватает озвучки действий НПС, (спасибо вам, просветили тупицу), это здорово разнообразило бы игровой если бы можно было привязать реплики к действиям персонажей, для примера у нас немые города, это неестественно, если представить что при проходе персонажа мимо уличной торговки он услышит вслед что-нибудь, какой красавчик пошёл, игра от этого только бы выграла, а ведь это можно сделать, на репликах стоит дистанция, если её увеличить, то наша торговка будет балоболить без перерыва, как её и подобает, прошу меня простить за то что может это всё не в тему.
Если думаешь что это сложно реализовать технически - нет, это проще простого и можно озвучить абсолютно любой диалог, НО озвучку нужно записать, интересными, красивыми и поставленными голосами (чтоб не раздражало). Есть предложения?! Думаю вряд ли... Вот и мычим, как в Му-Му.

P.S Кстати чтобы создать новую реплику в игре нужно её записать, а потом отправить в ogg и вставлять в игру, или это невозможно.
Как говорил, см. вше, но в ogg не обязательно, как сказал уже Дима, но желательно, Шторм с ним реже парится.

Babb
22.10.2011, 16:13
Вопрос чисто технического характера, у меня в результате моих безумных экспериментов стало выносить игру, при возвращении всего на исходную позицию, то есть абсолютно не правленной программы, игра по прежнему матерно ругается и посылает куда подальше, означает ли это безобразие, что у меня пришёл конец ENGINE.exe или дело в чём то другом.

Если думаешь что это сложно реализовать технически - нет, это проще простого и можно озвучить абсолютно любой диалог, НО озвучку нужно записать, интересными, красивыми и поставленными голосами (чтоб не раздражало). Есть предложения?! Думаю вряд ли... Вот и мычим, как в Му-Му.







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

BeginChangeCharacterActions(chr);
chr.actions.idle.i1 = "Ground_sitting";
chr.actions.idle.i2 = "Ground_look_around";
chr.actions.idle.i3 = "Ground_Scratch";
chr.actions.idle.i4 = "Ground_Beg";
chr.actions.dead.d1 = "Ground_Death";
chr.actions.dead.d2 = "Ground_Death1";
chr.actions.HitNoFight = "Ground_HitNoFight";
EndChangeCharacterActions(chr);


Это последовательность выполнения движений персонажем или что-то.
Если моё предположение не совсем ошибочно можно ли собрать в одну кучу
character.actions.fightdead.d1 = "death_0";
character.actions.fightdead.d2 = "death_1";
character.actions.fightdead.d3 = "death_2";
character.actions.fightdead.d4 = "death_3";
и
chr.actions.idle.i1 = "Lay_1";

Navarra
24.10.2011, 23:13
Вопрос чисто технического характера, у меня в результате моих безумных экспериментов стало выносить игру, при возвращении всего на исходную позицию, то есть абсолютно не правленной программы, игра по прежнему матерно ругается и посылает куда подальше, означает ли это безобразие, что у меня пришёл конец ENGINE.exe или дело в чём то другом.
Или чем-то другом... Скорее всего тронула какой-то файл и его не восстановила, не иначе. Чтоб за...ть Шторм нужно хорошенько потрудится, но думаю, это не данный случай.

Для проходных реплик, не несущих смысловых нагрузок, то есть в них не информации по игре, можно и плагиатом заняться, у человечества богатый фонд подобных реплик, а с современными программами по работе со звуком можно чёрта изобразить, не думаю что за такие действия в тюрьму посадят.
Так в чем проблема?:) Найди - реализуем! Проблема в исходниках и во времени на их "изготовление", а также в некотором опыте работы со звуком...

Это последовательность выполнения движений персонажем или что-то. Если моё предположение не совсем ошибочно можно ли собрать в одну кучу
и chr.actions.idle.i1 = "Lay_1";
Идея логичная... Просто думаю дело тут не в последовательности, а в рандоме одноименных действий, будь то тип "idle", "dead" и т.д...
Пробуй, наблюдай... все в твоих руках!

Babb
17.11.2011, 13:19
Пьяницы Карибские.Что это там солдатик делает, никак на похмелку выпрашивает, надо присоединиться пожалуй.
http://s1.ipicture.ru/uploads/20111117/mPuAz20n.jpg (http://s1.ipicture.ru/)
Вот присоединился, так хорошо стало.
http://s2.ipicture.ru/uploads/20111117/mVeKW93k.jpg (http://s2.ipicture.ru/)

Результат неудачных экспериментов, подозреваю, что чтобы управлять лежачей анимацией, кроме добавления LAI_TYPE_LAY надо ещё в characters.c что-нибудь изобразить и в templates.

Babb
22.11.2011, 20:31
Вот мерзость какая симпатичная.

http://s1.ipicture.ru/uploads/20111122/22Wn3Gat.jpg (http://s1.ipicture.ru/Gallery/Viewfull/6969193.html)

revival
11.04.2012, 20:11
Как то можно сделать что бы в определенной локе всегда были только пустые сундуки? Очень надо.

Navarra
12.04.2012, 01:23
Как то можно сделать что бы в определенной локе всегда были только пустые сундуки? Очень надо.
Можно! Поищи принцип прописания сундука для каюты ГГ... Он имеет постоянную составляющую и вещи в нем не генерятся и не исчезают... А значит можно сделать его пустым.

revival
12.04.2012, 10:57
Navarra, мерси.

Педро Сангре
15.04.2012, 00:07
Чтоб за...ть Шторм нужно хорошенько потрудится, но думаю, это не данный случай.
Угу, скорее Шторм за..ет тебя...

O.R.C.A.
12.08.2012, 14:52
Navarra, вопрос к Знающим:
-Способ включения "Key_R" в игре (какие файлы и строки отвечают за эту функцию)?

P.S. Пробовал изменить значения TimeScale (потом TmpScale) на true в init_pc.c - несработало! :blush2: Логически понятно, что нужно искать и в других файлах, Но где? Я не знаю языки программирования, но и как все нубы, понадобилось поковыряться (вообщето в К'3 хотел что бы клавиша "R" работала во всех локациях и на глоб.карте, а не только в море)!

revival
12.08.2012, 15:35
O.R.C.A., я бы стал открывать там ускорение времени. Раз его там нет значит, есть на это причины. Какой файл за это отвечает не помню, но в нем есть строка "запрет ускорения под водой". В поиске по содержимому поищи.

O.R.C.A.
12.08.2012, 15:57
revival, Благодарю! :thank_you: Причины всегда есть, но нам то их обходить стороной надо! На то свои личные причины!:blum2:

P.S. Об этом я даже не подумал:blink: ! Вкл. и Откл. и усё! Весь словарь придется перепробовать! И шоб я без вас делал?! У буржуев за этот вопрос меня вообще забанили!:diablo2pg:
__________________________________________________ _____________________
Было бы супер, создать ветку типо Сам Себе Мастер (как у Симбионщиков)! :secret:


Рейтинг@Mail.ru Rambler's Top100
© Copyright 2007-2015 BestGamer.Ru

vBulletin, Copyright © Jelsoft Enterprises Ltd.