BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

Ncp que cambien de town id a cambio de dinero

Ncp que cambien de town id a cambio de dinero

#1 Ncp que cambien de town id a cambio de dinero el Dom Jul 03, 2016 4:48 pm

REYZER


Nuevo
Ya busque en todo el foro y no encuentro un ncp con esa función

http://pokemon-element.jimdo.com/

Belerofonte


Administrador
Server\Data\Npc\... Resident.xml
Código:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Resident" script="data/npc/scripts/Resident.lua" walkinterval="2000" floorchange="0">
    <health now="100" max="100"/>
    <look type="131" head="7" body="87" legs="7" feet="87" addons="2"/>
</npc>
Ahí le editas el nombre, aspecto, etc...; que gustes.



Server\Data\Npc\Scripts\... Resident.lua
Código:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
    NpcSystem.parseParameters(npcHandler)

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

local Config = {
 -- [Town Id] = Precio de compra contado en Gold Coins,
    [3] = 100,
    [4] = 10,
    [5] = 15,
}

local function titleCase(first, rest)
    return first:upper()..rest:lower()
end

local function getMoneyName(cost)
    local name = {}
    if cost > 1 then
        name = getItemPluralNameById(2148)
     else
        name = getItemNameById(2148)
    end
    return cost .. " " .. string.gsub(name, "(%a)([%w_']*)", titleCase)
end

npcHandler:setMessage(MESSAGE_GREET, "I can award you the residence in the city you choose in exchange for a small fee. Let me know if you want to consult {list} with prices of its respective towns.")
function creatureSayCallback(cid, type, msg)
    local list = ''
    local msg = msg:lower()

    if not npcHandler:isFocused(cid) then
        return false
    end

    if msgcontains(msg, 'list') then
        npcHandler:say("Take a look!", cid)
        for Town, Cost in pairs(Config) do
            list = list .. string.gsub(getTownName(Town), "(%a)([%w_']*)", titleCase) .. " x " .. getMoneyName(Cost) .. ".\n"
        end
        doPlayerPopupFYI(cid, list)
    end

    for Town, Cost in pairs(Config) do
        if msgcontains(msg, string.lower(getTownName(Town))) then
            if getPlayerTown(cid) ~= Town then
                if getPlayerMoney(cid) < Cost then
                    npcHandler:say(getPlayerMoney(cid) > 0 and "It seems you need {" .. getMoneyName(Cost - getPlayerMoney(cid)) .."}." or "You haven't {" .. getMoneyName(Cost) .. "}.", cid)
                 else
                    doPlayerSetTown(cid, Town)
                    doPlayerRemoveMoney(cid, Cost)
                    npcHandler:say("Deal done! Now you residences in {" .. string.gsub(msg, "(%a)([%w_']*)", titleCase) .."} in exchange of {" .. getMoneyName(Cost) .. "}.", cid)
                end
             else
                npcHandler:say("Already you're residing in " .. getTownName(Town) .. ".", cid)
            end
            break
        end
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())



Zonas a editar:
En la línea 10:

local Config = {
-- [Town Id] = Precio de compra contado en Gold Coins,
   [3] = 100,
   [4] = 10,
   [5] = 15,
}
En la línea 31:

npcHandler:setMessage(MESSAGE_GREET, "I can award you the residence in the city you choose in exchange for a small fee. Let me know if you want to consult {list} with prices of its respective towns.")
"Mensaje" que dirá tras el saludo del jugador.
En la línea 40:

   if msgcontains(msg, 'list') then
'Palabra clave' que tendrá que decir el jugador para que el Npc le muestre la lista de Towns con sus respectivos precios.



Aunque no especifiques el nombre de las ciudades, éstas saldrán automáticamente en los mensajes.
Así como, en caso de que no lleve consigo nada de dinero: Le saldrá la cantidad de dinero total que necesita para comprar.

O en el caso de que tenga dinero pero no todo: Le saldrá la cantidad de dinero diferencial entre la cantidad total y lo que ya tiene, dando como resultado las monedas restantes que necesita para comprarlo. Solo son simples detallitos que me gusta poner para hacer la vida un poco más fácil



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

REYZER


Nuevo
Muchas gracias bro

http://pokemon-element.jimdo.com/

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.

 

¿Quién está en línea?

En total hay 0 usuarios en línea: 0 Registrados, 0 Ocultos y 0 Invitado

Usuarios navegando en este foro: Ninguno

Forum Statistics

Nuestros miembros han públicado un total de posts en temas.
Actualmente hay miembros registrados.
Démosle la bienvenida al miembro más reciente,
La mayor cantidad de usuarios en línea ha sido de .