Advertisement
LuckOake

Partner System

Dec 11th, 2012
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.26 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <mod name="Partner System" version="1.0" author="LuckOake" contact="none" enabled="yes">  
  3. ------------------------------------------------------------------------------------
  4. <config name="partner_config"><![CDATA[
  5. function setOfflinePlayerStorageValue(name, key, value)
  6.     local result = db.getResult("SELECT * FROM `player_storage` WHERE `player_id` = ".. getPlayerGUIDByName(name) .." AND `key` = ".. key ..";")
  7.     if result:getID() == -1 then
  8.         return db.executeQuery("INSERT INTO `player_storage` (`player_id`, `key`, `value`) VALUES (".. getPlayerGUIDByName(name) ..", ".. key ..", ".. value ..");")
  9.     else
  10.         result:free()
  11.         return db.executeQuery("UPDATE `player_storage` SET `value` = ".. value .." WHERE `player_id` = ".. getPlayerGUIDByName(name) .." AND `key` = ".. key ..";")
  12.     end
  13. end
  14.  
  15. function getOfflinePlayerStorageValue(name, key)
  16.     local result, ret = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = '".. getPlayerGUIDByName(name) .."' AND `key` = ".. key ..";")
  17.     if result:getID() == -1 then
  18.         return nil
  19.     end
  20.     ret = result:getDataInt("value")
  21.     result:free()
  22.     return ret
  23. end
  24.  
  25. waittime = 24 -- Tempo de espera em horas para convidar alguém novamente
  26. storage = 4651
  27. level = 100 -- Level necessário para convidar alguém
  28. maxlevel = 50000 -- Level máximo para alguém virar partner e para ter bônus de EXP
  29. maxp = 5 -- Maximo de partners que alguém pode ter
  30. rate = 1.1 -- Rate do bônus
  31. invstatus = 9156
  32. invstor = 9157
  33. upd = 9160
  34.  
  35. ]]></config>
  36. ------------------------------------------------------------------------------------
  37. <talkaction words="!partner" event="buffer"><![CDATA[
  38. domodlib('partner_config')
  39.     local pid = getPlayerByNameWildcard(param)
  40.     local invname = getPlayerStorageValue(cid, 9155)
  41.     local stor = getPlayerStorageValue(cid, invstor)
  42.        
  43. if param ~= "aceitar" and param ~= "rejeitar" then
  44.     if not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(pid)) then
  45.         doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player "..param.." não encontrado.") return true
  46.     elseif pid == cid then
  47.         doPlayerSendCancel(cid, "Você não pode convidar a si mesmo.") return true
  48.     elseif getPlayerLevel(cid) < level then
  49.         doPlayerSendCancel(cid, "Você precisa ser level "..level.." para usar esse comando.") return true
  50.     elseif getPlayerLevel(pid) > maxlevel then
  51.         doPlayerSendCancel(cid, "O player "..param.." é level muito alto para ser seu partner.") return true
  52.     elseif stor >= maxp then
  53.         doPlayerSendCancel(cid, "Você já atingiu seu limite de partners.") return true
  54.     elseif getPlayerStorageValue(pid, 9158) >= 1 then
  55.         doPlayerSendCancel(cid, "Este player já foi partner de alguém.") return true
  56.     elseif exhaustion.check(cid, storage) then
  57.         doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde "..math.floor((exhaustion.get(cid, exhastor)/3600)).." horas para utilizar esse comando novamente.") return true
  58.     elseif getPlayerStorageValue(pid, invstatus) == 1 then
  59.         doPlayerSendCancel(cid, "Este player já possui um convite pendente.") return true
  60.     end
  61.        
  62.     exhaustion.set(cid, storage, waittime*3600)
  63.     doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Convite enviado à "..param..".")
  64.     doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE, ""..getCreatureName(cid).." está te convidando para ser seu partner. Use o comando !partner aceitar ou rejeitar.")
  65.     setPlayerStorageValue(pid, invstatus, 1)
  66.     setPlayerStorageValue(pid, 9155, getCreatureName(cid))
  67. return true
  68. else
  69.     if getPlayerStorageValue(cid, invstatus) < 1 then
  70.         doPlayerSendCancel(cid, "Você não possui convites pendentes.") return true
  71.     elseif param == "aceitar" then
  72.         if not isCreature(getPlayerByName(invname)) then
  73.             setOfflinePlayerStorageValue(invname, invstor, getOfflinePlayerStorageValue(invname, invstor) == -1 and 1 or getOfflinePlayerStorageValue(invname, invstor)+1)
  74.             setOfflinePlayerStorageValue(invname, upd, 1)
  75.         else
  76.             setPlayerStorageValue(getPlayerByName(invname), invstor, getPlayerStorageValue(getPlayerByName(invname), invstor) == -1 and 1 or getPlayerStorageValue(getPlayerByName(invname), invstor)+1)
  77.             doPlayerSendTextMessage(getPlayerByName(invname), MESSAGE_STATUS_CONSOLE_ORANGE, "Convite aceito. O player "..getCreatureName(cid).." agora é seu partner.")
  78.         end
  79.             setPlayerStorageValue(cid, 9158, 1)
  80.             doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você agora é partner de "..invname..". Você será deslogado em 5 segundos.")
  81.             addEvent(doRemoveCreature, 5000, cid)
  82.             setPlayerStorageValue(cid, invstatus, -1)
  83.     elseif param == "rejeitar" then
  84.         if not isCreature(getPlayerByName(invname)) then
  85.             doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você rejeitou o convite.")
  86.             setOfflinePlayerStorageValue(invname, upd, 2)
  87.             setPlayerStorageValue(cid, invstatus, -1)
  88.         else
  89.             doPlayerSendTextMessage(getPlayerByName(invname), MESSAGE_STATUS_CONSOLE_ORANGE, "Seu convite foi rejeitado.")
  90.             doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você rejeitou o convite de "..invname..".")
  91.             setPlayerStorageValue(cid, invstatus, -1)
  92.         end
  93.     end
  94. end
  95. return true
  96. ]]></talkaction>
  97. ------------------------------------------------------------------------------------
  98. <event type="login" name="PartnerSyst" event="script"><![CDATA[  
  99. domodlib('partner_config')
  100. function onLogin(cid)
  101.     registerCreatureEvent(cid, "PartnerSyst")
  102.    
  103.     if getPlayerStorageValue(cid, upd) >= 1 then
  104.         doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPlayerStorageValue(cid, upd) == 1 and "Seu convite de Partner foi aceito." or getPlayerStorageValue(cid, upd) == 2 and "Seu convite de partner foi rejeitado.")
  105.         setPlayerStorageValue(cid, upd, -1)
  106.     elseif getPlayerStorageValue(cid, 9158) == 1 then
  107.         doPlayerSetExperienceRate(cid, rate)
  108.         doPlayerPopupFYI(cid, "Você obteve "..(rate*10-1).."% de bônus de experiência até o level "..maxlevel..".")
  109.         setPlayerStorageValue(cid, 9158, 2)
  110.     elseif getPlayerLevel(cid) > maxlevel and getPlayerStorageValue(cid, 9158) == 2 then
  111.         doPlayerSetExperienceRate(cid, 1.0)
  112.         doPlayerPopupFYI(cid, "Seu bônus de partner acabou por você ter atingido o level "..maxlevel..".")
  113.         setPlayerStorageValue(cid, 9158, 3)
  114.     end
  115. return true
  116. end
  117. ]]></event>
  118. </mod>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement