Reklama
Pokazuje wyniki od 1 do 2 z 2

Temat: [8.6] Wedding.lua

  1. #1
    Avatar Wujo
    Data rejestracji
    2009
    Posty
    514
    Siła reputacji
    16

    Domyślny [8.6] Wedding.lua

    Chodzi o to, że npc od ślubów jak powie has set a wedding date with you. Do you want to {proceed} or {cancel} the wedding to czego tam nie wpiszę to on daje wedding ringa ;d
    A raczej po wpisaniu Proceed npc powienien dać Engraved Wedding Ring, a pojawia się normalnie wedding ring i na tym ślub się kończy.
    A po rozwodzie ring powinien zniknąć ;d

    Kod :
     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)
                                            doPlayerAddOutfitId(cid,34,0)
                                            doPlayerAddOutfitId(pid,34,0)
                                            doSetItemSpecialDescription(ring, "" .. getCreatureName(cid) .. " & " .. getCreatureName(pid) .. " forever - married on " ..os.date(dateFormat).. ".")
                                            doSetItemSpecialDescription(ring2, "" .. 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)
                                    doPlayerAddOutfitId(cid,22,-1)
                                    doPlayerAddOutfitId(pid,22,-1)
    				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())
    Ostatnio zmieniony przez Wujo : 22-02-2011, 22:03

  2. #2
    Avatar Wujo
    Data rejestracji
    2009
    Posty
    514
    Siła reputacji
    16

    Domyślny

    @edit

    Już działa, ale

    14:23 You see a engraved wedding ring.
    It weighs 0.40 oz.

    I nie ma tego, że ktoś i ktoś coś tam forever ;dd


    Kod :
    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 
                if getPlayerItemCount(cid, 2121) 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!'} 
                        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,10502,1) 
                                        local ring2 = doPlayerAddItem(pid,10502,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) 
                                doPlayerRemoveItem(cid,10503,1) -- destroy wedding outfit box male 
                                doPlayerRemoveItem(pid,10503,1) -- destroy wedding outfit box female 
                                doPlayerRemoveItem(cid,2121,1) 
                                doPlayerRemoveItem(pid,2121,1) 
                                                doPlayerAddOutfitId(cid,23,0) 
                                                doPlayerAddOutfitId(pid,23,0) 
                                                getItemSpecialDescription(ring, "" .. getCreatureName(cid) .. " & " .. getCreatureName(pid) .. " forever - married on " ..os.date(dateFormat).. ".") 
                                                getItemSpecialDescription(ring2, "" .. 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! 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 
                else 
                    selfSay('You need wedding ring to get married.', 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) 
                                    doPlayerAddOutfitId(cid,34,-1) 
                                    doPlayerAddOutfitId(pid,34,-1) 
                    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())
    Ostatnio zmieniony przez Wujo : 26-02-2011, 14:28

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. [LUA] Krótsze odpowiedniki w lua - autorstwa Grimkka
    Przez Grimekk w dziale Artykuły developerskie
    Odpowiedzi: 2
    Ostatni post: 13-01-2014, 18:36
  2. Wedding outfit box
    Przez Mellverena w dziale Tibia
    Odpowiedzi: 3
    Ostatni post: 16-07-2011, 12:31
  3. [Lua] Potiony od A do Z*
    Przez Bilip w dziale Artykuły developerskie
    Odpowiedzi: 5
    Ostatni post: 13-05-2011, 01:02
  4. [Lua] Od zera do skryptera, czyli LUA: Pętle i tablice*
    Przez Grim90 w dziale Artykuły developerskie
    Odpowiedzi: 9
    Ostatni post: 21-08-2010, 02:47
  5. [Lua] Od zera do skryptera, czyli LUA: PODSTAWY i Actions*
    Przez Grim90 w dziale Artykuły developerskie
    Odpowiedzi: 7
    Ostatni post: 02-08-2009, 01:05

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •