Solutions
-
Adriano SwaTT's post in (Resolvido)[PEDIDO]Promotion por item was marked as the answerBom dia.
Abaixo segue o script:
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid ---------- Início das Configurações ---------- local item1 = {2157, 100} -- Id e Quantidade local item2 = {2328, 100} -- Id e Quantidade local get = getItemNameById ---------- Fim das Configurações -------------- if msgcontains(msg, 'promote') or msgcontains(msg, 'promotion') then selfSay('Deseja ser promovido pagando '..item1[2]..' '..get(item1[1])..' e '..item2[2]..' '..get(item2[1])..'?', cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if msgcontains(msg, 'sim') or msgcontains(msg, 'yes') then if getPlayerItemCount(cid, item1[1]) >= item1[2] and getPlayerItemCount(cid, item2[1]) >= item2[2] then doPlayerRemoveItem(cid, item1[1], item1[2]) doPlayerRemoveItem(cid, item2[1], item2[2]) doSendMagicEffect(getCreaturePosition(cid), 14) setPlayerPromotionLevel(cid, getPlayerPromotionLevel(cid)+1) selfSay('Parabens agora voce e um(a) '..getPlayerVocationName(getPlayerVocation(cid))..'!', cid) else selfSay('voce nao tem os items exigidos.', cid) talkState[talkUser] = 0 end end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Obs: Testado e funcionando perfeitamente em 0.3.6, porém, creio que funcione com você também.
Boa sorte.
-
Adriano SwaTT's post in (Resolvido)[Ajuda] setPlayerStorageValue Lendo variáveis was marked as the answerTeste assim:
O arquivo npcquest.lua ficará assim:
local msg_completed = 'Voce completou sua task de Orcs.' local monster = 'Orc' local strg = 9755 local strg_c = 9756 -- Storage ao completar missão local qtdd = 3 -- Quantidade que ele precisa matar. function onKill(cid, target, lastHit) local get = getPlayerStorageValue(cid, strg) if isMonster(target) and getCreatureName(target):lower() == monster:lower() then if get < qtdd then setPlayerStorageValue(cid, strg, (get + 1)) doCreatureSay(cid, 'Voce matou '..get..' orcs ateh agora.', TALKTYPE_ORANGE_1) else setPlayerStorageValue(cid, strg_c, 1) doCreatureSay(cid, msg_completed, TALKTYPE_ORANGE_1) end end return true end function onCombat(cid, target) if getPlayerStorageValue(cid, strg) >= 1 then if isMonster(target) and getCreatureName(target):lower() == monster:lower() then registerCreatureEvent(target, "NPCQuest") end end return true end
Em CreatureScripts.xml as tags abaixo:
<event type="kill" name="NPCQuest" event="script" value="npcquest.lua"/> <event type="combat" name="NPCQuest" event="script" value="npcquest.lua"/>
E em Login.lua, adicione a tag:
registerCreatureEvent(target, "NPCQuest")
Boa sorte.
-
Adriano SwaTT's post in (Resolvido)Habilitar um OnLogout a um Script was marked as the answerEngraçado que nem mexi em Funções, então o erro do END não deveria aparecer agora.
Enfim, veja se isso resolve:
Boa sorte.
-
Adriano SwaTT's post in (Resolvido)[PEDIDO] NPC que dá storage was marked as the answerCrie o arquivo do NPC.xml normalmente e a gosto... e no arquivo lua cole o script abaixo:
Não testei, mas creio que funcione.
Vale lembrar de configurar a storage no começo do script.
local strg = 12130 -- Valor da Storage Boa sorte.
-
Adriano SwaTT's post in (Resolvido)[Dúvida] Existe como deixar a stamina subindo mesmo online? was marked as the answerEstou montando pra ti o script, está funfando, só que a stamina só aparece atualizada quando o player reloga.
Vou fazer uns testes e já posto.
@EDIT'
Vejamos, declare o globalevents.xml:
<globalevent name="stamina" interval="60" event="script" value="stamina.lua"/> E o script chamado stamina.lua na pasta scripts:
local maxstamina = 2520 -- quantidade máxima de Stamina (Não sei se é este valor mesmo) local qtdd = 1 -- quantidade de Stamina é add por minuto local notFight = true -- Só Subir Stamina Quando Não Estiver Caçando ou Lutando. function onThink(cid, interval) for _, name in ipairs(getOnlinePlayers()) do local cid = getPlayerByName(name) local get = getPlayerStamina(cid) if notFight == true and getCreatureCondition(cid, CONDITION_INFIGHT) then return true end if get < maxstamina and isPlayer(cid) then setPlayerStamina(cid, get + qtdd) end end return true end BUG: A Stamina só atualiza quando o player reloga.
Mas creio que isso seja da própria Source, pois inGame a Stamina não costuma subir mesmo.
#Palpite.
Bom, a base está aí, agora só resta algum scripter de verdade resolver este detalhe.
Boa sorte.
-
Adriano SwaTT's post in (Resolvido)Piso que só pode passar de fly,ride ou pokemon was marked as the answerAcusa a mensagem de que "Apenas Pokemons podem passar" mas não teleporta o player para trás?
Não da nenhum erro no Launcher do Server?
Pelo que parece o servidor não está reconhecendo a função "fromPosition".
Que dependendo da versão do seu Servidor, pode ser "fromPos", "lastPosition", "lastPos", etc..
Sendo assim, teste esta abaixo, que pode ser configurada a gosto:
local strg1, strg2, strg3 = 17000, 17001, 63215 -- aqui agora coloque o Storage do Surf que não me forneceu function onStepIn(cid, fromPosition, toPosition) local get1 = getPlayerStorageValue(cid, strg1) local get2 = getPlayerStorageValue(cid, strg2) local get3 = getPlayerStorageValue(cid, strg3) local get_pos = getCreaturePosition(cid) if isPlayer(cid) == true and get1 > 0 or get2 > 0 or get3 > 0 then doPlayerSendTextMessage(cid, 21, "Welcome.") elseif (not isPlayer(cid)) == true then return true else doPlayerSendCancel(cid, "Only Pokemons pass here.") doTeleportThing(cid, {x=get_pos.x, y=get_pos.y+1, z=get_pos.z}) end return true end
Espero que tenha compreendido.
Qualquer dúvida, pode ficar a vontade em perguntar.
Boa sorte.
-
Adriano SwaTT's post in (Resolvido)Ajuda Simples [doPlayerAddMana(cid, -mana)] was marked as the answerGalera, obrigado pelas dicas, mas já encontrei a solução.
Que foi adicionar um "false" a tag, veja como ficou e o porquê:
A solução foi add "false" a tag:
doPlayerAddMana(cid, -mana, false) Pois existe um bool que é confirmado sempre como verdadeiro caso não use o parâmetro indiciado a ele ( 3 ), caso verdadeiro, o script irá executar a removação de mana como combat, ou seja, toda a funcionalidade em relação ao combate será executada, caso falso, ele irá retorna apenas a mudança de mana. - Null (Usuário)
Abraços.
-
Adriano SwaTT's post in (Resolvido)[AJUDA] Ganhar addon com X item no inventário. was marked as the answerEu fiz aqui, está funcionando, porém, estou tentando resolver um possível bug.
Que seria no caso do player por o item, remover e continuar com o addon.
Bom, vou postar o script:
Isto em movements.xml:
<movevent type="Equip" itemid="2195" slot="feet" event="script" value="addon.lua"/> <movevent type="DeEquip" itemid="2195" slot="feet" event="script" value="addon.lua"/> .
Este no arquivo "addon.lua":
Vou tentar arrumar este detalhe que lhe falei, se conseguir edito aqui.
@@- ATUALIZADO NOVAMENTE - EDITADO às 12:21h
O script está com um bug, talvez alguém consiga resolver..
Mas está funcionando da seguinte maneira:
Checa se o player é male ou female para adicionar o respectivo addon.
Checa a cor do outfit que o player está usando, para assim adicionar o addon e continuar com as cores personalizadas do player.
Checa se o player está usando a outfit Citizen, se não estiver, não adiciona o addon.
Quando o player remove o item, ele continua do mesmo jeito que era antes, inclusive as cores.
Bug:
O único bug, é no player female, quando remove o item ela não está ficando com as cores personalizadas de antes.
Quando coloca o item, ela ganha o addon normalmente, continuando com as cores, mas quando remove que fica toda de roupa branca.
Fora isso, está funcionando perfeitamente.
Faça bom aproveito.
Boa sorte.
-
Adriano SwaTT's post in (Resolvido)[Pedido] Como criar runa de mana,hp e sd was marked as the answerOk, faça os passos da Mana Rune, usando outra ID de runa, e dentro do Arquivo.lua, cole o código abaixo.
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, 1) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0, 1100, 0, 1100) function onCastSpell(cid, var) doSendAnimatedText(getPlayerPosition(cid), "life", math.random(1, 255)) return doCombat(cid, combat, var) end
Boa sorte.
Qualquer coisa, poste aqui para solucionarmos juntos.
-
Adriano SwaTT's post in (Resolvido)[Pedido] hp e mana inicial was marked as the answerIsso é simples...
Basta ir na pasta "Utilitários" de seu OTServer e abrir o programa SQLStúdio, logo após, abra o arquivo dos players de seu server...
geralmente arquivo com esta extensão "nome_do_arquivo.s3db"...
Caso nunca tenha feito isso, siga os passos abaixo:
Clique em Add Database e abra o arquivo ".s3db" do seu server....
Em seguida, abra a lista à esquerda "tables", irá aparecer várias "sublistas", então dê dois cliques em "players",
na janela grande ao lado direito irá aparecer algumas configurações...
porém pode notar que logo acima estará selecionado a aba "Structure", então clique na aba ao lado direito dela... nomeada de "Data", então verá a lista dos personagens de seu OTServer.
Então você altera as configurações do arquivo nomeado de "Account Manager", ou seja, o jeito que ele ficar configurado aí pelo SqlStudio, é o jeito que o novo player criado irá nascer.
Espero ter ajudado, quaisquer dúvidas, poste aqui para tentarmos solucionar'
#Poste também o resultado, se funcionou'