Создай Сервер Пиратии
Наш сайт переехал на http://forum.all-piratia.ru/index.php

[Дополнение] Свадьба

Перейти вниз

[Дополнение] Свадьба

Сообщение автор DarkBOY в Вс Фев 12, 2012 11:49 am

Выкладываю рабочую Свадьбу Улыбаюсь Я лично сам у себя на сервере ее проверил.

1.Работа с NPC


Открываем файл yschurchnpc.txt ( Он находиться в Сервер\resource\yschurch\), и вписываем следующее:

Код:
0   Свидетельница   1   1130   0   46575,4775   46575,4775   180   Церковь   1   0   church_talk02   0
1   Свидетель   1   1189   0   47375,4775   47375,4775   180   Церковь   1   0   church_talk01   0
2   Первосященник   1   23   0   47000,4300   47000,4300   180   Церковь   1   0   church_talk03   0
3   Прихожанка   1   430   0   20375,16425   20375,16425   210   Церковь   1   0   church_talk04   0

Затем открываем NpcScript01 ( Он находиться в Сервер\resource\script\MisScript\), и в самый конец вставляем:

Код:
function church_talk01()
   Talk (1, "Свидетель: Привет. За 200 золотых я могу устроить для жениха с невестой грандиозный салют. Хочешь? ")

   InitTrigger()
   TriggerCondition( 1, HasMoney, 200 )
   TriggerAction( 1, TakeMoney, 200)
   TriggerAction( 1, FireworksChurch )
   TriggerFailure( 1, JumpPage, 3)

   Text (1, "Конечно! ", MultiTrigger, GetMultiTrigger(), 1)
   Text (1, "Нет, спасибо. ", CloseTalk)

   Talk (3, "Свидетель: Извините, но у Вас нет денег. ")
   Text (3, "До свидания. ", CloseTalk)
end

function church_talk02()
   Talk (1, "Свидетельница: Привет. За 200 золотых я могу устроить для жениха с невестой грандиозный салют. Хочешь? ")

   InitTrigger()
   TriggerCondition( 1, HasMoney, 200 )
   TriggerAction( 1, TakeMoney, 200)
   TriggerAction( 1, FireworksChurch )
   TriggerFailure( 1, JumpPage, 3)

   Text (1, "Конечно! ", MultiTrigger, GetMultiTrigger(), 1)
   Text (1, "Нет, спасибо. ", CloseTalk)

   Talk (3, "Свидетельца: Извините, но у Вас нет денег. ")
   Text (3, "До свидания. ", CloseTalk)
end

function church_talk03()

   Talk( 1, "Первосященник: Добро пожаловть в Церковь. Давайте начнем церемонию. ")
   Text( 1, "Начать церемонию ", JumpPage, 2)

   Talk( 2, "Первосвященник: Берешь ли ты в  законные жены(мужья) этого человека? Согласен(а) ли ты и в горе и в радости быть с ним? " )
   Text( 2, "Да. Я согласен(а). ", Marry)
   Text( 2, "Мне надо подумать... ", CloseTalk)

end

function church_talk04()

   Talk( 1, "Прихожанка: Добрый день! А Вы на свадьбу? Не желаете сделать сюрприз молодоженам? ")
   Text( 1, "Какой? ", JumpPage, 2)
   Text( 1, "Нет, спасибо. ", CloseTalk)
   
   Talk( 2, "Прихожанка: У меня есть уникальные свитки вызова. Я очень дешего их отдаю. ")
   Text( 2, "Цветочный шар ", JumpPage, 3)
   Text( 2, "Расписка на игру с Шариками ", JumpPage, 4)

   Talk( 3, "Прихожанка: Брачный аферист очень агресивен. Если его ударить, он не отстанет от Вас. Будьте осторожны! ")

   InitTrigger()
   TriggerCondition( 1, KitbagLock, 0 )
   TriggerCondition( 1, HasLeaveBagGrid, 1 )
   TriggerCondition( 1, HasMoney, 75000 )
   TriggerAction( 1, TakeMoney, 75000 )
   TriggerAction( 1, GiveItem , 3080  , 1 , 4  )
   TriggerFailure( 1, JumpPage, 5 )
   Text( 3, "Купить за 75.000 золотых ", MultiTrigger, GetMultiTrigger(), 1)
   Text( 3, "Назад ", JumpPage, 2)

   Talk( 4, "Прихожанка: Воздушные шары... Я очень люблю украшать ими свой дом. А Вы когда-нибудь пробывали? ")

   InitTrigger()
   TriggerCondition( 1, KitbagLock, 0 )
   TriggerCondition( 1, HasLeaveBagGrid, 1 )
   TriggerCondition( 1, HasMoney, 75000 )
   TriggerAction( 1, TakeMoney, 75000 )
   TriggerAction( 1, GiveItem , 3083  , 1 , 4  )
   TriggerFailure( 1, JumpPage, 5 )
   Text( 4, "Купить за 75.000 золотых ", MultiTrigger, GetMultiTrigger(), 1)
   Text( 4, "Назад ", JumpPage, 2)

   Talk( 5, "Прихожанка: Как вы смеете обманывать? Здесь! В Церкви! ")
   Text( 5, "Извините ", CloseTalk)
