Jump to content

Graf

Community
  • Content Count

    593
  • Joined

  • Last visited

  • Days Won

    55

Everything posted by Graf

  1. Okay. All install, start server. All nice. no errors. I open changeIP, write 127.0.0.1 aaaaand... Long loading and "Connection Error" GameServer.exe But AccountServer.exe, GateServer.exe and GroupServer.exe start.. How fix?)
  2. Graf

    [GUIDE] Daily Prize

    @Satan i see not error with this function.
  3. Graf

    [GUIDE] Daily Prize

    May be i`m very stupid, but... and see
  4. @Александр К примеру пишешь эту функцию в function.lua и в MissionSDK добавляешь: elseif actions[i].func == Downgrade_Item then PRINT( "ActionProc:Downgrade_Item" ) Downgrade_Item( character, npc ) И можешь использовать в НПС: TriggerAction( 1, Downgrade_Item )
  5. @Dimasik Выдача скилла перерождения происходит в GiveItem_zsbook3
  6. Редактирование названий Профессий. То есть в клиенте может быть на русском, а на сервере на английском. Я пофиксил у себя. Ибо если кастомный GameServer, над которым ты парился, то менять его не вариант.
  7. @Daisuke May haven't some drivers.. Example NetFramework... I not know, sorry)
  8. @Daisuke Need check log files
  9. @e1mer Какова цена кастомного gui? Полный комплект.
  10. @V3ct0r А вот, к примеру, проверка на уровень ГМ. НПС: Function.lua Ну и MissionSDK.lua Ошибка Можете привести пример или натолкнуть на правильный код?))
  11. I did some updates and he promised me "50$ in 2 days", but i wait 2,3,4 days. Nothing. He give me ban on Discord. Nice work)))
  12. Карта Кристальный берег. Взято с архива. Скриншоты: Чтобы её добавить открываем Server/resource/MapInfo.txt и вставляем: 42 CrystalShore CrystalShore 1 50,50 3,50,50 255,255,255 Далее открываем Server/resource/script/birth/birth_conf.lua и вставляем: AddBirthPoint("Crystal Shore", "CrystalShore", 157,127) AddBirthPoint("Crystal Shore", "CrystalShore", 378,174) Далее открываем Server/resource/script/MisScript/ScriptDefine.lua и дописываем туда: AddMap("CrystalShore", "Crystal Shore") --ID = xx ССЫЛКА НА АРХИВ
  13. Предмет воскрешения Взято с архива. Суть в том, что если у вашего персонажа в рюкзаке предмет XXXX, то он может возродиться. Чтобы это реализовать, заходим в Server/resource/script/functions.lua и ищем функцию cha_timer. В неё вставляем: local playerCurrentMap = GetChaMapName(role) --Если персонаж на карте garner if playerCurrentMap == "garner" then --В рюкзаке должен быть предмет XXXX local Item_Revive = CheckBagItem(role, XXXX) if(Item_Revive > 0)then -- если есть предмет if(IsChaLiving(role) ~= 1)then -- мертв ли персонаж SetRelive(role,role,1,"Хэй! Хочешь возрадиться? ") -- возрождение персонажа TakeItem( role,0,XXXX,1) --Забираем предмет end end end
  14. Новый Год в Пиратии 2019 Взято с архива. Вроде с Roto Pko Заходим в Server/resource/script/calculate/variable.lua и прописываем: ---Массив феерверков FireWorks = {} FireWorks[1] = 839 FireWorks[2] = 838 FireWorks[3] = 366 FireWorks[4] = 369 FireWorks[5] = 363 Далее заходим в Server/resource/script/calculate/functions.lua и находим функцию cha_timer. В неё вписываем: local i = math.random(1,5) local month = os.date ("%m") local day = os.date ("%d") local hour = os.date ("%H") local minute = os.date ("%M") local second = os.date ("%S") local monthnum = tonumber(month) local daynum = tonumber(day) local minutenum = tonumber(minute) local hournum = tonumber(hour) local secondnum = tonumber(second) --Если сейчас 31 декабря и время 23:59, то if monthnum == 12 and daynum == 31 and hournum == 23 and minutenum == 59 then --На 50 секунде выводим.. if secondnum == 50 then BickerNotice(role, "До Нового Года: 10! ") end --На 51 секунде выводим.. if secondnum == 51 then BickerNotice(role, "До Нового Года: 9! ") end if secondnum == 52 then BickerNotice(role, "До Нового Года: 8! ") end if secondnum == 53 then BickerNotice(role, "До Нового Года: 7! ") end if secondnum == 54 then BickerNotice(role, "До Нового Года: 6! ") end if secondnum == 55 then BickerNotice(role, "До Нового Года: 5! ") end if secondnum == 56 then BickerNotice(role, "До Нового Года: 4! ") end if secondnum == 57 then BickerNotice(role, "До Нового Года: 3! ") end if secondnum == 58 then BickerNotice(role, "До Нового Года: 2!") end if secondnum == 59 then BickerNotice(role, "До Нового Года: 1!") end end if monthnum == 01 and daynum == 01 and hournum == 00 and minutenum == 00 then if secondnum == 00 then BickerNotice(role, "С Новым Годом, игроки, Легенды о Ледяном драконе!!! Уиии 2020!!") if(IsPlayer(role)==1) then --На всех персонажах PlayEffect(role, FireWorks[i]) --Будет этот эффект GiveItem(role, 0, XXXX, xx, 4) --И выдача этого предмета(xxxx) в количестве (xx) end end end
  15. Яйцо с феей >0 уровня Если вы хотите добавить на ваш сервер яйцо с феей > 0 уровня, то вот пример на фее 65 уровня. Заходим в Server/resource/iteminfo.txt и вписываем: #### Lv65 Egg of Mordo Junior Strength n0323 10130005 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 99 0 0 -1,-2,-2,-2 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 -1,-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 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 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_MJRstr 0 0 0 0,0 0 0 Double click to obtain Level 65 Mordo Junior Strength. 0 #### Lv65 Egg of Mordo Junior Constitution n0323 10130005 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 99 0 0 -1,-2,-2,-2 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 -1,-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 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 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_MJRcon 0 0 0 0,0 0 0 Double click to obtain Level 65 Mordo Junior Constitution. 0 #### Lv65 Egg of Mordo Junior Spirit n0323 10130005 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 99 0 0 -1,-2,-2,-2 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 -1,-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 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 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_MJRspr 0 0 0 0,0 0 0 Double click to obtain Level 65 Mordo Junior Spirit. 0 #### Lv65 Egg of Mordo Junior Accuracy n0323 10130005 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 99 0 0 -1,-2,-2,-2 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 -1,-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 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 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_MJRacc 0 0 0 0,0 0 0 Double click to obtain Level 65 Mordo Junior Accuracy. 0 #### Lv65 Egg of Mordo Junior Agility n0323 10130005 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 99 0 0 -1,-2,-2,-2 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 -1,-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 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 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_MJRagi 0 0 0 0,0 0 0 Double click to obtain Level 65 Mordo Junior Agility. 0 Затем переходим в Server/resource/script/calculate/itemeffect.lua и вставляем: -- Яйцо ловкости function ItemUse_MJRagi( role , Item ) local Item_CanGet = GetChaFreeBagGridNum ( role ) if Item_CanGet <= 1 then SystemNotice(role ,"Недостаточно место в инвентаре! ") UseItemFailed ( role ) return end local new_agi= 65 local new_lv = 65 local r1,r2 = MakeItem ( role , 500 , 1 , 4 ) local Item_newJL = GetChaItem ( role , 2 , r2 ) SetItemAttr ( Item_newJL , ITEMATTR_VAL_AGI , new_agi ) SetItemAttr ( Item_newJL , ITEMATTR_VAL_LV , new_lv ) SetItemAttr ( Item_newJL , ITEMATTR_MAXURE , 32000 ) SetItemAttr ( Item_newJL , ITEMATTR_URE , 32000 ) SetItemAttr ( Item_newJL , ITEMATTR_MAXENERGY , 6480 ) SetItemAttr ( Item_newJL , ITEMATTR_ENERGY , 6480 ) RefreshCha(role) end -- Яйцо точности function ItemUse_MJRacc( role , Item ) local Item_CanGet = GetChaFreeBagGridNum ( role ) if Item_CanGet <= 1 then SystemNotice(role ,"Недостаточно место в инвентаре! ") UseItemFailed ( role ) return end local new_dex= 65 local new_lv = 65 local r1,r2 = MakeItem ( role , 500 , 1 , 4 ) local Item_newJL = GetChaItem ( role , 2 , r2 ) SetItemAttr ( Item_newJL , ITEMATTR_VAL_DEX , new_dex ) SetItemAttr ( Item_newJL , ITEMATTR_VAL_LV , new_lv ) SetItemAttr ( Item_newJL , ITEMATTR_MAXURE , 32000 ) SetItemAttr ( Item_newJL , ITEMATTR_URE , 32000 ) SetItemAttr ( Item_newJL , ITEMATTR_MAXENERGY , 6480 ) SetItemAttr ( Item_newJL , ITEMATTR_ENERGY , 6480 ) RefreshCha(role) end -- Яйцо силы function ItemUse_MJRstr( role , Item ) local Item_CanGet = GetChaFreeBagGridNum ( role ) if Item_CanGet <= 1 then SystemNotice(role ,"Недостаточно место в инвентаре! ") UseItemFailed ( role ) return end local new_str= 65 local new_lv = 65 local r1,r2 = MakeItem ( role , 500 , 1 , 4 ) local Item_newJL = GetChaItem ( role , 2 , r2 ) SetItemAttr ( Item_newJL , ITEMATTR_VAL_STR , new_str ) SetItemAttr ( Item_newJL , ITEMATTR_VAL_LV , new_lv ) SetItemAttr ( Item_newJL , ITEMATTR_MAXURE , 32000 ) SetItemAttr ( Item_newJL , ITEMATTR_URE , 32000 ) SetItemAttr ( Item_newJL , ITEMATTR_MAXENERGY , 6480 ) SetItemAttr ( Item_newJL , ITEMATTR_ENERGY , 6480 ) RefreshCha(role) end -- Яйцо телосложения function ItemUse_MJRcon( role , Item ) local Item_CanGet = GetChaFreeBagGridNum ( role ) if Item_CanGet <= 1 then SystemNotice(role ,"Недостаточно место в инвентаре! ") UseItemFailed ( role ) return end local new_con = 65 local new_lv = 65 local r1,r2 = MakeItem ( role , 500 , 1 , 4 ) local Item_newJL = GetChaItem ( role , 2 , r2 ) SetItemAttr ( Item_newJL , ITEMATTR_VAL_CON , new_con ) SetItemAttr ( Item_newJL , ITEMATTR_VAL_LV , new_lv ) SetItemAttr ( Item_newJL , ITEMATTR_MAXURE , 32000 ) SetItemAttr ( Item_newJL , ITEMATTR_URE , 32000 ) SetItemAttr ( Item_newJL , ITEMATTR_MAXENERGY , 6480 ) SetItemAttr ( Item_newJL , ITEMATTR_ENERGY , 6480 ) RefreshCha(role) end -- Яйцо духа function ItemUse_MJRspr( role , Item ) local Item_CanGet = GetChaFreeBagGridNum ( role ) if Item_CanGet <= 1 then SystemNotice(role ,"Недостаточно место в инвентаре! ") UseItemFailed ( role ) return end local new_sta= 65 local new_lv = 65 local r1,r2 = MakeItem ( role , 500 , 1 , 4 ) local Item_newJL = GetChaItem ( role , 2 , r2 ) SetItemAttr ( Item_newJL , ITEMATTR_VAL_STA , new_sta ) SetItemAttr ( Item_newJL , ITEMATTR_VAL_LV , new_lv ) SetItemAttr ( Item_newJL , ITEMATTR_MAXURE , 32000 ) SetItemAttr ( Item_newJL , ITEMATTR_URE , 32000 ) SetItemAttr ( Item_newJL , ITEMATTR_MAXENERGY , 6480 ) SetItemAttr ( Item_newJL , ITEMATTR_ENERGY , 6480 ) RefreshCha(role) end
  16. VIP городок Взято с архива. Можно использовать, как город для гильдий или же еще чего-нибудь. Он небольшой и довольно симпатичный. Скриншоты: Чтобы добавить сея прелесть к себе на сервер, вам понадобится... Открыть Server/resource/mapinfo.txt и вставить: xx maincity maincity 0 52,79 Открыть Server/resource/script/MisScript/ScriptDefine.lua и вставить: AddMap( "maincity", "maincity" ) --ID = xx Открыть Server/resource/script/birth/birth_conf.lua и вставить: AddBirthPoint("maincity", "maincity", 52,79) А также поместить файлы с картой из АРХИВА в свой сервер и клиент.
  17. Graf

    Комбо

    Комбо Взято с архива. Этот скрипт позволяет нам добавить в игру такое явление, как "Комбо". Естественно вы можете прикрутить выдачу призов или еще что-нибудь интересное. Заходим в Server/resource/script/exp_and_level.lua и в конец вставляем: GetExp_New_original = GetExp_New GetExp_New = function (dead , atk) GetExp_New_original(dead , atk ) custom_GetExp_New(dead,atk) end function custom_GetExp_New(ignore, dead, atk) local map_name = GetChaMapName (atk) if ValidCha(atk) == 0 then return end local a = Check_Combat_Mod(dead , atk ) -- Игрок убивает монстров if a == 1 then PK_combo (atk,dead) end -- Игрок убивает игроков if a == 3 then PK_combo (atk,dead) end end function PK_combo (character,target) local name = GetChaDefaultName(character) -- Проверяем наличие комбо if PlayerCombo[name] ~= nil then -- Если последнее комбо было меньше 5 секунд назад local time_bonus = PlayerCombo[name].count if time_bonus > 10 then time_bonus = math.ceil(time_bonus / 3) end if time_bonus > 20 then time_bonus = math.ceil(time_bonus / 7) end if time_bonus > 30 then time_bonus = math.ceil(time_bonus / 10) end local combo_time = 3 + time_bonus if PlayerCombo[name].last < combo_time then -- Увеличиваем кол-во комбо PlayerCombo[name].count = PlayerCombo[name].count + 1 PlayerCombo[name].last = 0 if PlayerCombo[name].count == 10 then AddGold(character,1000) Notice("["..name.."] комбо х10! ") end if PlayerCombo[name].count == 30 then Notice("["..name.."] комбонатор! ") end if PlayerCombo[name].count == 40 then AddGold(character,10000) Notice("["..name.."] комбоголик! ") end if PlayerCombo[name].count == 100 then AddGold(character,50000) Notice("["..name.."] сделал супер комбо!") end if PlayerCombo[name].count == 200 then AddGold(character,500000) Notice("["..name.."] да ты читак, х200 комбо!") end BickerNotice(character,PlayerCombo[name].count.."x комбо!") else -- Убираем бонус RemoveComboBonus(character) local highest_combo = GetPlayerCustomData(character,"combo") if highest_combo < PlayerCombo[name].count then SetPlayerCustomData(character,"combo",PlayerCombo[name].count) end -- Удаляем комбо PlayerCombo[name] = nil end else -- Комбо отсутствует, поставим 1 PlayerCombo[name] = { last = 1, count = 1} end end function PK_combo_timer (character) local name = GetChaDefaultName(character) -- Игрок совершает комбо if PlayerCombo[name] ~= nil then local time_bonus = PlayerCombo[name].count if time_bonus > 10 then time_bonus = math.ceil(time_bonus / 3) end if time_bonus > 20 then time_bonus = math.ceil(time_bonus / 7) end if time_bonus > 30 then time_bonus = math.ceil(time_bonus / 10) end local combo_time = 3 + time_bonus if PlayerCombo[name].last > combo_time then PlayerCombo[name] = nil else -- Увеличиваем таймер PlayerCombo[name].last = PlayerCombo[name].last + 1 -- Добавляем бонус AddComboBonus(character,PlayerCombo[name].count) end else RemoveComboBonus(character) end end function AddComboBonus(character,amount) -- Добавляем бонус SetCharaAttr(amount ,character , ATTR_STATEV_MSPD) SetCharaAttr(amount ,character , ATTR_STATEV_ASPD) ALLExAttrSet(character) end function RemoveComboBonus(character) -- Убираем бонус SetCharaAttr(0 ,character , ATTR_STATEV_MSPD) SetCharaAttr(0 ,character , ATTR_STATEV_ASPD) ALLExAttrSet(character) end
  18. Приручение монстров Взято с архива. Немного моих мыслей... Думаю не только я замечал, что в коде игры имеются карты монстров, профессия "Animal tamer", что дает нам новую, уникальную профессию. Так вот пример умения приручения монстров.. Открываем Server/resource/skillinfo.txt и пишем: 0496 Tame 1 -1,10 1,-1 1,-1 1,-1 -1 0 1 0 -1 -1 1 1 1 300 4 1 0 0 0 0 0 SkillSp_TAME 0 0 0 0 Skill_TAME_End 0 0 0 0 0 0 0 0 0 0 0 0 0 0 SkillCooldown_TAME 1 1 11 -1 40 -1 379 0 0 0,0 0,0 0 9 -1 0 0 -1 2 101 0 0 0 s0225.tga 0 0 Monster Skill Monster Skill 0 0 Открываем Server/resource/script/skilleffect.lua и вставляем: --Затраты маны function SkillSp_TAME ( sklv ) local sp_reduce = 10 return sp_reduce end --Перезарядка умения function SkillCooldown_TAME( sklv ) local Cooldown = 35000 return Cooldown end function Skill_TAME_Begin ( role , sklv ) local sp = Sp(role) local sp_reduce = SkillSp_HLKJ ( sklv ) if sp - sp_reduce < 0 then SkillUnable(role) return end Sp_Red (role , sp_reduce ) end function Skill_TAME_End ( ATKER , DEFER , sklv ) local norm = Is_NormalMonster (DEFER) if norm == 0 then BickerNotice(ATKER,"Вы не можете использовать умение на игроках! ") return 0 elseif norm == 1 then local mob_id = GetChaID(DEFER) --Запрет на использование умения на определенных монстрах if mob_id == 937 or mob_id == 938 or mob_id == 939 or mob_id == 940 or mob_id == 941 then BickerNotice(ATKER,"Вы не можете приручить этого монстра! ") return 0 else local hp_percent = math.ceil( (Hp (DEFER) / Mxhp (DEFER)) * 100) local xx = math.random(1, 20) if hp_percent > xx then BickerNotice(ATKER,"Приручение не удалось. Попробуйте снова! ") elseif hp_percent < xx then BickerNotice(ATKER,"Вы успешно приручили - "..GetChaDefaultName(DEFER).."! ") local MonsterID = GetChaID(DEFER) local x1, y1 = GetChaPos(ATKER) local mob = CreateCha(MonsterID, x1, y1, 145, 50) SetChaHost(mob, ATKER) SetChaAIType(mob, 13) SetChaLifeTime(mob, 10000000) local hp = Mxhp(ATKER) local Health = Mxhp(DEFER) hp_recover = 2 * Health Hp_Endure_Dmg ( DEFER , hp_recover ) end end end end Надеюсь кому-то будет интересно и мы сможем увидеть новую профессию в деле.
  19. Онлайн-эвент Взято с архива. Как это работает? Если игрок выше 75 уровня и находится в игре 24 часа, то ему выдается приз. Перейдем к реализации. Открываем Server/resource/script/functions.lua функцию cha_timer и вписываем: -- Устанавливаем часы. Дефолтно 24 часа = 1 день local SetHours = 24 local Level = GetChaAttr( role , ATTR_LV ) if OnlineEvent == true and math.mod(now_tick, SetHours*3600) == 0 and now_tick > 0 and Level > 75 then local Prize = {} -- ID призов Prize[1] = хххх Prize[2] = хххх Prize[3] = хххх -- Делаем рандом local i = math.random (1,3) -- Добавляем приз local cha = TurnToCha (role) local ItemName = GetItemName (Prize[i]) GiveItem ( cha , 0 , Prize[i] , 1 , 4 ) -- Выводим в систему или куда вам удобно.. SystemNotice(cha,"Поздравляю! Вы получили приз за онлайн в "..SetHours.." часа - "..ItemName.."! ") end Теперь, чтобы нам удобнее было управлять эвентом, заходим в Server/resource/script/variable.lua и добавляем: OnlineEvent = false И команды для чата: Чтобы активировать эвент, вы можете ввести чат-команду: &lua_all OnlineEvent = true Или же, чтобы остановить эвент, введите: &lua_all OnlineEvent = false
×
×
  • Create New...