caotic 393 Postado Junho 13, 2012 Share Postado Junho 13, 2012 Bem eu resolvi criar um pet sytem diferente nomeado "Card sytem" por que considero os pets como cartas de invocar. Na realidade o maior proposito e as funçoes lib que criei porque nelas ficara bem mais facil "se quiser" criar outros sistema relacionados como um por exemplo um npc que da uma card. O sistema foi construido para ediçao facil e mesmo grande e de facil entendimento. Crie um arquivo LUA chamado cardsytem na pasta inicial do seu otserv(onde fica o seu executavel,dlls e config.lua) tab = { ["Bug"] = {"bug", 50001, 1}, ["Troll"] = {"troll", 50002, 40}, ["Demon"] = {"demon", 50003, 80} } Agora vá em lib e crie um arquivo LUA chamado card e coloque isto: function doPlayerStartCards(cid, namecard, pos) dofile("./cardsytem.lua") local n = namecard local monster = tab[n] pk = doSummonCreature(monster[1], pos) doConvinceCreature(cid, pk) return true end function doShowTextDialgListCards(cid, itemid) dofile("./cardsytem.lua") local n = namecard local str = "" str = str .. "Cards :\n\n" for name, tab in pairs(tab) do str = str..name.."\n" end str = str .. "" doShowTextDialog(cid, itemid, str) return TRUE end function getPlayerCard(cid, namecard) dofile("./cardsytem.lua") local n = namecard local card = tab[n] local cardname = card[2] local cardnumber = getPlayerStorageValue(cid, cardname) return cardnumber end function doPlayerAddNewCards(cid, namecard) dofile("./cardsytem.lua") local n = namecard local newcard = tab[n] setPlayerStorageValue(cid, newcard[2], 1) return true end function getLevelCard(namecard) dofile("./cardsytem.lua") local n = namecard local newcard = tab[n] local cardlevel = newcard[3] return cardlevel end function getCardprice(namecard) dofile("./cardsytem.lua") local n = namecard local newcard = tab[n] local newcardlevel = newcard[3]*4 return newcardlevel end function getCardId(namecard) dofile("./cardsytem.lua") local n = namecard local newcard = tab[n] local pricecard = newcard[2]-50000 return pricecard end function getPlayerPositionPz(cid) local pz = getTilePzInfo(getCreaturePosition(cid)) return pz end function getCardStorage(namecard) dofile("./cardsytem.lua") local n = namecard local newcard = tab[n] local pricecard = newcard[2] return pricecard end function getExistNameCard(namecard) dofile("./cardsytem.lua") local monster = tab return monster[namecard] end Crie um arquivo Lua em talkactions/scripts chamado Card Coloque isto: local tempo = { exhausted = 1000, storage = 88448 } function onSay(cid, words, param) if not getExistNameCard(param) then doShowTextDialgListCards(cid, 1397) return true end if getPlayerPositionPz(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não e possivel invocar cards em pz") return true end local playerlevelcard = getLevelCard(param) if(getPlayerStorageValue(cid, tempo.storage) > os.time() and getPlayerStorageValue(cid, tempo.storage) < 100+os.time()) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Espere " .. getPlayerStorageValue(cid, tempo.storage) - os.time() .. ' second' .. ((getPlayerStorageValue(cid, tempo.storage) - os.time()) == 1 and "" or "s") .. " para invocar uma nova card.") return true end if #getCreatureSummons(cid) >= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Retire o Summon diga /removecard para invocar outro") return true end if getPlayerLevel(cid) < playerlevelcard then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce precisa de "..playerlevelcard.." de level.") return true end if getPlayerCard(cid, param) == 1 then doPlayerStartCards(cid, param, getThingPos(cid)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce invoco o "..param..".") setPlayerStorageValue(cid, tempo.storage, os.time() + tempo.exhausted) return true end return true end Agora crie um arquivo LUA chamado buycard em talkactions/scripts function onSay(cid, words, param) local playerlevelcard = getLevelCard(param) if not getExistNameCard(param) then doShowTextDialgListCards(cid, 1397) return true end if not (doPlayerRemoveMoney(cid, getCardprice(param)) == TRUE) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce precisa de "..getCardprice(param).." de price.") return true end if getPlayerLevel(cid) < playerlevelcard then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce precisa de "..playerlevelcard.." de level.") return true end doPlayerAddNewCards(cid, param) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sucesso voce comprou a card "..param..".") return true end Na mesma pasta crie outro arquivo Lua chamado removecard e coloque isto function onSay(cid, words, param) local summons = getCreatureSummons(cid) for _, k in ipairs(summons) do doRemoveCreature(k) return true end return true end Agora vá em talkactions e abra talkactions.xml e coloque estas tags: <talkaction words="/invocarcard" event="script" value="card.lua"/> <talkaction words="/removecard" event="script" value="removecard.lua"/> <talkaction words="/buycard" event="script" value="buycard.lua"/> Para usar o sistema e facil Para comprar Cards e so dizer /buycard(Nome da Card) Para Invocar Cards e so dizer /invocarcard(Nome da Card) Para remover Cards e so dizer /removecard -----Configuraçao do sistema--- O sistema e configurado em cardsytem.lua e de facil configuraçao ["Bug"] = {"bug", 50001, 1} Verde(Bug) ----- E o nome da card Vermelho(bug) ------Creature da card que vai ser invocada Cyan(5001) ------ Este numero deve ser sempre aumentado por mais a cada card exemplo nesta e 5001 na debaixo sera 5002 Azul(1) ------- Level Necessario para usar a card ----------------------------Funçoes----------------------------------------- Se voce pretende ultilizar as funçoes para outro sistema ou para o seu propio card sytem bem tanto faz..... Eu vou explicar cada funçao. doPlayerStartCards(cid, namecard, pos) ---- Invoca a card(cid, nome da card, posiçao que sera invocado) doShowTextDialgListCards(cid, itemid) ----Monstra a tabela de Cards em uma Lista(cid, que item aparecera na lista) getPlayerCard(cid, namecard) ---------Verifica se o Player tem a card(cid, nome da card) doPlayerAddNewCards(cid, namecard) ----Adciona uma nova card ao player(cid, nome da card) getLevelCard(namecard) --- Verifica o level da card(nome da card) getCardprice(namecard) ----Verifica dando uma deduçao do preço da Crad(Nome da Card) getCardId(namecard) ------ Verifica o id da card(nome da card) getPlayerPositionPz(cid) -------Verifica se o player esta em pz(cid) getCardStorage(namecard) ------ Verifica a storage da card(Nome da Card) getExistNameCard(namecard) ----- Verifica se existe a Card(Nome da Card) Link para o comentário https://xtibia.com/forum/topic/187930-card-sytem/ Compartilhar em outros sites More sharing options...
jhon992 371 Postado Junho 13, 2012 Share Postado Junho 13, 2012 To sem tempo pra testar, mais parece legal. Parabéns! Rep+, e continue trazendo conteúdo bom para o fórum. Link para o comentário https://xtibia.com/forum/topic/187930-card-sytem/#findComment-1277706 Compartilhar em outros sites More sharing options...
caotic 393 Postado Junho 13, 2012 Autor Share Postado Junho 13, 2012 Vlw jhon Vou logo citando que crei as funçoes lib para serem usadas e recomendo muito voce criar scripts adicionais pois as funçoes são muito faceis. Link para o comentário https://xtibia.com/forum/topic/187930-card-sytem/#findComment-1277717 Compartilhar em outros sites More sharing options...
Leoxtibia 137 Postado Junho 14, 2012 Share Postado Junho 14, 2012 Bom sistema, parece ser legal mesmo ^^ Parabéns aí cara! Rep+ Link para o comentário https://xtibia.com/forum/topic/187930-card-sytem/#findComment-1277832 Compartilhar em outros sites More sharing options...
Vilden 137 Postado Junho 14, 2012 Share Postado Junho 14, 2012 Muito legal, estilo yu-gi-oh? Parece ser um bom conteúdo, rep+. Link para o comentário https://xtibia.com/forum/topic/187930-card-sytem/#findComment-1277875 Compartilhar em outros sites More sharing options...
caotic 393 Postado Junho 14, 2012 Autor Share Postado Junho 14, 2012 Não e bem yu gi oh mais um pet sytem diferente por cards mais não e mal ideia. Com estas funçoes e bastante trabalho da para fazer um sistema parecido com yu gi oh Link para o comentário https://xtibia.com/forum/topic/187930-card-sytem/#findComment-1278307 Compartilhar em outros sites More sharing options...
Vinc 101 Postado Junho 14, 2012 Share Postado Junho 14, 2012 dahorinha,mas seria mais dahora se fosse por um item(que depois alguem poderia criar uma sprite de carta pra ele),dai usa actionid(pra sibolizar qual pet é,e que substituiria o storage) no item ,dai se da use no item sumona o bixo,e se da use denovo, remove ele, e que podese invoca até 5 e fazer as as fusões(tres green dragon of red eyes(drafon) vira um red eyes ultimate green dragon(hydra)) aparte riscada é só zuera mas pra que se iguala tanta veses a mesma coisa desnessesariamente?(em execesso isso só confundi mais) tipo esse local n = namecard local newcard = tab[n] local newcardlevel = newcard[3]*4 return newcardlevel que seria simplesmente return tab[namecard][3]*4 Link para o comentário https://xtibia.com/forum/topic/187930-card-sytem/#findComment-1278478 Compartilhar em outros sites More sharing options...
caotic 393 Postado Junho 14, 2012 Autor Share Postado Junho 14, 2012 So por bobagens gosto de coisas assim. Sei la acho que melhora o visual da funçao ou sei la. Mais então ade yu gi oh e uma boa pensei em desenolver um tabuleiro quando iniciar uma battle mais seria bem chatinho fazer pois teria que um lugar sem arvores e ficaria chato se tivesse arvore removeria ela. Link para o comentário https://xtibia.com/forum/topic/187930-card-sytem/#findComment-1278488 Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Junho 15, 2012 Share Postado Junho 15, 2012 caotic, O código está simples, mas contém vários pequenos erros. Porque você chama o arquivo cardsystem.lua uma vez em cada função? Isso é totalmente desnecessário. Simplesmente use dofile no começo da biblioteca. Link para o comentário https://xtibia.com/forum/topic/187930-card-sytem/#findComment-1278752 Compartilhar em outros sites More sharing options...
caotic 393 Postado Junho 15, 2012 Autor Share Postado Junho 15, 2012 Não sabia pensava quando iniciava uma nova funçao teria que recoloar o dofile pois poderia perder o caminho do direitorio. Obrigado OneShot pela dica. Mais nao traz nennum efeito nocivo ao script. Link para o comentário https://xtibia.com/forum/topic/187930-card-sytem/#findComment-1278788 Compartilhar em outros sites More sharing options...
Vinc 101 Postado Junho 15, 2012 Share Postado Junho 15, 2012 mas se fosse uma arquivo grande o que vc chama por dofile ia pesa muito,mas nesse caso é so uma table,então n vai da lag no sistema. Link para o comentário https://xtibia.com/forum/topic/187930-card-sytem/#findComment-1278818 Compartilhar em outros sites More sharing options...
Posts Recomendados