end

2. Добавляем предметы в ItemInfo и "Узы Любви" в SkillInfo


Открываем ItemInfo.txt и добавляем следующие предметы:

Код:

2520   Кольцо Влюбленных   n1919   10130005   0   0   0   0   0   00   41   0   0   0   0   1   0   0   0   1   1   0   0   -1   0   -1   0   0   -1   -1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0   0   0,0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   Magic ring which can send you to your sweetheart using the Love line ability   

2521   Кольцо дня Св.Валентина   n2119   10130005   0   0   0   0   0   00   41   0   0   0   0   1   0   0   0   1   1   0   0   -1   0   -1   0   0   -1   -1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0   0   0,0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    кольца для свадьбы   

2913   Свадебный Сертификат   n1785   10130005   0   0   0   0   0   00   41   0   0   0   0   0   0   0   0   1   1   0   0   -1   0   -1   0   0   -1   -1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0   0   0,0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   Go find Maylada in Shaitan City. Make sure you have a marriage certificate to apply for access to the church. If the application is successful, the wedding will be held there.   

3024   Билет на посещение Церкви   n1828   10130005   0   0   0   0   0   0   31   0   0   0   0   0   1   1   1   1   99   0   300   -1   0   -1   0   0   -1   -1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0,0   0   0   0,0   0   0   0   0   0   0   0   0   0   Jz_Script_yszs   0   0   0   0   0   0   On 5:00pm-5:10pm EST every Monday evening, you can double click to enter the Mosque.   

Открываем SkillInfo.txt и вставляем:
Код:
467   Узы любви   1   -1,1   1,-1   1,-1   1,-1   -1   2   1   1   -1   -1   1   1   1   0   1   1   0   0   0   0   0   0   0   0   0   0   Skill_Qlzx_End   0   0   0   0   0   0   0   0   0   0   0   0   0   0   60000   1   1   12,0,0,0,0,0,0,0,0,0   0   0   -1,0,0   0,0,0   0,0,0   1   0,0   0,0   0   -1   -1   0   0   -1   -1   0   -1   0   829947904   x1100.tga   0   0,0   Перемещает тебя к твоей половинке. Перезарядка - 1 минута.   Если надето Кольцо Влюбленны - отправляет к твоей половинке   Нужно Кольцо Влюбленных   0

Не забываем скомпилировать файлы.

3.Работаем с функциями


Затем открываем function.lua ( Он находиться в Сервер\resource\script\calculate\) и вписываем следующее:

Код:

--Функция свадьбы
function Marry(role, npc)

