Tudo que Lyu postou
-
Script item que modifica parede até sumi
vc esqueceu de renomear o arquivo lua para transformwall.lua, verifica ai
-
(Resolvido)ERRO AO COMPILAR SOURCE DEV C++
está faltando bibliotecas. Qual tfs está tentando compilar?
-
Channel Help Mute (TFS 0.4)
Introdução : Muta um jogador no canal HELP por meio de um comando. game.cpp Procure por Game::playerSay, abaixo de player->setIdleTime(0) adicione : if (channelId == CHANNEL_HELP) { std::string helpmute = "0"; player->getStorage("455010", helpmute); time_t now = time(NULL); time_t seconds = atoi(helpmute.c_str()) - now; if (seconds > 0) { std::stringstream sec; sec << "You are muted for " << seconds << " seconds on this channel."; player->sendTextMessage(MSG_STATUS_SMALL, sec.str()); return false; } } data/talkactions/scripts/helpmute.lua : function onSay(cid, words, param) if param == '' then return doPlayerSendCancel(cid, 'Informe o nome do jogador e o tempo em segundos.') end local default = 600 local tmp = string.explode(param, ',') if not isCreature(getCreatureByName(tmp[1])) then return doPlayerSendCancel(cid, 'Jogador inexistente ou off-line.') end setPlayerStorageValue(getCreatureByName(tmp[1]), 455010, os.time() + (tonumber(tmp[2]) or default)) doPlayerSendCancel(cid, 'O jogador ' .. tmp[1] .. ' foi mutado.') return true end data/talkactions/talkactions.xml : <talkaction log="yes" group="4" access="3" words="/helpmute" event="script" value="helpmute.lua"/> Como utilizar? Para impedir um jogador de falar no Channel Help, utilize o comando /helpmute Playername, segundos. Para resetar os segundos, utilize o mesmo comando só que em segundos, coloque 0. Comando disponível apenas para a acessos superiores, configuração disponível no XML talkactions.xml. Versão do TFS: 0.4 Créditos: Lyu
-
(Resolvido)Mudar outfit de 1 em 1 segundo
haha boa observação! Valeu brother, abraços!
-
(Resolvido)Mudar outfit de 1 em 1 segundo
Bom, se o intuito principal for apenas criar essa animação a partir da troca de outfits A e B, acho que esse caminho é suficiente xD Escolhi esse caminho por ser mais seguro, onde o personagem poderá deslogar e logar tranquilamente que já logará com a animação. Só remove a animação se remover o anel mesmo.
-
(Resolvido)Mudar outfit de 1 em 1 segundo
o tempo é padrão do próprio evento onThink. Esse evento é executado a cada 1 segundo, no caso, o script.
-
[Pedido] Stages de Ganho de vida
Tem como sim, mas isso é feito na source e requer uma baita modificada.
-
Erro First Items
verifique a vocação dos players. Na sua tabela de configuração só vejo suporte a vocações de 0 a 4, lembrando que existem vocações como Royal Paladin, Elite Knight etc, que vão de 5 a 8.
-
[Actions] Script De Refinamento
Acho que não. Experimente mover a a lib do Upgrade para data/actions/lib, já que a única interface usada é Action Interface. O seu problema é um retorno nulo na linha 60, o que é estranhíssimo. Talvez esteja tendo problemas ao carregar as libs.
-
(Resolvido)Mudar outfit de 1 em 1 segundo
Fiz aqui rapidinho, utilizei onThink por ser um método mais seguro e permitir reLogin sem interferir na troca de outfits. data/creaturescripts/scripts/outfitring.lua local config = { ring = 2205, outfits = { {lookType = 128, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookAddons = 3}, {lookType = 129, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookAddons = 3} } } function onThink(cid, interval) if getPlayerSlotItem(cid, CONST_SLOT_RING).itemid == config.ring then doSetCreatureOutfit(cid, config.outfits[os.time() % 2 == 0 and 1 or 2]) end return true end data/creaturescripts/creaturescripts.xml <event type="think" name="OutfitRing" event="script" value="outfitring.lua"/> adicionar no final de data/creaturescripts/scripts/login.lua registerCreatureEvent(cid, "OutfitRing") a configuração é na tabela config, onde você pode configurar o id do ring e as duas outfits. Abraços.
-
Pedido
A forma mais simplificada de fazer isso, é retornando falso no evento onChangeOutfit e dando a outfit relacionada à vocação ao criar o personagem. Assim é meio que um bloqueio para evitar que mudem a outfit de seus personagens. o evento onChangeOutift você encontra no arquivo data/events/scripts/creature.lua.
-
Script item que modifica parede até sumi
Fiz aqui rapidinho, testei e aparentemente está OK. Teste e me informe caso houver erros: transformwall.lua local walls = {1058, 9119, 10180, 1039} function onUse(cid, item, _, itemEx) local tmp = {} for _, v in ipairs(walls) do tmp[v] = #walls == _ and '_last' or walls[_ + 1] end local wall = tmp[itemEx.itemid] if not wall then return false end if wall == '_last' then doRemoveItem(itemEx.uid, 1) else doTransformItem(itemEx.uid, tmp[itemEx.itemid]) end return true end actions.xml <action itemid="id_do_item" event="script" value="transformwall.lua"/> O script é em data/actions, beleza? Fiz para TFS 0.4, qualquer coisa se seu TFS for de versão superior, me avise que eu converto. Configure a tabela listando o id das paredes a serem transformadas, na ordem: local walls = {1058, 9119, 10180, 1039} a ID com cor vermelha é a que será removida ao invés de ser transformada. Abraços.
-
Erro para carregar os Scripts
É um bug no código. Altere a encoding para ANSI que aparecerá uma caractere especial na linha 732 do arquivo 050-function.lua; delete essa caractere.
-
(Resolvido)[ERRO]
é um bug no código. Altera a encoding do arquivo para ANSI que irá aparecer na linha 1 uma caractere especial. Delete-a.
-
Erro em Combat Spells
tenta ai: local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 39) setAttackFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -2.2, -150, -2.5, 1) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 39) setAttackFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -2.2, -150, -2.5, 1) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 39) setAttackFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -2.2, -150, -2.5, 1) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat4, COMBAT_PARAM_EFFECT, 39) setAttackFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -2.2, -150, -2.5, 1) local combat5 = createCombatObject() setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat5, COMBAT_PARAM_EFFECT, 39) setAttackFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -2.2, -150, -2.5, 1) local area1 = createCombatArea(AREA_CIRCLE2X2) local area2 = createCombatArea(AREA_CIRCLE2X2) local area3 = createCombatArea(AREA_CIRCLE2X2) local area4 = createCombatArea(AREA_CIRCLE2X2) local area5 = createCombatArea(AREA_CIRCLE2X2) setCombatArea(combat1, area1) setCombatArea(combat2, area2) setCombatArea(combat3, area3) setCombatArea(combat4, area4) setCombatArea(combat5, area5) local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, parameters.combat3, parameters.var) end local function onCastSpell4(parameters) doCombat(parameters.cid, parameters.combat4, parameters.var) end local function onCastSpell5(parameters) doCombat(parameters.cid, parameters.combat5, parameters.var) end function onCastSpell(cid, var) if exhaustion.get(cid,61260) == false then local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5} addEvent(onCastSpell1, 0, parameters) addEvent(onCastSpell2, 500, parameters) addEvent(onCastSpell2, 1000, parameters) addEvent(onCastSpell2, 1500, parameters) addEvent(onCastSpell2, 2000, parameters) exhaustion.set(cid,61260,10) else doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 61260).."]") end return false end
- EMOTE SPELLS DINÂMICO!
- EMOTE SPELLS DINÂMICO!
-
EMOTE SPELLS DINÂMICO!
Fala clã, tudo bom? Então, vi esse tal emote spells em um servidor e decidi fazer, e também, compartilhá-lo com vocês ? O que é? É um código simpleszinho que possibilita players escolherem a cor da mensagem das spells por meio de comando, LARANJA ou AMARELO, como nas imagens abaixo: Vamos aos códigos.. abra game.cpp, na função playerSaySpell, procure por: if (result == TALKACTION_BREAK) { if (!g_config.getBoolean(ConfigManager::EMOTE_SPELLS)) { return internalCreatureSay(player, TALKTYPE_SAY, words, false); } else { return internalCreatureSay(player, TALKTYPE_MONSTER_SAY, words, false); } } else if (result == TALKACTION_FAILED) { return true; } e substitua por: if (result == TALKACTION_BREAK) { int32_t value; player->getStorageValue(203500, value); return internalCreatureSay(player, value == 1 ? TALKTYPE_MONSTER_SAY : TALKTYPE_SAY, words, false); } else if (result == TALKACTION_FAILED) { return true; } Beleza, agora precisamos de uma talkaction para fazer a alteração de storage, vamos lá.. data/talkactions/scripts/emotespells.lua: function onSay(player) local switch = player:getStorageValue(203500) == -1 and 1 or -1 player:sendTextMessage(MESSAGE_INFO_DESCR, 'emote spells: (' .. (switch == 1 and 'monster_say' or 'say') .. ')') player:setStorageValue(203500, switch) end data/talkactions/talkactions.xml: <talkaction words="!emotespells" script="emotespells.lua"/> Agora só compilar as sources e pronto? Versão do TFS: 1.3 Créditos: Lyu (isme)
-
Quest dando o mesmo item infinitamente
function onUse (cid,item,frompos,item2,topos) pos = {x=67, y=515, z=7} pos2 = getPlayerPosition(cid) UID_DO_BAU = 33334 STORAGE_VALUE = 33334 ID_DO_PREMIO = 2505 ID_DO_PREMIO2 = 2506 ID_DO_PREMIO3 = 2522 ID_DO_PREMIO4 = 8923 ID_DO_PREMIO5 = 7886 ID_DO_PREMIO6 = 2157 if getPlayerLevel(cid) >= 1000 then if item.uid == 33334 then queststatus = getPlayerStorageValue(cid,STORAGE_VALUE) if queststatus == -1 then doTeleportThing(cid,pos) doPlayerSendTextMessage(cid,22,"Parabens,Você completou a Magnata Quest.") doPlayerAddItem(cid,2505,1) doPlayerAddItem(cid,2506,1) doPlayerAddItem(cid,2522,1) doPlayerAddItem(cid,8923,1) doPlayerAddItem(cid,7886,1) doPlayerAddItem(cid,2157,10) setPlayerStorageValue(cid,STORAGE_VALUE,1) doTeleportThing(cid, pos) doSendMagicEffect(getThingPos(cid), 29) else doPlayerSendTextMessage(cid,22,"Vazio.") end end else doPlayerSendCancel(cid,'Somente players level 1000+ podem abrir este bau.') end return 1 end
-
[Bug] Quando Crio Guild
tá dizendo que na sua tabela guilds, não existe coluna chamada checkdata, tem que criar uma coluna com esse nome.
-
[C++] TFS 1.2 / OTX Server 3 New Npc Currency System
Very nice my friend, thank you for shared it ?
-
(Resolvido)[Creaturescript] Como travar um player se tiver tal storage?
doCreatureSetNoMove(cid, true)
-
Script teleport
local config = { destination = {x = 1000, y = 1000, z = 7}, item = {2352, 1} } function onStepIn(cid, itemid, position, fromPosition) return doTeleportThing(cid, getPlayerItemCount(cid, config.item[1]) < config.item[2] and fromPosition or config.destination) end <movevent type="StepIn" actionid="38560" event="script" value="teleport.lua"/> No remere's, configure a actionid no teleport; o destino você configura pelo script mesmo.
-
Mute no HELP Channel
Meu amigo estava com esse problema, se forçasse saia algumas mensagens. Muito estranho essa parada, aqui no meu eu posso meter um bot de spam que não passa de jeito nenhum. Qual servidor vc usa? versão do tfs?
-
Mute no HELP Channel
Não! pode digitá-lo de qualquer channel