Primeiro esclaresça melhor, você quer que os amuletos façam perder X de "experiência"? Ou de Loot?
Black / Red Skull Aol / Amulet
Por Quorra, 06 de dez. de 2012 em Scripts
info
Grupo: Herói
Registrado: 14/12/10
Posts: 3.6k
Reputação: +846
Gênero: Masculino

Quando morremos, perdemos por exemplo, 100 de experiencia. Com o aol red, só irá perder 80 (80%) de experiencia, e se o char for vip vai perder apenas 50 (50%), entendeu?
PS: as quantidades de exp são apenas exemplos.
O amuleto é um AOL infinito.
Qualquer coisa: msn: willovni25@hotmail.com / Skype: dreamer.kof
Editado Dezembro 6 por Quorra
info
Grupo: Herói
Registrado: 14/12/10
Posts: 3.6k
Reputação: +846
Gênero: Masculino

Tenho ideia de como fazer, até hoje postarei o resultado!
Is necessary to know what VIP System you are using to do the amulets you want....
info
Grupo: Herói
Registrado: 14/12/10
Posts: 3.6k
Reputação: +846
Gênero: Masculino

Me passe a Storage dos VIPS, e se tiver de players normais. E também preciso que você abra o arquivo login.lua na pasta creaturescripts, aperte CTRL + F e após isso digite EXPERIENCE, e então me diga o valor que está na mesma linha, no meu caso é * 10.
Editado Dezembro 7 por Roksas
local config = {
redSkullAmulet = 1,
usarVipSystem = "enabled", -- Se não quiser usar o vip system e usar o premium system deixe "disabled"
vipStora = 1,
premium = "enabled", -- Configure com enabled ou disabled
newLossPercent = 80, -- Aqui você pode editar de 10 a 100%
}
function onDeath(cid, corpse, lastHitKiller, mostDamageKiller)
if not isPlayer(cid) then
return true or 0
end
if getPlayerItemCount(cid, config.redSkullAmulet) >= 1 then
if(getPlayerStorageValue(cid, config.vipStora) >= 1) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, config.newLossPercent)
elseif(config.premium == "enabled" and config.usarVipSystem == "disabled" and getPlayerPremiumDays(cid) >= 1) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, config.newLossPercent)
end
end
end
tag:
<event type="death" name="RedSkullAmulet" event="script" value="nomedoscript.lua"/>
POde usar o primeiro script para a base do outro..
info
Grupo: Herói
Registrado: 14/12/10
Posts: 3.6k
Reputação: +846
Gênero: Masculino

Smix acabou com minha graça kkkkkkk. Eu estava fazendo, vlw a tentativa ! Bença
)
@up & double up: What happens if VIP is made by queries and not storage? That will not work...
info
Grupo: Marquês
Registrado: 22/07/12
Posts: 1.1k
Reputação: +400
Gênero: Masculino
Char no Tibia: Luck Oake

Tenho ideia de como fazer, até hoje postarei o resultado!
Smix acabou com minha graça kkkkkkk. Eu estava fazendo, vlw a tentativa ! Bença
)
Cara, de novo vou lhe avisar. Não poste coisas que não ajudam a resolver a dúvida do tópico, isso é flood. REP- assim que liberar aqui.
I still want to know if VIP System is by a new database query or by storage so I can help...
No caso, seu script verifica se o player possui o amulet e se possuir a storage vip ou premiumdays, adiciona a nova porcentagem de exp ao morrer, no caso 80%.
No caso se possuir a storage vip/premiumdays (dependendo do seu sistema), você quer que o player free red skull com o amulet perca 80% da exp e se for vip/p.a perca 50%, certo ? O mesmo para o black skull só que 30% (free) e 10% (vip/p.a).
Aproveitando o script do Smix, se me permite...
Abra a pasta data/creaturescripts/scripts e crie um arquivo chamado redamulet.lua
Adicione o script:
local config = {
amulet = 1111,
vipSystem = "enabled",
vipStorage = 2222,
premium = "enabled",
newLossPercent = 80,
vipLossPercent = 50,
}
function onDeath(cid, corpse, lastHitKiller, mostDamageKiller, deathList)
if not isPlayer(cid) then
return true or 0
end
if (getPlayerItem(cid, config.amulet) == 1) and getPlayerSkullType(cid) >= 4 then
if (getPlayerStorageValue(cid, config.vipStorage) >= 1) and getPlayerPremiumDays(cid) >= 1 then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, config.vipLossPercent)
doCreatureSetDropLoot(cid, false)
elseif(config.premium == "disabled" and config.vipSystem == "disabled" and getPlayerPremiumDays(cid) <= 0) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, config.newLossPercent)
doCreatureSetDropLoot(cid, false)
end
return true
end
end
Vermelho: ItemID do amuleto.
Amarelo: Se o Vip System está enabled (habilitado) disabled (desabilitado).
Roxo: StorageID de seu Vip System.
Azul: Se a Premium Account está enabled (habilitado) disabled (desabilitado).
Verde: Porcentagem de perda de Exp Free como Red Skull.
Rosa: Porcentagem de perda de Exp Vip/P.A como Red Skull.
Abra o arquivo login.lua da mesma pasta (data/creaturescripts/scripts) e adicione a linha script junto as outras:
registerCreatureEvent(cid, "RedSkullAmulet")
Agora volte a pasta data/creaturescripts e abra o arquivo creaturescripts.xml
Adicione a tag:
<event type="death" name="RedAmulet" event="script" value="redamulet.lua"/>
Para fazer Black Skull Amulet, apenas troque a parte:
getPlayerSkullType(cid) >= 4 then
por:
getPlayerSkullType(cid) >= 5 then
e reconfigure com sua preferência.
Editado Dezembro 8 por HidekiKty
HidekiKty, meu problema é mais fundo, porque alem disso, preciso de um sistema VIP, de preferencia do Vodkart, mais que a VIp seja comprada por item, não por comando, e não acho esse sistema completo... O unico que "achei" o tópico tava com os spoilers bugados. Poderiam me passar o sistema que preciso já com esse script dos amuletos configurados ? Agradeço MESMO.
info
Grupo: Marquês
Registrado: 22/07/12
Posts: 1.1k
Reputação: +400
Gênero: Masculino
Char no Tibia: Luck Oake

