Script Cave System ( Discovered + TP Modal Windows )

Alex

Miembro del equipo
Webdesigner
LV
58
 
Awards
38
Sistema de Cave como Diablo & Neverwinter.
Script para TFS 1.X


Nos iremos en data/global.lua
Agregaremos esta Línea:

dofile('data/cave_system.lua')

Iremos en data/ crearemos un archivo llamado cave_system.lua

Configuraremos cada Línea, a la derecha tenéis la explicación:
-- Config

caves =
{
[1] =
{
name = "Example 1", -- Name
storage = 4402, -- Storage
pos = {x = 128, y = 380, z = 8}, -- Position to be teleported
discoverPos = {x = 128, y = 380, z = 8} -- Position where you discover the cave (Must be UNIQUEID here too)
},
[2] =
{
name = "Example 2",
storage = 4403,
pos = {x = 246, y = 577, z = 12},
discoverPos = {x = 246, y = 577, z = 12}
},
[3] =
{
name = "Example 3",
storage = 4404,
pos = {x = 0, y = 0, z= 0},
discoverPos = {x = 0, y = 0, z= 0}
}
}

-- Functions

cavesFnc = {}

function cavesFnc.window(cid)
caveWindow = ModalWindow(4401, "Cave Teleporter", "Select destination:")
if(caveWindow:getId() == 4401)then
for i = 1, 2 do
if(i == 1)then
caveWindow:addButton(i, "Teleport")
caveWindow:setDefaultEnterButton(i)
else
caveWindow:addButton(i, "Cancel")
caveWindow:setDefaultEscapeButton(i)
end
end
for i = 1, #caves do
if(getPlayerStorageValue(cid, caves.storage) == 1)then
caveWindow:addChoice(i, caves.name)
end
end
end
caveWindow:sendToPlayer(cid)
return true
end


En data/creaturescripts/scripts crearemos un archivo llamado cave_window.lua

function onModalWindow(cid, modalWindowId, buttonId, choiceId)
local player = Player(cid)
if(modalWindowId ~= 4401)then
return false
end
if(buttonId == 1)then
if(getPlayerStorageValue(cid, caves[choiceId].storage) == 1)then
player:teleportTo(caves[choiceId].pos)
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have been teleported to the "..caves[choiceId].name..".")
doSendMagicEffect(caves[choiceId].pos, 11)
else
cavesFnc.window(cid)
end
elseif(buttonId == 255)then
cavesFnc.window(cid)
end
return true
end

En data/creaturescripts/scripts/login.lua agregaremos el evento:
player:registerEvent("cave_window")

En data/creaturescripts/creaturescripts.xml añadiremos:
<event type="modalwindow" name="cave_window" script="cave_window.lua"/>

En data/movements/scripts/ crearemos un archivo cave_teleporter.lua:
function onStepIn(cid, item, position, fromPosition)
local player = Player(cid)
if not(player)then
return true
end
for i = 1, #caves do
if(player:getStorageValue(caves.storage) == 1)then
return cavesFnc.window(cid)
end
end
return true
end


En data/movements/scripts/ crearemos un archivo llamado cave_places.lua:
function onStepIn(creature, item, position, fromPosition)
local player = creature:getPlayer()
if not(player)then
return true
end
for i = 1, #caves do
if(player:getStorageValue(caves.storage) < 1)then
if(caves.discoverPos.x == position.x)and(caves.discoverPos.y == position.y)and(caves.discoverPos.z == position.z)then
player:setStorageValue(caves.storage, 1)
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have discovered the "..caves.name..".")
end
end
end
return true
end


En data/movements/movements.xml añadiremos:
Como indicado el 17868 es la ID del Teleport, y debajo las Posiciones que descubrirán los players, ir incrementando en los números.
<movevent event="StepIn" itemid="17868" script="cave_teleporter.lua"/> <!-- ID Del teleport -->
<movevent event="StepIn" uniqueid="4401" script="cave_places.lua"/> <!-- Posiciones donde descubres -->
<movevent event="StepIn" uniqueid="4402" script="cave_places.lua"/>
<movevent event="StepIn" uniqueid="4403" script="cave_places.lua"/>

Creditos Fresh.
 

neowtwo

Miembro
LV
19
 
Awards
18
Sistema de Cave como Diablo & Neverwinter.
Script para TFS 1.X


Nos iremos en data/global.lua
Agregaremos esta Línea:



Iremos en data/ crearemos un archivo llamado cave_system.lua

Configuraremos cada Línea, a la derecha tenéis la explicación:


En data/creaturescripts/scripts crearemos un archivo llamado cave_window.lua



En data/creaturescripts/scripts/login.lua agregaremos el evento:


En data/creaturescripts/creaturescripts.xml añadiremos:


En data/movements/scripts/ crearemos un archivo cave_teleporter.lua:


En data/movements/scripts/ crearemos un archivo llamado cave_places.lua:


En data/movements/movements.xml añadiremos:
Como indicado el 17868 es la ID del Teleport, y debajo las Posiciones que descubrirán los players, ir incrementando en los números.


Creditos Fresh.
me has dado la vidaaaaaa!!!! GRACIASSSSSSSSS LLOORO de EMOCION!!!
 

Alex

Miembro del equipo
Webdesigner
LV
58
 
Awards
38
se puede hacer revscript? siento el spam
Hola, si se puede, ando de vacaciones ahora mismo y no puedo mirarlo.
Trata de entrar en tutoriales , hay uno que explica por una action como convertirlo, si entendiste, entonces es fácil convertir ya sea action, creaturescript, globalevent, etc
 

neowtwo

Miembro
LV
19
 
Awards
18
Hola, si se puede, ando de vacaciones ahora mismo y no puedo mirarlo.
Trata de entrar en tutoriales , hay uno que explica por una action como convertirlo, si entendiste, entonces es fácil convertir ya sea action, creaturescript, globalevent, etc
Gracias Alex, siento molestar, pasalo de pu t madre!! un saludo!
 

Alex

Miembro del equipo
Webdesigner
LV
58
 
Awards
38
Ya puedes hacerlo revscripts @Alex ?
Bueno similar no es pero yo he creado uno en Hellgrave en modo con Tiles ósea te pones en la tule y descubres la zona y te da tp pero al principio tienes 0 zonas y debes de descubrirlas. Se llama waypoints descarga Hellgrave y coge el script y’a Lo subiré en El foro.
 
Arriba