-
Total de itens
631 -
Registro em
-
Última visita
-
Dias Ganhos
13
Tudo que jhon992 postou
-
<event type="think" name="Idle2" event="script" value="nomedoscript.lua"/> Em creaturescripts/scripts/login.lua, antes do último return true cole a tag: registerCreatureEvent(cid, "Idle2")
-
Pra que esse script monstruoso? ahsudas vai em data/creaturescripts/scripts, duplica um arquivo e nomeia para "demonicgain" sem as aspas e nele cole: function onKill(cid, target, lastHit) local itemid = 1234 -- id das demonic local quant = 5 -- quantidade de demonic if (isPlayer(target) == true) then doPlayerAddItem(cid, itemid, quant) end return TRUE end Agora em data/creaturescripts/creaturescripts.xml cole a tag: <event type="kill" name="DemonicGain" event="script" value="demonicgain.lua"/> E por último abra data/creaturescripts/scripts/login.lua e cole antes do último return true, isso: registerCreatureEvent(cid, "DemonicGain")
-
[Talkactions] Preciso De !promotion Personalizado
tópico respondeu ao Leandrinhow de jhon992 em Lixeira Pública
Vai em data/talkactions/scritps e duplica um arquivo, e renomeia para "newpromotion" sem as aspas e nele cole: function onSay(cid, words, param, channel) if (getPlayerPromotionLevel(cid) > 0 and param == "days") then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. math.floor((getPlayerStorageValue(cid, 403010) - os.time())/(24 * 60 * 60)) .." dias de VIP restantes.") return TRUE end local storageNeed = 1234 -- storage que precisa para executar o script. local money = 500000 -- dinheiro em gps local days = 30 -- dias que serão adicionados time = getPlayerStorageValue(cid, 403010) + (days * 24 * 60 * 60) if (getPlayerPromotionLevel(cid) > 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua promote vip ainda não acabou!") return TRUE elseif (getPlayerStorageValue(cid, storageNeed) <= 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você presica ser vip!") return TRUE elseif (doPlayerRemoveMoney(cid, money)) then doPlayerSetVocation(cid,getPlayerVocation(cid)+4) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você foi promovido!") setPlayerStorageValue(cid, 403010, time) doSendMagicEffect(getPlayerPosition(cid), math.random(28,30)) end return TRUE end Agora em talkactions.xml cole a tag: <talkaction words="!promotion" event="script" value="newpromotion.lua"/> Vamos fazer a parte para voltar a vocação sem promotion quando acabar os dias agora. Vai em data/creaturescripts/scripts, duplica um arquivo e nomeia para "promotioncheck" sem as aspas e nele cole: function onLogin(cid) if (math.floor((getPlayerStorageValue(cid, 403010) - os.time())/(24 * 60 * 60)) <= 0 and getPlayerPromotionLevel(cid) > 0) then doPlayerSetVocation(cid,getPlayerVocation(cid)-4) end return TRUE end Por fim, em creaturescripts.xml cole a tag: <event type="login" name="CheckPromo" event="script" value="promotioncheck.lua"/> ---------------------------------------------------------- Não esquece de configurar o newpromotion como você desejar, e os comandos são: !promotion -- para adiquirir !promotion days -- para ver dias restantes Obs: nem testei, caso não funcione me diga. -
[Actions] Colocando Item Inifinito Para Acabar
tópico respondeu ao kelvinvictor de jhon992 em Lixeira Pública
Claro que sim usa "doRemoveItem(item.uid, 1)". function onUse(cid, topos, item, item2, frompos) local nonremskulls = {red = SKULL_RED, white = SKULL_WHITE, black = SKULL_BLACK} if isInArray(nonremskulls, getPlayerSkullType(cid)) then doPlayerSendCancel(cid,"Você não pode remover o seus frags e seus skulls.") doSendMagicEffect(getPlayerPosition(cid), 2) else db.executeQuery("UPDATE `killers` SET `unjustified` = 0 WHERE `id` IN (SELECT `kill_id` FROM `player_killers` WHERE `player_id` = " .. getPlayerGUID(cid) .. ")") doCreatureSetSkullType(cid,0) doCreatureSay(cid,"Seus frags e skulls foram removidos!",19) doSendMagicEffect(getPlayerPosition(cid), 26) doRemoveItem(item.uid, 1) return true end return true end E não podia da o "return" antes de remover o item. -
@XFkyx, onde você colocou "uid" não seria "cid".
-
vai em data/creaturescripts/scripts/ duplica um arquivo e nomeia pra "createffect" e nele cola: function onLogin(cid) if getPlayerLevel(cid)>= 500 then addEvent(creatEffect(cid), 1000, cid) end return TRUE end function creatEffect(cid) if (isPlayer) then local effect = 30 -- efeito doSendMagicEffect(getPlayerPosition(cid), effect) addEvent(creatEffect(cid), 1000, cid) end end Agora no creaturescripts.xml cola a tag: <event type="login" name="createffect" event="script" value="createffect.lua"/> Não precisa registrar nada no arquivo login.lua, pq esse script ja é do tipo onLogin. Obs: Nem testei ele, qualquer erro me fala.
-
Aqui funcionou perfeitamente. =/
-
Um geito seria, quando o player tivesse nesse determinado tile, adiciona-se um storage nele. Sóh que dae, em todos os scripts de magias de heal e potions teria que fazer uma verificação de storage.
-
em movements/script, duplica um arquiv e nomeia para "helmetTrans" sem as aspas e nele cole: local condition = createConditionObject(CONDITION_OUTFIT) setConditionParam(condition, CONDITION_PARAM_TICKS, -1) addOutfitCondition(condition, {lookType = 230}) -- 230, toque pelo outfit desejado function onEquip(cid, item, slot) doAddCondition(cid, condition) return TRUE end function onDeEquip(cid, item, slot) doRemoveCondition(cid, CONDITION_OUTFIT) return TRUE end Agora em movements.xml cole a tag: <movevent type="Equip" itemid="7901" slot="head" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="7901" slot="head" event="function" value="onDeEquipItem"/>
-
em actions/scripts duplica um arquivo e nomeia para "questItens" sem as aspas e nele cole: function onUse(cid, item, fromPosition, itemEx, toPosition) local itensId = {1234,5678,9876,5443,2212} -- coloque os id's dos itens local effect = 30 -- efeito que aparecera no player if (getPlayerStorageValue(cid, 35369) <= 0) then for i=1,#itensId do doPlayerAddItem(cid, tonumber(itensId[i]), 1) end doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Parabéns, você completou a quest!") doSendMagicEffect(getPlayerPosition(cid), effect) setPlayerStorageValue(cid, 35369, 1) else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você ja completou essa quest!") end return TRUE end Agora em actions.xml cole a tag: <action actionid="2345" event="script" value="questItens.lua"/> E por último com seu Map Editor, coloque o actionid no bu desejado!
-
Òtimo projeto, to na equipe. E esta indo bem o projeto presando oque tem mais importante nos MMORPG's e que vem sumindo aos poucos, o puro RPG! Com muita aventura, dinamismo e envolvendo sempre o jogador. Projeto andando a todo vapor! Fiquem ligado a cada coisa nova que desenvolvemos será postado aqui ou no site: Shadow RPG! E estamos sempre abertos para criticas e sugestões, então opnem!
- 77 respostas
-
- onde o rpg é levado a sério.
- otserv
- (e 2 mais)
-
Se as funções que estão no codigo estao certas, assim deve funcionar: function onLogin(cid) if getGlobalStorageValue(getPlayerAccountId(cid)) <= 0 then setGlobalStorageValue(getPlayerAccountId(cid), 1) id = tonumber(2) or 1 vip.addVipByAccount(getPlayerAccount(cid) ,vip.getDays(id)) end return true end
-
Deu uma arrumada minima e uma organizada: function onSay(cid, words, param) local vip = "yes" -- somente vip players poderam usar o comando? ("yes" or "no") local storage = 13540 -- Storage Id da sua vip account caso for usar somente vips if (vip == "yes") and getPlayerStorageValue(cid, storage) <= 0 then doPlayerSendCancel(cid,"Você não possui uma conta Vip.") return TRUE end if (doPlayerRemoveItem(cid,11192,3000)) then doPlayerAddItem(cid,iddoshield,1) -- coloque id do shield aqui doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MORTAREA) doCreatureSay(cid, "Loucura Loucura", TALKTYPE_ORANGE_1) else doPlayerSendCancel(cid, 'You do not have 3000 vip coins.') doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FLAMEAREA) end return TRUE end Créditos pro @Zmovir.
-
ou if (math.random(0,100) >= 80) then doPlayerSendCancel(cid, "You failed to heal the poison") Quando aparecer algum erro no script que tiver fazendo pro shadow, manda duvida pro meu inbox.
-
asuhdsauhda, esqueci de arrumar a funçãozinha de adiciona o item, to ficando fraco nisso. O script do vod éh melhor em desempenho, usa ele.
-
[Pedido] Coração Dentro Do Corpo De Um Player Morto
tópico respondeu ao thonynunes de jhon992 em Lixeira Pública
coloca: <event type="death" name="Heart" script="heart.lua"/> E no script "login.lua" que esta em /scripts, antes do ultimo return true, coloca a tag: registerCreatureEvent(cid, "Heart") -
[Pedido] Coração Dentro Do Corpo De Um Player Morto
tópico respondeu ao thonynunes de jhon992 em Lixeira Pública
tenta assim: function onDeath(cid, corpse, killer) loot = 5943 -- id do coração if isPlayer(killer) then item = doPlayerAddItem(corpse,loot,1) doSetItemSpecialDescription(item,"This is the heart of "..getPlayerName(cid).." killed at Level "..getPlayerLevel(cid).." by "..getPlayerName(killer)..".") setItemName(item, ""..getPlayerName(cid).."\'s Heart") doPlayerSendTextMessage(lastHitKiller, MESSAGE_STATUS_CONSOLE_ORANGE, "You Killed " .. getCreatureName(cid) .. ".") end return TRUE end Obs: Nem testei. Muda a tag no creaturescripts.xml no lugar de "preparedeath" mude apenas para "death". -
Vai e, data/movements/scripts duplica um arquivo nomeie para "viptile" sem as aspas e cole o script do Vodkart. Agora em movements.xml cole a tag: <movevent type="StepIn" actionid="20302" event="script" value="tilevip.lua"/> E com seu Mapa Editor, coloque o actionid 20302 no tile desejado.
-
http://www.xtibia.com/forum/topic/150604-matar-player-e-tirar-coracao/
- 2 respostas
-
- mortes
- perder coraçao ao morrer
- (e 3 mais)
-
function onStepIn(cid, item, pos) local itemID = 1234 -- coloque id do item if (getPlayerStorageValue(cid, 203045) <= 0) then doPlayerAddItem(cid, itemid, 1) setPlayerStorageValue(cid, 203045, 1) else doPlayerRemoveItem(cid, itemID, 1) setPlayerStorageValue(cid, 203045, 0) end return TRUE end
-
[Patrimônio XTibia] Sua última Foto - Mapping
tópico respondeu ao Feyzer de jhon992 em Mapping Show-Off
Gostei do underwater Anne, tais ficando boa nisso! -
Isso que era simples néh, sahuda. Agora vai funcionar, testa com um char que tu n fez ainda. function onAdvance(cid, oldLevel, newLevel) local pid = getPlayerGUID(cid) if (getPlayerLevel(cid) == 12 and getPlayerStorageValue(cid, 102089) <= 0) then if (getPlayerVocation(cid) == 4) then setPlayerStorageValue(cid, 102089, 1) local bp = doPlayerAddItem(cid, 1988, 1) doAddContainerItem(bp, 2395, 1) doAddContainerItem(bp, 2195, 1) doAddContainerItem(bp, 2519, 1) doAddContainerItem(bp, 2491, 1) doAddContainerItem(bp, 2488, 1) doAddContainerItem(bp, 2487, 1) doRemoveCreature(cid) db.executeQuery("UPDATE `player_skills` SET `value` = ".. 20 .." WHERE `player_id` = ".. pid .. " and `skillid` = ".. 5 ..";") db.executeQuery("UPDATE `player_skills` SET `value` = ".. 20 .." WHERE `player_id` = ".. pid .. " and `skillid` = ".. 3 ..";") db.executeQuery("UPDATE `player_skills` SET `value` = ".. 20 .." WHERE `player_id` = ".. pid .. " and `skillid` = ".. 1 ..";") db.executeQuery("UPDATE `player_skills` SET `value` = ".. 20 .." WHERE `player_id` = ".. pid .. " and `skillid` = ".. 2 ..";") return TRUE end if (getPlayerVocation(cid) == 3) then setPlayerStorageValue(cid, 102089, 1) local bp2 = doPlayerAddItem(cid, 1988, 1) doAddContainerItem(bp2, 8891, 1) doAddContainerItem(bp2, 2195, 1) doAddContainerItem(bp2, 8851, 1) doAddContainerItem(bp2, 6529, 1) doAddContainerItem(bp2, 2470, 1) doAddContainerItem(bp2, 2471, 1) doAddContainerItem(bp2, 7367, 1) doRemoveCreature(cid) db.executeQuery("UPDATE `player_skills` SET `value` = ".. 20 .." WHERE `player_id` = ".. pid .. " and `skillid` = ".. 4 ..";") db.executeQuery("UPDATE `player_skills` SET `value` = ".. 20 .." WHERE `player_id` = ".. pid .. " and `skillid` = ".. 5 ..";") return TRUE end if (getPlayerVocation(cid) == 1 or getPlayerVocation(cid) == 2) then setPlayerStorageValue(cid, 102089, 1) local bp3 = doPlayerAddItem(cid, 1988, 1) if (getPlayerVocation(cid) == 1) then doAddContainerItem(bp3, 2188, 1) doAddContainerItem(bp3, 2195, 1) doAddContainerItem(bp3, 7730, 1) doAddContainerItem(bp3, 2656, 1) doAddContainerItem(bp3, 2499, 1) else doAddContainerItem(bp3, 2185, 1) doAddContainerItem(bp3, 2195, 1) doAddContainerItem(bp3, 7730, 1) doAddContainerItem(bp3, 2656, 1) doAddContainerItem(bp3, 2499, 1) end doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `maglevel` = " .. 20 .. " WHERE `id` = "..pid) return TRUE end end if (getPlayerLevel(cid) == 200 and getPlayerStorageValue(cid, 102090) <= 0) then if (getPlayerVocation(cid) == 1) then doPlayerSetVocation(cid, getPlayerVocation(cid)+4) setPlayerStorageValue(cid, 102090, 1) doRemoveCreature(cid) return TRUE elseif (getPlayerVocation(cid) == 2) then doPlayerSetVocation(cid, getPlayerVocation(cid)+4) setPlayerStorageValue(cid, 102090, 1) doRemoveCreature(cid) return TRUE elseif (getPlayerVocation(cid) == 3) then doPlayerSetVocation(cid, getPlayerVocation(cid)+4) setPlayerStorageValue(cid, 102090, 1) doRemoveCreature(cid) return TRUE else doPlayerSetVocation(cid, getPlayerVocation(cid)+4) setPlayerStorageValue(cid, 102090, 1) doRemoveCreature(cid) return TRUE end end return TRUE end
-
Bem simples mesmo, só pra galera iniciante ter o básico de forma simples, sem precisar ler e estudar centenas de linhas. E com o tempo e surgimento de algumas dúvidas eu edito o post.
- 16 respostas
-
- creaturescripts tutorial
- otserv
- (e 2 mais)
-
Tutorial Básico sobre CreatureScripts CreatureScripts = São scripts que serão ativados após uma determinada ação criada pelo monstro ou personagem. Essas ações são determinadas como funções. Existem varias funções utilizadas para a criação de creaturescripts e estas são: onDeath(cid, corpse, killer)-- que é executada ao morrer. onPrepareDeath(cid, lastHitKiller, mostDamageKiller) -- semelhante a onDeath. onAttack(cid, target) -- executa ao atacar. onCombat(cid, target) -- semelhante ao onAttack. onLogin(cid) -- executa ao logar. onLook(cid, thing, position, lookDistance) -- executa ao dar look. onAdvance(cid, skill, oldLevel, newLevel) -- executa ao upar skills/levels. onStatsChange(cid, attacker, type, combat, value) -- executa ao perder ou ganhar life/mana/condições. onLogout(cid) -- executa ao deslogar. onKill(cid, target, lastHit) -- executa ao matar. onThink(cid, interval) -- executa em determinado tempo. onJoinChannel(cid, channelId, users) -- executa ao entrar em um chat. onReceiveMail(cid, sender, item, openBox) -- executa ao receber um parcel/carta. onReportBug(cid, comment) -- executa ao reportar bug. Para criar esse tipo de script, primeiramente vai na pasta data/creaturescripts/scripts e duplica um arquivo e salve com "nomedesejado"; Agora você vai determinar que função você vai precisar para criação do seu script. Para exemplo vou usar a função "onAdvance"(ao upar). Neste exemplo, quando o player upar level 100 ele irá ganhar 1kk: 1 function onAdvance(cid, skill, oldLevel, newLevel) 2 if (getPlayerLevel(cid) == 100) then 3 doPlayerAddItem(cid, 2160, 100) 4 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabéns, você ganhou 1kk por atingir level 100!") 5 doSendMagicEffect(getCreaturePosition(cid), 30) 6 end 7 return true 8 end Numerei as linhas para melhor entendimento, nos seus scripts vocês não devem numerar. linha 1 = Inicio da função onAdvance, essa linha recebe algumas informações do player que upou, como seu cid, seus skills o velho level e o novo level. Obs: cid = creature id, numero de identificação do player/monstro. linha 2 = Inicia-se um if onde verifica se o level do player é igual a 100. Se for verdadeiro, o script executa as linhas 3,4 e 5, senão pula direto a linha 6. linha 3 = Adiciona 100 itens com o id 2160 ao player. linha 4 = Manda uma mensagem parabenizando o player. linha 5 = Solta o efeito de numero 30, na posição em que o player esta. linha 6 = Finaliza a verificação do if. linha 7 = Retorna verdadeiro. Obs: sempre é necessario ela linha no final de seu código. linha 8 = Finaliza a função onAdvance. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Por fim para funcionamento do seu script é necessario adicionar 2 tags: 1º- No "data/creaturescripts/creaturescripts.xml" 2º- No arquivo "data/creaturescripts/scripts/login.lua", Obs: se o script que você for fazer for de função onLogin, não precisa adicionar a segunda tag. 1º Tag: Vai em data/creaturescripts/creaturescripts.xml e cole a tag: <event type="advance" name="QualquerNome" event="script" value="nomedesejado.lua"/> O type="" , será o nome da função de seu script após a palavra "on" e sempre tudo em minusculo. O name="", use qualquer nome porem esse nome vai ser usado para registrar no script onLogin na tag2. O value="", é o nome com qual você salvou seu script. Agora em data/creaturescripts/scripts/login.lua, sempre antes do último return true: registerCreatureEvent(cid, "QualquerNome") QualquerNome é o name que você adicionou na tag1 do creaturescripts.xml. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Acho que é isso aew, espero ter ajudado a galera que esta iniciando. Dica para criação de scripts: Para melhor edição e organização use Notepad++: http://www.baixaki.c...ad/notepad-.htm Sempre usar uma lista de funções como apoio: http://www.xtibia.co...sta-de-funcoes/ E sempre pesquise por scripts prontos e tutoriais para ter uma base.
- 16 respostas
-
- creaturescripts tutorial
- otserv
- (e 2 mais)
-
http://www.xtibia.com/forum/topic/137298-dev-c-como-compilar-um-otserv/ http://www.xtibia.com/forum/topic/145300-c-compilando-um-otserv/ Descompilar o executavel creio que nem tem como. Vais ter que baixar as sources e fazer um executavel novo, procura no XTibia que tem varios tutoriais, e tem esses aew em cima.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.