Fiz aqui o sistema de comprar VIP por item usando a VIP do Vodkart:
function onUse(cid, item) local days = 10 -- Dias que serão adicionados local cobrar = "sim" -- Cobrar? (Sim / Não) local price = 50000 -- Preço if cobrar == "sim" and not doPlayerRemoveMoney(cid, price) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa de "..price.." gold coins para comprar a VIP.") return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Foram adicionados "..days.." dias de VIP em seu character.") addCharacterAcess(cid, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui agora "..getCharacterDays(cid).." dias de VIP. Ela acaba em "..getVipAcessDate(cid)) return true end
Agora o script dos amuletos:
creaturescripts.xml:
<event type="death" name="Amulets" script="amulets.lua"/>
login.lua:
registerCreatureEvent(cid, "Amulets")
amulets.lua:
function onDeath(cid)
vipSystem = "enabled" -- VIP System ativado? (enabled / disabled)
a = {
[1111] = {skull = 4, newLossPercent = 80, vipLossPercent = 50, loot = false},
[1112] = {skull = 5, newLossPercent = 30, vipLossPercent = 10, loot = false},
}
b = a[getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid]
if not b then return true end
if getPlayerSkullType(cid) == b.skull then
doCreatureSetDropLoot(cid, b.loot)
if vipSystem == "enabled" and HaveCharaterAcess(cid) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, b.vipLossPercent)
elseif vipSystem == "enabled" and not HaveCharaterAcess(cid) or vipSystem == "disabled" then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, b.newLossPercent)
end
end
return true
end
Configurando:
vipSystem = "enabled" -- VIP System ativado? (enabled / disabled)
a = {
[1111] = {skull = 4, newLossPercent = 80, vipLossPercent = 50, loot = false},
[1112] = {skull = 5, newLossPercent = 30, vipLossPercent = 10, loot = false},
}
A tabela funciona assim:
[id do amuleto] = {id da skull, porcentagem de xp que free perde, porcentagem de xp que VIP perde, dropar loot? (true, false)}
Com ela, você pode colocar mais amuletos nesse único script quase sem mudar nada.
Editado Dezembro 9 por LuckOake






info
Grupo: Campones
Registrado: 07/04/12
Posts: 29
Reputação: +1
Quero 2 aol / amuletos diferentes, então acho que precisarei de 2 Scripts, um para Red Skull e outro para Black Skull.
Base dos 2: AOL infinito, quando char morre o amuleto continua lá, e não perde items.
Diferencial:
Red Skull Amulet: um char normal, ao morrer, perdera apenas 80% de experiencia, não os 100% por causa da morte, enquanto o mesmo char, se for VIP, perdera apenas 50% de experiencia.
Black Skull Amulet: um char normal, ao morrer, perdera apenas 30% de experiencia, não os 100% por causa da morte, enquanto o mesmo char, se for VIP, perdera apenas 10% de experiencia.
Creio que será um bom desafio para os melhores scripters!
Lembrando que todos que estão me ajudando tem chances de estar na Staff de meu server.
Agradeço se conseguirem fazer isso.