local fata_need = 1
local sk_add = SK_QLZX

  if IsInTeam(role)== 1 then
      if PartyNum(role) > 2 then
        SystemNotice(role, "Пожалуйста, останьтесь наедине в группе со своей половинкой. ")
        return
      end
      local player = {}
      player[1] = role
      player[2] = GetTeamCha( role , 0 )

        local GetCertificate1 = CheckBagItem(role, 2913 )
        local GetCertificate2 = CheckBagItem(player[2], 2913 )
            if GetCertificate1 < 1 then
              SystemNotice(role, "У Вас нет Свадебного сертификата. ")

              SystemNotice(player[2], "У Вашей половинки нет Свадебного сертификата. ")

              return
            end
            if GetCertificate2 < 1 then
              SystemNotice(player[2], "У Вас нет Свадебного сертификата. ")

              SystemNotice(role, "У Вашей половинки нет Свадебного сертификата. ")

              return
            end

        local NocLock1 =  KitbagLock( role, 0 )
        local NocLock2 =  KitbagLock( player[2], 0 )
        if NocLock1  == 0 then
            SystemNotice(role, "У Вас заблокирован инвентарь. ")

            SystemNotice(player[2], "У Вашей половинки заблокирован инвентарь. ")

            return
        end
        if NocLock2  == 0 then
            SystemNotice(player[2], "У Вас заблокирован инвентарь. ")

            SystemNotice(role, "У Вашей половинки заблокирован инвентарь. ")

            return
        end

        local GetMarryRing1 = CheckBagItem(role, 2520 )
        local GetMarryRing2 = CheckBagItem(player[2], 2520 )
            if GetMarryRing1 > 0 then
              SystemNotice(role, "У Вас уже была Свадьба. ")
 
              SystemNotice(player[2], "У Вашей половинки уже была Свадьба. ")

              return
            end
            if GetMarryRing2 > 0 then
              SystemNotice(player[2], "У Вас уже была Свадьба. ")

              SystemNotice(role, "У Вашей половинки уже была Свадьба. ")

              return
            end

            if WeddingRace(role, player[2])==0 then
              return
            end

            if ValentinesRing(role)==0 then
              SystemNotice(role, "У тебя нет Кольца дня Св.Валентина! ")

              SystemNotice(player[2], "У твоей половинки нет Кольца дня Св.Валентина! ")

              return
            end
            if ValentinesRing(player[2])==0 then
              SystemNotice(player[2], "У тебя нет Кольца дня Св.Валентина! ")

              SystemNotice(role, "У твоей половинки нет Кольца дня Св.Валентина! ")

              return
            end

            if WeddingDress(role, fata_need)==0 then
              SystemNotice(role, "Оденьте свадебный наряд. ")

              SystemNotice(player[2], "Ваша половинка должна надеть свадебный наряд. ")

              return
            end
            if WeddingDress(player[2], fata_need)==0 then
              SystemNotice(player[2], "Оденьте свадебный наряд. ")

              SystemNotice(role, "Ваша половинка должна надеть свадебный наряд. ")

              return
            end 
              local Ring = GetChaItem2 ( role , 2 , 2521 )
              local CheckRing = GetChaItem2 ( player[2] , 2 , 2521 )
              local Num = GetItemForgeParam ( CheckRing , 1 )
              CheckNum = TansferNum ( Num )
                  if CheckNum ~= 2 then
                    SetItemForgeParam ( Ring, 1 , 2 )
                    SystemNotice(role, "Дождитесь пока ваша вторая половинка поговорит с Первосященником. ")

                    SystemNotice(player[2], "Ваша вторая половинка уже поговорила с Первосященником. Теперь ваша очередь. ")

                  else
                    local ID_Num1 = GetPlayerID(GetChaPlayer(role))
                    local ID_Num2 = GetPlayerID(GetChaPlayer(player[2]))
                    local cha_name1 = GetChaDefaultName ( role )
                    local cha_name2 = GetChaDefaultName ( player[2] )
                        TakeItem ( role, 0, 2913, 1 )
                        TakeItem ( player[2], 0, 2913, 1 )
                        TakeItem ( role, 0, 2521, 1 )
                        TakeItem ( player[2], 0, 2521, 1 )
                        MakeItem ( role ,  7314 , 1 , 1 )
                        MakeItem ( player[2] ,  7314 , 1 , 1 )
                        MakeItem ( role ,  2520 , 1 , 1 )
                          local ring1 = GetChaItem2 ( role , 2 , 2520 )
                          SetItemForgeParam ( ring1, 1 , ID_Num2 )
                        MakeItem ( player[2],  2520 , 1 , 1 )
                          local ring2 = GetChaItem2 ( player[2], 2 , 2520 )
                          SetItemForgeParam ( ring2, 1 , ID_Num1 )
                        AddChaSkill ( role , sk_add, 1 , 1 , 0 ) 
                        AddChaSkill ( player[2] , sk_add, 1 , 1 , 0 )
                        PlayEffect(npc, 366)
                                   
                                                                PlayEffect(role, 838)
                        PlayEffect(player[2], 838)
                        local message = "Поздравляем "..cha_name1.." и "..cha_name2.." с состоявшейся свадьбой. От всей души желаем вам счастья в совместной жизни. "

                        Notice ( message )
                  end
  else
        SystemNotice(role, "Чтобы соединить Ваши сердца молодожены должны быть в отряде ")

      return
  end
end

После этого открываем файл NpcSdk (Он находится в Cервер\resource\script\MisSdk\ )

Находим строчку:
Код:
return JumpPage( character, npc, page, item.p1 )

И после нее вставляем:
Код:
            elseif item.func == Marry then
                  return Marry(character)

Затем открываем skilleffect.lua ( Он находиться в Сервер\resource\script\calculate\) и вписываем следующее:

Добавляем функцию скила "Узы Любви":

Код:
function Skill_Qlzx_End ( ATKER , DEFER , sklv )
   local NocLock =   KitbagLock( ATKER, 0 )
   if NocLock == LUA_FALSE then
      SystemNotice( ATKER , "\200\237\226\229\237\242\224\240\252 \231\224\225\235\238\234\232\240\238\226\224\237")
      --SystemNotice( ATKER , "Инвентарь заблокирован")
      return
   end
   local item_count = CheckBagItem ( ATKER , 2520 )
   if item_count <= 0 then 
      SystemNotice( ATKER , "\211 \194\224\241 \237\229\242 \202\238\235\252\246\224 \194\235\254\225\235\229\237\237\251\245")
      --SystemNotice( ATKER , "У Вас нет Кольца Влюбленных")
      return
   else
      local ring = GetChaItem2 ( ATKER , 2 , 2520 )
      local Num_ATK_JZ = GetItemForgeParam ( ring , 1 )
      Num_ATK_JZ = TansferNum ( Num_ATK_JZ )
      local ID_ATK_Num = GetRoleID(ATKER)
