Ir para conteúdo
Close

Conheça já nossa seção de classificados, faça já gratuitamente o seu anuncio ou apenas procure por produtos relacionados ao OTServ! Acesse através do nosso menu ou clique aqui e confira já!

Gnius

Scripting Como adicionar um atributo de look nos players

Posts Recomendados

Galera estou precisando adicionar um atributo ao dar look no player, estou usando essa script de Married System e preciso que alguém saiba colocar pra aparecer o look de quem a pessoa for casada.

Segue abaixo os scripts:

npc.lua

Citar

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}


function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid)            end

function onCreatureDisappear(cid)            npcHandler:onCreatureDisappear(cid)            end

function onCreatureSay(cid, type, msg)            npcHandler:onCreatureSay(cid, type, msg)        end

function onThink()                    npcHandler:onThink()                    end


function creatureSayCallback(cid, type, msg)

    if(not npcHandler:isFocused(cid)) then

        return false

    end


        local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid


        if msgcontains(msg, 'marry') or msgcontains(msg, 'marriage') then

                if getPlayerStorageValue(cid,3066) == -1 then

                        selfSay('Would you like to get married?', cid)

                        talkState[talkUser] = 1

                elseif getPlayerStorageValue(cid,3066) == 1 then

                        local fid = getPlayerGUID(cid)

                        local marrystatus = getOwnMarryStatus(fid)

                        if marrystatus ~= 0 then

                                local newpartner = getPlayerNameByGUID(marrystatus)

                                selfSay('You already set a wedding date with {' .. newpartner .. '}, now I must talk to your partner. Do you want to {cancel} it?', cid)

                                talkState[talkUser] = 5

                        else

                                setPlayerStorageValue(cid,3066,-1)

                                selfSay('Would you like to get married?', cid)

                                talkState[talkUser] = 1

                        end

                elseif getPlayerStorageValue(cid,3066) == 2 then

                        selfSay('You are already married. If you want to {divorce}, just say it.', cid)

                        talkState[talkUser] = 0

                end


        elseif msgcontains(msg, 'divorce') then

                if getPlayerStorageValue(cid,3066) == 2 then

                        selfSay('Would you like to divorce of your partner?', cid)

                        talkState[talkUser] = 6

                else

                        selfSay('You are not married. If you want to get married, just say {marry}.', cid)

                        talkState[talkUser] = 0

                end

        end


        if talkState[talkUser] == 1 then

                if msgcontains(msg, 'yes') then

                        local fid = getPlayerGUID(cid)

                        local marrystatus = getMarryStatus(fid)

                        if marrystatus == FALSE then

                                selfSay('And what\'s the name of your future partner?', cid)

                                talkState[talkUser] = 2

                        else

                                local marryname = getPlayerNameByGUID(marrystatus)

                                selfSay('{' .. marryname .. '} has set a wedding date with you. Do you want to {proceed} or {cancel} the wedding?', cid)

                                talkState[talkUser] = 4

                        end

                end


        elseif talkState[talkUser] == 2 then

                local p = msg

                local player = getPlayerName(cid)

                local fid = getPlayerGUID(cid)

                local sid = getPlayerGUIDByName(p)

                if sid == 0 then

                        selfSay('A player with that name does not exists.', cid)

                        talkState[talkUser] = 0

                elseif sid == fid then

                        selfSay('Don\'t worry, you will always be married with yourself, kid.', cid)

                        talkState[talkUser] = 0

                else

                        local marrystatus = getMarryStatus(fid)

                        local pmarriage = getPlayerMarriage(sid)

                        local ownstatus = getOwnMarryStatus(cid)

                        if pmarriage == FALSE then

                                if marrystatus == FALSE then

                                        if ownstatus == FALSE then

                                                setPlayerStorageValue(cid,3066,1)

                                                addMarryStatus(fid,sid)

                                                selfSay('You\'ve just set a wedding date with {' .. p .. '}.', cid)

                                                talkState[talkUser] = 0

                                        else

                                                local partnername = getPlayerNameByGUID(ownstatus)

                                                selfSay('{' .. p .. '} has already set a wedding date with {' .. partnername .. '}.', cid)

                                                talkState[talkUser] = 0

                                        end

                                else

                                        local marryname = getPlayerNameByGUID(marrystatus)

                                        selfSay('{' .. marryname .. '} has set a wedding date with you. Do you want to {proceed} or {cancel} the wedding?', cid)

                                        talkState[talkUser] = 4

                                end

                        else

                                local pname = getPlayerNameByGUID(pmarriage)

                                selfSay('Sorry, but {' .. p .. '} is already married to {' .. pname .. '}.', cid)

                                talkState[talkUser] = 0

                        end

                end


        elseif talkState[talkUser] == 4 then

                if msgcontains(msg, 'proceed') then

                        local fid = getPlayerGUID(cid)

                        local sid = getMarryStatus(fid)

                        local marryname = getPlayerNameByGUID(sid)

                        local pid = getPlayerByNameWildcard(marryname)

                                local tmf = getCreaturePosition(cid)

                                local   tms = getCreaturePosition(pid)

                                local text = {'I love you!','My love!','Baby dear!'}

                                local chance1 = math.random(1,table.getn(text))

                                local chance2 = math.random(1,table.getn(text))

                                local dateFormat = "%A %d"..getMonthDayEnding(os.date("%d")).." %B %Y"

                                local ring = doPlayerAddItem(cid,2121,1)

                                local ring2 = doPlayerAddItem(pid,2121,1)


                        if isOnline(fid) == TRUE and isOnline(sid) == TRUE then

                        if getDistanceBetween(tmf, tms) <= 3 then

                                        setPlayerStorageValue(cid,3066,2)

                                        setPlayerStorageValue(pid,3066,2)

                                        doCancelMarryStatus(fid)

                                        doCancelMarryStatus(sid)

                                        setPlayerPartner(cid,sid)

                                        setPlayerPartner(pid,fid)

                                        doItemSetAttribute(ring, "description", "" .. getCreatureName(cid) .. " & " .. getCreatureName(pid) .. " forever - married on " ..os.date(dateFormat).. ".")

                                        doItemSetAttribute(ring2, "description", "" .. getCreatureName(cid) .. " & " .. getCreatureName(pid) .. " forever - married on " ..os.date(dateFormat).. ".")

                                        doCreatureSay(cid, text[chance1], TALKTYPE_ORANGE_1)

                                        doCreatureSay(pid, text[chance2], TALKTYPE_ORANGE_1)

                                        doSendMagicEffect(tmf, 35)

                                        doSendMagicEffect(tms, 35)

                                        selfSay('Congratulations! Now you may kiss your partner! Everytime you wanna make this effect, just say {love}. You must be close to your partner.', cid)

                                        talkState[talkUser] = 0


                                else

                                        selfSay('Your partner must be close to you so you can marry!', cid)

                                        talkState[talkUser] = 0

                                end

                        else

                                selfSay('You and your new partner must be online at the same time.', cid)

                                talkState[talkUser] = 0

                        end


                elseif msgcontains(msg, 'cancel') then

                        local fid = getPlayerGUID(cid)

                        local sid = getMarryStatus(fid)

                        local marryname = getPlayerNameByGUID(sid)

                        local pid = getPlayerByNameWildcard(marryname)

                        if isOnline(sid) == TRUE then

                                setPlayerStorageValue(pid,3066,-1)

                        end

                        doCancelMarryStatus(sid)

                        selfSay('You just canceled your wedding date with {' .. marryname .. '}.', cid)

                        talkState[talkUser] = 0

                end


        elseif talkState[talkUser] == 5 then

                if msgcontains(msg, 'cancel') or msgcontains(msg, 'yes') then

                        local fid = getPlayerGUID(cid)

                        setPlayerStorageValue(cid,3066,-1)

                        doCancelMarryStatus(fid)

                        talkState[talkUser] = 0

                end


        elseif talkState[talkUser] == 6 then

                if msgcontains(msg, 'yes') then

                        local fid = getPlayerGUID(cid)

                        local sid = getPlayerPartner(cid)

                        local marryname = getPlayerNameByGUID(sid)

                        local pid = getPlayerByNameWildcard(marryname)

                        if (isOnline(fid) == TRUE and isOnline(sid) == TRUE) then

                                setPlayerStorageValue(cid,3066,-1)

                                setPlayerStorageValue(pid,3066,-1)

                                setPlayerPartner(cid,0)

                                setPlayerPartner(pid,0)

                                selfSay('You\'ve just divorced of your old partner.', cid)

                                talkState[talkUser] = 0

                        else

                                selfSay('You and your new partner must be online at the same time.', cid)

                                talkState[talkUser] = 0

                        end

                end


        end

        return TRUE

