Ir para solução
Resolvido por Frenesy,
-
Quem Está Navegando 0 membros estão online
Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
Por
Nazo
Buenas, TK!
Um usuário pediu ajuda em um script, onde queria limitar para a quest ser feita apenas uma vez por IP, mesmo que ainda seja possível mudá-lo, resolvi postar aqui xd
Execute esse código SQL no seu banco de dados MySQL, para a criação da tabela onde ficarão as storages e o IP armazenado do player:
CREATE TABLE player_ip_storage( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, player_id INT NOT NULL, ip CHAR(15) NOT NULL, storage INT NOT NULL ); ALTER TABLE player_ip_storage ADD CONSTRAINT FK_PLAYER_ID FOREIGN KEY (player_id) REFERENCES players(id);
Ou caso seja SQLITE, utilize esse código:
CREATE TABLE player_ip_storage( player_id INT NOT NULL, ip CHAR(15) NOT NULL, storage INT NOT NULL ); ALTER TABLE player_ip_storage ADD CONSTRAINT FK_PLAYER_ID FOREIGN KEY (player_id) REFERENCES players(id);
Crie um arquivo chamado nazo-functions.lua em data/lib e adicione o seguinte conteúdo:
-- by Nazo (tibiaking.com) -- IP Storage System function getIpQuestStatus(cid, storage) storages = db.getResult("SELECT * FROM `player_ip_storage` WHERE `ip` = \"" .. doConvertIntegerToIp(getPlayerIp(cid)) .. "\" and `storage` = "..storage..";") if(storages:getID() ~= -1) then return false end return true end function setIpQuestStatus(cid, storage) db.executeQuery("INSERT INTO player_ip_storage(player_id, ip, storage) VALUES("..getPlayerGUID(cid)..",\""..doConvertIntegerToIp(getPlayerIp(cid)).."\","..storage..")") return true end
Agora, quando você tiver uma quest, adicione na verificação a função getIpQuestStatus na checagem junto, e quando finalizar a quest utilize o setIpQuestStatus, com os parâmetros cid e número da storage, porém a função só armazena que essa storage tem algo no banco de dados, ou seja, a quest já foi feita, você não armazena o valor da storage junto (como a função normal que geralmente adiciona "1" na storage).
Exemplo de quest abaixo:
-- by Nazo (tibiaking.com) config = { storage = 123123, -- storage da quest premio = {2160, 1} -- {itemid, quantia} } function onUse(cid, item, frompos, item2, toPosition) queststatus = getPlayerStorageValue(cid,config.storage) if(queststatus == -1 and getIpQuestStatus(cid, config.storage)) then -- note que eu só adicionei a função, nenhuma comparação, explicarei abaixo do código doPlayerSendTextMessage(cid,22,"Tome seu prêmio.") doPlayerAddItem(cid,config.premio[1],config.premio[2]) setPlayerStorageValue(cid,config.storage,1) setIpQuestStatus(cid,config.storage) -- função que adiciona a storage no banco de dados else doPlayerSendTextMessage(cid,22,"Você já fez esta quest.") end end
Explicação básica do motivo da função não possuir comparação na verificação e ficar como a seguir:
if(getIpQuestStatus(cid, config.storage)) then Quando você faz um if, com uma função dentro sem comparações, ela continuará o bloco de comando apenas se o retorno da mesma for verdadeiro, assim quando você fizer a quest, e tentar novamente, o get retorna falso, e isso cancela a condição e vai para o bloco de comando do "else".
-
Por 001rafa
Galera como faz para poder criar um slot a mais no otcliente para poder equipar com itens por exemplo mais um ring e mais um colar?
sei que tem q modificar no source do cliente e no distro alguem poderia me ajudar com um tutorial?
grato pela atenção.
up
-
Por M Cronos
Boa Noite amigos, eu estava usando o Object builder e o item editor para adicionar uns sprites no meu servidor para usar com um script, este aqui >>>
que o @Comedinha postou para ajudar um outro membro.
Bom a questão é que o script parece estar funcionando,por que não dá nenhum erro, mas o item também não é usado. bom eu fucei bastante e ainda não consegui resultado então eu pensei que talvez eu tivesse que setar o item como usável no OB ou no IE, pois me lembro de ter visto isso em algum lugar, mas não consigo achar onde eu faço isso. alguém pode me ajudar? se possível. obrigado.
-
Por fezeRa
Estou com um problema chato. Seguinte:
O player pega , compra promotion, dai fica lá "Elder Druid", dai se ele reloga, ele volta pra Druid.
Ou seja não ta salvando a vocation, é algum problema no login.lua que nao salva a vocation atual? Alguem sabe?
-
Por Digoshow
Alguem sabe me fazer um script que deixaria apenas players mudo?
Um script que assim, apenas Tutores, God e ADM poderia usar!
O tipo do comando assim /mudo, player, TEMPO QUE FICA MUDO
O script se for possivel so pegara em players !
Obrigado, REP+ !
-
Posts Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.