17 minutos atrás, KarlKalvin disse:
Me explica oque significa >= 1, <= 1, == 1, ~=1, e == null?
São sinais matemáticos:
<= menor/menor ou igual à
>= maior/maior ou igual à
== igualdade absoluta
~= diferente -> no php é: !=
null - valor nulo
info
Grupo: Marquês
Registrado: 03/02/13
Posts: 1.2k
Reputação: +254
Gênero: Masculino
Char no Tibia: Partiu Baladinha

17 minutos atrás, KarlKalvin disse:
Me explica oque significa >= 1, <= 1, == 1, ~=1, e == null?
São sinais matemáticos:
<= menor/menor ou igual à
>= maior/maior ou igual à
== igualdade absoluta
~= diferente -> no php é: !=
null - valor nulo
Editado Agosto 23 por Lumus
info
Grupo: Barão
Registrado: 04/07/16
Posts: 242
Reputação: +100
Gênero: Masculino

22 minutos atrás, KarlKalvin disse:
Me explica oque significa >= 1, <= 1, == 1, ~=1, e == null?
São operadores relacionais. Eles fazem verificações e só retornam valores booleanos, ou seja, true ou false.
>= : maior ou igual.
ex:
23 >= 23 retorna true, porque 23 é maior ou igual à 23
23 >= 14 retorna true, porque 23 é maior ou igual à 14
23 >= 24 retorna false, porque 23 não é maior ou igual à 24
<= : mesmo caso do anterior, só que significa menor ou igual.
==: operador de comparação
ex:
2 == 2 retorna true, porque 2 é igual à dois
2 == 3 retorna false, porque 2 não é igual à três
~= ( também visto como != ): mesmo caso do anterior, só que significa diferente.
ex:
2 ~= 2 retorna false, porque 2 não é diferente de 2
2 ~= 3, retorna true, porque 2 é diferente de 2
Null ou nil é mais complexo. Ele é basicamente um nada que significa algo e ocupa espaço na memória. Pode ser usado em comparações e é útil em alguns casos.
Uma variável qnd só declarada é igual à null.
ex. em C++:
int a;
std::cout << a;
Vai retornar null.
Editado Agosto 23 por Gabriel Netto
info
Grupo: Visconde
Registrado: 07/02/12
Posts: 427
Reputação: +112

Veja se meu raciocinio está correto....
O script tá trabalhando com um actionID 4432
Se eu por um if no começo do script com if getActionID(cid, 4432) ~= 1 then
return doPlayerSendCancel(cid, MSG_NAO)
end
Citar
function getActionID(itemid)
return getItemDescriptions(itemid).actionid
end
Função do getactionid, to tentando dar uns desenrolos aqui... ai o script ficaria assim:
Editado Agosto 24 por KarlKalvin
info
Grupo: Barão
Registrado: 04/07/16
Posts: 242
Reputação: +100
Gênero: Masculino

3 minutos atrás, KarlKalvin disse:Veja se meu raciocinio está correto....
O script tá trabalhando com um actionID 4432
Se eu por um if no começo do script com if getActionID(cid, 4432) ~= 1 then
return doPlayerSendCancel(cid, MSG_NAO)
end
?
Não existe a função getActionID ![]()
Eu fiz isso aí usando o operador lógico AND.
Ele basicamente retorna true se as duas condições forem verdadeira, senão retorna false. É bem útil pra não ter que fazer vários ifs.
Com if encadeado:
if a = true then
if b = true then
bloco de código
end
end
Com o operador and:
if a = true and b = true then
bloco de código
end
No teu script eu usei ele, olha:
if name:find("fainted") and item2.aid ~= 4432 then
Traduzindo, ficaria:
Se achar FAINTED no nome do item que eu usei o Use With e o item que eu usei o Use With tiver action ID diferente de 4432 então
Também temos o or e o xor. O or retorna true se pelo menos uma das condições forem verdadeiras, senão retorna false. Já o xor retorna true se só uma das condições forem verdadeiras.
info
Grupo: Visconde
Registrado: 07/02/12
Posts: 427
Reputação: +112