end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

lib/050-functions

Citar

function getPlayerMarriage(player)

		local rows = db.getResult("SELECT `marriage` FROM `players` WHERE `id` = " .. player .. ";")

		local marry = rows:getDataInt("marriage")

		if marry ~= 0 then

				return marry

		else

				return FALSE

		end

end


function addMarryStatus(player,partner)

		db.executeQuery("UPDATE `players` SET `marrystatus` = " .. partner .. " WHERE `id` = " .. player .. ";")

		return TRUE

end


function doCancelMarryStatus(player)

		db.executeQuery("UPDATE `players` SET `marrystatus` = 0 WHERE `id` = " .. player .. ";")

		return TRUE

end


function getMarryStatus(player)

		local stat = db.getResult("SELECT `id` FROM `players` WHERE `marrystatus` = " .. player .. ";")

		if(stat:getID() == -1) then

				return FALSE

		else

				local info = stat:getDataInt("id")

				return info

		end

end


function getOwnMarryStatus(player)

		local stat = db.getResult("SELECT `marrystatus` FROM `players` WHERE `id` = " .. player .. ";")

		if(stat:getID() == -1) then

				return FALSE

		else

				local info = stat:getDataInt("marrystatus")

				return info

		end

end


function isOnline(player)

		local rows = db.getResult("SELECT `online` FROM `players` WHERE `id` = " .. player .. ";")

		local on = rows:getDataInt("online")

		if on ~= 0 then

				return TRUE

		else

				return FALSE

		end

