-
Total de itens
18 -
Registro em
-
Última visita
Histórico de Reputação
-
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
-
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.
-
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.
-
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
-
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
-
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.