Ir para conteúdo

Kydrai

Visconde
  • Total de itens

    250
  • Registro em

  • Última visita

  • Dias Ganhos

    14

Tudo que Kydrai postou

  1. Kydrai

    [Sugestão]

    Ja foi resolvido.
  2. Só pra responder a pergunta: getPlayerStorageValue = pega o valor do storage (5600), se não existir é igual a -1. setPlayerStorageValue = adiciona um valor ao storage (5600). Exemplo: if getPlayerStorageValue(cid,5600) == -1 then Se StorageValue(5600) for igual a -1. setPlayerStorageValue(cid,5600,1) Muda o StorageValue(5600) para 1. Assim a proxima vez que abrir o baú o if será falso (diferete de -1)
  3. Erro besta: Primeiro aqui: Devia ser: Depois aqui: Devia ser: E mais uma coisa, vc não usou setPlayerStorageValue. Assim seu player repete a quest o quanto quise.
  4. Na verdade tem um script, do creature events, vc pode procurar nos tutoriais de script. Ele faz quando o player logar pela primeira vez adicionar os itens iniciais. um link: http://www.xtibia.com/forum/Script-Onlogin-t113648.html
  5. Que maldade O bom é que vc provavelmente vc não irá cometer o msm erro novamente... O projeto de vcs vai ficar bom, só tem que tomar cuidado para não colocar muita gente e dps perde o controle. Eu atualmente to estudando programação, mas só sei o básico, ainda não entendo muito a distro. Então boa sorte ae pro pessoal e tomara que o projeto va pra frente msm.
  6. Procura na area de scripts, eu vi esse code em algum lugar, se não achar faz um pedido. Basicamente é só ler o sql, eu não to no meu pc agora, então nem da pra ver.
  7. O jeito é salvar em determinados horarios, colocar um "auto-delete" pra contas inativas. Eu nem sei como funciona o save, mas acredito que seja lento msm.
  8. deve estar com a vocação errada, verifica no sqlite se for o caso em players>vocation
  9. Eu achei a idéia interessante. Eu tava estudando algumas coisas novas em c++ sobre manipulação de memória pra saber como funcianavam os ips changers ai pensei nisso tbm. Mas não sei como funcionaria isso, tenho que pesquisar, ainda so iniciante em programação.
  10. Kydrai

    [resolvido]

    Ah, na actions.xml <action itemid="2148" event="script" value="other/changegold.lua"/> <action itemid="2152" event="script" value="other/changegold.lua"/> <action itemid="2160" event="script" value="other/changegold.lua"/> <action itemid="ID_DA_MOEDA" event="script" value="changegold.lua"/> Procura algo parecido e põe a 4ª linha
  11. Acho que vc não ta abrindo certo, abre com o Bloco de Notas, vc deve ta abrindo com o iexplorer.
  12. Kydrai

    [resolvido]

    Não entendi direito, olha um exemplo para trocar 100 crystal coins por 1 moeda: No lugar de: elseif item.itemid == ITEM_CRYSTAL_COIN then doChangeTypeItem(item.uid, item.type - 1) doPlayerAddItem(cid, ITEM_PLATINUM_COIN, ITEMCOUNT_MAX) doSendAnimatedText(fromPosition, "$$$", TEXTCOLOR_PLATINUMBLUE) Coloca: --Troca 100 crystal coins por 1 moeda elseif item.itemid == ITEM_CRYSTAL_COIN and item.type == ITEMCOUNT_MAX then doChangeTypeItem(item.uid, item.type - item.type) doPlayerAddItem(cid, MOEDA, 1) doSendAnimatedText(fromPosition, "$$$", TEXTCOLOR_TEAL) --Troca 1 crystal coins por 100 platinum coins elseif item.itemid == ITEM_CRYSTAL_COIN and item.type < ITEMCOUNT_MAX then doChangeTypeItem(item.uid, item.type - 1) doPlayerAddItem(cid, ITEM_PLATINUM_COIN, ITEMCOUNT_MAX) doSendAnimatedText(fromPosition, "$$$", TEXTCOLOR_YELLOW) --Troca 1 moeda coins por 100 crystal coins elseif item.itemid == MOEDA then doChangeTypeItem(item.uid, item.type - 1) doPlayerAddItem(cid, ITEM_CRYSTAL_COIN, ITEMCOUNT_MAX) doSendAnimatedText(fromPosition, "$$$", TEXTCOLOR_YELLOW) ITEM_CRYSTAL_COIN >> Id da crystal (2160) ITEMCOUNT_MAX >> Quantidade maxima no slot (100) MOEDA >> Id da moeda ITEM_PLATINUM_COIN >> Id da platinum(2152) E é só mudar as cores do $$$ que fica pronto. Acho que ta tudo certo oq eu coloquei
  13. Sobre a moeda virtual, é que nem o Daniel disse, tem que ser tudo livre. Embora essa moeda pudesse incentivar alguns aqui no fórum (ou não). Agora, sou a favor de poder mudar o nome de 6 em 6 meses, não vejo um pq não.
  14. Isso que vc postou não faz sentido. As talkactions variam para cada OT, logo a pessoa não pode excluir a que vem pronta e colar outra qualquer. Camandos como esses não existem: <talkaction words="!masturb" script="masturb.lua" /> <talkaction words="god" script="godslayer.lua" /> <talkaction words="God" script="godslayer2.lua" /> <talkaction words="GOd" script="godslayer3.lua" /> ... Acredito que seu post não sirva pra nada.
  15. Tem uma parte assim: if isPlayer(killer) == TRUE then byPlayer = TRUE end Só colocar a mensagem ai: if isPlayer(killer) == TRUE then byPlayer = TRUE broadcastMessage("" .. assassino .. " Matou " .. vitima .."!", MESSAGE_STATUS_CONSOLE_ORANGE) end E tirar a mensagem no final do script pra não exibir 2 vezes.
  16. Tenta mudar o manamultiplier. Pelo que vi quanto maior for ele mais lerdo fica o ml. Quanto ao skill id que vc mudou pertence ao axe, vc deixou ele mais rapido.
  17. O code ta errado, tem 1 "end" a mais: --Script by Lukinhaztl function onThink(interval, lastExecution) local cor = 22 -- cor 22 é branca local mensagens = {"Mensagem 1", "Mensagem 2", "Mensagem 3", "Mensagem 4" } -- Escreva entre as aspas oque vai aparecer doBroadcastMessage(mensagens[math.random(1,table.maxn(mensagens))], cor) return TRUE end No lugar de "table.maxn(mensagens)" seria mais simples "#mensagens", mas as 2 formas servem. Msm assim bom code
  18. Vc usou a function onDeath 2 vezes, mas pelo que vc falou isso deve estar funcionando. Se vc fosse usar o doPlayerAddItem seria assim: doPlayerAddItem(cid, itemid, count, canDropOnMap) Pode por isso dps do: broadcastMessage(""..player.." ["..level.."] acabou de ser morto(a) por "..killername.." ["..levelkiller.."].",19) Fica assim: broadcastMessage(""..player.." ["..level.."] acabou de ser morto(a) por "..killername.." ["..levelkiller.."].",19) doPlayerAddItem(killer, 2160, 10, TRUE) Acho que isso deve dar, se tiver com erro avisa qual o erro que da.
  19. O erro ta aqui: if item.itemid == 1945 and doPlayerRemoveMoney(cid,4000) == 1 then Ao invés de doPlayerRemoveMoney(cid,4000) == 1 coloca doPlayerRemoveMoney(cid,4000) == TRUE O outro erro é o da bp vazia: container = doPlayerAddItem(cid, 2000, 1) Vc usou o comando antes de verficar o dinheiro no if E o código ta gigante, da pra simplifica mais: function onUse(cid, item, frompos, item2, topos) if doPlayerRemoveMoney(cid,4000) == TRUE then container = doPlayerAddItem(cid, 2000, 1) for i=1, 20 do doAddContainerItem(container, 8473, 7) end if(item.itemid == 1945) then doTransformItem(item.uid,item.itemid+1) elseif(item.itemid == 1946) then doTransformItem(item.uid,item.itemid-1) end else doPlayerSendCancel(cid,"Sorry, you don't have enough money!") end return TRUE end
  20. Bom, mas acho que da pra melhorar ainda. Como o Marcryzius disse, colocar uma descrição rapida delas. E seria bom se separasse os tipos (get, do, set, ...) Estilo o tópico do frerety sobre as funções.
  21. É sempre bom manter um padrão na hora de criarmos os scripts. Assim fica muito mais facil e simples. Vou ver se tem algo para ser melhorado no seu artigo. Aproveitando isso, pq é ruim de usar?
  22. if(lastHitKiller ~= FALSE) then if(isPlayer(lastHitKiller) == TRUE) then hitKillerName = getCreatureName(lastHitKiller) else hitKillerName = getCreatureName(lastHitKiller) end Acho que não precisa do "if(isPlayer(lastHitKiller) == TRUE) then", pq ele vai realizar sempre a msm função. if(lastHitKiller ~= FALSE) then hitKillerName = getCreatureName(lastHitKiller) O resto parece bom :smile_positivo:
  23. A linha 29 ta assim: end </FONT></P> <P><FONT color=#007700>function onSay(cid, words, param) Deixa assim: end function onSay(cid, words, param) Ja na linha 93 e 94 ta assim: doPlayerSendTextMessage(isplayer,MESSAGE_STATUS_CONSOLE_ORANGE,getCreatureName(c id) .. ' let you go out from jail! See you later') Devia ser só uma linha: doPlayerSendTextMessage(isplayer,MESSAGE_STATUS_CONSOLE_ORANGE,getCreatureName(cid) .. ' let you go out from jail! See you later')
  24. Poderia falar seu server neh. Testei com monster, falto com player. No TFS 0.3.4(Crying Damson) faz assim, vai em data\creaturescripts\scripts\playerdeath.lua Depois de: if(lastHitKiller ~= FALSE) then if(isPlayer(lastHitKiller) == TRUE) then hitKillerName = getPlayerGUID(lastHitKiller) else hitKillerName = getCreatureName(lastHitKiller) end Adiciona: doBroadcastMessage(" "..getPlayerName(cid).." has been killed by "..hitKillerName..".") Fica assim: if(lastHitKiller ~= FALSE) then if(isPlayer(lastHitKiller) == TRUE) then hitKillerName = getPlayerGUID(lastHitKiller) else hitKillerName = getCreatureName(lastHitKiller) end doBroadcastMessage(" "..getPlayerName(cid).." has been killed by "..hitKillerName..".") Qualquer coisa, se seu OT for outro ve se tem a playerdeath.lua ou uma função parecida e avisa aqui.
  25. Kydrai

    Script De Level

    Eu testei a minha função e vi que tava dando erro, olha a certa: function onAdvance(cid, skill, oldLevel, newLevel) if (newLevel == getPlayerLevel(cid)) and (getPlayerLevel(cid)%50 == 0) then doBroadcastMessage(""..getCreatureName(cid).." esta no level "..getPlayerLevel(cid)..".") end end O erro era que esqueci de colocar o skill na função, ai não funcionava ^^
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...