end

 


Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gnius

creaturescripts.xml

<event type="look" name="MarryLook" event="script" value="marrylook.lua"/>

creaturescripts/scripts/marrylook.lua

function onLook(cid, thing, position, lookDistance)

	if isPlayer(thing.uid) and (getPlayerMarriage(thing) ~= 0) then
		doPlayerSetSpecialDescription(thing.uid,'.\n'..(getPlayerSex(thing.uid) == 0 and 'She' or 'He')..' is married to '..getPlayerNameByGUID(getOwnMarryStatus(cid)))
	end 
                   
	return true
end

creaturescripts/scripts/login.lua (no final)

registerCreatureEvent(cid, "MarryLook")

 



asdukeeh.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, DukeeH disse:

@Gnius

creaturescripts.xml


<event type="look" name="MarryLook" event="script" value="marrylook.lua"/>

creaturescripts/scripts/marrylook.lua


function onLook(cid, thing, position, lookDistance)

	if isPlayer(thing.uid) and (getPlayerMarriage(thing) ~= 0) then
		doPlayerSetSpecialDescription(thing.uid,'.\n'..(getPlayerSex(thing.uid) == 0 and 'She' or 'He')..' is married to '..getPlayerNameByGUID(getOwnMarryStatus(cid)))
	end 
                   
	return true
end

creaturescripts/scripts/login.lua (no final)


registerCreatureEvent(cid, "MarryLook")

 

 

[07/11/2018 18:07:43] [Error - CreatureScript Interface] 
[07/11/2018 18:07:43] datapack/creaturescripts/scripts/marrylook.lua:onLook
[07/11/2018 18:07:44] Description: 
[07/11/2018 18:07:44] datapack/lib/050-function.lua:695: attempt to concatenate local 'player' (a table value)
[07/11/2018 18:07:44] stack traceback:
[07/11/2018 18:07:44]     datapack/lib/050-function.lua:695: in function 'getPlayerMarriage'
[07/11/2018 18:07:44]     datapack/creaturescripts/scripts/marrylook.lua:3: in function <datapack/creaturescripts/scripts/marrylook.lua:1>


Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode fechar o tópico, ja consegui resolver.


Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria bom você explicar de uma forma resumida como você conseguiu resolver, assim futuramente alguém que tenha o mesmo interesse, possa está sendo ajudado.



Feliz daquele que ensina o que sabe, e aprende o que ensina.

 

               

star-wars-animated-gif-23.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites
44 minutos atrás, lordzetros disse:

Seria bom você explicar de uma forma resumida como você conseguiu resolver, assim futuramente alguém que tenha o mesmo interesse, possa está sendo ajudado.

 

Coloquei pra verficiar se o player tem x storage, se ele tiver storage ele ativa esse look, ai coloquei a função pra mostrar o look no some functions

if getPlayerStorageValue(thing, 150420) > 0 then
   table.insert(str, "\nCasado com ["..getPlayerNameByGUID(k).."].")
end

 


Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×