15 minutos atrás, Gabriel Netto disse:Não existe a função getActionID
Eu fiz isso aí usando o operador lógico AND.
Ele basicamente retorna true se as duas condições forem verdadeira, senão retorna false. É bem útil pra não ter que fazer vários ifs.
Com if encadeado:
if a = true then
if b = true then
bloco de código
end
end
Com o operador and:
if a = true and b = true then
bloco de código
end
No teu script eu usei ele, olha:
if name:find("fainted") and item2.aid ~= 4432 thenTraduzindo, ficaria:
Se achar FAINTED no nome do item que eu usei o Use With e o item que eu usei o Use With tiver action ID diferente de 4432 então
Também temos o or e o xor. O or retorna true se pelo menos uma das condições forem verdadeiras, senão retorna false. Já o xor retorna true se só uma das condições forem verdadeiras.
Eu entendi.. tá uma bela dor de cabeça esse negocio, me adc no skype ai Gabi... kalvin.karl ( país zimbabue para fácil achar )
info
Grupo: Conde
Registrado: 14/04/15
Posts: 956
Reputação: +333
Gênero: Masculino

Use este código aqui:
function onUse(cid, item, frompos, item2, topos)
local chance = 10 -- chance de cortar
local madeiras = {17180, 17081, 17182, 17183} -- item que o player irá ganhar
local premio = madeiras[math.random(1, #madeiras)]
local texts = {"Coletando Informações..."} -- texto que irá aparecer quando usar o item
local randoms = texts[math.random(1,#texts)]
local time = 2 -- Segundos de outfit coletando informações
local outfit = 38 -- ID da Outfit Male.
local outfit2 = 31 -- ID da Outfit Female.
if isRiderOrFlyOrSurf(cid) then
return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
end
local name = getItemNameById(item2.itemid)
if not name:find("fainted") then
doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
return true
end
if getPlayerStorageValue(cid, 12015) ~= 1 then
doPlayerSendCancel(cid, "Nao pode.")
return true
end
if getPlayerSex(cid) == 1 then
doSetCreatureOutfit(cid, {lookType = outfit, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000)
else
doSetCreatureOutfit(cid, {lookType = outfit2, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000)
end
doCreatureSetNoMove(cid, true)
addEvent(function()
if not isPlayer(cid) then return true end
doCreatureSetNoMove(cid, false)
end, 1000)
local name = getItemNameById(item2.itemid)
if name:find("fainted") and item2.actionid ~= 4432 then
if math.random(1,100) >= chance then
doItemSetAttribute(item2.uid, "aid", 4432)
doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN)
item = doCreateItemEx(premio, math.random(2,5))
doItemSetAttribute(item, "unique", getCreatureName(cid))
doPlayerAddItemEx(cid, item)
doCreatureSetNoMove(cid, false)
doPlayerSendTextMessage(cid, 22, "Você coletou informações e ganhou pontos.")
else
doItemSetAttribute(item2.uid, "aid", 4432)
doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN)
addEvent(function()
doCreatureSetNoMove(cid, false)
doPlayerSendTextMessage(cid,22,"Você não conseguiu coletar.")
end, time * 1000)
end
end
return true
end
Creio que este dará certo.
@Gabriel Netto, se tu quiser posso te explicar depois como funciona +- o addEvent
Editado Agosto 24 por Drazyn
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

14 horas atrás, Gabriel Netto disse:É isso que eu vou fazer HSUAHUSASHAU, não tinha me tocado.
Como faz pra eu verificar o action id do item?
Pega de dentro da tabela do item.
item.actionid
7 horas atrás, KarlKalvin disse:Veja se meu raciocinio está correto....
O script tá trabalhando com um actionID 4432
Se eu por um if no começo do script com if getActionID(cid, 4432) ~= 1 then
return doPlayerSendCancel(cid, MSG_NAO)
end
Função do getactionid, to tentando dar uns desenrolos aqui... ai o script ficaria assim:
function onUse(cid, item, frompos, item2, topos)
local chance = 10 -- chance de cortar
local madeiras = {17180, 17081, 17182, 17183} -- item que o player irá ganhar
local premio = madeiras[math.random(1, #madeiras)]
local scanningFailCanRepeat = false --ponha true se quiser que de para escanear novamente se o escaneamento falhar. Se botar false, só vai dar pra escanear o mesmo corpse 1x, independente da falha ou sucesso
local transformItem = 0
local texts = {"Coletando Informações..."} -- texto que irá aparecer quando usar o item
local randoms = texts[math.random(1,#texts)]
local time = 2 -- Minutos para crescer novamente
local tempo = 1
local outfit = 38 -- ID da Outfit Male.
local outfit2 = 31 -- ID da Outfit Female.
if isRiderOrFlyOrSurf(cid) then
return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
end
if getActionID(cid, 4432) == 1 then
return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
end
local name = getItemNameById(item2.itemid)
if not name:find("fainted") then
doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
return true
end
if getPlayerStorageValue(cid, 12015) ~= 1 then
doPlayerSendCancel(cid, "Nao pode.")
return true
end
if getPlayerSex(cid) == 1 then
doSetCreatureOutfit(cid, {lookType = outfit, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000) -- Tempo em que a outfit estará trocada.
else
doSetCreatureOutfit(cid, {lookType = outfit2, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000) -- Tempo em que a outfit estará trocada.
end
doCreatureSetNoMove(cid, true)
addEvent(function()
if not isPlayer(cid) then return true end
doCreatureSetNoMove(cid, false)
end, 1000)
local name = getItemNameById(item2.itemid)
tempo = 5 -- Segundos em que "paralisia" fica no player
if name:find("fainted") and item2.aid ~= 4432 then
if math.random(1,100) >= chance then
doSetItemActionId(item2.aid, 4432)
doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN)
item = doCreateItemEx(premio, math.random(2,5))
doItemSetAttribute(item, "unique", getCreatureName(cid))
doPlayerAddItemEx(cid, item)
doCreatureSetNoMove(cid, false)
doPlayerSendTextMessage(cid, 22, "Você coletou informações e ganhou pontos.")
else
doSetItemActionId(item2.aid, 4432)
doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN)
addEvent(function()
doCreatureSetNoMove(cid, false)
doPlayerSendTextMessag(cid,22,"Você não conseguiu coletar.")
end, time * 1000)
end
end
return true
end
Companheiro; além de estar errado os parâmetros da função, você pode pegar o actionid p item diretamento no corpo dq função onuse ()
Citarfunction onUse(cid, item, frompos, item2, topos)
item.actionid
info
Grupo: Conde
Registrado: 14/04/15
Posts: 956
Reputação: +333
Gênero: Masculino

9 minutos atrás, Poccnn disse:
Pega de dentro da tabela do item.
item.actionid
Companheiro; além de estar errado os parâmetros da função, você pode pegar o actionid p item diretamento no corpo dq função onuse ()
item.actionid
Sim, verdade esqueci de ver se estava correto a verificação de ter actionid kk
Atualizei o ultimo código que eu postei.
Obs: Tópico movido para a área correta!
info
Grupo: Barão
Registrado: 04/07/16
Posts: 242
Reputação: +100
Gênero: Masculino

12 horas atrás, KarlKalvin disse:Veja se meu raciocinio está correto....
O script tá trabalhando com um actionID 4432
Se eu por um if no começo do script com if getActionID(cid, 4432) ~= 1 then
return doPlayerSendCancel(cid, MSG_NAO)
end
?
Se puder, quero sim, manda pm xD
info
Grupo: Visconde
Registrado: 07/02/12
Posts: 427
Reputação: +112

5 horas atrás, Drazyn disse:Use este código aqui:
function onUse(cid, item, frompos, item2, topos) local chance = 10 -- chance de cortar local madeiras = {17180, 17081, 17182, 17183} -- item que o player irá ganhar local premio = madeiras[math.random(1, #madeiras)] local texts = {"Coletando Informações..."} -- texto que irá aparecer quando usar o item local randoms = texts[math.random(1,#texts)] local time = 2 -- Segundos de outfit coletando informações local outfit = 38 -- ID da Outfit Male. local outfit2 = 31 -- ID da Outfit Female. if isRiderOrFlyOrSurf(cid) then return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL) end local name = getItemNameById(item2.itemid) if not name:find("fainted") then doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL) return true end if getPlayerStorageValue(cid, 12015) ~= 1 then doPlayerSendCancel(cid, "Nao pode.") return true end if getPlayerSex(cid) == 1 then doSetCreatureOutfit(cid, {lookType = outfit, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000) else doSetCreatureOutfit(cid, {lookType = outfit2, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000) end doCreatureSetNoMove(cid, true) addEvent(function() if not isPlayer(cid) then return true end doCreatureSetNoMove(cid, false) end, 1000) local name = getItemNameById(item2.itemid) if name:find("fainted") and item2.actionid ~= 4432 then if math.random(1,100) >= chance then doItemSetAttribute(item2.uid, "aid", 4432) doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN) item = doCreateItemEx(premio, math.random(2,5)) doItemSetAttribute(item, "unique", getCreatureName(cid)) doPlayerAddItemEx(cid, item) doCreatureSetNoMove(cid, false) doPlayerSendTextMessage(cid, 22, "Você coletou informações e ganhou pontos.") else doItemSetAttribute(item2.uid, "aid", 4432) doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN) addEvent(function() doCreatureSetNoMove(cid, false) doPlayerSendTextMessage(cid,22,"Você não conseguiu coletar.") end, time * 1000) end end return true endCreio que este dará certo.
@Gabriel Netto, se tu quiser posso te explicar depois como funciona +- o addEvent
Eu também quero uma explicação do addevent, se puder mandar no meu pm também algum link de video aula ou qualquer coisa um texto explicando vou aceitar, obg.
Vou testar o script!
EDIT: Script funcionando do jeito que eu queria só tem um detalhe básico quando você usa denovo a função:
if getPlayerSex(cid) == 1 then doSetCreatureOutfit(cid, {lookType = outfit, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000) else doSetCreatureOutfit(cid, {lookType = outfit2, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000) end
Ainda está sendo carregada mas o resto não porque?
Editado Agosto 24 por KarlKalvin
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

@KarlKalvin, existem tutoriais que ensinam programação em lua.
Dá uma conferida na seção de tutoriais de scripts.
info
Grupo: Conde
Registrado: 14/04/15
Posts: 956
Reputação: +333
Gênero: Masculino

7 horas atrás, KarlKalvin disse:
Eu também quero uma explicação do addevent, se puder mandar no meu pm também algum link de video aula ou qualquer coisa um texto explicando vou aceitar, obg.
Vou testar o script!
EDIT: Script funcionando do jeito que eu queria só tem um detalhe básico quando você usa denovo a função:
Ainda está sendo carregada mas o resto não porque?
Ok, não entendi essa sua ultima dúvida...
Obs: Vou mandar PM para vocês com uma explicaçãozinha básica kk
info
Grupo: Visconde
Registrado: 07/02/12
Posts: 427
Reputação: +112

53 minutos atrás, Drazyn disse:Ok, não entendi essa sua ultima dúvida...
Obs: Vou mandar PM para vocês com uma explicaçãozinha básica kk
Tipo... eu consigo "usar" o item nos SQM do meu lado porém esse "usar" é apenas a outfit mudando já o script em si não funciona mas a outfit muda
info
Grupo: Conde
Registrado: 14/04/15
Posts: 956
Reputação: +333
Gênero: Masculino

function onUse(cid, item, frompos, item2, topos) print("inicio") local chance = 10 -- chance de cortar local madeiras = {17180, 17081, 17182, 17183} -- item que o player irá ganhar local premio = madeiras[math.random(1, #madeiras)] local texts = {"Coletando Informações..."} -- texto que irá aparecer quando usar o item local randoms = texts[math.random(1,#texts)] local time = 2 -- Segundos de outfit coletando informações local outfit = 38 -- ID da Outfit Male. local outfit2 = 31 -- ID da Outfit Female. if isRiderOrFlyOrSurf(cid) then return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL) end local name = getItemNameById(item2.itemid) if not name:find("fainted") then doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL) return true end print("nao esta de fly") if getPlayerStorageValue(cid, 12015) ~= 1 then doPlayerSendCancel(cid, "Nao pode.") return true end if getPlayerSex(cid) == 1 then doSetCreatureOutfit(cid, {lookType = outfit, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000) print("male") else doSetCreatureOutfit(cid, {lookType = outfit2, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000) print("female") end doCreatureSetNoMove(cid, true) addEvent(function() if not isPlayer(cid) then return true end doCreatureSetNoMove(cid, false) end, 1000) local name = getItemNameById(item2.itemid) if name:find("fainted") and item2.actionid ~= 4432 then print("isCorpse and not have a actionid") if math.random(1,100) >= chance then print("chance >") doItemSetAttribute(item2.uid, "aid", 4432) doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN) item = doCreateItemEx(premio, math.random(2,5)) doItemSetAttribute(item, "unique", getCreatureName(cid)) doPlayerAddItemEx(cid, item) addEvent(function() doCreatureSetNoMove(cid, false) doPlayerSendTextMessage(cid, 22, "Você coletou informações e ganhou pontos.") print("nao coletou") end, time * 1000) else print("chance < ") doItemSetAttribute(item2.uid, "aid", 4432) doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN) addEvent(function() doCreatureSetNoMove(cid, false) doPlayerSendTextMessage(cid,22,"Você não conseguiu coletar.") print("nao coletou") end, time * 1000) end end return trueend
Usa esse script, executa o action e me manda print do que aparece na tela...
info
Grupo: Visconde
Registrado: 07/02/12
Posts: 427
Reputação: +112
Me explica oque significa >= 1, <= 1, == 1, ~=1, e == null?