Jump to content

WVWMK

Community
  • Content Count

    507
  • Joined

  • Last visited

  • Days Won

    26

Everything posted by WVWMK

  1. В functions.lua ищеv Player_After... , далее в ней дописываем if map_name_ATKER == "Ваша карта" or map_name_DEFER == "Ваша карта" then local ATKER = TurnToCha ( ATKER ) local DEFER = TurnToCha ( DEFER ) GiveItem ( ATKER , 0 , 3457, 1 , 4 ) - предмет который нам дается при убийстве end Можно так же давать деньги, накладывать эффекты скиллов и прочее, все зависит от вас.
  2. Идем в resource\script\calculate\forge.lua Добавляем в конец файла local money = HasMoney(role , 1000) --Проверка на наличие нужного количества золота (по умолчанию 1000) if money == 0 then --Если суммы недостаточно, то SystemNotice( role ,"У Вас недостаточно золота! ") --Вывести системное сообщение о недостатке золота end local StateType = GetChaStateLv ( role , STATE_QINGZ ) --Проверка наложен ли уже этот бафф if StateType == 0 then --Если не наложен, то AddState ( role , role , STATE_QINGZ , 15 , 300 ) --Наложить состояние STATE_QINGZ на персонажа, сроком на 300 секунд (5 минут), с уровнем состояния 15 (не менять!) TakeMoney (role, nil, 1000) --Отобрать у персонажа 1000 золота SystemNotice( role ,"Получено Благословление новичка, Ваша защита повышена на 20 пунктов на 5 минут! ") --Вывести системное сообщение об удачном наложении баффа else --В противном случае SystemNotice( role ,"У Вас уже есть Благословление новичка! ") --Вывести сообщение что бафф на игрока уже был наложен end end function NewbieBuff2( role ) local money = HasMoney(role , 1000) if money == 0 then SystemNotice( role ,"У Вас недостаточно золота! ") end local StateType = GetChaStateLv ( role , STATE_QINGZ ) if StateType == 0 then AddState ( role , role , STATE_QINGZ , 16 , 300 ) TakeMoney (role, nil, 1000) SystemNotice( role ,"Получено Благословление новичка, Ваша атака повышена на 10 пунктов на 5 минут! ") else SystemNotice( role ,"У Вас уже есть Благословление новичка! ") end end function NewbieBuff3( role ) local money = HasMoney(role , 1000) if money == 0 then SystemNotice( role ,"У Вас недостаточно золота! ") end local StateType = GetChaStateLv ( role , STATE_QINGZ ) if StateType == 0 then AddState ( role , role , STATE_QINGZ , 17 , 300 ) TakeMoney (role, nil, 1000) SystemNotice( role ,"Получено Благословление новичка, Ваш уровень жизни повышен на 50 пунктов на 5 минут! ") else SystemNotice( role ,"У Вас уже есть Благословление новичка! ") end end function StandartBuff1( role ) local money = HasMoney(role , 10000) if money == 0 then SystemNotice( role ,"У Вас недостаточно золота! ") end local StateType = GetChaStateLv ( role , STATE_XLZH ) if StateType == 0 then AddState( role , role , STATE_XLZH, 10 , 300 ) --Наложить состояние STATE_XLZH (Призрачный огонь) 10лвл сроком на 300 секунд (5 минут). Здесь уровень состояния МОЖНО менять. Уровень состояния будет соответсвовать уровню накладываемого заклинания. TakeMoney (role, nil, 10000) SystemNotice( role ,"Наложен Призрачный огонь 10лвл на 5 минут! ") else SystemNotice( role ,"Нельзя использовать одновременно два заклинания одного типа! ") end end function StandartBuff2( role ) local money = HasMoney(role , 10000) if money == 0 then SystemNotice( role ,"У Вас недостаточно золота! ") end local StateType = GetChaStateLv ( role , STATE_SHPF ) if StateType == 0 then AddState ( role , role , STATE_SHPF , 10 , 300 ) TakeMoney (role, nil, 10000) SystemNotice( role ,"Наложена Закалка 10лвл на 5 минут! ") else SystemNotice( role ,"Нельзя использовать одновременно два заклинания одного типа! ") end end function StandartBuff3( role ) local money = HasMoney(role , 10000) if money == 0 then SystemNotice( role ,"У Вас недостаточно золота! ") end local StateType = GetChaStateLv ( role , STATE_TSHD ) if StateType == 0 then AddState( role , role , STATE_TSHD, 10 , 300 ) TakeMoney (role, nil, 10000) SystemNotice( role ,"Наложен Ангельский щит 10лвл на 5 минут! ") else SystemNotice( role ,"Нельзя использовать одновременно два заклинания одного типа! ") end end function StandartBuff4( role ) local money = HasMoney(role , 10000) if money == 0 then SystemNotice( role ,"У Вас недостаточно золота! ") end local StateType = GetChaStateLv ( role , STATE_MLCH ) if StateType == 0 then AddState ( role , role , STATE_MLCH , 10 , 300 ) TakeMoney (role, nil, 10000) SystemNotice( role ,"Наложена Интенсивная магия 10лвл на 5 минут! ") else SystemNotice( role ,"Нельзя использовать одновременно два заклинания одного типа! ") end end Идем в resource\script\MisSdk\NpcSdk.lua Найдем в файле строчки if item.func == JumpPage then return JumpPage( character, npc, page, item.p1 ) и добавить ниже elseif item.func == NewbieBuff1 then return NewbieBuff1(character) elseif item.func == NewbieBuff2 then return NewbieBuff2(character) elseif item.func == NewbieBuff3 then return NewbieBuff3(character) elseif item.func == StandartBuff1 then return StandartBuff1(character) elseif item.func == StandartBuff2 then return StandartBuff2(character) elseif item.func == StandartBuff3 then return StandartBuff3(character) elseif item.func == StandartBuff4 then return StandartBuff4(character) Идем в resource\script\MisScript\NpcScript01.lua Добавляем в конец файла function d_talk021() Talk(1, "Жрец: Приветствую тебя от имени богов. Могу ли я чем то помочь? ") Text(1, "Я хочу получить Благословление новичка. " , JumpPage,2) Text(1, "Я хочу получить улучшающее заклинание. " , JumpPage,3) Text(1, "Прощай " , CloseTalk) Talk(2, "Жрец: Благосклонности богов добиться не так то просто. Ты готов пожертвовать 1000 золотых монет во имя их славы? ") Text(2, "Укрепи мое тело (+20 защиты) ", NewbieBuff1, 1) Text(2, "Помоги одолеть врагов (+10 атаки) ", NewbieBuff2, 1) Text(2, "Дай мне волю к жизни (+50 жизни) ", NewbieBuff3, 1) Text(2, "Назад " , JumpPage,1) Talk(3, "Жрец: Не хватает силы на очередной подвиг? Я могу помочь тебе, однако мои услуги стоят денег. Будь готов заплатить мне 10 тысяч золотых монет. ") Text(3, "Получить Призрачный огонь ", StandartBuff1, 1) Text(3, "Получить Закалку ", StandartBuff2, 1) Text(3, "Получить Ангельский щит ", StandartBuff3, 1) Text(3, "Получить Интенсивную магию ", StandartBuff4, 1) Text(3, "Назад " , JumpPage,1) end Идем в resource\garner\garnerNPC.txt Добавляем в конец файла ххх Жрец 1 11 15 220300,277400 220300,277400 270 Argent City 1 0 d_talk021 0 Не забудьте сменить айди (ххх) на свое значение. Идем в resource\script\calculate\skilleffect.lua Найдем функцию State_QINGZ_Add и заменим все содержимое на function State_QINGZ_Add ( role , statelv ) if statelv == 15 then local defens = GetChaAttr ( role , ATTR_STATEV_DEF ) local def_dif = 20 --Сколько защиты прибавится local def = defens + def_dif SetCharaAttr( def , role , ATTR_STATEV_DEF ) ALLExAttrSet(role) RefreshCha(role) elseif statelv == 16 then local minattack = GetChaAttr ( role , ATTR_STATEV_MNATK ) local maxattack = GetChaAttr ( role , ATTR_STATEV_MXATK ) local mnatksa_dif = 10 --Сколько мин. атаки прибавится local mxatksa_dif = 10 --Сколько макс. атаки прибавится local mnattack = minattack + mnatksa_dif local mxattack = maxattack + mxatksa_dif SetCharaAttr( mnattack , role , ATTR_STATEV_MNATK ) SetCharaAttr( mxattack , role , ATTR_STATEV_MXATK ) ALLExAttrSet(role) RefreshCha(role) elseif statelv == 17 then local hp = GetChaAttr ( role , ATTR_STATEV_MXHP ) local hp_dif = 50 --Сколько жизни прибавится local newhp = hp + hp_dif SetCharaAttr( hp_dif , role , ATTR_STATEV_MXHP ) ALLExAttrSet(role) RefreshCha(role) else local mspdsa_dif = 0.3 local def_dif = 50 local mspdsa = MspdSa ( role ) local mspdsa_fin = ( mspdsa + mspdsa_dif ) * ATTR_RADIX local defsb = DefSb( role ) - def_dif SetCharaAttr( defsb , role , ATTR_STATEV_DEF ) SetCharaAttr( mspdsa_fin , role , ATTR_STATEC_MSPD ) ALLExAttrSet(role) RefreshCha(role) end end Затем ниже функцию State_QINGZ_Rem заменим на function State_QINGZ_Rem ( role , statelv ) if statelv == 15 then local defens = GetChaAttr ( role , ATTR_STATEV_DEF ) local def_dif = 20 local def = defens - def_dif SetCharaAttr( def , role , ATTR_STATEV_DEF ) ALLExAttrSet(role) RefreshCha(role) elseif statelv == 16 then local minattack = GetChaAttr ( role , ATTR_STATEV_MNATK ) local maxattack = GetChaAttr ( role , ATTR_STATEV_MXATK ) local mnatksa_dif = 10 local mxatksa_dif = 10 local mnattack = minattack - mnatksa_dif local mxattack = maxattack - mxatksa_dif SetCharaAttr( mnattack , role , ATTR_STATEV_MNATK ) SetCharaAttr( mxattack , role , ATTR_STATEV_MXATK ) ALLExAttrSet(role) RefreshCha(role) elseif statelv == 17 then local hp = GetChaAttr ( role , ATTR_STATEV_MXHP ) local hp_dif = 50 local newhp = hp - hp_dif SetCharaAttr( hp_dif , role , ATTR_STATEV_MXHP ) ALLExAttrSet(role) RefreshCha(role) else local mspdsa_dif = 0.3 local def_dif = 50 local mspdsa = MspdSa ( role ) local mspdsa_fin = ( mspdsa - mspdsa_dif ) * ATTR_RADIX local defsb = DefSb( role ) + def_dif SetCharaAttr( defsb , role , ATTR_STATEV_DEF ) SetCharaAttr( mspdsa_fin , role , ATTR_STATEC_MSPD ) ALLExAttrSet(role) RefreshCha(role) end end Если захотите изменить какой то параметр - не забудьте поменять его в обоих функциях Существует небольшой баг, из за которого отображаемые характеристики игрока не меняются после применения бафа. Чтобы все отображалось корректно необходимо после нанесения бафа снять и снова одеть какой-нибудь предмет. Либо внести в файлы еще один небольшой фикс. Нам снова потребуется файл resource\script\calculate\skilleffect.lua Найдите в нем функцию State_Xlzh_Add , затем в данной функции найдите строку ALLExAttrSet(role) . Добавьте после данной строки ниже RefreshCha(role) В итоге у вас должно получится так function State_Xlzh_Add ( role , statelv ) local mnatksa_dif =0.1 + 0.01 * statelv local mxatksa_dif =0.1 + 0.01 * statelv local mnatksa = math.floor ( (MnatkSa(role) + mnatksa_dif ) * ATTR_RADIX) local mxatksa = math.floor ( (MxatkSa(role) + mxatksa_dif ) * ATTR_RADIX) SetCharaAttr( mnatksa , role , ATTR_STATEC_MNATK ) SetCharaAttr( mxatksa , role , ATTR_STATEC_MXATK ) ALLExAttrSet(role) RefreshCha(role) end Теперь проделайте все тоже самое со следующими функциями State_Shpf_Add и State_Tshd_Add
  3. Открываем Exp_and_Level.lua и ищем function ShareTeamExp. В конце данной функции находим такие строки: exp = exp + exp_up SetChaAttrI ( TurnToCha(t) , ATTR_CEXP, exp ) Перед этими строками вставляем этот код: local map_name = GetChaMapName (TurnToCha(t) ) if map_name == "abandonedcity" or map_name == "abandonedcity2" or map_name == "abandonedcity3" then SystemNotice ( TurnToCha(t) , "В данной локации опыт не будет выдан." ) exp_up = 0 end Благодаря этому коду,в фс не будет выдаваться опыт.
  4. 1.Заходим файл functions.lua,который находиться ваш сервер ../resource/script/calculate 2. Ищем function Elf_LvUp И так мы нашли функцию феи с помощью которой наша фея апаеться мелким фруктом local a = 1 / ( math.floor ( ( 1 + ( math.pow ( ( Lv / 10 ) , 3 ) ) ) * 10 ) / 10 * math.max ( 0.01 ,( 1 - attr_type_num * 0.05 ) ) ) if Lv >= 51 a = 1 / ( math.floor ( ( 1 + ( math.pow ( ( Lv / 10 ) , 3 ) ) ) * 10 ) / 10 ) * math.max ( 0.01 ,( 1 - attr_type_num * 0.05 ) ) end if Lv >= 51 - Это уровень который можно будет апнуть фейке маленьким фруктом Также вот второй способ апа феи только уже большим фруктом феи: Находим в том же файлике functions.lua function Elf_LvUp_1 ( role , Item_Num , Item_Traget , attr_type ) Листаем немного ниже и находим строки local a = 1 / ( math.floor ( ( 1 + ( math.pow ( ( Lv / 10 ) , 3 ) ) ) * 10 ) / 10 * math.max ( 0.01 ,( 1 - attr_type_num * 0.05 ) ) ) if Lv >= 51 then a = 1 / ( math.floor ( ( 1 + ( math.pow ( ( Lv / 10 ) , 3 ) ) ) * 10 ) / 10 ) * math.max ( 0.01 ,( 1 - attr_type_num * 0.05 ) ) end Это максимальный уровень феи,который можно апнуть фее большим фруктом if Lv >= 51 -Заменяем на нужное вам число и закрываем файлик с сохранением изменений
  5. В ItemEffect.lua ..\resource\script\calculate создаем функцию с префиксом Sk_Script function Sk_Script_Functionname(role, Item) end Затем пользуемся шаблоном: function Sk_Script_Functionname ( role , Item ) local sk_add = SK_NAME local form_sklv = GetSkillLv( role , sk_add ) if form_sklv ~= 0 then UseItemFailed ( role ) return end a = AddChaSkill ( role , sk_add, 1 , 1 , 1 ) if a== 0 then UseItemFailed ( role ) return end end SK_NAME - это переменная, которая находится в variable.lua В ней содержится ID скилла. Например Берсерк (SK_KB): ... SK_JJSL = 67 --Мастер большого меча SK_KB = 84 --Берсерк SK_FSZ = 109 --Рубка двумя мечами SK_XZFY = 104 --Печать старейшины ... Меняем SK_NAME на своё. Если мы хотим сделать так чтоб скилл не тратил очки умений или сразу создавался 10 уровня: AddChaSkill(role, SK_SYZY, 1, 1, 1) Первый параметр - userdata Второй параметр- айди скилла Третий параметр- на сколько повысится уровень скилла Пятый параметр- кол-во отнимаемых очков
  6. А что собственно не так? exp_up = exp_up * EXP_RAID_STATE - для опыта, где exp_up - получаемый опыт, EXP_RAID_STATE - переменная зависящая от функции итема. mf = math.min ( 1, 100 / arg * bsmf ) * MF_RAID * MF_RAID_STATE - для дропа, где MF_RAID_STATE - зависит от функции итема,MF_RAID- зависит от того что ты в вариабл указал,bsmf - логично предположить, что это шанс выпадения из итеминфо. Собственно массив дан для того чтоб по каждому предмету идти и его вероятность повысить.
  7. Я конечно не спец. Но скорей всего без хекса клиента тут не обойтись, надо будет вшивать возможность использования картинок. Можно сделать новое окно и при разговоре с нпс будет вылезать это окно, но тут тоже надо хексить.
  8. Навыки же приходят с каждым днем, когда начинал делать много чего не знал)
  9. Я на начальном этапе работы с сервером вписывал ручками в таблицы значения которые мне нужны ( логин\пароль\зашифрованный пароль\лвл аккаунта)
  10. If you kill some mod only this skill you can get 2x 3x drops)
  11. Pls use english, im dont understend you on all topics the reason ш donе know, but you know what the dupe is due to the fact that the skill deals damage
  12. Карты чтоб были с координатами надо дописывать как флеш вложение, а на сайте просто картинки, как и сказал Нестор. Хотя если постараться то можно в эту картинку засунуть нпс и мобов(второе очень емкая работа рисовать это все в каком нибудь редакторе)
  13. Поиск по форуму юзай) Или на мд поиск через гугл или яндекс))
  14. Надо кидать в TradeServer это раз Если прочитать выше посты то можно выяснить почему может не работать это два А третью проблемуя не нашел, но скорей всего может быть неправильно написан конфиг.
  15. Смотря какая сборка Но обычно в variable EXP_RAID = 1 -- Рейты соло, GM - &lua EXP_RAID=... MF_RAID = 1 -- Рейты на дроп, GM - &lua MF_RAID=... STAR_RAID = 2 -- Рейты на опыт для звезды единства EXP_BOAT_RAID = 5 -- Рейты коробля EXP_QUEST_RAID = 2 -- Рейты на квесты AUTO_RAID_MF_START = 0 -- Авто рейты на выходные(1 вкл\0 выкл) ELEEXP_GETRAD = 13 -- Рейты на кач феи BOGEXP_GETRAD = 10 -- Рейты на кач феи бога TeamExp_RAID = 2 -- Рейты на кач в отряде MENTOR_ITEMID = 0 -- Дополнительный итем ученику к мини-усилителям натиска
  16. Включаем логику. Нпс и боссы те же мобы, значит они хранятся в файлике Characterinfo.txt , дальше думаю не надо объяснять. Я так понимаю ты тот человек который хочет открыть фан-серв?
  17. Возьми любой клиент и пропатч его файлами из сервера С картами - проблема тут это не поможет. (тут спрашивай у тех кто делал этот сервер, не велика вероятност что у игроков или разработчиков есть клиенты) Какие там карты были новые? Нпс\Боссы\Предметы\Гемы все можно сделать имея сервер. С гемами проблема если были добавлены новые, так как надо хинты прописывать, но это не большая проблема.
  18. Патч на клиент или на серв? Если есть серв то можно самостоятельно сделать патч.
  19. В данных массивах содержится информация о том сколько раз можно использовать навык на босса. Так же по можно создать свой массив по аналогии и записывать в него время действия определенных навыков на боссов\мобов. ------ -- 0086 Теневой удар по боссам Абаддона ------ BOSSXYSJ = {} BOSSXYSJ[979] = 1 -- Барон-фантом BOSSXYSJ[980] = 12 -- Огненный демон BOSSXYSJ[981] = 6 -- Злобное отродье BOSSXYSJ[982] = 4 -- Тайран BOSSXYSJ[983] = 12 -- Феникс BOSSXYSJ[984] = 16 -- Отчаяние BOSSXYSJ[985] = 16 -- Дракан BOSSXYSJ[986] = 12 -- Тидаль BOSSXYSJ[987] = 4 -- Хардин BOSSXYSJ[988] = 4 -- Кара ------ -- 0095 Ослабление по боссам Абаддона ------ BOSSSJSJ = {} BOSSSJSJ[979] = 8 BOSSSJSJ[980] = 1 BOSSSJSJ[981] = 6 BOSSSJSJ[982] = 4 BOSSSJSJ[983] = 12 BOSSSJSJ[984] = 16 BOSSSJSJ[985] = 16 BOSSSJSJ[986] = 12 BOSSSJSJ[987] = 4 BOSSSJSJ[988] = 4 ------ -- 0094 Калечащий выстрел по боссам Абаддона ------ BOSSTJSJ = {} BOSSTJSJ[979] = 8 BOSSTJSJ[980] = 1 BOSSTJSJ[981] = 6 BOSSTJSJ[982] = 4 BOSSTJSJ[983] = 12 BOSSTJSJ[984] = 16 BOSSTJSJ[985] = 16 BOSSTJSJ[986] = 12 BOSSTJSJ[987] = 4 BOSSTJSJ[988] = 4 ------ -- 0104 Печать старейшины по боссам Абаддона ------ BOSSXZSJ = {} BOSSXZSJ[979] = 12 BOSSXZSJ[980] = 12 BOSSXZSJ[981] = 16 BOSSXZSJ[982] = 16 BOSSXZSJ[983] = 12 BOSSXZSJ[984] = 4 BOSSXZSJ[985] = 1 BOSSXZSJ[986] = 6 BOSSXZSJ[987] = 4 BOSSXZSJ[988] = 4 ------ -- 0105 Росчерк тени по боссам Абаддона ------ BOSSAYSJ = {} BOSSAYSJ[979] = 12 BOSSAYSJ[980] = 12 BOSSAYSJ[981] = 16 BOSSAYSJ[982] = 16 BOSSAYSJ[983] = 12 BOSSAYSJ[984] = 4 BOSSAYSJ[985] = 1 BOSSAYSJ[986] = 6 BOSSAYSJ[987] = 4 BOSSAYSJ[988] = 4
  20. А за что именно отвечает данный массив? То что там пишется ид босса, а после = пишется какое то кол-во времени действия\повторов применения я понял)
  21. не очень хорошо. Спасибо за информацию.
  22. WVWMK

    Аппарели

    + А вот аппарели вполне пригодные)
  23. WVWMK

    Аппарели

    Поэтому я и написал что там аппарели) За то что там внутри сайтов и сборок я не ручаюсь)
×
×
  • Create New...