Script Npc Error

Sasketoon

Miembro
LV
12
 
Awards
12
Hola estoy tratando de hacer un Npc que su funcion sea el de dar teleportear a un jugador que traiga cierto item.

Este item que el revisa que traigan los jugadores el mismo lo otorga al intercambiar 4 items por ese item.

Una vez que ya tiene ese item para poder acceder a la sala donde los envia ya no les pedira esos 4 items solo revisara que siempre que quieran ir a la sala tengan ese item.

Codigo:
local internalNpcName = "Torkada"
local npcType = Game.createNpcType(Torkada_hall)
local npcConfig = {}

npcConfig.name = internalNpcName
npcConfig.description = internalNpcName

npcConfig.health = 100
npcConfig.maxHealth = npcConfig.health
npcConfig.walkInterval = 2000
npcConfig.walkRadius = 2

npcConfig.outfit = {
lookType = 1243,
lookHead = 95,
lookBody = 113,
lookLegs = 39,
lookFeet = 115
}

npcConfig.flags = {
floorchange = false
}

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)

npcType.onThink = function(npc, interval)
npcHandler:eek:nThink(npc, interval)
end

npcType.onAppear = function(npc, creature)
npcHandler:eek:nAppear(npc, creature)
end

npcType.onDisappear = function(npc, creature)
npcHandler:eek:nDisappear(npc, creature)
end

npcType.onMove = function(npc, creature, fromPosition, toPosition)
npcHandler:eek:nMove(npc, creature, fromPosition, toPosition)
end

npcType.onSay = function(npc, creature, type, message)
npcHandler:eek:nSay(npc, creature, type, message)
end

npcType.onCloseChannel = function(npc, creature)
npcHandler:eek:nCloseChannel(npc, creature)
end

keywordHandler:addKeyword({'hi'}, StdModule.say, {npcHandler = npcHandler, text = "Hello mortal, do you have what it takes to prove your entry into the abode of my blood lord?"})

local ItemID = {43501,43502,43503,43504}
local pergamin = {12540}

local function creatureSayCallback(npc, creature, type, message)

local player = Player(creature)

if MsgContains(message, 'yes') then
for i=1, #ItemID do
if player:getItemCount(ItemID) >= 1 then
player:removeItem(ItemID, 1)
player:addItem(12540, 1)
npcHandler:say("Very well take this as a reward for defeating the main servants.!", npc, creature)
break
else
for i=1, #pergamin do
if player:getItemCount(pergamin) >= 1 then
local travelNode = keywordHandler:addKeyword({'Bakragore'}, StdModule.say, {npcHandler = npcHandler, text = 'Are you ready to face my lord {Bakragore}?'})
travelNode:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = false, level = 0, cost = 0, destination = Position(34141, 32049, 13) })
travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, reset = true, text = 'When you stop shaking, come back to me.'})
break
if MsgContains(message, 'no') then
npcHandler:say("Get away from my mortal presence!", npc, creature)
break
end
end
end
return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, true)

-- npcType registering the npcConfig table
npcType:register(npcConfig)


Gracias.
 
Solución
Hola estoy tratando de hacer un Npc que su funcion sea el de dar teleportear a un jugador que traiga cierto item.

Este item que el revisa que traigan los jugadores el mismo lo otorga al intercambiar 4 items por ese item.

Una vez que ya tiene ese item para poder acceder a la sala donde los envia ya no les pedira esos 4 items solo revisara que siempre que quieran ir a la sala tengan ese item.

Codigo:


Gracias.
Hola

Podrías usar un simple script de un capitán de barco , en la parte donde da teleport , antes, agregas la parte if player:getItemCount(…) , cuando hace el tp, en vez de seleccionar de la lista una ciudad agregas las coordenadas, y debería solo dar tp si tienes el ítem, al ser un script existente...

Alex

Miembro del equipo
Webdesigner
LV
58
 
Awards
38
Hola estoy tratando de hacer un Npc que su funcion sea el de dar teleportear a un jugador que traiga cierto item.

Este item que el revisa que traigan los jugadores el mismo lo otorga al intercambiar 4 items por ese item.

Una vez que ya tiene ese item para poder acceder a la sala donde los envia ya no les pedira esos 4 items solo revisara que siempre que quieran ir a la sala tengan ese item.

Codigo:


Gracias.
Hola

Podrías usar un simple script de un capitán de barco , en la parte donde da teleport , antes, agregas la parte if player:getItemCount(…) , cuando hace el tp, en vez de seleccionar de la lista una ciudad agregas las coordenadas, y debería solo dar tp si tienes el ítem, al ser un script existente no debería de dar error.
Después para que tenga un shop si quieres para el trade fíjate a un simple npc que hace trade debe de tener un module shop que hace que al decir trade abre la ventana , agrégalo a tu script y listo.
Ando en el móvil , pero si no consigues dime qué versión y/o servidor utilizas.
 
Arriba