Affew Eu esqueci de por storage!...Vo rever e posto se eu conseguir!
- Fórum
- xTibia - Notícias e Suporte
- Soluções
- Archived
- [Talkaction] Usar Só Se Tiver Certa Storage
info
Grupo: Barão
Registrado: 05/08/10
Posts: 218
Reputação: +86
Gênero: Masculino

Editado Agosto 3 por mulizeu
8888 é o id do storage ou e o value? se for o id passa o value de Vip... se for o value me passe o id... ^^
info
Grupo: Barão
Registrado: 27/04/09
Posts: 242
Reputação: +83
Gênero: Masculino
Char no Tibia: Askators

mulizeu ok nao testei ainda eu ia testar agora vou esperar tu postar!
-------------------------------------------------------------
disk o storage value da vip é 88888 é só isso que precisa?
Editado Agosto 3 por ADM_Forever
mulizeu ok nao testei ainda eu ia testar agora vou esperar tu postar!
-------------------------------------------------------------
disk o storage value da vip é 88888 é só isso que precisa?
Storage e composto:
getPlayerStorageValue(cid,valueid)
setPlayerStorageValue(cid,valueid,newvalue)
Tipo o comando que seria adicionado ai seria:
ID = numero do ID playerstorage = getPlayerStorageValue(cid,ID) if playerstorage == 88888 then else end
Ja que 88888 é o valor me passa o ID do Storage que te mando o codigo pronto...
info
Grupo: Barão
Registrado: 27/04/09
Posts: 242
Reputação: +83
Gênero: Masculino
Char no Tibia: Askators

@Disk ta mas onde eu coloco isso add ai no script pra mim??
Tem que por Antes de Tudo mais depois do Function.... mais tem ke editar o ID
info
Grupo: Barão
Registrado: 27/04/09
Posts: 242
Reputação: +83
Gênero: Masculino
Char no Tibia: Askators

id do que man? que eu saiba só tem storage 88888 e deu não precisa mais nada... vou mandar um exemplo de comando que eu ja tenho mas nao sei o que pegar:
local config = {
vip = "yes",
priceForEachMessage = 10000, -- preço de cada mensagem
storage = 88888
}
function onSay(cid, words, param, channel)
if(param == "") then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.")
return TRUE
end
if (config.vip == "yes") and getPlayerStorageValue(cid, tonumber(config.storage)) - os.time() <= 0 then
doPlayerSendCancel(cid,"Você não possui vip.")
return TRUE
end
if(doPlayerRemoveMoney(cid, config.priceForEachMessage) == TRUE) then
doBroadcastMessage("[V.I.P] " .. getPlayerName(cid) .. ": " .. param .. "", MESSAGE_INFO_DESCR)
else
doPlayerSendCancel(cid, "Você precisa de " .. config.priceForEachMessage .. " gps para enviar a messagem.")
end
return TRUE
end
esse é um broadcast só para vips
nao sei o que tem que pegar
Editado Agosto 4 por ADM_Forever
info
Grupo: Barão
Registrado: 05/08/10
Posts: 218
Reputação: +86
Gênero: Masculino

Teste esse!
function isWalkable(pos, creature, proj, pz)-- by Nord
local config = {
vip = "yes",
priceForEachMessage = 0,
storage = 88888
}
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false, true end
local n = not proj and 3 or 2
for i = 0, 255 do
pos.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and not isCreature(tile.uid) then
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end
return true
end
function onSay(cid, words)
if not getHouseByPlayerGUID(getPlayerGUID(cid)) then
if (config.vip == "yes") and getPlayerStorageValue(cid, tonumber(config.storage)) - os.time() <= 0 then
doPlayerSendCancel(cid,"Você não possui vip.")
return TRUE
end
return doPlayerSendCancel(cid, "Voce nao tem casa.")
end
local pos = getHouseEntry(getHouseByPlayerGUID(getPlayerGUID(cid)))
if getCreatureCondition(cid, CONDITION_INFIGHT) then
return doPlayerSendCancel(cid, "Voce tem que estar sem battle.")
end
if not getTilePzInfo({x=pos.x-1, y=pos.y, z=pos.z}) and isWalkable({x=pos.x-1, y=pos.y, z=pos.z}) then
pos = {x=pos.x-1, y=pos.y, z=pos.z}
elseif not getTilePzInfo({x=pos.x+1, y=pos.y, z=pos.z}) and isWalkable({x=pos.x+1, y=pos.y, z=pos.z}) then
pos = {x=pos.x+1, y=pos.y, z=pos.z}
elseif not getTilePzInfo({x=pos.x, y=pos.y+1, z=pos.z}) and isWalkable({x=pos.x, y=pos.y+1, z=pos.z}) then
pos = {x=pos.x, y=pos.y+1, z=pos.z}
elseif not getTilePzInfo({x=pos.x, y=pos.y-1, z=pos.z}) and isWalkable({x=pos.x, y=pos.y-1, z=pos.z}) then
pos = {x=pos.x, y=pos.y-1, z=pos.z}
end
doTeleportThing(cid, pos)
end
Editado Agosto 4 por mulizeu
info
Grupo: Barão
Registrado: 27/04/09
Posts: 242
Reputação: +83
Gênero: Masculino
Char no Tibia: Askators

