Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Город Мастеров _ Шарды рунета _ Скрипты для шарда

Автор: Lex Jul 5 2004, 19:44

Собственно сабж.
<small>Добавлено в 16:45</small>
решил на досуге сделать http://wrg.ru/TEMP/Lex_LexxL/Speaker.rar, который за деньги кричит ваше сообщение на рынке. но нет у меня возможности проверить схему в модуле с несколькими игроками.


ADD:
Если есть возможность, проверьте кто-нибудь. Заранее благодарен.

Автор: _kaa_ Jul 11 2004, 12:25

Простой скрипт, вешается на HB. (модуля или для нужных локаций).
Что делает: днем, если локация не подземная, при попытке использовать SKILL_HIDE вешает на 30 секунд пенальти на скилл hide (снижает до 2)
А то с появлением shadow dancer'а воры совсем обнаглели, в чистом поле под солнцем умудряются тень найти (свою наверное smile.gif )
Заодно помогает против излюбленной техники их же - стукнуть моба, отбежать и уйти в тень. Теперь такое будет работать только ночью, что уже вполне реально и такая стратегия из разряда "баго-фича" переходит в разряд "военная хитрость" smile.gif

Neverwinter Script Source
void _anti_hide(object oPC)
{
   object oArea = GetArea(oPC);
   if (!GetIsObjectValid(oArea)) return;
   if (GetIsDay() && GetIsAreaAboveGround(oArea) == AREA_ABOVEGROUND && GetStealthMode(oPC) == STEALTH_MODE_ACTIVATED)
   {
       int nHide = GetSkillRank(SKILL_HIDE,oPC);
       if (nHide > 5)
           ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectSkillDecrease(SKILL_HIDE,nHide-2),oPC,30.0);
   }
}

void main()
{
   object oPC = GetFirstPC();
   while (GetIsPC(oPC))
   {
       _anti_hide(oPC);
        oPC = GetNextPC();
   }
}


Ps. скрипт вырезан из более большого скрипта и не проверялся в данном варианте, но особых проблем быть не должно

Автор: 2GoDoom Jul 11 2004, 13:08

хм... а в случае шарда это будет тормозить? smile.gif

Автор: _kaa_ Jul 12 2004, 09:44

Цитата(2GoDoom @ Jul 11 2004, 13:08)
хм... а в случае шарда это будет тормозить? smile.gif

Да не должно вроде smile.gif

ps. Для примера сравни со скриптами АИ. Размеры компилированных скриптов там по 1Мб есть - и ничего, шард работает smile.gif

Автор: Вестель Jul 12 2004, 10:05

_kaa_
Спасибо за нужный и очень толковый скрипт. Правда, стоит не опускать скилл хайд до 2ух, а сделать на него пыховский пиночек в 20, но это детали, с которыми будем разбираться позже. К тому же, как вариант, можно добавить проверку, а нет ли на этом гаде вещей с лайтом или факела в руках, а то уж больно плюшево получится - сам сияет, как новогодняя елка и прячется..

Автор: _kaa_ Jul 12 2004, 12:32

Цитата(Вестель @ Jul 12 2004, 10:05)
_kaa_
Спасибо за нужный и очень толковый скрипт. Правда, стоит не опускать скилл хайд до 2ух, а сделать на него пыховский пиночек в 20, но это детали, с которыми будем разбираться позже. К тому же, как вариант, можно добавить проверку, а нет ли на этом гаде вещей с лайтом или факела в руках, а то уж больно плюшево получится - сам сияет, как новогодняя елка и прячется..

Я думал в другую сторону - если у другого игрока даже ночью в руке факел - понижать хайд (что поделаешь, в Thief3 сейчас играю smile.gif ), но проверять раз в 6 секунд - смысла мало, а чаще ставить - уже напряжно для сервера. Насчет пыхи - не знаю, в глаза не видел biggrin.gif

Автор: Вестель Jul 12 2004, 12:50

_kaa_
Я и имел ввиду это. Если есть факел или шмотка с лайтом, то чтобы данный скрипт срабатывал даже ночью.. Может быть выразился не ясно. По ПХБ ты можешь сделать в одном раунде любое действие (даже атаку) и хайд, но с пинком 20..

Автор: _kaa_ Jul 12 2004, 13:36

