BO

[Sistema] Guild Points

Por boors, 13 de out. de 2011 em Mods, funções e outros

otserv
tibia
script
5.0 (1)
12
11.1k
boorsB
13 de outubro de 2011 às 11:47

Guild Points v1.0

by Boors- exclusivo xtibia

 

Descrição

 

É um sistema muito simples que possibilita adicionar pontos para as guilds. Através de talkactions é possível exibir a pontuação da sua guild e o rank com as guilds de maior pontuação.

 

O Sistema

 

- Execute o seguinte comando na sua database

 

ALTER TABLE  `guilds` ADD  `guild_points` INTEGER NOT NULL DEFAULT 0

 

- Adicione as seguintes funções no arquivo lib/050-function.lua

 

function getGuildPoints(cid)
   local res = db.getResult('select `guild_points` from guilds where id = \''..getPlayerGuildId(cid)..'\'')
   if(res:getID() == -1) then
      return false
   end
   local ret = res:getDataInt("guild_points")
   res:free()
   return tonumber(ret)
end


function addGuildPoints(cid, quant)
   return db.executeQuery("UPDATE `guilds` SET `guild_points` = '".. getGuildPoints(cid) + quant .."' WHERE `id` ='"..getPlayerGuildId(cid).."'")
end

function removeGuildPoints(cid, quant)
   return db.executeQuery("UPDATE `guilds` SET `guild_points` = '".. getGuildPoints(cid) - quant .."' WHERE `id` ='"..getPlayerGuildId(cid).."'")
end
end

 

- [ TALKACTION ] myguildpoints.lua

 

function onSay(cid, words, param, channel)
   local guildPoints = getGuildPoints(cid)
local msg = "Your guild have ".. guildPoints .."  points."
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg)
   return true
end

 

- [ TALKACTION ] guildpointsrank.lua

 

 function onSay(cid, words, param, channel)
local guilds = db.getResult('SELECT name, guild_points FROM guilds ORDER BY guild_points DESC LIMIT 5;')
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "--- Guild Points Rank")
repeat
local name = guilds:getDataString('name')
local points = guilds:getDataInt('guild_points')
local top = " "..name.." -> "..points.." points."
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, top)
until not tmp:next()
return true
end

 

 

- Adicionem no talkactions.xml

 

<!-- House points -->
       <talkaction words="!myguildpoints" event="script" value="myguildpoints.lua"/>
<talkaction words="!guildpointsrank" event="script" value="guildpointsrank.lua"/>

 

Exemplo de uso

 

Uma quest em que a guild do player receba pontos.

 

function onUse(cid, item)
local  questPoints = 5
local  msg = "Your guild received "..questPoints..", points.\n "
queststatus = getPlayerStorageValue(cid,9999) 

if item.actionid == 9999 and queststatus == -1 then
 addGuildPoints (cid, questPoints)
 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg)
        setPlayerStorageValue(cid,9999,1)
else 
        doPlayerSendCancel(cid,"You've already done this quest.")
end
return TRUE
end

 

Dúvidas ou Sugestões?

 

Postem no tópico, enviem PM ou pelo email boors@live.com

 

Att.,

Boors

Editado Outubro 13 por Boors

13 de outubro de 2011 às 12:12

function getGuildPoints(cid)
   local res = db.getResult('select `guild_points` from guilds where id = \''..getPlayerGuildId(cid)..'\'')
   if(res:getID() == -1) then
      return false
   end
   local ret = res:getDataInt("guild_points")
   res:free()
   return tonumber(ret)
ends

 

é end e coloque as tags do talkactions.xml se não tem gente que não vai conseguir usar o sistema

 

rep+

boorsB
13 de outubro de 2011 às 17:30

function getGuildPoints(cid)
   local res = db.getResult('select `guild_points` from guilds where id = \''..getPlayerGuildId(cid)..'\'')
   if(res:getID() == -1) then
      return false
   end
   local ret = res:getDataInt("guild_points")
   res:free()
   return tonumber(ret)
ends

 

é end e coloque as tags do talkactions.xml se não tem gente que não vai conseguir usar o sistema

 

rep+

 

Obrigado por corrigir, pura falta de atenção!

Vou adicionar as tags do talkaction também.

 

Alguma sugestão de como melhorar o sistema? Ou alguma ideia de um novo sistema para fazer?

LolkskyL
17 de outubro de 2011 às 18:07

Como funciona? cada kill que a guild gera, ganha um ponto? ;s

2 semanas depois...
boorsB
26 de outubro de 2011 às 20:40

Voce pode adicionar o que desejar. Um exemplo é por quests, mas pode ser implementado por kills, level....

gustavoMtekG
27 de outubro de 2011 às 23:31

voce podia posta como colocar para kda player que a guild mata é adc um ponto

jamersonandresJ
01 de novembro de 2011 às 06:34

como coloco na database?

4 semanas depois...
LanguageL
23 de novembro de 2011 às 16:23

Muito bom amigo, gostei bastante!

6 meses depois...
04 de maio de 2012 às 17:35

Voce pode adicionar o que desejar. Um exemplo é por quests, mas pode ser implementado por kills, level....

Como colocar por kills ??
4 meses depois...
lordraiL
28 de setembro de 2012 às 21:37

Desculpe reviver o tópico mas como eu boto para quando 1 guild matar 1 cara que seja de outra ele ganhar 1 point???

SkymagnumS
28 de setembro de 2012 às 21:43

Creio que não seria necessário tonumber na função getGuildPoints(cid) porquê getDataInt já retorna números.

 

Belo sistema parabéns REP+.

Editado Setembro 28 por Skymagnum

lordraiL
02 de outubro de 2012 às 00:52

como eu boto para quando 1 guild matar 1 cara que seja de outra ele ganhar 1 point???