--      local RoleType = GetChaID(ATKER)
      local t = {}
      t[0] = DEFER
      t[1] = GetTeamCha(DEFER, 0 ) 
      t[2] = GetTeamCha(DEFER, 1 ) 
      t[3] = GetTeamCha(DEFER, 2 )   
      t[4] = GetTeamCha(DEFER, 3 )
      local i = 1
      for i = 1 , 4 , 1 do
         if t[i] ~= nil then
            local item_count = CheckBagItem ( t[i] , 2520 )
            if item_count == 1 then 
               local Item = GetChaItem2 ( t[i] , 2 , 2520 )
               local Num_JZ = GetItemForgeParam ( Item , 1 )
               Num_JZ = TansferNum ( Num_JZ )
               if Num_JZ == ID_ATK_Num  then
                  local ID_Num = GetRoleID(t[i])
                  if Num_ATK_JZ==ID_Num then
                     local x, y = GetChaPos(t[i])
                     local map_name = GetChaMapName (t[i])
                     x = math.floor (x*0.01)
                     y = math.floor (y*0.01)
                     if map_name == "prisonisland" or map_name == "mingyun" or map_name == "guildwar" or map_name == "guildwar2" or map_name == "darkswamp" or map_name == "abandonedcity" or map_name == "abandonedcity2" or map_name == "abandonedcity3" then
                        SystemNotice ( ATKER , "\194\238\231\236\238\230\237\238, \194\224\248\224 \239\238\235\238\226\232\237\234\224 \237\224\245\238\228\232\242\241\255 \237\224 \234\224\240\242\229, \227\228\229 \237\229\235\252\231\255 \232\241\239\238\235\252\231\238\226\224\242\252 \228\224\237\237\238\229 \243\236\229\237\232\229" )
                        --SystemNotice ( ATKER , "Возможно, Ваша половинка находится на карте, где нельзя использовать данное умение" )
                        UseItemFailed ( ATKER )
                        return
                     else
                        local map_name2 = GetChaMapName ( ATKER )
                        if map_name2 == "prisonisland" or map_name2 == "mingyun" or map_name2 == "guildwar" or map_name2 == "guildwar2" or map_name2 == "darkswamp" or map_name2 == "abandonedcity" or map_name2 == "abandonedcity2" or map_name2 == "abandonedcity3" then
                           SystemNotice ( ATKER , "\205\229\235\252\231\255 \232\241\239\238\235\252\231\238\226\224\242\252 \243\236\229\237\232\229 \237\224 \228\224\237\237\238\233 \234\224\240\242\229" )
                           --SystemNotice ( ATKER , Нельзя использовать умение на данной карте" )
                           UseItemFailed ( ATKER )
                           return
                        end
                     end
                     GoTo(ATKER, x,y, map_name)
                     return
                  end
               end
            end
         end
         if i == 4 then
            SystemNotice( ATKER , "\194 \194\224\248\229\236 \238\242\240\255\228\229 \237\229\242 \194\224\248\229\233 \239\238\235\238\226\232\237\234\232")
            --SystemNotice( ATKER , "В Вашем отряде нет Вашей половинки")
         end
      end
      
      local Item = GetChaItem2 ( ATKER , 2 , 2520 )
      local Num_JZ = GetItemForgeParam ( Item , 1 )
      Num_JZ = TansferNum ( Num_JZ )
      local Part1_JZ = GetNum_Part1 ( Num_JZ )
      local Part2_JZ = GetNum_Part2 ( Num_JZ )   
      local Part3_JZ = GetNum_Part3 ( Num_JZ )
      local Part4_JZ = GetNum_Part4 ( Num_JZ )
      local Part5_JZ = GetNum_Part5 ( Num_JZ )
      local Part6_JZ = GetNum_Part6 ( Num_JZ )
      local Part7_JZ = GetNum_Part7 ( Num_JZ )
      Part1_JZ=1
      Num_JZ = SetNum_Part1 ( Num_JZ , 1 )
      SetItemForgeParam ( Item , 1 , Num_JZ )

   end
end

function GetRoleID(role)
   return GetPlayerID(GetChaPlayer(role))
end

И все свадьба работает! Ура

Все вопросы задаем в разделе [Вы должны быть зарегистрированы и подключены, чтобы видеть эту ссылку]

_________________
помог? Ставь спс и +1 =)
avatar
DarkBOY
Admin

Сообщения : 49
Дата регистрации : 2011-08-13
Возраст : 21
Откуда : Полярные Зори

http://microdev.profiforum.ru

Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения