beeki

Marriage MOD

May 30th, 2012
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XML 5.89 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <mod name="MarriageSystem" version="1.0" author="Vodkart" contact="xtibia.com" enabled="yes">  
  3. <config name="marry_func"><![CDATA[
  4.  
  5. marry_config = {
  6. OnlyDifferentSex = false,
  7. Marry_Price = 300000,
  8. Divorce_Price = 100000,
  9. Level = 50,
  10. MaxSqm = 7, -- to marry and buffs
  11. Text = {'I love you!','My love!','Baby dear!'},
  12. items = {2121,10502,10510},
  13. TimeAccept = 30,
  14. storage1 = 300235,
  15. storage2 = 300236,
  16. storage3 = 300237
  17. }
  18.  
  19. function isMarried(cid)
  20. local m = db.getResult("SELECT `player_id` FROM `marriage_system` WHERE `player_id` = '"..getPlayerGUID(cid).."';")
  21. if(m:getID() == -1) then
  22. local e = db.getResult("SELECT `partner` FROM `marriage_system` WHERE `partner` = '"..getPlayerGUID(cid).."';")
  23. if(e:getID() == -1) then
  24. return false
  25. end
  26. end
  27. return true
  28. end
  29. function isPatner(cid)
  30. local p = db.getResult("SELECT `partner` FROM `marriage_system` WHERE `player_id` = '"..getPlayerGUID(cid).."';")
  31. if(p:getID() == -1) then
  32. return true
  33. end
  34. return false
  35. end
  36. function isMarryOnline(cid)
  37. if not getPlayerByNameWildcard(getPartner(cid)) then
  38. return false
  39. end
  40. return true
  41. end
  42. function Ponline(player)
  43.        local rows = db.getResult("SELECT `online` FROM `players` WHERE `id` = " .. player .. ";")
  44.        local on = rows:getDataInt("online")
  45.        if on ~= 0 then
  46.                return TRUE
  47.        else
  48.                return FALSE
  49.        end
  50. end
  51. function getPartner(cid)
  52. if isPatner(cid) then
  53. a = db.getResult("SELECT `player_id` FROM `marriage_system` WHERE `partner` = '"..getPlayerGUID(cid).."';")
  54. b = "player_id"
  55. else
  56. a = db.getResult("SELECT `partner` FROM `marriage_system` WHERE `player_id` = '"..getPlayerGUID(cid).."';")
  57. b = "partner"
  58. end
  59. local query = a
  60. return getPlayerNameByGUID(query:getDataString(b))
  61. end
  62. function doMarry(cid, patner)
  63. return db.executeQuery("INSERT INTO `marriage_system` (`player_id`, `partner`, `marriage_date`) VALUES ('".. getPlayerGUID(cid) .."', '"..patner.."', '".. os.time() .."');")
  64. end
  65. function doDivorcePlayer(cid)
  66. if isPatner(cid) then
  67. pid,player = getPlayerGUIDByName(getPartner(cid)),getPlayerByNameWildcard(getPartner(cid))
  68. else
  69. pid,player = getPlayerGUID(cid),cid
  70. end
  71. return db.executeQuery("DELETE FROM `marriage_system` WHERE `player_id` = '" .. pid .. "';")
  72. end
  73. function getMarryDate(cid)
  74. local player = isPatner(cid) and getPlayerGUIDByName(getPartner(cid)) or getPlayerGUID(cid)
  75. local date = db.getResult("SELECT `marriage_date` FROM `marriage_system` WHERE `player_id` = '"..player.."';")
  76. return os.date("%d %B %Y %X ", date:getDataInt("marriage_date"))
  77. end
  78. ]]></config>
  79. <talkaction words="/marriage;!marriage" event="buffer"><![CDATA[
  80. domodlib('marry_func')
  81. param = string.lower(param)
  82. if (param == "") then
  83. doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"invalid command, for more information enter !marriage info")
  84. elseif(param == "info") then
  85. doShowTextDialog(cid,2160,"Marriage Info:\n\nLevel Minimum: "..marry_config.Level.."\nMarriage Cost: "..marry_config.Marry_Price.."\nDivorce Cost: "..marry_config.Divorce_Price.."\n\nMarried Players have a special buffs as a wedding gift given by the union\n\nThis bonus is only given if the married players are nearby.")
  86. elseif(param == "status") then
  87. doPlayerPopupFYI(cid,""..(isMarried(cid) and "Marriage Status".."\n\nMarried with: ["..getPartner(cid).."]\n\nThe date of his marriage was: "..getMarryDate(cid).."" or "you are not married").."")
  88. end
  89. return true
  90. ]]></talkaction>
  91. <event type="login" name="MarryRegister" event="script"><![CDATA[
  92.        function onLogin(cid)
  93.                registerCreatureEvent(cid, "MarryLook")
  94.                registerCreatureEvent(cid, "MarryStats")
  95.                registerCreatureEvent(cid, "MarryNoAttack")
  96.    return true
  97.    end]]></event>      
  98. <event type="look" name="MarryLook" event="script"><![CDATA[
  99. domodlib('marry_func')
  100. function onLook(cid, thing, position, lookDistance)
  101. if isPlayer(thing.uid) and isMarried(thing.uid) then
  102. doPlayerSetSpecialDescription(thing.uid, "\nis Married to "..getPartner(thing.uid).." - [Nv: " .. getMarryLevel(thing.uid) .."]\n")
  103. end            
  104. return true
  105. end]]></event>
  106.         <event type="combat" name="MarryNoAttack" event="script"><![CDATA[
  107.                domodlib('marry_func')
  108.                if isPlayer(cid) and isPlayer(target) and isMarried(cid) and isMarried(target) then
  109.                        if (getCreatureName(target) ==  getPartner(cid))then
  110.                                doPlayerSendCancel(cid, "You may not attack this player.")
  111.                                return false
  112.                        end
  113.                end
  114.                return true
  115.        ]]></event>
  116. <event type="statschange" name="MarryStats" event="script"><![CDATA[
  117. domodlib('marry_func')
  118. Damage_percent = 50 -- metade
  119. Chance = 20 -- chance de conseguir o reflect ou parte damage
  120. if isMonster(attacker) and type == STATSCHANGE_HEALTHLOSS then
  121. if isMarried(cid) and isMarryOnline(cid) and getPlayerByNameWildcard(getPartner(cid)) and getDistanceBetween(getCreaturePosition(cid), getCreaturePosition(getPlayerByNameWildcard(getPartner(cid)))) <= marry_config.MaxSqm then
  122. if (Chance > math.random(1, 100)) then
  123. damage = math.ceil((value*Damage_percent)/100)
  124. if (50 > math.random(1, 100)) then
  125. doTargetCombatHealth(cid, attacker, COMBAT_PHYSICALDAMAGE, -damage, -damage, CONST_ME_HOLYDAMAGE)
  126. doSendAnimatedText(getCreaturePosition(cid), "REFLECT!", 140)  
  127. else
  128. doSendMagicEffect(getCreaturePosition(cid), CONST_ME_HEARTS)
  129. doSendAnimatedText(getCreaturePosition(cid), "Love!", 200)
  130. doCreatureAddHealth(cid, damage)
  131. if isMarryOnline(cid) then
  132. doSendMagicEffect(getCreaturePosition(getPlayerByNameWildcard(getPartner(cid))), CONST_ME_HEARTS)
  133. doSendAnimatedText(getCreaturePosition(getPlayerByNameWildcard(getPartner(cid))), "Love!", 200)  
  134. doCreatureAddHealth(getPlayerByNameWildcard(getPartner(cid)), -damage)
  135. end
  136. end
  137. end
  138. end
  139. end
  140. return true
  141. ]]></event>
  142. </mod>
Advertisement
Add Comment
Please, Sign In to add comment