Demonbholder
-
Total de itens
1551 -
Registro em
-
Última visita
-
Dias Ganhos
24
Posts postados por Demonbholder
-
-
alguém faz o favor de tirar o meu lua messenger da lixeira? quero ler uma parte do código...
-
ta, mas e as nudes dela?
-
"cancer do anyur" AHEOHEOAHEOAHAEOHAO
-
Nunca tinha visto essa função doTileQueryAdd... Onde você baixou esse servidor? Tem o link dele?
-
Eu também não sei muito, eu entendo a linguagem, mas não sei como funciona a integração com as versões dos clients e tal. Meu chute é que cada versão do tfs seja para uma versão determinada do tibia, até porque a cada versão são adicionadas novas funcionalidades no jogo, logo as sources tem que ser alteradas. Outra coisa, se você mudar as sources, vários códigos em lua podem apresentar problemas, já que algumas funções mudam de uma versão para outra.
Quanto ao outro problema, você cria uma ladder com o /i e ela funciona mas uma ladder com esse mesmo id que foi colocada pelo map editor não funciona? Se for isso, tem que ver o que o /i ta fazendo para fazer a ladder funcionar.
-
Consegue fazer o upload das sources ou mandar o link de onde você baixou?
ps: tá conseguindo compilar certinho?
-
Acho que o RigBy respondeu quase tudo, só um adendo: a função do utevo res é feita nas sources, em spells.cpp.
Se você está usando tfs 1.0 e tiver curiosidade, vá em spells.cpp e procure por InstantSpell::SummonMonster.
-
Coloca o mod no pastebin.com e manda o link. Ou manda o link de onde você pegou.
-
Olá,
Muito obrigado pela atenção. Você vê a possibilidade dessa alteração nas sources? Eu não sei muito, mas acredito que usando a mesma forma que as talkactions utilizam para obter o parâmetro WORDS funcione...
Obrigado, abraços.
Sim, acho que é mais ou menos por ai. Eu não estou muito acostumado a mexer nas sources, mas se quiser podemos tentar.
Obs: antes de começar, faça um backup de tudo!
Você está usando tfs 1.0? Se sim, vai em spells.cpp, procura por:
InstantSpell::executeCastSpell
Nessa função, procura por:
LuaScriptInterface::pushVariant(L, var);
Abaixo dessa linha, coloque:
LuaScriptInterface::pushString(L, getWords());
E por último, troque isto:
return m_scriptInterface->callFunction(2);
Por isto:
return m_scriptInterface->callFunction(3);
Se a compilação der certo, tenta usar uma spell assim:
function onCastSpell(cid, var, words)
Senão, posta o erro. Não tenho um ambiente de testes aqui, por isso não pude testar.
-
Posta a parte da função sendMagicEffect e o const.h antes da sua modificação.
-
A table é ip_bans não bans. Tentou assim?
-
Isso era pra estar na seção de movements, não de tutoriais.
É um código específico que você ensinou a configurar...
-
Troca isto:
if getPlayerStorageValue(tid, exaust.storage) < os.time() thenpor:if getPlayerStorageValue(cid, exaust.storage) < os.time() then -
Só o dono do summon pode atacar? Mais nenhum outro player nem monstro?
-
Eu não pude testar, pois não tenho nenhum ambiente de teste aqui, mas você chegou a testar mais de uma vez com o mesmo char? É que o script só vai começar a funcionar a partir da segunda vez que você deslogar.
Se mesmo assim não funcionar, ocorreu algum erro no console (executável)?
-
Eu lembro que há um tempo atrás, em um concurso, conseguimos colocar um pen drive como prêmio, bastante gente participou.
Mas se não tem patrocínio, então não tem muito o que fazer... de repente uma camiseta com uma estampa do xtibia (sempre pensava nessa ideia), mas ainda sim é meio caro e não sei se o pessoal gostaria.
Eu gostaria de participar do concurso
-
@Zet
Não sei se era isso, mas da uma olhada:
local config = { segundos = 5, lerIP = true, storage = 201507080001 } function onLogout(cid) local timeNow = os.time() local totalTime = getPlayerLastLoginSaved(cid) + config.segundos if totalTime >= timeNow then if not config.lerIP or getPlayerStorageValue(cid, config.storage) == getPlayerIp(cid) then doPlayerSendTextMessage(cid, 19, "[Pokémon X Timer] Aguarde ".. totalTime - timeNow .." segundo(s) Para Poder Deslogar!.") return false end end setPlayerStorageValue(cid, config.storage, getPlayerIp(cid)) return true end
@Bruno
Acho que o seu sleep trava o servidor inteiro. -
Oi, acredito que não tenha como sem alterar as sources, pois os únicos parâmetros que são passados pelo onCastSpell são o id do player e o var, sendo que o var (em C++) é uma struct:
struct LuaVariant {
LuaVariant() {
type = VARIANT_NONE;
number = 0;
}
LuaVariantType_t type;
std::string text;
Position pos;
uint32_t number;
};Basicamente serve pra saber o target da spell, podendo ser por nome, posição, id do player...
Dei uma pesquisada aqui nas sources e não achei nada para resolver o teu problema por lua, mas talvez alguém saiba de algum jeito.
-
Precisaria fazer uma alteração no código do evento para incrementar um storage global. Consegue postar ele? Ou pelo menos uma parte dele.
-
Você tem as sources? Se sim, pode encontrar todas funções.
Exemplo: https://github.com/otland/forgottenserver/blob/master/src/luascript.cpp
https://github.com/otland/forgottenserver/blob/master/src/luascript.h
Lembrando que ai não estão as funções feitas em lua, apenas em C++. As funções feitas em lua devem estar na pasta data/lib/.
Exemplo: https://github.com/otland/forgottenserver/blob/master/data/lib/compat/compat.lua
-
LeoSR, top > ad > jung > mid = sup
gold 2
ME ACEITA, VODKA FDP
-
Tem certeza que não ta fazendo nada errado? Da outra vez você disse que o código não tava funcionando e tava...
-
function doClearMissionArea(fromPos, toPos)
for x = fromPos.x, toPos.x do
for y = fromPos.y, toPos.y do
for z = fromPos.z, toPos.z do
local cid = getTopCreature({x = x, y = y, z = z}).uid
if cid > 0 then
if isPlayer(cid) then
if getPlayerStorageValue(cid, 1050) == 19 then
setPlayerStorageValue(cid, 15335, 2)
setPlayerStorageValue(cid, 1050, 20)
doTeleportThing(cid, {x = 33353, y = 31410, z = 8})
doSendMagicEffect({x = 33353, y = 31410, z = 8}, CONST_ME_TELEPORT)
end
else
doRemoveCreature(cid)
end
end
end
end
end
return true
end
-
function onStepIn(cid, item, position, lastPosition)
start = 0
if item.actionid == 8014 then
for i = 1, 4 do
local creature = getTopCreature(pos).uid
if creature > 0 then
if isPlayer(creature) then
if getGlobalStorageValue(8014) < 1 then
if getPlayerStorageValue(creature, 1050) == 19 then
start = start + 1
if creature == cid then
doCreatureSay(cid, "A clicking sound tatters the silence.", TALKTYPE_ORANGE_1)
end
end
end
end
end
end
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.
Erro zombie event
em Scripts
Postado · Editado por Demonbholder
local config = { semana_mes = "semana",
days = {1,2,3,4,5,6,7}, -- Dia das semanas que irá acontecer o evento
goblet = 10127, -- Troféu que vai pro vencedor do evento
rewards = {6132, 2152, 2160}, -- Recompensas.
moneyReward = {2160, 300, 1},-- {moneyId, quantidade, usar}1 pra usar 0 pra não usar}
points = 1,
playerCount = 2001, -- Storage dos players que entram e sai do evento
zombieCount = 2002, -- Storage do zombie do event
teleportActionId = 2008, -- Action ID do teleport
teleportPosition = {x = 165, y = 48, z = 7, stackpos = 1}, -- Onde o teleport é criado
teleportToPosition = {x = 549, y = 131, z = 7}, -- Pra onde será teleportado
teleportId = 1387, -- ID do teleporte
timeToStartEvent = 1, -- Minutos que o portal irá ficar aberto até os player entrarem
timeBetweenSpawns = 20, -- Segundos dps do evento ser startado começarem a aparecer os zombie
zombieName = "event zombie", -- Nome do zombie sumonado
playersNeededToStartEvent = 2, -- Players necessários pro evento ser iniciado
-- Area que o zumbi vai spawnar
fromPosition = {x = 523, y = 100, z = 7}, -- top de fromPosition até
toPosition = {x = 587, y = 165, z = 7} -- -- em baixo toPostion
}
function onTime()
local time = os.date("*t")
if (config.semana_mes == "semana" and isInArray(config.days,time.wday)) or (config.semana_mes == "mes" and isInArray(config.days,time.day)) or config.semana_mes == "" then
local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)
doItemSetAttribute(tp, "aid", config.teleportActionId)
doBroadcastMessage("[Zombie-Event] Vai começar em " .. config.timeToStartEvent .. " minutos! O teleporte vai abrir no templo e sera fechado assim que o evento iniciar. (Premio 3ppoints para o ultimo sobrevivente!) ", MESSAGE_STATUS_WARNING)
setGlobalStorageValue(config.playerCount, 0)
setGlobalStorageValue(config.zombieCount, 0)
addEvent(startEvent, config.timeToStartEvent * 1000 * 60)
end
return TRUE
end
function startEvent()
local fromp, top = config.fromPosition, config.toPosition
if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then
addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
doBroadcastMessage("Boa sorte para os participantes! O portal foi fechado.", MESSAGE_STATUS_WARNING)
for x = fromp.x, top.x do
for y = fromp.y, top.y do
for z = fromp.z, top.z do
areapos = {x = x, y = y, z = z, stackpos = 253}
getPlayers = getThingfromPos(areapos)
if isPlayer(getPlayers.uid) then
doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "O primeiro Zombie vai aparecer em " .. config.timeBetweenSpawns .. " segundos! BOA SORTE!")
pvgaylord()
end
end
end
end
else
doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING)
for x = fromp.x, top.x do
for y = fromp.y, top.y do
for z = fromp.z, top.z do
areapos = {x = x, y = y, z = z, stackpos = 253}
getPlayers = getThingfromPos(areapos)
if isPlayer(getPlayers.uid) then
doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false)
doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT)
end
end
end
end
end
end
function spawnZombie()
if getGlobalStorageValue(config.playerCount) >= 2 then
pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z), stackpos = 253}
if getThingFromPos(pos).uid == 0 then
doSummonCreature(config.zombieName, pos)
doSendMagicEffect(pos, CONST_ME_MORTAREA)
setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1)
doBroadcastMessage("Um Zombie nasceu, temos " .. getGlobalStorageValue(config.zombieCount) .. " Zombies no evento. Corram!", MESSAGE_STATUS_CONSOLE_RED)
addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
end
else
local fromp, top = config.fromPosition, config.toPosition
for x = fromp.x, top.x do
for y = fromp.y, top.y do
for z = fromp.z, top.z do
areapos = {x = x, y = y, z = z, stackpos = 253}
cid = getThingfromPos(areapos).uid
if isPlayer(cid) then
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
doBroadcastMessage(getCreatureName(cid)..' sobreviveu dos Zombie e venceu o evento.')
for _,items in ipairs(config.rewards) do
doPlayerAddItem(cid, items, 1)
doPlayerAddPoints(cid, config.points)
end
if config.moneyReward[3] == 1 then
doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2])
end
doBroadcastMessage(getPlayerName(cid) .. " venceu o Zombie Event! Parabens!", MESSAGE_STATUS_WARNING)
local goblet = doPlayerAddItem(cid, config.goblet, 1)
doItemSetAttribute(goblet, "description", "Premio de " .. getPlayerName(cid) .. " por vencer o Zombie Event.")
elseif isMonster(cid) then
doRemoveCreature(cid)
end
end
end
end
end
end
function pvgaylord()
local fromp, top, p, m = config.fromPosition, config.toPosition, 0, 0
for x = fromp.x, top.x do
for y = fromp.y, top.y do
for z = fromp.z, top.z do
local areapos = {x = x, y = y, z = z, stackpos = 253}
local cid = getThingfromPos(areapos).uid
if isPlayer(cid) then
p = p+1
elseif isMonster(cid) then
m = m+1
end
end
end
end
if p ~= getGlobalStorageValue(config.playerCount) then
setGlobalStorageValue(config.playerCount, p)
end
if p < 2 then
return true
end
addEvent(pvgaylord,100,nil)
end