Jump to content

V3ct0r

Administrators
  • Content Count

    2,889
  • Joined

  • Last visited

  • Days Won

    519

Everything posted by V3ct0r

  1. @small666, ты не мог натыкаться на исходники данного лаунчера, поскольку я их никогда не выкладывал. Возможно, ты перепутал с другим лаунчером. Я бы с радостью поделился исходниками, но они давно утеряны. Да и ничего такого сложного или интересного там не было.
  2. @MrSharp, в том и разница, что пользователь в любой момент сможет отредактировать шапку по своему усмотрению. Можно, конечно, добавить такой функционал в программу - редактор шапок, но это на усмотрение автора.
  3. Мне оно без надобности. Ты покупал код, тебе им и распоряжаться по своему усмотрению
  4. Буду знать
  5. @NMS3RR Желательно, скидывать код в данной теме, если это не Вселенская тайна, конечно
  6. Для этого нужно знать что значит каждый столбец в каждом .txt файле, а мы до сих пор этого не знаем. Все-таки проще считывать шапку в начале каждого .txt Вроде Game.exe и GameServer.exe тоже не принимают такой файл. @Shapamoe на каком языке написана программа?
  7. @Shapamoe, значит эта строка зашита в GameServer.exe. Можно попробовать ее найти в HEX редакторе и перевести, только новая строка должна быть такой же длины, как и оригинальная. Еще можно попробовать использовать программу OgreGUI, там нет ограничения длины новой строки. Так же можно пропатчить GameServer.exe в отладчике, забить в Code Cave новую строку и подменить адрес оригинальной строки на адрес новой строки.
  8. Посмотри здесь Так же можно открыть код GUI редактора карт и увеличить там константу, которая отвечает за текстуры
  9. InitTrigger() -- HasItem(ID предмета, количество) TriggerCondition(1, HasItem, 1973, 1) -- Проверим предмет с ID 1973 x 1 TriggerAction(1, JumpPage, 2) -- Предмет есть, идем на страницу 2 TriggerFailure(1, JumpPage, 3) -- Предмета нет, идем на страницу 3 Talk(1, "<Проверка предмета с ID 1973 в Вашем инвентаре>") Text(1, "Проверить", MultiTrigger, GetMultiTrigger(), 1) Talk(2, "<У Вас есть предмет с ID 1973>") Talk(3, "<У Вас НЕТ предмета с ID 1973>")
  10. Код принадлежит @Danny с serverdev.net/pkodev.net. Вместо имени персонажа лучше использовать его ID local cha_id = GetRoleID(role)
  11. Нужно хексить Game.exe, там есть лимит на эмоции
  12. На самом деле не самое лучшее решение. Работа с жестким диском довольно долгая по времени операция, что может вылиться в лаги на сервере. Так же это уменьшает ресурс диска.
  13. Это лимит для saillvup.txt Для character_lvup.txt лимит находится по адресу 0x0009864B
  14. Смотрим исходники GameServer.exe BOOL CCharacter::TakeItem( USHORT sItemID, USHORT sCount, const char szName[]) if( nCount < sCount ) { //SystemNotice( "РиТЄМбИЎ%dёцЎ¶%sЎ·ОпЖ·Ј¬µ«КЗКэБї(%d)І»Чг!", sCount, szItem, nCount ); SystemNotice( RES_STRING(GM_CHARACTER_CPP_00036), sCount, szItem, nCount ); return FALSE; } Если у тебя GameServer.exe из сборки PKO 1.38, который поддерживает .res файлы, то нужно отредактировать строку GM_CHARACTER_CPP_00036. В противном случае нужно хексить GameServer.exe.
  15. Если нет терпения, сами бы давно разобрались. Из какой сборки GameServer.exe? Какой его размер в КБ?
  16. Hello! Tell more about your project. Nobody will work with you without any information. Good luck!
  17. Ошибка из-за лимита в 600 строк. Нужно хексить GameServer.exe
  18. Бонусы и свечение от Колец 85 уровня + Death-сет Привет! В данном гайде мы введем на Ваш сервер бонусы и свечения от сочетания колец 85 уровня с дет-сетом. Сначала познакомимся с бонусами и видами свечения: Чемпион (Сила Хардина) +26 силы, +14 телосложения, +300 макс. ЖЗ, +10 шанс попадания, +10 уклонения, +100 защиты, +6 рег. ЖЗ, +4 физ. защиты Воитель (Сила Тьмы) +20 силы, +14 телосложения, +6 ловкости, +220 макс. ЖЗ, +10 шанс попадания, +30 уклонения, +80 защиты, +8 рег. ЖЗ, +4 физ. защиты Стрелок (Адское Перышко) +5 скорости атаки, +10 телосложения, +8 ловкости, +22 точности, +250 макс. ЖЗ, +30 шанс попадания, +15 уклонения, +75 защиты, +6 рег. ЖЗ, +3 физ. защиты Покоритель морей (Душа Асуры) +18 телосложения, +22 духа, +160 макс. ЖЗ, +110 макс. МН, +30 шанс попадания, +75 защиты, +4 рег ЖЗ, +2 рег МН, +2 физ. защиты Целительница (Кристалл Духа Бездны) +6 телосложения, +4 точности, +30 духа, +280 макс. МН, +30 шанс попадания, +55 защиты, +6 рег МН, +2 физ. защиты Ведьма (Очернение Стикса) +12 телосложения, +28 духа, +180 макс. МН, +30 шанс попадания, +55 защиты, +8 рег МН, +2 физ. защиты Далее введем на сервер кольца, если у Вас их еще нет. Для этого откроем файл ItemInfo.txt (GameServer\resource) и допишем в него следующие строки: 2577 Сила Хардина n2216 10130005 0 0 0 0 0 0 26 0 0 0 0 0 0 0 0 1 1 1 500000 -1,-2,-2,-2 85 8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 8,-2,-2,-2,-2,-2,-2,-2,-2,-2 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16,16 0,0 0,0 6,6 0,0 0,0 0,0 0,0 0,0 0,0 0,0 300,300 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 7000,7000 10000,10000 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0 0 0 0 2578 Сила Тьмы n2215 10130005 0 0 0 0 0 0 26 0 0 0 0 0 0 0 0 1 1 1 500000 -1,-2,-2,-2 85 9,10,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 8,-2,-2,-2,-2,-2,-2,-2,-2,-2 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12,12 3,3 0,0 6,6 0,0 0,0 0,0 0,0 0,0 0,0 0,0 220,220 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 7000,7000 10000,10000 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0 0 0 0 2579 Адское Перышко n2219 10130005 0 0 0 0 0 0 26 0 0 0 0 0 0 0 0 1 1 1 500000 -1,-2,-2,-2 85 12,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 8,-2,-2,-2,-2,-2,-2,-2,-2,-2 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 4,4 14,14 4,4 0,0 0,0 5,5 0,0 0,0 0,0 0,0 250,250 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 7000,7000 10000,10000 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0 0 0 0 2580 Душа Азуры n2217 10130005 0 0 0 0 0 0 26 0 0 0 0 0 0 0 0 1 1 1 500000 -1,-2,-2,-2 85 16,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 8,-2,-2,-2,-2,-2,-2,-2,-2,-2 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 10,10 12,12 0,0 0,0 0,0 0,0 0,0 0,0 300,300 110,110 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 7000,7000 10000,10000 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0 0 0 0 2581 Очернение Стикса n2220 10130005 0 0 0 0 0 0 26 0 0 0 0 0 0 0 0 1 1 1 500000 -1,-2,-2,-2 85 14,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 8,-2,-2,-2,-2,-2,-2,-2,-2,-2 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 5,5 18,18 0,0 0,0 0,0 0,0 0,0 0,0 0,0 180,180 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 7000,7000 10000,10000 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0 0 0 0 2582 Кристалл Духа Бездны n2218 10130005 0 0 0 0 0 0 26 0 0 0 0 0 0 0 0 1 1 1 500000 -1,-2,-2,-2 85 13,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 8,-2,-2,-2,-2,-2,-2,-2,-2,-2 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 2,2 3,3 18,18 0,0 0,0 0,0 0,0 0,0 0,0 0,0 280,280 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 7000,7000 10000,10000 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0 0 0 0 Затем добавим эффекты (свечение и бонусы) для колец в файл SkillEff.txt (GameServer\resource): 200 Lv85 BB Cow Кольцо -1 0 State_BBRING1_Add State_BBRING1_Rem 3 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 -1 0 0 0 574 2 0 0 0 0 0 0 0 201 Lv85 BB Twined Кольцо -1 0 State_BBRING2_Add State_BBRING2_Rem 3 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 -1 0 0 0 576 2 0 0 0 0 0 0 0 202 Lv85 BB Hunting Кольцо -1 0 State_BBRING3_Add State_BBRING3_Rem 3 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 -1 0 0 0 575 2 0 0 0 0 0 0 0 203 Lv85 BB Navigating Кольцо -1 0 State_BBRING4_Add State_BBRING4_Rem 3 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 -1 0 0 0 573 2 0 0 0 0 0 0 0 204 Lv85 BB Sealing Кольцо -1 0 State_BBRING5_Add State_BBRING5_Rem 3 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 -1 0 0 0 572 2 0 0 0 0 0 0 0 205 Lv85 BB Holy Кольцо -1 0 State_BBRING6_Add State_BBRING6_Rem 3 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 -1 0 0 0 577 2 0 0 0 0 0 0 0 После открываем файл variable.lua (GameServer\resource\script\calculate) и допишем в него переменные, которые будут обозначать ID эффектов из SkillEff.txt: STATE_BBRING1 = 200 STATE_BBRING2 = 201 STATE_BBRING3 = 202 STATE_BBRING4 = 203 STATE_BBRING5 = 204 STATE_BBRING6 = 205 Далее в файл SkillEffect.lua (GameServer\resource\script\calculate) добавим скрипты, которые будут давать персонажу бонусы от кольца с дэт-сетом: --Lv85 BB Cow Кольцо function State_BBRING1_Add ( role , statelv ) local strsb_dif = 10 local strsb = StrSb( role ) + strsb_dif SetCharaAttr( strsb , role , ATTR_STATEV_STR ) local consb_dif = 8 local consb = ConSb( role ) + consb_dif SetCharaAttr( consb , role , ATTR_STATEV_CON ) local defsb_dif = 100 local defsb = DefSb(role) + defsb_dif SetCharaAttr( defsb , role , ATTR_STATEV_DEF ) local fleesb_dif = 10 local fleesb = FleeSb(role) + fleesb_dif SetCharaAttr( fleesb , role , ATTR_STATEV_FLEE ) local hitsb_dif = 10 local hitsb = HitSb(role) + hitsb_dif SetCharaAttr( hitsb , role , ATTR_STATEV_HIT ) local hrecsb_dif = 6 local hrecsb = HrecSb(role) + hrecsb_dif SetCharaAttr( hrecsb , role , ATTR_STATEV_HREC ) local pdef_dif = 4 local pdef = ResistSb(role) + pdef_dif SetCharaAttr( pdef , role , ATTR_STATEV_PDEF ) ALLExAttrSet(role) end function State_BBRING1_Rem ( role , statelv ) local strsb_dif = 10 local strsb = StrSb( role ) - strsb_dif SetCharaAttr( strsb , role , ATTR_STATEV_STR ) local consb_dif = 8 local consb = ConSb( role ) - consb_dif SetCharaAttr( consb , role , ATTR_STATEV_CON ) local defsb_dif = 100 local defsb = DefSb(role) - defsb_dif SetCharaAttr( defsb , role , ATTR_STATEV_DEF ) local fleesb_dif = 10 local fleesb = FleeSb(role) - fleesb_dif SetCharaAttr( fleesb , role , ATTR_STATEV_FLEE ) local hitsb_dif = 10 local hitsb = HitSb(role) - hitsb_dif SetCharaAttr( hitsb , role , ATTR_STATEV_HIT ) local hrecsb_dif = 6 local hrecsb = HrecSb(role) - hrecsb_dif SetCharaAttr( hrecsb , role , ATTR_STATEV_HREC ) local pdef_dif = 4 local pdef = ResistSb(role) - pdef_dif SetCharaAttr( pdef , role , ATTR_STATEV_PDEF ) ALLExAttrSet(role) end --Lv85 BB Twined Кольцо function State_BBRING2_Add ( role , statelv ) local strsb_dif = 8 local strsb = StrSb( role ) + strsb_dif SetCharaAttr( strsb , role , ATTR_STATEV_STR ) local agisb_dif = 3 local agisb = AgiSb( role ) + agisb_dif SetCharaAttr( agisb , role , ATTR_STATEV_AGI ) local consb_dif = 8 local consb = ConSb( role ) + consb_dif SetCharaAttr( consb , role , ATTR_STATEV_CON ) local defsb_dif = 80 local defsb = DefSb(role) + defsb_dif SetCharaAttr( defsb , role , ATTR_STATEV_DEF ) local fleesb_dif = 30 local fleesb = FleeSb(role) + fleesb_dif SetCharaAttr( fleesb , role , ATTR_STATEV_FLEE ) local hitsb_dif = 10 local hitsb = HitSb(role) + hitsb_dif SetCharaAttr( hitsb , role , ATTR_STATEV_HIT ) local hrecsb_dif = 8 local hrecsb = HrecSb(role) + hrecsb_dif SetCharaAttr( hrecsb , role , ATTR_STATEV_HREC ) local pdef_dif = 4 local pdef = ResistSb(role) + pdef_dif SetCharaAttr( pdef , role , ATTR_STATEV_PDEF ) ALLExAttrSet(role) end function State_BBRING2_Rem ( role , statelv ) local strsb_dif = 8 local strsb = StrSb( role ) - strsb_dif SetCharaAttr( strsb , role , ATTR_STATEV_STR ) local agisb_dif = 3 local agisb = AgiSb( role ) - agisb_dif SetCharaAttr( agisb , role , ATTR_STATEV_AGI ) local consb_dif = 8 local consb = ConSb( role ) - consb_dif SetCharaAttr( consb , role , ATTR_STATEV_CON ) local defsb_dif = 80 local defsb = DefSb(role) - defsb_dif SetCharaAttr( defsb , role , ATTR_STATEV_DEF ) local fleesb_dif = 30 local fleesb = FleeSb(role) - fleesb_dif SetCharaAttr( fleesb , role , ATTR_STATEV_FLEE ) local hitsb_dif = 10 local hitsb = HitSb(role) - hitsb_dif SetCharaAttr( hitsb , role , ATTR_STATEV_HIT ) local hrecsb_dif = 8 local hrecsb = HrecSb(role) - hrecsb_dif SetCharaAttr( hrecsb , role , ATTR_STATEV_HREC ) local pdef_dif = 4 local pdef = ResistSb(role) - pdef_dif SetCharaAttr( pdef , role , ATTR_STATEV_PDEF ) ALLExAttrSet(role) end --Lv85 BB Hunting Кольцо function State_BBRING3_Add ( role , statelv ) local agisb_dif = 4 local agisb = AgiSb( role ) + agisb_dif SetCharaAttr( agisb , role , ATTR_STATEV_AGI ) local dexsb_dif = 8 local dexsb = DexSb( role ) + dexsb_dif SetCharaAttr( dexsb , role , ATTR_STATEV_DEX ) local consb_dif = 6 local consb = ConSb( role ) + consb_dif SetCharaAttr( consb , role , ATTR_STATEV_CON ) local defsb_dif = 75 local defsb = DefSb(role) + defsb_dif SetCharaAttr( defsb , role , ATTR_STATEV_DEF ) local fleesb_dif = 15 local fleesb = FleeSb(role) + fleesb_dif SetCharaAttr( fleesb , role , ATTR_STATEV_FLEE ) local hitsb_dif = 30 local hitsb = HitSb(role) + hitsb_dif SetCharaAttr( hitsb , role , ATTR_STATEV_HIT ) local hrecsb_dif = 6 local hrecsb = HrecSb(role) + hrecsb_dif SetCharaAttr( hrecsb , role , ATTR_STATEV_HREC ) local pdef_dif = 3 local pdef = ResistSb(role) + pdef_dif SetCharaAttr( pdef , role , ATTR_STATEV_PDEF ) ALLExAttrSet(role) end function State_BBRING3_Rem ( role , statelv ) local agisb_dif = 4 local agisb = AgiSb( role ) - agisb_dif SetCharaAttr( agisb , role , ATTR_STATEV_AGI ) local dexsb_dif = 8 local dexsb = DexSb( role ) - dexsb_dif SetCharaAttr( dexsb , role , ATTR_STATEV_DEX ) local consb_dif = 6 local consb = ConSb( role ) - consb_dif SetCharaAttr( consb , role , ATTR_STATEV_CON ) local defsb_dif = 75 local defsb = DefSb(role) - defsb_dif SetCharaAttr( defsb , role , ATTR_STATEV_DEF ) local fleesb_dif = 15 local fleesb = FleeSb(role) - fleesb_dif SetCharaAttr( fleesb , role , ATTR_STATEV_FLEE ) local hitsb_dif = 30 local hitsb = HitSb(role) - hitsb_dif SetCharaAttr( hitsb , role , ATTR_STATEV_HIT ) local hrecsb_dif = 6 local hrecsb = HrecSb(role) - hrecsb_dif SetCharaAttr( hrecsb , role , ATTR_STATEV_HREC ) local pdef_dif = 3 local pdef = ResistSb(role) - pdef_dif SetCharaAttr( pdef , role , ATTR_STATEV_PDEF ) ALLExAttrSet(role) end --Lv85 BB Navigating Кольцо function State_BBRING4_Add ( role , statelv ) local consb_dif = 8 local consb = ConSb( role ) + consb_dif SetCharaAttr( consb , role , ATTR_STATEV_CON ) local stasb_dif = 10 local stasb = StaSb( role ) + stasb_dif SetCharaAttr( stasb , role , ATTR_STATEV_STA ) local defsb_dif = 75 local defsb = DefSb(role) + defsb_dif SetCharaAttr( defsb , role , ATTR_STATEV_DEF ) local hitsb_dif = 30 local hitsb = HitSb(role) + hitsb_dif SetCharaAttr( hitsb , role , ATTR_STATEV_HIT ) local hrecsb_dif = 4 local hrecsb = HrecSb(role) + hrecsb_dif SetCharaAttr( hrecsb , role , ATTR_STATEV_HREC ) local srecsb_dif = 2 local srecsb = SrecSb(role) + srecsb_dif SetCharaAttr( srecsb , role , ATTR_STATEV_SREC ) local pdef_dif = 3 local pdef = ResistSb(role) + pdef_dif SetCharaAttr( pdef , role , ATTR_STATEV_PDEF ) ALLExAttrSet(role) end function State_BBRING4_Rem ( role , statelv ) local consb_dif = 8 local consb = ConSb( role ) - consb_dif SetCharaAttr( consb , role , ATTR_STATEV_CON ) local stasb_dif = 10 local stasb = StaSb( role ) - stasb_dif SetCharaAttr( stasb , role , ATTR_STATEV_STA ) local defsb_dif = 75 local defsb = DefSb(role) - defsb_dif SetCharaAttr( defsb , role , ATTR_STATEV_DEF ) local hitsb_dif = 30 local hitsb = HitSb(role) - hitsb_dif SetCharaAttr( hitsb , role , ATTR_STATEV_HIT ) local hrecsb_dif = 4 local hrecsb = HrecSb(role) - hrecsb_dif SetCharaAttr( hrecsb , role , ATTR_STATEV_HREC ) local srecsb_dif = 2 local srecsb = SrecSb(role) - srecsb_dif SetCharaAttr( srecsb , role , ATTR_STATEV_SREC ) local pdef_dif = 3 local pdef = ResistSb(role) - pdef_dif SetCharaAttr( pdef , role , ATTR_STATEV_PDEF ) ALLExAttrSet(role) end --Lv85 BB Sealing Кольцо function State_BBRING5_Add ( role , statelv ) local consb_dif = 7 local consb = ConSb( role ) + consb_dif SetCharaAttr( consb , role , ATTR_STATEV_CON ) local stasb_dif = 10 local stasb = StaSb( role ) + stasb_dif SetCharaAttr( stasb , role , ATTR_STATEV_STA ) local defsb_dif = 55 local defsb = DefSb(role) + defsb_dif SetCharaAttr( defsb , role , ATTR_STATEV_DEF ) local hitsb_dif = 30 local hitsb = HitSb(role) + hitsb_dif SetCharaAttr( hitsb , role , ATTR_STATEV_HIT ) local srecsb_dif = 8 local srecsb = SrecSb(role) + srecsb_dif SetCharaAttr( srecsb , role , ATTR_STATEV_SREC ) local pdef_dif = 2 local pdef = ResistSb(role) + pdef_dif SetCharaAttr( pdef , role , ATTR_STATEV_PDEF ) ALLExAttrSet(role) end function State_BBRING5_Rem ( role , statelv ) local consb_dif = 7 local consb = ConSb( role ) - consb_dif SetCharaAttr( consb , role , ATTR_STATEV_CON ) local stasb_dif = 10 local stasb = StaSb( role ) - stasb_dif SetCharaAttr( stasb , role , ATTR_STATEV_STA ) local defsb_dif = 55 local defsb = DefSb(role) - defsb_dif SetCharaAttr( defsb , role , ATTR_STATEV_DEF ) local hitsb_dif = 30 local hitsb = HitSb(role) - hitsb_dif SetCharaAttr( hitsb , role , ATTR_STATEV_HIT ) local srecsb_dif = 8 local srecsb = SrecSb(role) - srecsb_dif SetCharaAttr( srecsb , role , ATTR_STATEV_SREC ) local pdef_dif = 2 local pdef = ResistSb(role) - pdef_dif SetCharaAttr( pdef , role , ATTR_STATEV_PDEF ) ALLExAttrSet(role) end --Lv85 BB Holy Кольцо function State_BBRING6_Add ( role , statelv ) local dexsb_dif = 2 local dexsb = DexSb( role ) + dexsb_dif SetCharaAttr( dexsb , role , ATTR_STATEV_DEX ) local consb_dif = 3 local consb = ConSb( role ) + consb_dif SetCharaAttr( consb , role , ATTR_STATEV_CON ) local stasb_dif = 12 local stasb = StaSb( role ) + stasb_dif SetCharaAttr( stasb , role , ATTR_STATEV_STA ) local defsb_dif = 55 local defsb = DefSb(role) + defsb_dif SetCharaAttr( defsb , role , ATTR_STATEV_DEF ) local hitsb_dif = 30 local hitsb = HitSb(role) + hitsb_dif SetCharaAttr( hitsb , role , ATTR_STATEV_HIT ) local srecsb_dif = 6 local srecsb = SrecSb(role) + srecsb_dif SetCharaAttr( srecsb , role , ATTR_STATEV_SREC ) local pdef_dif = 2 local pdef = ResistSb(role) + pdef_dif SetCharaAttr( pdef , role , ATTR_STATEV_PDEF ) ALLExAttrSet(role) end function State_BBRING6_Rem ( role , statelv ) local dexsb_dif = 2 local dexsb = DexSb( role ) - dexsb_dif SetCharaAttr( dexsb , role , ATTR_STATEV_DEX ) local consb_dif = 3 local consb = ConSb( role ) - consb_dif SetCharaAttr( consb , role , ATTR_STATEV_CON ) local stasb_dif = 12 local stasb = StaSb( role ) - stasb_dif SetCharaAttr( stasb , role , ATTR_STATEV_STA ) local defsb_dif = 55 local defsb = DefSb(role) - defsb_dif SetCharaAttr( defsb , role , ATTR_STATEV_DEF ) local hitsb_dif = 30 local hitsb = HitSb(role) - hitsb_dif SetCharaAttr( hitsb , role , ATTR_STATEV_HIT ) local srecsb_dif = 6 local srecsb = SrecSb(role) - srecsb_dif SetCharaAttr( srecsb , role , ATTR_STATEV_SREC ) local pdef_dif = 2 local pdef = ResistSb(role) - pdef_dif SetCharaAttr( pdef , role , ATTR_STATEV_PDEF ) ALLExAttrSet(role) end Осталось добавить наложение эффекта от сочетания кольца с дет-сетом на персонажа. Для этого открываем файл functions.lua (GameServer\resource\script\calculate) и ищем в нем функцию cha_timer(role, freq, time). В конец этой функции (перед последним закрывающим end) добавляем следующий код: if (is_role_living == 1 and math.mod(now_tick, resume_freq) == 0 and now_tick > 0) then local Dina_xl = GetEquipItemP(role, 8) local Dina_xl_ID = GetItemID (Dina_xl) local Dina_x2 = GetEquipItemP(role, 2) local Dina_x2_ID = GetItemID (Dina_x2) if (Dina_xl_ID == 2577 and Dina_x2_ID == 2817) then local statelv = 1 local statetime = 3600 AddState(role, role, STATE_BBRING1, statelv, statetime) elseif (Dina_xl_ID == 2578 and Dina_x2_ID == 2820) then local statelv = 1 local statetime = 3600 AddState(role, role, STATE_BBRING2, statelv, statetime) elseif (Dina_xl_ID == 2579 and Dina_x2_ID == 2823) then local statelv = 1 local statetime = 3600 AddState(role, role, STATE_BBRING3, statelv, statetime) elseif (Dina_xl_ID == 2580 and Dina_x2_ID == 2826) then local statelv = 1 local statetime = 3600 AddState(role, role, STATE_BBRING4, statelv, statetime) elseif (Dina_xl_ID == 2581 and Dina_x2_ID == 2832) then local statelv = 1 local statetime = 3600 AddState(role, role, STATE_BBRING5, statelv, statetime) elseif (Dina_xl_ID == 2582 and Dina_x2_ID == 2829) then local statelv = 1 local statetime = 3600 AddState(role, role, STATE_BBRING6, statelv, statetime) else local statelv_bbring1 = GetChaStateLv(role, STATE_BBRING1) if (statelv_bbring1 ~= 0) then RemoveState(role, STATE_BBRING1) end local statelv_bbring2 = GetChaStateLv(role, STATE_BBRING2) if (statelv_bbring2 ~= 0) then RemoveState(role, STATE_BBRING2) end local statelv_bbring3 = GetChaStateLv(role, STATE_BBRING3) if (statelv_bbring3 ~= 0) then RemoveState(role, STATE_BBRING3) end local statelv_bbring4 = GetChaStateLv(role, STATE_BBRING4) if (statelv_bbring4 ~= 0) then RemoveState(role, STATE_BBRING4) end local statelv_bbring5 = GetChaStateLv(role, STATE_BBRING5) if (statelv_bbring5 ~= 0) then RemoveState(role, STATE_BBRING5) end local statelv_bbring6 = GetChaStateLv(role, STATE_BBRING6) if (statelv_bbring6 ~= 0) then RemoveState(role, STATE_BBRING6) end end end На этом все! Теперь у Вашего сервера есть еще одна уникальная особенность :D P.S. Под сочетанием "85 кольцо и дет-сет" в данном гайде понимается одновременно экипированные кольцо и тело. Вы можете добавить проверку на руковицы и ботинки в скрипт для функции cha_timer(role, freq, time). Тогда свечение и бонусы будут работать только при условии полного набора дет-экипировки (тело + руковицы + ботинки); P.S.S. Не забудьте скомпилировать ItemInfo.txt и SkillEff.txt для клиента; P.S.S.S. Текстуры и анимации для свечения можно взять из последнего TOP II клиента.
  19. Диалог с NPC в определенное время Привет! В данном гайде я расскажу как можно сделать диалог с NPC доступным только в определенное время. Например, с 18:00 до 19:45. Для начала напишем скелет скрипта NPC, который для примера назовем pn_FuncName: function pn_FuncName() InitTrigger() TriggerCondition(1, CheckTime, 1800, 1945) TriggerAction(1, JumpPage, 1) TriggerFailure(1, JumpPage, 2) Start(GetMultiTrigger(), 1) Talk( 1, "Я буду с тобой говорить!" ) Talk( 2, "Я НЕ буду с тобой говорить! Приходи в другое время!" ) end В самом начале скрипта мы определяем условие времени TriggerCondition(1, CheckTime, 1800, 1945) Для этого служит функция CheckTime(t1, t2), которую мы опишем позже. Она принимает два параметра: t1 - начальное время; t2 - конечное время. В данном примере, t1 и t2 соответствуют значения 1800 и 1945, что означает интервал времени от 18:00 до 19:45 включительно. Как Вы могли догадаться, время кодируется следующим образом: t = часы * 100 + минуты Итак, мы определили условие времени. Если оно выполняется, то игрок попадает на страницу 1 и видит сообщение "Я буду с тобой говорить!", в противном случае, игрок попадает на страницу 2 и видит сообщение "Я НЕ буду с тобой говорить! Приходи в другое время!". Все просто! Далее нам необходимо написать функцию CheckTime(t1, t2). Для этого открываем файл functions.lua (GameServer\resource\script\calculate) и помещаем в него следующий код: -- Функция для проверки времени -- Если текущее время попадает в интервал [t1, t2] -- , то функция возвращает true, в противном случае -- функция возвращает false function CheckTime(character, t1, t2) -- Получим текущее время local hour = tonumber(os.date("%H")) * 100 local minute = tonumber(os.date("%M")) -- Закодируем его по формуле -- t = часы * 100 + минуты local check = hour + minute -- Определяем, находится ли текущее время -- в интервале [t1, t2] if (check >= t1 and check <= t2) then -- Время находится в интервале return LUA_TRUE end -- Время не находится в интервале return LUA_FALSE end Чтобы функцию можно было использовать в диалогах NPC, а именно в функции TriggerCondition(...), которая определяет различные условия, её необходимо зарегистрировать в файле MissionSdk.lua (GameServer\resource\script\MisSdk). Найдите в этом файле функцию ConditionsTest(...), а в ней следующий код: if conditions[i].func == NoMission then PRINT( "ConditionsTest:NoMission, p1 = ", conditions[i].p1 ) local Ret = NoMission( character, conditions[i].p1 ) if Ret ~= LUA_TRUE then PRINT( "ConditionsTest: NoMission = false" ) return LUA_FALSE end После данного блока кода вставьте код для функции CheckTime(t1, t2): elseif conditions[i].func == CheckTime then PRINT( "ConditionsTest: CheckTime") local ret = CheckTime(character) if ret ~= LUA_TRUE then PRINT( "ConditionsTest: CheckTime = false" ) return LUA_FALSE end На этом все, теперь Вы можете создать NPC c функцией pn_FuncName (название взято для примера) и протестировать его. P.S. За идею были взяты NPC с о. Весны, которые говорят с игроком, только когда он прошел квест "Языковой барьер"; P.S.S. В функцию CheckTime(t1, t2) можно так же добавить проверку на день недели. См. Справочное руководство по языку Lua 5.1 - 5.8 – Функции операционной системы; P.S.S.S. По такому же принципу можно делать любые проверки, например, на расу и профессию персонажа игрока.
  20. @wh35199 It's better to use the last MSSQL Server 2017 Express
  21. V3ct0r

    Game.exe Info

    @BlackBarba, use the last version. Download
×
×
  • Create New...