![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3486
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Цитата Но я, пожалуй, готов предъявить жесткие требования к системе: НПС не воюют друг с другом никогда. Просто более внимательно изучи вопрос (IMG:style_emoticons/kolobok_light/smile.gif) Неписи - всего лишь компьютерные болванчики, работающие на скриптах, их можно настроить как угодно.Цитата Если нужно противное - использовать анимацию ударов и эффекты урона. Нвн1, насколько мне известно, не даёт особо порулить анимацией. Это фишка нвн2.
|
![]()
Сообщение
#3487
|
|
Level 6 ![]() ![]() Класс: Друид Характер: Chaotic Neutral Раса: Гном ![]() |
1. Навскидку не скажу, посмотри, что вернёт GetMaster(oKiller), когда маг и фам в разных локах. GetMaster(oKiller) возвращает персонажа, зато GetIsPC(GetMaster(oKiller)) возвращает FALSE. Всё работает в таком виде: Код if (GetIsPC(oKiller)) { if (GetIsPossessedFamiliar(oKiller)) oKiller = GetMaster(oKiller); GiveXPToKiller (oKiller, fXP); } return; P.S.: GiveXPToKiller - моя внутренняя функция Сообщение отредактировал Anakondar - Oct 29 2011, 09:05 |
![]()
Сообщение
#3488
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Работая с функцией ExecuteScript, столкнулся с парой таких интересных фактов:
- Лексикон категорически настаивает, что у этой функции нет задержки («ExecuteScript() has NO delay!» (с)); - компилятор тулсета же вполне нормально воспринял при пробе такую конструкцию, и на первый взгляд она даже правильно работала при тесте …но неожиданно стали возникать странные перебои в отсчете модульного времени. Стало создаваться впечатление, что часы модуля отказывались идти вперед в тех локациях, где работала эта скриптовая конструкция. А когда персонаж их покидал – время делало резкий скачек к тому значению, которое оно должно было достигнуть естественным путем, нибудь тех сбоев. Скрипт крепится на объекте, срабатывает при взаимодействии с PC и по задумке перезапускает сам себя через таймаут до тех пор пока на локации есть PC. Код object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, OBJECT_SELF, 1, -1, -1, -1, -1); object oArea = GetArea(OBJECT_SELF); if ((GetIsObjectValid(oPC))&&(GetArea(oPC) == oArea)) { DelayCommand(100.0, ExecuteScript("script", OBJECT_SELF)); } Часто видел похожие проблемы со скачками времени в других онлайн-модулях. Кто знает – эти вещи действительно взаимосвязаны и лучше не делать таймаутов для ExecuteScript? |
![]()
Сообщение
#3489
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата - Лексикон категорически настаивает, что у этой функции нет задержки («ExecuteScript() has NO delay!» (с)); Лексикон прав. ExecuteScript() вызывается без задержки (если не скормить ему эту задержку специально), а вызвавший его скрипт ждёт, пока тот не завершится. Если это весь код, который перезапускается, то никаких лагов со свременем он вызывать не должен. |
![]()
Сообщение
#3490
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Лаги со временем - фича движка нвн, появляется в зависимости от положения звёзд на небе. Особенно, если игроков немало зашло. На геме в 2005м время тормозило даже в локациях без скриптов.
Вирусман вроде фикс делал (да, нвнх). Вариант попроще - на модульный хб раз в минуту (или игровой час, не помню как там нвн показывает) вручную время ставить. |
![]()
Сообщение
#3491
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Как сделать, чтобы мобы возрождались после смерти спустя некоторое время?
|
![]()
Сообщение
#3492
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Например, использовать систему энкаунтер-триггеров из тулсета, там вроде есть опция периодического спавна. Но в онлайне чаще используются аналогичные скриптовые системы, как правило самописные, они более гибкие (можно динамически менять списки мобов, подгружать их из базы и т.п.). Посмотри на волте что-то типа spawn system, этого добра там должно быть навалом.
|
![]()
Сообщение
#3493
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Например, использовать систему энкаунтер-триггеров из тулсета, там вроде есть опция периодического спавна. Но в онлайне чаще используются аналогичные скриптовые системы, как правило самописные, они более гибкие (можно динамически менять списки мобов, подгружать их из базы и т.п.). Посмотри на волте что-то типа spawn system, этого добра там должно быть навалом. А есть готовый скрипт на spawn монстров, но в котором можно будет менять монстров, и время spawna, спавн убудет делаться для онлайна, сам со скриптами не умею работать, по возможности если есть скрипт допишите с нормальный разяснением, чтобы человек не пользовавшийся скриптами понял Автор:::::::::::::::::Milez::::::::::::::::::::::: ::::::: |
![]()
Сообщение
#3494
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
На волте и есть готовые скрипты. Но без знания скриптового языка всё равно ничего не сделать. Нельзя же читать, не зная букв, или решать дифференциальные уравнения, не зная математики.
|
![]()
Сообщение
#3495
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Чем, кстати, не устраивают обычные встречи? там можно настраивать мобов и их кол-во, даже генерацию от того какой фракцией наступаешь.
Сообщение отредактировал Melisse - Feb 6 2012, 13:59 |
![]()
Сообщение
#3496
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
В смысле встречи?
Если ставить триггеры, то респ я так понимаю будет происходить, если на него снова наступить, получается надо будет всех информировать, что при входе снова в локацию, будет респ мобов, и ставить триггер как раз на входе, или может я что то не понимаю? Потом допустим если мне нужно поставить моба где нибудь на возвышении гор одного, как я это сделаю с триггером, он респаться будет на каком растоянии.. У меня просьба, если кто делал скрипты на спавн мобов с пропись разных мобов, чтобы их можно было поменять на других, ну тоесть на любых других какие будут в модуле, и время через каторое будет респ, я в скриптах почти 0, а разбиратся в них просто времени нет работаю много, если кто напишет, потом обязательно договоримся$$$ |
![]()
Сообщение
#3497
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Рекомендую - для написания тривиальных эвентов и в качестве удобного пособия примеров для изучения NWN-скриптинга. Запускаем тулсет, открываем нужную локацию, открываем вкладку с монстрами и жмем кнопку «редактировать и копировать» на понравившемся, делаем что хотим с этим монстром и создаем ему уникальный резреф в конце сохраняя в кастомной своей палитре, копируем этот резреф себе в сторонку. Скачиваем скрипт генератор, запускаем, выбираем (в окошке вверху слева) тип скрипта «нормальный скрипт», выбираем источник запуска скрипта «ПС входит куда-то», отменяем спец условие, выбираем из списка скриптовых эвентов «сделать если ЭТО тогда ТО условие» и жмем кнопку «скрипт»: - выбираем тип условия «проверить локальную целочисленную»; - вводим в поле название для нашей переменной (ну например MONSTER_SPAWN_CHECK); - выбираем галочку на условие «точно равно»; - выставляем значение «0»; - жмем «ок»; выбираем из списка скриптовых эвентов «спавн созданий» и жмем кнопку «скрипт», заполняем поля: - «резреф» (копируем его из описалова монстра которого хотим спавнить); - визуальный эффект спавна (можно не трогать); - точка спавна – по вейпоинту (указываем таг нашего вейпоинта); - действия создания при респавне – выбираем «без действия»; - жмем «ок – выход»; выбираем из списка скриптовых эвентов «установка локальных переменных» и жмем кнопку «скрипт»: - выбираем тип переменной «целочисленная» и ставим соответствующий флажок (integer); - вводим в поле название нашей переменной упомянутое блоком выше (в примере MONSTER_SPAWN_CHECK); - устанавливаем ее в значение «1»; - жмем «ок – выход»; жмем кнопку «окончить текущие если», выбираем вариант «просто закончить», жмем кнопку «закрыть», видим в окошке наш сгенерированный скрипт и комент «поместите на OnEnter»: Код //Put this script OnEnter void main() { object oPC = GetEnteringObject(); if (!GetIsPC(oPC)) return; if (GetLocalInt(oPC, "MONSTER_SPAWN_CHECK")== 0) { oTarget = GetWaypointByTag("TAG_OF_WAYPOINT "); lTarget = GetLocation(oTarget); oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "resref_of_creature", lTarget); SetLocalInt(oPC, "MONSTER_SPAWN_CHECK", 1); } } копируем все это дело, жмем «свойства локации» в тулсете, открываем вкладку «события» и ищем окошко «OnEnter», жмем кнопочку чуть правее чтоб открыть редактирование скрипта на этот триггер и вставляем туда этот скопированный из генератора скрипт и сохраняем его под оригинальным именем, ставим на локации вейпоинт упомянутый в скрипте с упомянутым оригинальным тагом («TAG_OF_WAYPOINT» или что там придумается) – это будет точка спавна упомянутого монстра (резреф которого не забываем указать посмотрев в своей кастомной палитре в свойствах монстра). Жмем в генераторе скриптов кнопку «очистить для нового скрипта», «ок», снова выбираем тип скрипта «нормальный», выбираем стартер «ПС разрушивает/убивает монстра или плейсебл», выбираем че будет если убьет последователь – «отразится на ПС», отменяем наличие спец условия, выбираем из списка скриптовых эвентов «установка локальных переменных» и жмем кнопку «скрипт»: - выбираем тип переменной «целочисленная» и ставим соответствующий флажок (integer); - вводим в поле название нашей переменной упомянутое блоками выше (в примере MONSTER_SPAWN_CHECK); - устанавливаем ее в значение «0»; - жмем «ок – выход»; жмем кнопку «закрыть», видим и копируем наш сгенерированный скрипт с пометкой «поместить на OnDeath»: Код //Put this script OnDeath void main() { object oPC = GetLastKiller(); while (GetIsObjectValid(GetMaster(oPC))) { oPC=GetMaster(oPC); } if (!GetIsPC(oPC)) return; SetLocalInt(oPC, "MONSTER_SPAWN_CHECK", 0); } копируем это дело и жмем свойства нашего кастомного монстра с упомянутым резрефом в нашей кастомной палитре, выбираем пункт «событий» и находим триггер «OnDeath», жмем справа чтоб редактировать скрипт и вставляем наш скопированный сохранив его под оригинальным названием. Итого: имеем локацию; на ней точку респавна монстра (наш вейпоинт); и скрипт на входе в локацию который проверяет игрока в нее входящего на локальную переменную – если игрок уже убивал нашего оригинального монстра или еще не был на этой локации, значит новенький и целенький монстр появится в указанной точке при входе, если уже заходил в локацию но монстра еще не убивал, значит спавнить нового не будем. Система будет отлично работать для синглплеерного спавна монстра – для мультиплеерного как правило они сложнее и индивидуальнее. Сообщение отредактировал Flaristan - Feb 7 2012, 04:19 |
![]()
Сообщение
#3498
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Valeroy, скажу грубовато, но прямо - во всём нужно разбираться. Если ничего не изучать самому, а только просить сделать другого и показать, где тут настройки, ничего у тебя не выйдет. Для начала могу посоветовать, как бы странно ни звучало, - погуглить про нвн тулсет. Когда я начинал (лет 9 назад, с сингловых модулей), с интернетом было туго, да и форума этого вроде не было вообще, однако я нашёл себе статьи по тулсету с разжёвыванием всего и вся. Даже кастом контент зацепили. Кажется, они были на сайте либо игромании, либо лки.
Когда выкуришь мануалы с элементарными основами, у тебя не будет вопросов по поводу того, как работает тот же триггер встреч. Скрипты да, в полной мере понятны далеко не всем, но уж выучить настройки плейсов, итемов и триггеров ума много не надо. До кучи, стоит распотрошить все модули под рукой (первым делом - кампанию). К слову, нордок (по крайней мере его версия, доступная для скачивания) в качестве спавнера использует как раз-таки самые обычные триггеры. Гем1 в своё время тоже использовал триггеры для спавна. |
![]()
Сообщение
#3499
|
|
Level 7 ![]() Класс: Обыватель Характер: True Neutral Раса: Человек NWN: Модмейкер Начало Войны ![]() |
Valeroy, есть тут на форуме такая штука как база скриптов, страница 2 пятый сверху.
|
![]()
Сообщение
#3500
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Место где появится новый NPC определяется путём выставления вэйпоинтов с названием типа "WPR_"+ тэг_умершего_NPC. Если в начале тэга NPC стоит "NPC_", то эти четыре символа отрежутся. Может кто нибудь разжевать? Flaristan спасибо тебе огромное, приду домой буду пробовать, а на мультиплеер разве не пойдут такие скрипты? А как сделать допустим, чтобы было 4 сундука на боссе и в каждом сундуке были вещи, около 5-7, на каждый класс, и еще чтобы после каждого появления босса вещи тоже появлялись в сундуках, но уже другие, ну с небольшим добавлением |
![]()
Сообщение
#3501
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Было бы легче, если бы знать кусок пояснения к чему это, и видеть полный текст.
Очевидно имеется в виду, что если у нас есть монстры к примеру с тагами «TAG001» и «NPC_TAG002», то точки их респавнов будут обозначаться вейпоинтами с тагами соответственно «WPR_TAG001» и «WPR_TAG002». Пойдут или не пойдут – решает уже сам разработчик. Тот простенький скрипт сделанный в скриптгенераторе, который я предложил - не универсален. Хорошо если задумка описанной точки респавна при входе в локацию игрока спавнить ему противника по штуке на игрока без заморочек, но если это особый противник вроде босса? Тогда получится: зашел 1 игрок на локацию и стал драться с ним, и тут на локацию заходит другой игрок - внезапно появляется еще один босс на голову первому игроку. А если заходит отряд в 10 человек – появятся 10 боссов. А если в локацию зашел один игрок, не смог убить монстра и убежал, и тут в локацию приходит второй игрок – он монстра еще не убивал и получится у него отреспится и свой монстр и на локации будет еще тот которого отреспил предыдущий игрок. В общем, делая для мультиплеера, приходится учитывать кучу нюансов относительно конечного вида реализации своих задумок. Как правило, для качественного внедрения единичной идеи требуется прописывание айсберга неявных нюансов удерживающих эту идею именно в той форме, которая была задумана. Чтоб успешно заниматься этим - одного владения «скрипт-генератором» мало, нужно быть на «ты» с НВН-скриптингом. Поставить 4 сундука; написать скрипт, который при открытии сундука единожды на смерть босса находящегося рядом генерирует в нем определенные вещи в определенном количестве, и если вещи уже лежат в сундуке при новом открытии после новой смерти босса – добавлять в их свойства определенные заранее улучшения; развесить этот скрипт на эти 4 сундука. (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#3502
|
|
Level 5 ![]() ![]() Класс: Вор Характер: Neutral Good Раса: Человек ![]() |
Подскажите - как заставить катапульту стрелять огненными шарами?Или метеоритным штормом? Плиз дайте скрипт!
Сообщение отредактировал ReZkiy - Feb 18 2012, 13:03 |
![]()
Сообщение
#3503
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Для балист и катапульт
Neverwinter Script void main() { object oBal = OBJECT_SELF; object oZel = GetNearestObjectByTag("ZEL_BAL");//Объект на который должен быть скастован спелл. if (GetIsObjectValid(oZel) && GetDistanceToObject(oZel) <= 50.0f && GetLocalInt(oBal,"BALL") != 1) { SetLocalInt(oBal,"BALL",1); PlaySound("as_cv_winch1"); DelayCommand(15.3, SetLocalInt(oBal,"BALL",FALSE)); if (GetTag(oBal) == "CATAPULTA") AssignCommand(oBal,ActionCastSpellAtObject(SPELL_F IREBALL,oZel)); else switch (Random(2)+1) { case 1: AssignCommand(oBal,ActionCastSpellAtObject(SPELL_F LAME_ARROW,oZel)); break; case 2: AssignCommand(oBal,ActionCastSpellAtObject(SPELL_M ELFS_ACID_ARROW,oZel)); break; } } } Спец скрипт для мощной катапульты Neverwinter Script void main() { object oPC = GetFirstPC(); object oBal = OBJECT_SELF; int i = 1; object oZel = GetNearestObject(OBJECT_TYPE_CREATURE, oBal, i); vector vFace = GetPosition(oPC); if (GetArea(oPC) != GetArea(oBal)) return; if (GetLocalInt(oBal,"BALL") == 1) return; while(GetIsObjectValid(oZel)) { int iRepa = GetReputation(oZel, oBal); if (iRepa < 40) { if (GetDistanceToObject(oZel) <= 23.0 && !GetIsDead(oZel)) { if (GetDistanceToObject(oZel) <= 3.0) return; effect eDamage = EffectDamage(GetCurrentHitPoints(oZel)/5, DAMAGE_TYPE_BLUDGEONING); effect eIMM = EffectSpellResistanceDecrease(30); AssignCommand(oBal, SetFacingPoint(vFace)); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eIMM,o Zel,5.0); PlaySound("cb_sh_ballista"); DelayCommand(0.5, AssignCommand(oBal,ActionCastSpellAtObject(SPELL_M AGIC_MISSILE,oZel))); DelayCommand(1.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oZel));// Наносим удар DelayCommand(3.0, PlaySound("as_cv_winch1")); DelayCommand(11.0, SetLocalInt(oBal,"BALL",FALSE)); SetLocalInt(oBal,"BALL",1); break; } } i++; oZel = GetNearestObject(OBJECT_TYPE_CREATURE, oBal, i); } } Скрипты стоят на ХБ |
![]()
Сообщение
#3504
|
|
Level 5 ![]() ![]() Класс: Вор Характер: Neutral Good Раса: Человек ![]() |
Спец скрипт для мощной катапульты Neverwinter Script void main() { object oPC = GetFirstPC(); object oBal = OBJECT_SELF; int i = 1; object oZel = GetNearestObject(OBJECT_TYPE_CREATURE, oBal, i); vector vFace = GetPosition(oPC); if (GetArea(oPC) != GetArea(oBal)) return; if (GetLocalInt(oBal,"BALL") == 1) return; while(GetIsObjectValid(oZel)) { int iRepa = GetReputation(oZel, oBal); if (iRepa < 40) { if (GetDistanceToObject(oZel) <= 23.0 && !GetIsDead(oZel)) { if (GetDistanceToObject(oZel) <= 3.0) return; effect eDamage = EffectDamage(GetCurrentHitPoints(oZel)/5, DAMAGE_TYPE_BLUDGEONING); effect eIMM = EffectSpellResistanceDecrease(30); AssignCommand(oBal, SetFacingPoint(vFace)); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eIMM,o Zel,5.0); PlaySound("cb_sh_ballista"); DelayCommand(0.5, AssignCommand(oBal,ActionCastSpellAtObject(SPELL_M AGIC_MISSILE,oZel))); DelayCommand(1.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oZel));// Наносим удар DelayCommand(3.0, PlaySound("as_cv_winch1")); DelayCommand(11.0, SetLocalInt(oBal,"BALL",FALSE)); SetLocalInt(oBal,"BALL",1); break; } } i++; oZel = GetNearestObject(OBJECT_TYPE_CREATURE, oBal, i); } } Слушай, а важно ли здесь что бы катапульта или баллиста как плейсбл была используемая? |
![]()
Сообщение
#3505
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Важно, т.к. скрипт стоит на ХБ и катапульты кастуют спелы.
|
![]()
Сообщение
#3506
|
|
Тролль ![]() ![]() ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь ![]() |
Для того, чтоб плейсбл мог кастовать спеллы, он не должен быть «статик» - но при этом он может быть не «активным».
Используй только галочку «сюжетный», если хочешь, чтоб катапульты нельзя было разрушить, и он будет как статик, колдующий спеллы. Сообщение отредактировал Flaristan - Feb 19 2012, 18:32 |
![]()
Сообщение
#3507
|
|
Level 5 ![]() ![]() Класс: Вор Характер: Neutral Good Раса: Человек ![]() |
|
![]()
Сообщение
#3508
|
|
Level 1 Класс: Обыватель Характер: Lawful Neutral Раса: Человек ![]() |
Всех приветствую!Возник вопрос.Прошу прощения,если пишу не туда...
Вопрос:необходимо,чтобы НПС появился после выполнения какого-либо действия,а не сразу при запуске модуля(например,через присвоение ему локальной переменной).То есть,поговорил с каким-нибудь челом,и,в указанном месте появился новый НПС.Ещё,хотел спросить:как заставить появиться НПС при наступлении ГГ на определённый участок локации?То есть,созданная мною группа НПС через "Мастер встреч",появлялась после выполнения разговора с кем-либо.Заранее,спасибо за помощь (IMG:style_emoticons/kolobok_light/declare.gif) |
![]()
Сообщение
#3509
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Здраствуйте, извините может не туда пишу, но у меня серьезный вопрос, мне нужен человек который бы объяснил по скайпу как работать со скриптами, для меня это не знакомо, поэтому прошу строго не судить если я обратился с этой просьбой суда, просто у меня хорошая идея для создания онлайн-модуля, но без скриптов ни как, хорошо отблагодарю человека который сможет помоч, пишите суда или скайп nemi44441
|
![]()
Сообщение
#3510
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
redlist2009, все эти моменты разжёваны по 100 раз, тут огромная база примеров (IMG:style_emoticons/kolobok_light/smile.gif) В качестве наводки:
- Для выполнения действия в ветке диалога есть соответствующий слот для скрипта. - Для выполнения действия в определённом месте локации есть слот OnEnter у триггеров, который там надо заранее нарисовать. - Создать объект в скрипте можно функцией типа CreateObject по его resref-у, который можно подглядеть в палитре. - Можно распотрошить оригинальную кампанию, там есть такие ситуации. Если ты конечно её проходил. На подобные вопросы тут неохотно отвечают, т.к. это всё есть в мануалах. Valeroy, говорю как преподаватель информатики (в т.ч. и программирования) - если ты совсем ничего не понимаешь в программировании, то обучить тебя этому за пару вечеров в скайпе невозможно в принципе. Самый действенный вариант - заинтересуй кого-нить своей идеей, тут 100% несколько скриптеров без дела шатается. Если идея интересна не только тебе, может выйти положительный результат. Сообщение отредактировал denis0k - Feb 22 2012, 23:30 |
![]() ![]() |
Текстовая версия | Сейчас: 4th May 2025 - 09:17 |