
Solutions
-
Sekk's post in (Resolvido)Help corrigir erro mysql was marked as the answerPode ser q esse tfs n aceita sqlite, somente mysql
-
Sekk's post in (Resolvido)Converter Talk em Action was marked as the answer@JcA
-
Sekk's post in (Resolvido)Limite de level was marked as the answerBoa noite.
Primeiro vou explicar uma coisa:
O limite não é de level, e sim de exp. Tipo, O limite não é lvl 717217, o limite é exp 18.446.744.073.709.551.615 tendeu? Em C++(pelo que eu entendi), não conseguimos mandar um numero inteiro pro tfs falando q aquele é o lvl maximo, mandamos o exp.
Então, a primeira coisa a fazer e diminuir o xp dos monstros do server.
segundo, em player.h das sources, vc procura por
static uint64_t getExpForLevel(uint32_t lv) Vai estar tipo isso:
static uint64_t getExpForLevel(uint32_t lv) { lv--; return ((50ULL * lv * lv * lv) - (150ULL * lv * lv) + (400ULL * lv)) / 3ULL; } Mude para isso
static uint64_t getExpForLevel(int32_t lv) { lv--; return ((150ULL * lv * lv) - (50ULL * lv * lv) + (1200ULL)) / 3ULL; }
Nesse caso, o maximo de LEVEL vai ser +- 250.000.000.
Se vc entende ingles, aconselho a seguir o próprio tópico do Gesior pra entender tudo como funciona e alterar ao seu gosto.
https://otland.net/threads/c-how-to-increase-maximum-level-on-server.230364/
Obs.: Quando vc alterar o player.h e for compilar, vc precisa dar REBUILD
-
Sekk's post in Equivalente a math.random? was marked as the answerResolvido!
Fazer o seguinte:
#include <ctime>
#include <cstdlib>
dentro do int main colocar:
srand(time(NULL));
e usar o seguinte codigo para randomizar:
rand() % 10; // 10 é a quantidade de valores que pode pegar, no caso, 10 valores(entre 0 e 9)
Se for colocar algum valor minimo, por exemplo quero 10 numeros, e o inicial é 3:
rand() % 10 + 3; // primeiro numero: 0+3=3.... segundo: 1+3=4..... ultimo: 9+3=12
-
Sekk's post in (Resolvido)Erro no Dev-Cpp 4.9.9.2 was marked as the answerdesculpe kkkkk, ja aconteceu cmg isso, mas ai desisti de tentar, ai um tempo dps voltou tbm kkkkkk
-
Sekk's post in (Resolvido)bloqueio was marked as the answer@martimtiburcio
eu estranhei seu game.cpp pois parecia ja ter sido editado uahuahauh tenta ai
Desktop.rar
-
Sekk's post in (Resolvido)Quest, escolha de item was marked as the answerprecisa fazer um script de action assim:
em actions.xml vc coloca
<action actionid="9995" script="nomedoarquivo.lua" /> <action actionid="9996" script="nomedoarquivo.lua" /> <action actionid="9997" script="nomedoarquivo.lua" /> <action actionid="9998" script="nomedoarquivo.lua" /> <action actionid="9999" script="nomedoarquivo.lua" /> obs.: as 5 tags usam o mesmo arquivo.
agora no arquivo .lua vc coloca isso:
Nesse script ta configurado para 5 baús, para remover um é só vc remover isso:
if item.aid == XXXX then if stor <= 0 then doPlayerSendTextMessage(cid,22,"Parabens, voce recebeu seu premio!") doPlayerAddItem(cid,XXXX,1) -- item que vai dar ao player setPlayerStorageValue(cid,100,1) else doPlayerSendTextMessage(cid,22,"Voce ja recebeu seu premio.") end end e para adicionar é o mesmo esquema.
No RME vc adiciona as actionids referentes ao script nos baús
-
Sekk's post in (Resolvido)Erro end, else, function... help? was marked as the answerfunction onUse(cid, item, frompos, item2, topos) if (isInArray({2, 6, 10}, getPlayerVocation(cid))) then AtiveGem(cid, item) elseif getPlayerStorageValue(cid, 45783) > 0 then doPlayerSendCancel(cid, "Você já está sob o efeito de uma Magic Gem.") end return true end
-
Sekk's post in (Resolvido)Impedir que script deixe de funcionar ao logar was marked as the answerQuando o playere desloga, o script logout entra em ação.
Deleta esse creaturescript
<event type="logout" name="perderefeito" event="script" value="perderefeito.lua"/>
e o script referente a ele tbm, alem de tirar o registro do login.lua
-
Sekk's post in (Resolvido)Não reconhecer do group 4+ was marked as the answerNo lugar da linha do IF coloca isso:
if (getPlayerLevel(cid) < 130 and getPlayerGroupId(cid) < 4) then
To fora de casa, se vc n entendeu eu explico dps
-
Sekk's post in (Resolvido)Alguém pode me dar uma força? was marked as the answer@tirso
<action itemid="9004" event="script" value="vipkyndrai"/>
Tenta ai, se funcionar acho q vc tem uma noção de como alterar o script
-
Sekk's post in (Resolvido)[Site] Erro ao Comprar item no shop was marked as the answerO negocio da guild, vai em config.php e procura isso
$config['site']['guild_need_pacc'] = 1; // guild need pacc 0 / 1 e troca por
$config['site']['guild_need_pacc'] = 0; // guild need pacc 0 / 1
O do cast vou ter q dar uma olhada depois, a nao ser que alguem resolva antes.
O do demon faz o seguinte:
Vá em:
C:\xampp\htdocs\layouts\tibiacom e procure o arquivo layout_config.ini e abra.
Na linha 'logo_monster' vc edita qual monstro vc quer que apareça(a imagem deve ser .gif e deve estar em htdocs/images/monsters), pode ser um gif aleatório q vc queira, mas coloque na pasta monsters pra não precisar alterar mais nenhum arquivo
-
Sekk's post in (Resolvido)Promotion item e Talk was marked as the answerQual o seu tfs?
talkaction(eu uso ela)
function onSay(cid, words, param) local vocs = { [1] = 5, -- master sorcerer [2] = 6, -- elder druid [3] = 7, -- royal paladin [4] = 8, -- elite knight } local newvoc = vocs[getPlayerVocation(cid)] local price = 20000 if getPlayerPremiumDays(cid) > 0 then if getPlayerMoney(cid) >= price then if vocs[getPlayerVocation(cid)] then doPlayerSetVocation(cid,newvoc) doPlayerRemoveMoney(cid, price) doSendAnimatedText(getPlayerPosition(cid),"PROMOTED", 79) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_BLUE) setPlayerStorageValue(cid, 21323, newvoc) else doPlayerSendCancel(cid, "Voce nao pode ser promovido.") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) end else doPlayerSendCancel(cid, "Voce nao tem dinheiro suficiente.") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) end else doPlayerSendCancel(cid, "Voce precisa ser premium para usar esse comando.") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) end return true end
seu script:
-
Sekk's post in (Resolvido)Add [DNT] Vip System was marked as the answer@ledcar eu jurava q tinha editado o script ali em cima hauhsuha
function onUse(cid, item, fromPosition, itemEx, toPosition) local days = 30 -- coloque os dias que serão a VIP! local daysvalue = days * 24 * 60 * 60 local storageplayer = getPlayerStorageValue(cid, 13500) local timenow = os.time() if getPlayerStorageValue(cid, 13500) - os.time() <= 0 then time = timenow + daysvalue else time = storageplayer + daysvalue end doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.") setPlayerStorageValue(cid, 13500, time) local name = getCreatureName(cid) db.query("UPDATE `players` SET `name` = '[Vip] "..name.."' WHERE `id` = "..getPlayerGUID(cid)..";") doRemoveCreature(cid) --local quantity = math.floor((getPlayerStorageValue(cid, 13500) - timenow)/(24 * 60 * 60)) --doSendMagicEffect(getPlayerPosition(cid), math.random(28,30)) --doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.") return TRUE end
-
Sekk's post in (Resolvido)correção convert time do script was marked as the answerna vdd, se vc notar bem, vc está transformando 1 hora em 1 segundo, pois config.time(1) * 1000 = 1000ms = 1s
Então o certo é deixar
setPlayerStorageValue(cid, config.storage, os.time() + config.time * 60 * 1000) addEvent(endExpRate, config.time * 60 * 1000, cid)
-
Sekk's post in (Resolvido)Correção em um script action was marked as the answerTemos umas respostas com isso:
1. As outfits eram para players PREMIUM e precisavam de ACCESS 5, ou seja, precisava ser da staff. Isso de acordo com o outfits.xml
<outfit id="33" access="5" premium="yes"> <list gender="0-3" lookType="264" name="Brutetamer"/> </outfit> 2. No script vc n alterou o id da outfit
Mas tudo bem, vamos arrumar agora.
Troque seu outfits.xml por esse:
E troque seu script por esse:
-
Sekk's post in (Resolvido)Baú que sorteia 4 itens ou + was marked as the answern faço ideia se funciona
<actions actionid="9918" event="script" value="random.lua"/>
function onUse(cid, item, fromPosition, itemEx, toPosition) local items = {6497,2472,2471} -- defina seus itens local r = items[math.random(#items)] local m = 2160 -- item q usa como moeda local q = 10 -- preço if doPlayerRemoveItem(cid, m, q) then doPlayerAddItem(cid, r, 1) doPlayerSendTextMessage(cid,22,"Você ganhou uma "..getItemNameById(r)) doBroadcastMessage("O player "..getCreatureName(cid).." acabou de ganhar um "..getItemNameById(r).." do random box", 22) else doPlayerSendCancel(cid, "Sorry, you don't have enough money") end return true end
coloca a actionid 9918 no bau pelo rme
-
Sekk's post in (Resolvido)Ajuda com check outfit was marked as the answerlocal water = {490, 491, 492, 493, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625} local combat = createCombatObject() local meteor = createCombatObject() setCombatParam(meteor, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(meteor, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) setCombatFormula(meteor, COMBAT_FORMULA_LEVELMAGIC, -7.2, -400, -7.3, -400) local meteor_water = createCombatObject() setCombatParam(meteor_water, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(meteor_water, COMBAT_PARAM_EFFECT, CONST_ME_LOSEENERGY) setCombatFormula(meteor_water, COMBAT_FORMULA_LEVELMAGIC, -7.2, -400, -7.3, -400) combat_arr = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } local combat_area = createCombatArea(combat_arr) setCombatArea(combat, combat_area) local function meteorCast(p) doCombat(p.cid, p.combat, positionToVariant(p.pos)) end function onTargetTile(cid, pos) if (math.random(0, 0) == 0) then local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 1}) if (isInArray(water, ground.itemid) == TRUE) then local newpos = {x = pos.x + 9, y = pos.y - 8, z = pos.z} doSendDistanceShoot(newpos, pos, 28) addEvent(meteorCast, 100, {cid = cid, pos = pos, combat = meteor_water}) else local newpos = {x = pos.x + 9, y = pos.y - 8, z = pos.z} doSendDistanceShoot(newpos, pos, 28) addEvent(meteorCast, 100, {cid = cid,pos = pos, combat = meteor}) end end end setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile") local o = getCreatureOutfit(cid) local stun = createConditionObject(CONDITION_PARALYZE) function onCastSpell(cid, var) if o.lookType == 144 and o.lookAddons == 3 then setConditionParam(stun, CONDITION_PARAM_TICKS, 20000) setConditionFormula(stun, -0.9, 1, -0.9, 1) setCombatCondition(meteor, stun) doCombat(cid, combat, var) elseif o.lookType == 148 and o.lookAddons == 3 then setConditionParam(stun, CONDITION_PARAM_TICKS, 20000) setConditionFormula(stun, -0.9, 1, -0.9, 1) setCombatCondition(meteor, stun) doCombat(cid, combat, var) else doCombat(cid, combat, var) end local function stunEffect(cid) doSendMagicEffect(getThingPos(cid), CONST_ME_STUN) end
-
Sekk's post in (Resolvido)Aumentar area da magia was marked as the answerSim.
No exemplo do exori gran, a função que defini a area dele é a seguinte:
local area = createCombatArea(AREA_SQUARE1X1) setCombatArea(combat, area) Em 'AREA_SQUARE1X1'. No caso, essa area é em quadrado, vc poderia colocar 5x5, então 5 quadrados em todas as direções partindo do seu char são afetados pela magia.
Existe outro tipo de area:
O exevo gran mas frigo por exemplo:
local area = createCombatArea(AREA_CROSS5X5) setCombatArea(combat, area) 'AREA_CROSS5X5' é assim:
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} 1 - spell
3 - vc
0 - nada
Você pode ver todos os tipos de areas no arquivo data/spells/lib/spells.lua
Alias, você n precisa se limitar a usar apenas os descritos na lib, vc pode criar suas próprias areas dentro do script da spell, ou adicionando na lib, exemplo:
Adicionando na lib:
AREA_FUCK = { {0, 0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 1, 0, 1, 0, 0}, {0, 0, 1, 0, 1, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 3, 0, 0, 0, 0}
Coloca isso na lib, ai no script da spell, é só escrever AREA_FUCK
Vc tbm criar essa area diretamente no script da spell.
Se quiser o meu, deixei em anexo.
spells.lua
-
Sekk's post in (Resolvido)Modificar Reset System was marked as the answerO Vodkart me ajudou por PM, ele conseguiu resolver o problema e deixou o script como eu queria haha, ai vai a solução:
data/talkactions/scripts crie um arquivo chamado reset.lua e adicione isso nele:
Em talkactions.xml adicione a seguinte tag:
<talkaction words="!reset" event="script" value="reset.lua"/>
Agora para mostrar o reset no look dos players e no seu próprio look, vá em:
data/creaturescripts/scripts e crie um arquivo chamado resetlook.lua e adicione isso nele:
E em creaturescripts.xml adicione as tags:
<event type="login" name="resetlook_register" event="script" value="resetlook.lua"/> <event type="look" name="resetlook" event="script" value="resetlook.lua"/>
-
Sekk's post in (Resolvido)Comando para mostrar HP/Mana por %% was marked as the answerPrecisa editar protocolgame.cpp nas sources
-
Sekk's post in (Resolvido)Ajuda com Autoloot System was marked as the answerRESOLVIDO! @Vodkart me ajudou, e aqui está a solução:
mods/autoloot.xml
data/actions/scripts/aloot.lua
data/actions/actions.xml
<action itemid="XXXX" script="aloot.lua"/>
Obrigado cara xD
-
Sekk's post in (Resolvido)Como executa query? was marked as the answerprecisa nao... usa esse aqui ó
Pra executar query nele:
1 - nos icones, abra o 3o da direita pra esquerda(Open SQL query editor)
2 - cole a query nele
3 - aperte F9 pra executar
sqlitestudio-2.1.4.exe
-
Sekk's post in (Resolvido)Ajustando Script 2 was marked as the answerfunction onSay(cid, words, param, channel) local exstorage = 45714 -- any empty storage local time = 5*60 -- h*m*s (5 min = 5*60) if exhaustion.check(cid, exstorage) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Sorry, you need to wait 6 minutes before changing outfit again.") return TRUE end if not isInParty(cid) or getPlayerParty(cid) ~= cid then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não é líder de uma party") end local outfit = getCreatureOutfit(cid) local addons = outfit for _, cid2 in ipairs(getPartyMembers(cid)) do outfit.lookAddons = 0 doCreatureChangeOutfit(cid2, outfit) doPlayerSendTextMessage(cid2, MESSAGE_STATUS_CONSOLE_BLUE, "Outfit da party trocado.") if canPlayerWearOutfit(cid2, outfit.lookType, addons) then outfit.lookAddons = addons doCreatureChangeOutfit(cid2, outfit) doSendMagicEffect(getCreaturePosition(cid2), 66) exhaustion.set(cid, exstorage, time) return true elseif addons == 3 then outfit.lookAddons = (canPlayerWearOutfit(cid2, outfit.lookType, 1) and 1) or (canPlayerWearOutfit(cid2, outfit.lookType, 2) and 2) or 0 doCreatureChangeOutfit(cid2, outfit) doSendMagicEffect(getCreaturePosition(cid2), 66) exhaustion.set(cid, exstorage, time) end end return true end
-
Sekk's post in (Resolvido)Mount Doll TFS 1.2 was marked as the answerAcusou erro na ultima linha... Ele quis comentar o site, porém colocou apenas um hífen...
Deixa assim a ultima linha :
end -- See more at: http://www.tibiaface.com/t438-talkactions-addon-doll-y-mount-doll-fixe-para-tfs-1-0#sthash.K1Pz7BWc.dpuf