assassin 0 #1 Postado 2 Dezembro, 2010 (editado) -Autor: eu -Script: npcvip -Testado em: TFS 0.4.a0 primeira mente porque tem muita gente procurando um desse esse npc não é de modelo de ot antigo 8.1 e sim do novo sistema ele vende vip, 5 dias por 25k ai vai o script espero ajudar alguem...: __________________________________________________________________________ vá na pasta ~~data/npc... e crie um arquivo [vip seller.xml] e coloqe isso dentro: <?xml version="1.0" encoding="UTF-8"?><npc name="Vip Seller" script="data/npc/scripts/npcvip.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="160" head="115" body="2" legs="2" feet="115" addons="3"/> <parameters> <parameter key="message_greet" value="Welcome to my little shop, adventurer |PLAYERNAME|. say {VIP} to buy a vip"/> <parameter key="message_farewell" value="Bye, bye, |PLAYERNAME|."/> <parameter key="module_keywords" value="1" /> </parameters> </npc> em seguida crie um arquivo [npcvip.lua] na pasta ~~data/npc/scripts/... e coloque isso dentro 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 if msgcontains(msg, 'vip') then selfSay('you really want, to buy an 5 DAYS VIP ???. talk {YES}', cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if msgcontains(msg, 'yes') then if pay(cid,25000) then vip.addVipByAccount(getPlayerAccount(cid) ,432000) selfSay('Thank You for contributing Now you can access the VIP areas, are in a teleport in the temple.') else selfSay('Sorry, you don\'t have enough money.') end end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok then.', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Editado 2 Dezembro, 2010 por assassin Compartilhar este post Link para o post
Oneshot 24 #2 Postado 2 Dezembro, 2010 (editado) Aprovado e Movido Editado 14 Dezembro, 2010 por Garou Compartilhar este post Link para o post
FenixAdm 0 #3 Postado 19 Dezembro, 2010 como configura, me manda mensagem privada por favor..quero saber como configurar os dias e o preço por dias Compartilhar este post Link para o post
Criticoo 4 #4 Postado 25 Dezembro, 2010 (editado) tenta assim amigo: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 local talkState = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local p = 5000 -- preço da vip por dia if msgcontains(msg, "vip") then selfSay("Você deseja comprar quantos dias de vip?", cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if getNumber(msg) < 365 then n = getNumber(msg) if n ~= 0 then if getPlayerMoney(cid) > p*n then selfSay('Você deseja mesmo comprar {'..n..'} dias de Vip account por {'..n*(p)..'} gold coins {yes}?', cid) talkState[talkUser] = 2 else selfSay('Desculpe, você não possue dinheiro suficiente para comprar {'..n..'} dias de vip account.', cid) talkState[talkUser] = 0 end else selfSay('Escolha um numero maior que 0.', cid) talkState[talkUser] = 0 end else selfSay('Você não pode ter mais de 365 dias de vip account.', cid) talkState[talkUser] = 0 end elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then if doPlayerRemoveMoney(cid, p*n) == TRUE then vip.addVipByAccount(getPlayerAccount(cid) ,vip.getDays(n)) selfSay('From now, you are vip!', cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) else selfSay('Desculpe, você não possue dinheiro suficiente para comprar dias de vip account.', cid) talkState[talkUser] = 0 end elseif msg == "no" and talkState[talkUser] >= 1 then selfSay("Then not", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) function getNumber(txt) x = string.gsub(txt,"%a","") x = tonumber(x) if x ~= nill and x > 0 then return x else return 0 end end Editado 24 Janeiro, 2011 por Mickfern Compartilhar este post Link para o post
oloku 0 #5 Postado 29 Dezembro, 2010 legal, mais eu tenho uma duvida. Tem como ele vender a vip nao por golds ou kks,mais sim por COINS?? Compartilhar este post Link para o post
Criticoo 4 #6 Postado 29 Dezembro, 2010 tem sim,no caso a gente usaria de vez da função "getPlayerMoney(cid)" usariamos "getPlayerItemCount(cid, coin_id)" Compartilhar este post Link para o post
dyego2008 0 #7 Postado 11 Janeiro, 2011 bom eu queria mudar inves de golden coins ou crystais, por coins que eu criei onde eu mudaria o id das coins? Compartilhar este post Link para o post
Criticoo 4 #8 Postado 13 Janeiro, 2011 (editado) ta ai: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 local talkState = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local id_coin = 2157 local p = 1 -- preço da vip por dia em coins if msgcontains(msg, "vip") then selfSay("Você deseja comprar quantos dias de vip?", cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if getNumber(msg) < 365 then n = getNumber(msg) if n ~= 0 then if getPlayerItemCount(cid, id_coin) >= p*n then selfSay('Você deseja mesmo comprar {'..n..'} dias de Vip account por {'..n*(p)..'} ' .. getItemNameById(id_coin) .. ' {yes}?', cid) talkState[talkUser] = 2 else selfSay('Desculpe, você não possui ' .. getItemNameById(id_coin) .. ' suficiente para comprar {'..n..'} dias de vip account.', cid) talkState[talkUser] = 0 end else selfSay('Escolha um numero maior que 0.', cid) talkState[talkUser] = 0 end else selfSay('Você não pode ter mais de 365 dias de vip account.', cid) talkState[talkUser] = 0 end elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then if doPlayerRemoveItem(cid, id_coin, n*(p)) == TRUE then vip.addVipByAccount(getPlayerAccount(cid) ,vip.getDays(n)) selfSay('From now, you are vip!', cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) else selfSay('Desculpe, você não possui ' .. getItemNameById(id_coin) .. ' suficiente para comprar dias de vip account.', cid) talkState[talkUser] = 0 end elseif msg == "no" and talkState[talkUser] >= 1 then selfSay("Then not", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) function getNumber(txt) x = string.gsub(txt,"%a","") x = tonumber(x) if x ~= nill and x > 0 then return x else return 0 end end Editado 24 Janeiro, 2011 por Mickfern Compartilhar este post Link para o post
ruanbaron 0 #9 Postado 18 Janeiro, 2011 Obrigado Critico você resolveu vários problemas em 1 Topico .. mim ajudou bastante ...... =) Compartilhar este post Link para o post
timaoga 0 #10 Postado 1 Fevereiro, 2011 como eu arrumo pra q o player compre vip e conssiga entra em um lugar para i na city vip Compartilhar este post Link para o post
CrA 0 #11 Postado 18 Fevereiro, 2011 como eu arrumo pra q o player compre vip e conssiga entra em um lugar para i na city vip a mesma duvida que a minha Compartilhar este post Link para o post
Criticoo 4 #12 Postado 18 Fevereiro, 2011 Vocês terão que fazer um Tile ou uma door que só passe jogadores que compraram vip com o npc. Compartilhar este post Link para o post
catecoteca 0 #13 Postado 29 Março, 2012 No caso o OTserv que eu uso, tem area VIP só não tem comandos para add vip, ai configurei esse sistema so que não consigo passar na porta... como faço para configurar Compartilhar este post Link para o post
lordescrezov 0 #14 Postado 11 Junho, 2012 tem como vender invez de gold ou coins, os premium points vendidos no site??? Compartilhar este post Link para o post