CO

[Talkaction] Usar Só Se Tiver Certa Storage

Por CoLoRaDo, 03 de ago. de 2011 em Archived

19
1.9k
CoLoRaDoC
03 de agosto de 2011 às 16:09

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)
end

 

tirar 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
end

 

outfit.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
end

 

changesex.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
end

Editado Agosto 3 por ADM_Forever

MulizeuM
03 de agosto de 2011 às 18:33

Affew Eu esqueci de por storage!...Vo rever e posto se eu conseguir!

Editado Agosto 3 por mulizeu

over12O
03 de agosto de 2011 às 20:59

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... ^^

CoLoRaDoC
03 de agosto de 2011 às 21:08

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

over12O
03 de agosto de 2011 às 22:24

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...

CoLoRaDoC
04 de agosto de 2011 às 00:30

@Disk ta mas onde eu coloco isso add ai no script pra mim??

over12O
04 de agosto de 2011 às 08:35

Tem que por Antes de Tudo mais depois do Function.... mais tem ke editar o ID

CoLoRaDoC
04 de agosto de 2011 às 11:58

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 :D nao sei o que tem que pegar

Editado Agosto 4 por ADM_Forever

MulizeuM
04 de agosto de 2011 às 14:57

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

CoLoRaDoC
05 de agosto de 2011 às 13:48

mulizeu não funcionou o comando da um erro no dedicado e aparece como se eu estivesse falando normal!

MulizeuM
05 de agosto de 2011 às 14:03

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

2 semanas depois...
CoLoRaDoC
14 de agosto de 2011 às 21:48

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!

BlazingfireB
14 de agosto de 2011 às 22:15

@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

CoLoRaDoC
15 de agosto de 2011 às 00:31

@Blazingfire vou testa-lo agora se funcionar vou dar rep + pra ti e pro mulizeu tambem pois ele me tentou ajudar :D

 

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

BlazingfireB
15 de agosto de 2011 às 11:47

@Blazingfire vou testa-lo agora se funcionar vou dar rep + pra ti e pro mulizeu tambem pois ele me tentou ajudar :D

 

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