Цитата(Вестель @ Jul 12 2004, 12:50)
_kaa_
Я и имел ввиду это. Если есть факел или шмотка с лайтом, то чтобы данный скрипт срабатывал даже ночью.. Может быть выразился не ясно. По ПХБ ты можешь сделать в одном раунде любое действие (даже атаку) и хайд, но с пинком 20..

И все же мы говорим о разном smile.gif Ты предлагаешь вешать пенальти вору даже ночью, если на нем есть любая вещь с подсветкой. А я предлагаю вешать пенальти, если он подошел близко к другому игороку, у которого есть подсветка.
Хотя нужно и то и другое dirol.gif

Автор: Lex Jul 13 2004, 20:07

во-во. и то и другое надо!

Автор: Ignacius Jul 24 2004, 18:27

Вот у меня такой вопрос. Как сделать систему задержки, чтобы после выхода, игрок оставался минуту на месте, а самого игрока не пускало? После перезахода через минуту на игрока вещались все состояния его дубликата.
Мое предположение таково, чтобы при выходе/отключении создавалась на месте копия игрока, с задержкой на 1 минуту а потом уничтожалась, а все ее эффекты записывались в БД.

ЗЫ. Извиняюсь за неграмотность.

Автор: Аваддон Jul 25 2004, 19:59

Я конечно понимаю что таким методом можно избежать то что игроки альтуются(Alt+F4) из битвы. Тоесть напросто бегут с поля боя. Но, такое долго время задержки черевато тем что тебя обнесут за эту минуту воришки... или еще что круче.
Думаю лучший способ наказать таких игроков - OnClientLeave поставить скриптик проверяющий: Идет ли битва и иесли идет просто снимать за это опыт..или ваще убивать нафиг.

Автор: Ignacius Jul 25 2004, 22:25

Хехе, в том то и прелесть что альтоваться надо тока в ноу ПВП зонах. Просто тут идет работа над ПВП шардом. (Хз че получится, но для личного образования).
В антиальте есть 1 проблема - дисконнект от провайдера, но никуда от него не деться, тут ни скриптовым ни программыным средством ничего не сделаешь.
Собственно как это реализовать?

ЗЫ. какая-то проблема с кодировкой, через мозиллу Firefox пишет околесицу.

Автор: Аваддон Sep 5 2004, 14:52

Как на Мидгарде реализована система лута? Стерт файл генерации и лут кладется в ручную или он полностью переписан ( *крестится* ) ? Очень интересно ведь практически вещь +2 найти невозможно а игрок безумно радуется шмотке +1. Хотелось бы тоже такую систему.

Автор: _kaa_ Sep 6 2004, 14:13

QUOTE (Аваддон @ Sep 5 2004, 14:52)
Как на Мидгарде реализована система лута? Стерт файл генерации и лут кладется в ручную или он полностью переписан ( *крестится* ) ? Очень интересно ведь практически вещь +2 найти невозможно а игрок безумно радуется шмотке +1. Хотелось бы тоже такую систему.

Лут для Мида сейчас переделывается. То, что было - система лута из SOU, через сундуки. Описание скриптов я выкладывал еще на realms.ru, тема что-то вроде "Описание стандартных скриптов". Ее не прибили и она там давно утонула, но найти можно.

Автор: Аваддон Sep 10 2004, 11:15

Тоесть в тот скрипт что стоит при смерти Крича переписан скрипт с сундук low treasure ?

Автор: Misty Dragon Sep 20 2004, 19:22

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

Автор: Hety the Lightbringer Sep 20 2004, 19:53

Да. Сливаешь инфу в БД. OnClientEnter чекаешь логин. Лезешь в базу и смотришь все на него. Если есть строки - смотришь кол-во строк. Если нет то вставляешь Логин и Имя. Если они есть - пропускаешь. Дополнительно можешь писать хар-ки, экспу и т. д.

Автор: Misty Dragon Sep 22 2004, 17:09

QUOTE (Hety the Lightbringer @ Sep 20 2004, 19:53)
Да. Сливаешь инфу в БД. OnClientEnter чекаешь логин. Лезешь в базу и смотришь все на него. Если есть строки - смотришь кол-во строк. Если нет то вставляешь Логин и Имя. Если они есть - пропускаешь. Дополнительно можешь писать хар-ки, экспу и т. д.