mulizeu não funcionou o comando da um erro no dedicado e aparece como se eu estivesse falando normal!
info
Grupo: Barão
Registrado: 05/08/10
Posts: 218
Reputação: +86
Gênero: Masculino

Dei uma alterada nele ve se agr funfa ....
local config = {
vip = "yes",
priceForEachMessage = 0,
storage = 88888
}
function onSay(cid, words)
if not getHouseByPlayerGUID(getPlayerGUID(cid)) then
if (config.vip == "yes") and getPlayerStorageValue(cid, tonumber(config.storage)) - os.time() <= 0 then
doPlayerSendCancel(cid,"Você não possui vip.")
return TRUE
end
function isWalkable(pos, creature, proj, pz)
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false, true end
local n = not proj and 3 or 2
for i = 0, 255 do
pos.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and not isCreature(tile.uid) then
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end
return true
end
return doPlayerSendCancel(cid, "Voce nao tem casa.")
end
local pos = getHouseEntry(getHouseByPlayerGUID(getPlayerGUID(cid)))
if getCreatureCondition(cid, CONDITION_INFIGHT) then
return doPlayerSendCancel(cid, "Voce tem que estar sem battle.")
end
if not getTilePzInfo({x=pos.x-1, y=pos.y, z=pos.z}) and isWalkable({x=pos.x-1, y=pos.y, z=pos.z}) then
pos = {x=pos.x-1, y=pos.y, z=pos.z}
elseif not getTilePzInfo({x=pos.x+1, y=pos.y, z=pos.z}) and isWalkable({x=pos.x+1, y=pos.y, z=pos.z}) then
pos = {x=pos.x+1, y=pos.y, z=pos.z}
elseif not getTilePzInfo({x=pos.x, y=pos.y+1, z=pos.z}) and isWalkable({x=pos.x, y=pos.y+1, z=pos.z}) then
pos = {x=pos.x, y=pos.y+1, z=pos.z}
elseif not getTilePzInfo({x=pos.x, y=pos.y-1, z=pos.z}) and isWalkable({x=pos.x, y=pos.y-1, z=pos.z}) then
pos = {x=pos.x, y=pos.y-1, z=pos.z}
end
doTeleportThing(cid, pos)
end
info
Grupo: Barão
Registrado: 27/04/09
Posts: 242
Reputação: +83
Gênero: Masculino
Char no Tibia: Askators

mulizeu nao entrei muito por motivos pessoais e nao pude ver o script mas agora eu ja vi e nao funcionou tipo ele te leva pra tua casa tendo vip ou nao!
info
Grupo: Campones
Registrado: 26/07/11
Posts: 12
Reputação: +13

