Ir para conteúdo

rayzinhoxd

Campones
  • Total de itens

    18
  • Registro em

  • Última visita

Histórico de Reputação

  1. Upvote
    rayzinhoxd deu reputação a Roksas em Classic Premium v2   
    » CLASSIC PREMIUM V2 ! «


     
     
     
    Versão Testada: TFS 0.3.6: 8.60
     
    Opa galera, esse é mais um tópico meu, agora de Estagiário :))
    Neste tópico irei apresentar-lhes o Classic Premium v2, que usei algumas coisas de base do Perfect System (by Vodkart), agora contém:
     

    • GOD pode checar quantos Premium Days o player tem, pelo comando /checkdays NOMEDOPLAYER • GOD também pode adicionar Premium Days, pelo comando /addpremium NOME, QUANTIDADE • Temos também o comando /removedays NOME, QUANTIDADE que o GOD poderá fazer. • Além disso, temos mais duas novidades, os comandos: !changender e !removeskull, ambos removem 5 Premium Days do player!
     

     
    » Comandos de GOD
     
    Vamos lá, primeiramente vá na pasta data/talkactions, crie um arquivo chamadopremiumtalk.lua e adicione isso dentro:
     

    function onSay(cid, words, param) local player = getPlayerByName(param) local t = string.explode(param, ",") if words == "/checkdays" then if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.") return true end if not isPlayer(player) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.") return true end return doPlayerPopupFYI(cid, "Player checked have "..getPlayerPremiumDays(player).." days of Premium Account!") end if words == "/addpremium" then local t = string.explode(param, ",") local player = getPlayerByNameWildcard(t[1]) if not tonumber(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true end if(not player)then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.") return true end doPlayerAddPremiumDays(player, tonumber(t[2])) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You has been added "..tonumber(t[2]).." days of Premium Account to the player! ") doRemoveCreature(player) end if words == "/removedays" then local t = string.explode(param, ",") local player = getPlayerByNameWildcard(t[1]) if not tonumber(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true end if(not player)then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.") return true end doPlayerRemovePremiumDays(player, tonumber(t[2])) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You has been removed "..tonumber(t[2]).." Premium Account Days of the player!") end return true end
     
    E no arquivo talkactions.xml adicione a tag que vêm a seguir:

    <talkaction words="/addpremium;/removedays;/checkdays" access="4" event="script" value="premiumtalk.lua"/>
     
    » Premium Door e Premium Scroll
     
    Muito bem, agora na pasta data/actions/scripts, crie um arquivo chamado scroll.lua e adicione isso dentro:
     

    local days_gain = 30 -- Dias que ganham function onUse (cid,item,frompos,item2,topos) if not doRemoveItem(item.uid) then return true end doPlayerAddPremiumDays(cid, days_gain) doSendMagicEffect(getCreaturePosition(cid), 14) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você acaba de ganhar 30 dias de Premium Account, terá áreas exclusivas e 35% a mais de EXP como benefício!") return true end
     
    Crie outro arquivo, mas agora com o nome de premiumdoor.lua e ponha isso dentro:
     

    function onUse(cid, item, frompos, item2, topos) if not isPremium(cid) then doPlayerSendTextMessage(cid,22,"Você precisa ter Premium Account para passar!") return false end doTransformItem(item.uid, item.itemid + 1) doTeleportThing(cid, frompos, true) return true end
     
    Abra o arquivo actions.xml e adicione essas tags:
     

    <action itemid="9004" event="script" value="scroll.lua"/> <action actionid="7779" script="premiumdoor.lua"/>
     
    OBS: Para fazer com que a porta seja para Premiums, no seu Map Editor, adicione a seguinte ACTIONID nela: 7779!
     
    » Classic Premium Tile
     
    Em data/movements/scripts, crie um arquivo chamado premiumtile.lua e adicione isso dentro:
     
    function onStepIn(cid, item, position, fromPosition) if not isPremium(cid) then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Você não tem acesso Premium Account!") doSendMagicEffect(getCreaturePosition(cid), 2) return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Bem Vindo á Área Premium!") return true end  
    Ea tag no arquivo movements.xml coloque:
     
    <movevent type="StepIn" actionid="19456" event="script" value="premiumtile.lua"/>
     
    Para fazer com que apenas Premiums passe pelo piso, adicione a ACTIONID 19456 pelo seu Map Editor no piso!
     
    » Classic Mods
     
    Na pasta do seu OT, vá na pasta mods, crie um arquivo chamado classic_changender.xml e coloque isso dentro:
     

    <?xml version="1.0" encoding="UTF-8"?> <mod name="ChangeSex Classic" version="1.0" author="Roksas" enabled="yes"> <config name="changender_config"><![CDATA[ config = { costPremiumDays = 5 } ]]></config> <talkaction words="!changender" event="buffer"><![CDATA[ domodlib('changender_config') if(getPlayerSex(cid) >= 2) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce nao tem sexo para mudar!") return end if(getPlayerPremiumDays(cid) < config.costPremiumDays) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Desculpe, voce nao tem " .. config.costPremiumDays .. " Premium Days necessarios!") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return end if(getPlayerPremiumDays(cid) < 65535) then doPlayerAddPremiumDays(cid, -config.costPremiumDays) end doPlayerSetSex(cid, getPlayerSex(cid) == PLAYERSEX_FEMALE and PLAYERSEX_MALE or PLAYERSEX_FEMALE) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce mudou seu sexo e isso lhe custou " .. config.costPremiumDays .. " days de Premium Account! Relogue para que faca efeito.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_RED) ]]></talkaction> </mod>
     
    E crie outro arquivo, mas com o nome de classic_removeskull.xml e adicione isso:
     

    <?xml version="1.0" encoding="UTF-8"?> <mod name="Classic Remover" version="1.0" author="Roksas" enabled="yes"> <talkaction words="!removeskull" event="script"><![CDATA[ local noRemove = {SKULL_YELLOW} local playerSkull = getPlayerSkullType(cid) if isInArray(noRemove, playerSkull) then doPlayerSendCancel(cid, "Voce nao pode remover esse tipo de skull.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true elseif playerSkull == SKULL_NONE or getPlayerPremiumDays(cid) < 5 then doPlayerSendCancel(cid, "Voce nao tem skull ou 5 days de Premium Account!") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true else db.executeQuery("UPDATE `killers` SET `unjustified` = 0 WHERE `id` IN (SELECT `kill_id` FROM `player_killers` WHERE `player_id` = " .. getPlayerGUID(cid) .. ")") doPlayerSendTextMessage(cid, 27, "Seus frags,skull e 5 days de Premium Account foram removidos!") doPlayerRemovePremiumDays (cid,5) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_RED) doSendAnimatedText(getPlayerPosition(cid), "POFF!", 180) doCreatureSetSkullType(cid,0) doPlayerSetSkullEnd(cid, 0, playerSkull) end return true ]]></talkaction> </mod>
     
    » Classic Premium Rates
     
    Abra a pasta do seu OT, vá em data/creaturescripts/scripts, adicione um arquivo lá chamado premiumrate.lua e coloque isso dentro dele:
     
    function onLogin(cid) local rate = 1.35 local days = getPlayerPremiumDays(cid) if isPremium(cid) then doPlayerSetExperienceRate(cid, rate) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você tem "..((rate - 1)*100).."% de EXP em vantagem, Ainda lhe restam "..days.." dias de Premium!") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Tornesse Premium e tenha "..((rate - 1)*100).."% a mais de EXP!") end return true end
     
     
    Agora abra o arquivo login.lua na mesma pasta, procure por um trecho mais ou menos assim:
     

    registerCreatureEvent(cid, "kill") registerCreatureEvent(cid, "onPrepareDeath") registerCreatureEvent(cid, "PlayerLogout") registerCreatureEvent(cid, "onPrepareDeath")
     
    Ao encontrar, adicione isso no fim ou no começo ou no meio deles:
     

    registerCreatureEvent(cid, "ExpVip")
     
    Muito bem, agora no arquivo creaturescripts.xml adicione essa tag:
     

    <event type="login" name="ExpVip" script="premiumrate.lua"/>
     
    Explicando: Para configurar as rates procure por esse trecho no script:
     

    local rate = 1.35
     
    O número 35, significa a porcentagem. Ou seja, 35% de Exp Rate em vantagem, ajuste como quiser: 20, 50, 60...
     

    Bom galera, isso foi tudo. Espero que tenham gostado da versão v2 do Classic Premium! Aguardo respostas, sugestões e críticas a respeito! Agradeço Vodkart por algumas funções e bases. Encerrarei com algumas ScreenShoots do meu Sistema! Obrigado e BENÇA )
     
    » SCREENSHOOTS
     

     

     

     


  2. Upvote
    rayzinhoxd recebeu reputação de Alexclusive em Global Server [1.0 ~~ 10.30]   
    espero sim, o tempo que for preciso, tem outra coisa que gostaria de informar... alguns monstros de Gray Island (The Hive), não estão imunes a invisible EX: Crawler , Lady Bug, e Swarmer
     
     
    Decorative Ribbon não ta podendo ser usado para capiturar o dragonling (mount)
     
    E ta podendo logar dois char na mesma conta (pode ser que eu esteja errado por que um dos dois chars que loguei era GM.
     
     
    Tem tbm o Market System... ele estar inoperante, por que estar sem sistema de Bank, acredito que por causa do bug do dinheiro, tem como vc criar um sistema de banco seguro ou fazer com que o market system retire e enviei o dinheiro do dp ou backpack.
  3. Upvote
    rayzinhoxd deu reputação a alissonfgp em Global Server [1.0 ~~ 10.30]   
    tem que usar site compativel com ele, no caso gesior 1.0 ou Znote
     
     
    Baixo do github? eu arrumei esse bug lá , e para os comandos de god funcionar o que nao sao todos, em sua Tabela "ACCOUNT" procura por "TYPE" e coloca 5, em GroupID coloca 3, nao tem como fazer mais nada, nao existe groupid 6.
  4. Upvote
    rayzinhoxd deu reputação a eduardo190696 em Auto Loot   
    CRIADOR : JANO
    Retirado: Outro forum
    Script: Auto Loot *-*
     
    creaturescripts.xml

    <event type="login" name="aloot_reg" event="script" value="aloot.lua"/> <event type="kill" name="aloot_kill" event="script" value="aloot.lua"/>
    creaturescripts/scritps
    aloot.lua

    function onLogin(cid) registerCreatureEvent(cid, "aloot_kill") return true end local stor = 7575 function autoloot(cid, target, pos) local function doStack(cid, itemid, new) local count = getPlayerItemCount(cid, itemid) if (count > 100) then count = count - math.floor(count / 100) * 100 end local newCount = count + new if (count ~= 0) then local find = getPlayerItemById(cid, true, itemid, count).uid if (find > 0) then doRemoveItem(find) else newCount = new end end local item = doCreateItemEx(itemid, newCount) doPlayerAddItemEx(cid, item, true) end local function scanContainer(cid, uid, list) for k = (getContainerSize(uid) - 1), 0, -1 do local tmp = getContainerItem(uid, k) if (isInArray(list, tmp.itemid)) then if isItemStackable(tmp.itemid) and (getPlayerItemCount(cid, tmp.itemid) > 0) then doStack(cid, tmp.itemid, tmp.type) else local item = doCreateItemEx(tmp.itemid, tmp.type) doPlayerAddItemEx(cid, item, true) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Looted ' .. tmp.type .. ' ' .. getItemNameById(tmp.itemid) .. '.') doRemoveItem(tmp.uid) elseif isContainer(tmp.uid) then scanContainer(cid, tmp.uid, list) end end end local items = {} for i = getTileInfo(pos).items, 1, -1 do pos.stackpos = i table.insert(items, getThingFromPos(pos)) end if (#items == 0) then return end local corpse = -1 for _, item in ipairs(items) do local name = getItemName(item.uid):lower() if name:find(target:lower()) then corpse = item.uid break end end if (corpse ~= -1) and isContainer(corpse) then scanContainer(cid, corpse, tostring(getPlayerStorageValue(cid, stor)):gsub('_', ''):explode(',')) end end function onKill(cid, target, lastHit) if not isPlayer(target) then local infos = getPlayerStorageValue(cid, stor) if (infos == -1) then return true end local list = tostring(infos):explode(',') if (#list == 0) then return true end addEvent(autoloot, 150, cid, getCreatureName(target), getCreaturePosition(target)) end return true end
    talkactios.xml

    <talkaction words="/aloot" hide="yes" event="script" value="aloot.lua"/>
     
    Talkaction/scrips

    local stor, limit = 7575, 5 --storage, limit to add. local allow_container = false --empty! not looted with items, atleast for now. function onSay(cid, words, param) local expl = param:explode(':') local action, rst = expl[1], expl[2] if (action:lower() == 'check') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):explode(',') end local txt = 'Autoloot List:\n' if (#list > 0) then for k, id in ipairs(list) do id = id:gsub('_', '') if tonumber(id) then txt = txt .. getItemNameById(tonumber(id)) .. ((k < #list) and '\n' or '') end end else txt = 'Empty' end doPlayerPopupFYI(cid, txt) elseif (action:lower() == 'add') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):gsub('_', ''):explode(',') end if (#list >= limit) then return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.') end local item = tonumber(rst) if not item then item = getItemIdByName(rst, false) if not item then return doPlayerSendCancel(cid, 'not valid item.') end end if not allow_container and isItemContainer(item) then return doPlayerSendCancel(cid, 'this item can not be autolooted.') end local attrs = getItemInfo(item) if not attrs then return doPlayerSendCancel(cid, 'not valid item.') elseif not attrs.movable or not attrs.pickupable then return doPlayerSendCancel(cid, 'this item can not be autolooted.') end if isInArray(list, item) then return doPlayerSendCancel(cid, 'already added.') end table.insert(list, tostring(item)) local new = '' for v, id in ipairs(list) do new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '') end doPlayerSetStorageValue(cid, stor, tostring(new)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< has been added to the autoloot list.') elseif (action:lower() == 'remove') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):gsub('_', ''):explode(',') end if (#list == 0) then return doPlayerSendCancel(cid, 'You dont have any item added.') end if (#list >= limit) then return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.') end local item = tonumber(rst) if not item then item = getItemIdByName(rst, false) if not item then return doPlayerSendCancel(cid, 'not valid item.') end end if not isInArray(list, item) then return doPlayerSendCancel(cid, 'This item is not in the list.') end local new = '' for v, id in ipairs(list) do if (tonumber(id) ~= item) then new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '') end end doPlayerSetStorageValue(cid, stor, tostring(new)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< removed from the autoloot list.') end return true end
     
    Usando
     
    /aloot check
    Cheka a Lista dos Loots
     
    /aloot add:itemid ou nome do item
     
    Exemplo
    /aloot add:worm
    /aloot add:2170
     
    16:42 Item >>worm<< has been added to the autoloot list.
     
    Para remover
    /aloot remove:worm
    /aloot remove:2170
     
    Exemplo Testado:
    16:41 Looted 2 gold coin.
    16:41 Looted 1 cheese.
     
    é isso pessoal gosto da + Rep
  5. Upvote
    rayzinhoxd deu reputação a Natanael Beckman em [Gesior Acc] Vip Status Obedecendo Vip_Time.   
    Boa galera mais uma vez eu aqui! ;p
    Agora o sistema de VIP Status obedece pelo vip_time, no Gesior ACC o sistema de vip atual obedece o storage que não é tão bom devido um bug quando o player recebe um vip pelo storage no termino do vip_time ele ainda fica com o Status de VIP, nesse tutorial eu vou ensinar como ele obedecer o accont>vip_time.
     
    Recomendado pra quem usa system vip by Mock e para sistema vip By Lukeskywalker.
     
    Vamos nois...
     
    Vai até htdocs/pot/OTS_ACCOUNT.php
     
    Procure por:

    'lastday' => 0,
     
    Logo após adicione:

    'vip_time' => 0,
     
     
     
     
    Procure por:

    ' . $this->db->fieldName('rlname') . ',
     
    Logo após adicione:

    '. $this->db->fieldName('vip_time') . ',
     
     
     
     
    Procure por:

    ' . $this->db->fieldName('rlname') . ' = ' . $this->db->quote($this->data['rlname']) . ',
     
    Logo após adicione:

    ' . $this->db->fieldName('vip_time') . ' = ' . $this->db->quote($this->data['vip_time']) . ',
     
     
     
     
    Procure por:

    public function getRLName() { if( !isset($this->data['rlname']) ) { throw new E_OTS_NotLoaded(); } return $this->data['rlname']; }
     
    Logo após adicione:

    public function getPlayerVip_Time() { if( !isset($this->data['vip_time']) ) { throw new E_OTS_NotLoaded(); } return $this->data['vip_time']; }
     
     
     
     
    Vai até htdocs/Accountmanagement.php
     
     
     
     
    Procure por:

    $account_email = $account_logged->getEMail(); $account_email_new_time = $account_logged->getCustomField("email_new_time"); if($account_email_new_time > 1) $account_email_new = $account_logged->getCustomField("email_new");
     
    Logo após adicione:

    /*Vip Status*/ $account_vip = $account_logged->getPlayerVip_Time() ? '<b><font color="green"> Vip Account, '.$account_logged->getPlayerVip_Time().' Days left </font></b>' : '<b><font color="red">Not Vip Account</font></b>';
     
     
     
     
     
    Procure por:

    " ><td class="LabelV" >Account Status:</td><td>'.$account_status.'</td></tr><tr style="background-color:'.$config['site']['darkborder'].';
     
    Logo após adicione:

    " ><td class="LabelV" >Vip Status:</td><td>'.$account_vip.'</td></tr><tr style="background-color:'.$config['site']['darkborder'].';
     
     
     
     
    Vai até htdocs/character.php
     
     
     
     
    Procure por:

    if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Account*Status:</TD><TD>'; $main_content .= ($account->isPremium()) ? '<b><font color="green">Premium Account</font></b>' : '<b><font color="red">Free Account</font></b>';
     
    Logo após adicione:

    /*Vip Status*/ if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Vip Status:</TD><TD>'; $main_content .= ($account->getPlayerVip_Time()) ? '<b><font color="green">Vip Account</font></b>' : '<b><font color="red">Not Vip Account</font></b>';
     
     
     
     
    Bom, se você fizer tudo corretamente como está no topico tudo vai da certo leia atentamente e faça com calma.
     
    Creditos:
    Natan Beckman
    Acordion
  6. Upvote
    rayzinhoxd deu reputação a haiguri em Lista De Utilitários [100%]   
    Lista de Utiitários Super Completa ! [Adicionado OTServs e versões de Tibia]



    Lista de Utilitários





    Lista de MapEditors - SimOne (Versão 7.6 a 8.60)







    Lista de MapEditors - RME (Versão 8.0 a 8.60)






    Versões de Tibia (7.1 a 8.62)






    Lista de Servidores [8.54 a 8.60]:





    OBS - Tudo foi testado.


    Créditos : -Aos membros dos devidos tópicos -70%
    -Pra mim, por ter juntado tudo, em apenas um tópico - 30%

    Espero ter ajudado . e
  • Quem Está Navegando   0 membros estão online

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