Хм.. с отловом все события создания чара все получилось, но вот энумерация пока висит. Сенькс.

Автор: Hety the Lightbringer Sep 22 2004, 17:58

Энумерация? Присваивание чарам айдишников? Это можно делать как в БД(не знаю как в мускуле - в постгресе мы делали на сервере это). Делается просто(можно и проще, если подумать wink.gif). Создаешь таблицу, с одной строкой и одним столбцом. Обзываешь как-нибудь столбец. При добавлении чара берешь значение оттедова, прибавляешь один и пишешь это в id чара. Текущее значение в табличке инкрементишь.

Автор: Misty Dragon Sep 22 2004, 21:58

Энумерация - перечисление. Т.е. мне необходимо выяснить возможно ли без написания скрипта, который ведет лог по созданию чаров, выяснить сколько чаров на аккаунте. К примеру запускаю какой-нить(ранее созданный) EnumCharOnAccount() и он выдает количество персонажей на аккаунте. Пострег и прочие фичи не предлагать, ибо времени нет на изучение всех этих дел нет.

Автор: Lex Sep 22 2004, 22:54

Хм..по моему ничего такого через скрипты сделать нельзя

Автор: Hety the Lightbringer Sep 23 2004, 09:21

Нет. Ибо сервер только пишет и читает из файлов чаров. Ничего более.

Автор: Misty Dragon Sep 23 2004, 16:33

Все. Спасибо. Что и требовалось выяснить. smile.gif

Автор: Richard Oct 11 2004, 11:44

Здравствуйте... Мне нужно следующее сделать, не подскажете как?
1. Защита чара от хака путем БД
2. В зависимости от алаймента заходя в портал попадать в свой город
3. Лут, зависящий от CR

Автор: Lazy Ranma Oct 12 2004, 09:58

1. Какой именно БД?
Если стандартная .dbf - почитай эти топики
http://oldforums.rpgplanet.ru/index.php?showtopic=4727&hl=
http://oldforums.rpgplanet.ru/index.php?showtopic=1426&view=findpost&p=184987
2.

Neverwinter Script Source
void main()
{
    object oPC = GetLastUsedBy();
    int nGoodEvil = GetAlignmentGoodEvil(oPC);
    int nLawChaos = GetAlignmentLawChaos(oPC);
    if (nGoodEvil == ALIGNMENT_EVIL)
        AssignCommand(oPC,ActionJumpToObject(GetObjectByTag("wp_city_good")));
    else if (nGoodEvil == ALIGNMENT_GOOD)
        AssignCommand(oPC,ActionJumpToObject(GetObjectByTag("wp_city_evil")));
    else
        AssignCommand(oPC,ActionJumpToObject(GetObjectByTag("wp_city_neutral")));
}

Таким образом. wp_city_* - вэйпоинты в соответствующих городах. Вешать скрипт OnUsed портала...
3. уууууу.....

Автор: baskan Oct 22 2004, 14:26

QUOTE (Lazy Ranma @ Oct 12 2004, 09:58)

2.
Neverwinter Script Source
void main()
{
    object oPC = GetLastUsedBy();
    int nGoodEvil = GetAlignmentGoodEvil(oPC);
    int nLawChaos = GetAlignmentLawChaos(oPC);
    if (nGoodEvil == ALIGNMENT_EVIL)
        AssignCommand(oPC,ActionJumpToObject(GetObjectByTag("wp_city_good")));
    else if (nGoodEvil == ALIGNMENT_GOOD)
        AssignCommand(oPC,ActionJumpToObject(GetObjectByTag("wp_city_evil")));
    else
        AssignCommand(oPC,ActionJumpToObject(GetObjectByTag("wp_city_neutral")));
}

Таким образом. wp_city_* - вэйпоинты в соответствующих городах. Вешать скрипт OnUsed портала...

Этот скрипт кидает Упорядочно-злого к добрым..как это исправить? unsure.gif
Добавлено в [mergetime]1098444841[/mergetime]
Извените лаганул, не так теги расставил crazy.gif

Автор: Lazy Ranma Oct 24 2004, 00:48

Ну да, там тэги наоборот должны стоять =)