@Mulizeu, não precisa disso tudo.
@ADM_Forever, tente esse:
local config = {
vip = "yes",
priceForEachMessage = 0,
storage = 88888
}
function onSay(cid, words)
if not getHouseByPlayerGUID(getPlayerGUID(cid)) then
if (config.vip == "yes") and getPlayerStorageValue(cid,config.storage) - os.time() <= 0 then
doPlayerSendCancel(cid,"Você não possui vip.")
return TRUE
end
function isWalkable(pos, creature, proj, pz)
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false, true end
local n = not proj and 3 or 2
for i = 0, 255 do
pos.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and not isCreature(tile.uid) then
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end
return true
end
return doPlayerSendCancel(cid, "Voce nao tem casa.")
end
local pos = getHouseEntry(getHouseByPlayerGUID(getPlayerGUID(cid)))
if getCreatureCondition(cid, CONDITION_INFIGHT) then
return doPlayerSendCancel(cid, "Voce tem que estar sem battle.")
end
if not getTilePzInfo({x=pos.x-1, y=pos.y, z=pos.z}) and isWalkable({x=pos.x-1, y=pos.y, z=pos.z}) then
pos = {x=pos.x-1, y=pos.y, z=pos.z}
elseif not getTilePzInfo({x=pos.x+1, y=pos.y, z=pos.z}) and isWalkable({x=pos.x+1, y=pos.y, z=pos.z}) then
pos = {x=pos.x+1, y=pos.y, z=pos.z}
elseif not getTilePzInfo({x=pos.x, y=pos.y+1, z=pos.z}) and isWalkable({x=pos.x, y=pos.y+1, z=pos.z}) then
pos = {x=pos.x, y=pos.y+1, z=pos.z}
elseif not getTilePzInfo({x=pos.x, y=pos.y-1, z=pos.z}) and isWalkable({x=pos.x, y=pos.y-1, z=pos.z}) then
pos = {x=pos.x, y=pos.y-1, z=pos.z}
end
doTeleportThing(cid, pos)
end
Editado Agosto 14 por Blazingfire
info
Grupo: Barão
Registrado: 27/04/09
Posts: 242
Reputação: +83
Gênero: Masculino
Char no Tibia: Askators

@Blazingfire vou testa-lo agora se funcionar vou dar rep + pra ti e pro mulizeu tambem pois ele me tentou ajudar ![]()
EDIT:
Testado... deu o seguinte erro no distro:
[15/08/2011 02:10:57] [Error - TalkAction Interface] [15/08/2011 02:10:57] data/talkactions/scripts/casa.lua:onSay [15/08/2011 02:10:57] Description: [15/08/2011 02:10:57] data/talkactions/scripts/casa.lua:41: attempt to call global 'isWalkable' (a nil value) [15/08/2011 02:10:57] stack traceback: [15/08/2011 02:10:57] data/talkactions/scripts/casa.lua:41: in function <data/talkactions/scripts/casa.lua:6>
e nao acontece nada aparece como se eu estivesse falando normal!
Editado Agosto 15 por ADM_Forever
info
Grupo: Campones
Registrado: 26/07/11
Posts: 12
Reputação: +13

@Blazingfire vou testa-lo agora se funcionar vou dar rep + pra ti e pro mulizeu tambem pois ele me tentou ajudar
EDIT:
Testado... deu o seguinte erro no distro:
[15/08/2011 02:10:57] [Error - TalkAction Interface] [15/08/2011 02:10:57] data/talkactions/scripts/casa.lua:onSay [15/08/2011 02:10:57] Description: [15/08/2011 02:10:57] data/talkactions/scripts/casa.lua:41: attempt to call global 'isWalkable' (a nil value) [15/08/2011 02:10:57] stack traceback: [15/08/2011 02:10:57] data/talkactions/scripts/casa.lua:41: in function <data/talkactions/scripts/casa.lua:6>
e nao acontece nada aparece como se eu estivesse falando normal!
Entre na pasta lib e abra o arquivo 050-function, e coloque isso em qualquer lugar:
function isWalkable(pos, creature, proj, pz)-- by Nord
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
if getTopCreature(pos).uid > 0 and creature then return false end
if getTileInfo(pos).protection and pz then return false, true end
local n = not proj and 3 or 2
for i = 0, 255 do
pos.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and not isCreature(tile.uid) then
if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
return false
end
end
end
return true
end
Agora pode testar o script..
Editado Agosto 15 por Blazingfire


info
Grupo: Barão
Registrado: 27/04/09
Posts: 242
Reputação: +83
Gênero: Masculino
Char no Tibia: Askators
olá gente estou com um problema na verdade 4... eu queria colocar os seguintes comandos só para vips usar que no caso a storage da vip é 88888
casa.lua - vai até sua casa desde que não esteja com battle:
function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function onSay(cid, words) if not getHouseByPlayerGUID(getPlayerGUID(cid)) then return doPlayerSendCancel(cid, "Voce nao tem casa.") end local pos = getHouseEntry(getHouseByPlayerGUID(getPlayerGUID(cid))) if getCreatureCondition(cid, CONDITION_INFIGHT) then return doPlayerSendCancel(cid, "Voce tem que estar sem battle.") end if not getTilePzInfo({x=pos.x-1, y=pos.y, z=pos.z}) and isWalkable({x=pos.x-1, y=pos.y, z=pos.z}) then pos = {x=pos.x-1, y=pos.y, z=pos.z} elseif not getTilePzInfo({x=pos.x+1, y=pos.y, z=pos.z}) and isWalkable({x=pos.x+1, y=pos.y, z=pos.z}) then pos = {x=pos.x+1, y=pos.y, z=pos.z} elseif not getTilePzInfo({x=pos.x, y=pos.y+1, z=pos.z}) and isWalkable({x=pos.x, y=pos.y+1, z=pos.z}) then pos = {x=pos.x, y=pos.y+1, z=pos.z} elseif not getTilePzInfo({x=pos.x, y=pos.y-1, z=pos.z}) and isWalkable({x=pos.x, y=pos.y-1, z=pos.z}) then pos = {x=pos.x, y=pos.y-1, z=pos.z} end doTeleportThing(cid, pos) endtirar pk.lua - comando para tirar o pk white black e red
--50% kung lao %50 Vodkart function onSay(cid, words, param) local S = { [3] = {price = 1000000,cobrar = true,msg = "Você perdeu seu white skull e frags.", premium = true}, [4] = {price = 3000000,cobrar = true,msg = "Você perdeu seu red skull e frags", premium = true}, [5] = {price = 5000000,cobrar = true,msg = "Você perdeu seu black skull e frags", premium = true}, } local skull = S[getCreatureSkullType(cid)] if(not skull) then doPlayerSendCancel(cid,"Você nao está com nenhum tipo de skull.") return TRUE elseif skull.premium == true and not isPremium(cid) then doPlayerSendCancel(cid,"Apenas players premium podem remover skull.") return TRUE elseif skull.cobrar == true and doPlayerRemoveMoney(cid, skull.price) == FALSE then doPlayerSendCancel(cid,"Você não tem " .. skull.price .. " gps para remover sua skull.") doSendMagicEffect(getPlayerPosition(cid), 2) return TRUE end db.executeQuery("UPDATE `killers` SET `unjustified` = 0 WHERE `id` IN (SELECT `kill_id` FROM `player_killers` WHERE `player_id` = " .. getPlayerGUID(cid) .. ")") doCreatureSetSkullType(cid, 0) doRemoveCreature(cid) doPlayerSendTextMessage(cid, 22,skull.msg) doSendMagicEffect(getPlayerPosition(cid), 26) return TRUE endoutfit.lua - muda outfit do player para a que ele quiser menos as de GOD, CM e GM!
function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.") return true end local t = string.explode(param, ",") t[1] = tonumber(t[1]) if(not t[1]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires numeric param.") return true end local failout = {"66","302","56","45","10"} -- outfits proibidas for i = 1, #failout do if string.find(tostring(param), failout[i]) then doPlayerSendCancel(cid,"Não pode usar estas outfit.") return TRUE end end if(t[1] <= 1 or t[1] == 135 or (t[1] > 160 and t[1] < 192) or t[1] > 351) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Such outfit does not exist.") return true end local tmp = getCreatureOutfit(cid) tmp.lookType = t[1] doCreatureChangeOutfit(cid, tmp) return true endchangesex.lua - para mudar de sexo
local config = { costPremiumDays = 3 } function onSay(cid, words, param, channel) if(getPlayerSex(cid) >= 2) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You cannot change your gender.") return TRUE end if(getPlayerPremiumDays(cid) < config.costPremiumDays) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sorry, not enough premium time- changing gender costs " .. config.costPremiumDays .. " days.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return TRUE end if(getPlayerPremiumDays(cid) < 65535) then doPlayerAddPremiumDays(cid, -config.costPremiumDays) end if(getPlayerSex(cid) == PLAYERSEX_FEMALE) then doPlayerSetSex(cid, PLAYERSEX_MALE) else doPlayerSetSex(cid, PLAYERSEX_FEMALE) end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have changed your gender and lost " .. config.costPremiumDays .. " days of premium time.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_RED) return TRUE endEditado Agosto 3 por ADM_Forever