Автор: Misty Dragon Nov 4 2004, 06:32

И снова вопрос. smile.gif
Нужно ограничить инвентарь игрока в 1-2 вкладки. diablo.gif В какую сторону копать? Может кто подсказать?

Автор: Аваддон Nov 4 2004, 06:37

Забить остальные вкладки большими Undropable предметами diablo.gif crazy.gif
Это так... шутка. Может и можно как то - это уже к спецам по 2da я думаю. А можно сделать инвентарь на определенной кол-во предметов. И проверять это на событии OnAcquireItem, если кол-во предметов больше определенного - выкладывать и писать сообщение, что не может он больше шмота унести

Автор: Baal Nov 4 2004, 15:22

QUOTE (Аваддон @ Nov 4 2004, 03:37)
Забить остальные вкладки большими Undropable предметами

Кстати - идея не так абсурдна как кажеться на первый взгляд! biggrin.gif создаем итем с картинкой точно под клеточки инвентаря, так, что будет казаться что никакого итема там нет и забиваем такими инвентарь wink.gif

Автор: Аваддон Nov 4 2004, 19:24

QUOTE (Baal @ Nov 4 2004, 15:22)
Кстати - идея не так абсурдна как кажеться на первый взгляд!  создаем итем с картинкой точно под клеточки инвентаря, так, что будет казаться что никакого итема там нет и забиваем такими инвентарь 

Ха-ха... и описание предмету дать "Это твой инвентарь и тут пустооо..."

Автор: _kaa_ Nov 4 2004, 19:29

QUOTE (Аваддон @ Nov 4 2004, 06:37)
Забить остальные вкладки большими Undropable предметами


Будут доступны только две последнии страницы smile.gif Но вариант хороший.

Если немного поменять условия, можно придумать несложный вариант. Скажем раз в час (или 6 сек, как угодно) считать количество вещей в инвентаре. Если больше нужного - бросать на землю. И\или прикрутить на событие модуля onItemAcquire



Автор: Аваддон Nov 5 2004, 16:33

Вот и я про Acquire говорю:)
_kaa_ , а насчет лута Мидгарда так и не разъяснил. Какое событие из сундуков SoU стоит OnDeath крича?smile.gif

Автор: _kaa_ Nov 6 2004, 15:19

QUOTE (Аваддон @ Nov 5 2004, 16:33)
насчет лута Мидгарда так и не разъяснил. Какое событие из сундуков SoU стоит OnDeath крича?


Сейчас стоит стандартная система лута из СоУ плюс лут из системы спавнов (даже не помню чей)
Сейчас делаю новую систему, все что есть меня не устраивает smile.gif
К сожалению умер реалмс и унес с собой описание стандартной системы лута из СОУ
Точнее немного модифицированной систему из СОТУ smile.gif

x0_i0_treasure - библиотека, она в составе стандартный скриптов. Там же есть полное описание (на английском)

Автор: Lazy Ranma Nov 13 2004, 11:19

QUOTE (_kaa_ @ Nov 6 2004, 15:19)
К сожалению умер реалмс и унес с собой описание стандартной системы лута из СОУ

А вот и неправда. Никуда он не умер.
http://oldforums.rpgplanet.ru/index.php?showtopic=2653

Автор: Oksivarus Feb 18 2005, 02:05

Дорогие шардовики кто то сталкивалс с проблемой когда игрок считается умершим (церепупка на нем) но при этом у него жизи больше 0 ну исоответственно его низя никак оживить только последующий перезаход на шард снова умирание но потом показует нормальную менюшку воскрешения и можно самому реснутся. Просто уже незнаю куда и писать об этом поэтому сильно не ругайте если че подскажите где спросить еще можно.

Если можно дайте систему смерти (умирание, смерть, воскрешение) для мульти попробую разобратся.

Автор: Lexey aka Hawk Feb 25 2005, 18:45

Проверить скрипт, который стоит на событие OnPlayerDying в свойствах модуля.

Автор: Oksivarus Mar 23 2005, 20:40

а что именно в нем проверить там стоит скрипт взятый с этого форума из раздела готовых там где поле 0 жизни до -10 идет умирание.

Автор: RiPPeR Dec 7 2005, 14:02

Тебе хватит в сервере поставить галочку на ELC

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)