• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Sistema] Premiun Point dentro del Game!..

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1default [Sistema] Premiun Point dentro del Game!.. el Sáb Dic 13, 2014 1:28 pm

    Psycho

    avatar
    Moderador
    Moderador
    Bueno para los que no tengan una web y quieren vender item por premiun points aqui tienen este script!...

    Si no tienen agregado esta tabla ejecuten esto en su base de datos  query en phpmyadmin.

    Código:
    ALTER TABLE `accounts` ADD `premium_points` INT NOT NULL DEFAULT 0;

    ahora vamos a lib/functions

    y agregamos esto

    Código:
    function getPremiumPoints(cid)
    local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'')
    if(res:getID() == -1) then
    return false
    end
    local ret = res:getDataInt("premium_points")
    res:free()
    return tonumber(ret)
    end

    ahora nos vamos a talkactions

    Código:
    <talkaction words="/addpoints;!addpoints" access="5" event="script" value="addpoints.lua"/>
     <talkaction words="/points;!points" event="script" value="ppoints.lua"/>

    addpoints.lua SQLite Version

    Código:
    function onSay(cid, words, param)
    local Data = string.explode(param, ",")
    if Data then
    local Target = db.getResult("SELECT `name` FROM `players` WHERE `name` = " .. db.escapeString(Data[1]) .. ";")
    if (Target:getID() ~= -1) then
    if Data[2] then
    if (words:sub(2, 2) == "a") then
    if isNumber(Data[2]) == TRUE then
    db.executeQuery("UPDATE `accounts` SET `premium_points` = `premium_points` + ".. Data[2] .." WHERE `accounts`.`id` = ".. getAccountIdByName(Data[1]) ..";")
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Was added ".. Data[2] .." points to ".. Data[1] ..".")
    else
    doPlayerSendCancel(cid, "Please enter numbers.")
    end
    end
    end
    end
    end
    return true
    end

    ppoints.lua

    Código:
    function onSay(cid, words, param, channel)
    if isPlayer(cid) then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have: " .. getPremiumPoints(cid) .. " premium points.")
    end
    return TRUE
    end

    para vender items hay 2 opciones por action o talkaction aca les dejo los script

    talkaction

    Código:
    <talkaction words="/buy;!buy" event="script" value="buyvips.lua"/>

    buyvips.lua

    Código:
    local items = {
    ["legend staff"] = {points = 100, itemid = 7410},
    ["legend axe"] = {points = 100, itemid = 2443}
    }

    local function getPremiumPoints(cid)
    local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'')
    if(res:getID() == -1) then
    return 0
    end
    local ret = res:getDataInt("premium_points")
    res:free()
    return tonumber(ret)
    end

    function onSay(cid, words, param)

    local param = string.lower(param)

    local x = items[param]

    if x then
    if getPremiumPoints(cid) >= x.points then
    doPlayerAddItem(cid, x.itemid, 1)
    doPlayerSendTextMessage(cid, 25, "You have bought "..param.." for "..x.points.." premium points.")
    db.executeQuery('UPDATE accounts SET premium_points=premium_points-'..x.points..' WHERE id=' .. getPlayerAccountId(cid))
    else
    doPlayerSendCancel(cid, "You don\'t have enough premium points.")
    end
    end
    if not x then
    doPlayerSendCancel(cid, "You can\'t buy this item.")
    end
    return true
    end
    si quieren agregar mas items solo tienen q agregar otro linea asi
    ["lITEMNAME"] = {points = PUNTOS, itemid = ITEMID},

    action

    Código:
    <action actionid="ACTIONID" script="ppointsVIP.lua"/>

    ppointsVIP.lua

    Código:
    local points = 15

    function onUse(cid, item, fromPosition, itemEx, toPosition)
    if getPremiumPoints(cid) < 15 then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"You need "..points.." premium points to buy this item.")
    else
    db.executeQuery('UPDATE accounts SET premium_points=premium_points-'..points..' WHERE id=' .. getPlayerAccountId(cid))
    doPlayerAddItem(cid, 7410, 1)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"You bought a legend staff.")
    end
    return TRUE
    end

    para usar los comandos

    agregar puntos: /addpoints name,cantidad
    para borrar: /addpoints name,-cantidad

    para ver los puntos q tienes: /points

    para comprar items: /buy legend staff, /buy legend axe

    Y eso es todo!...

    EDITED: NUEVO NPC

    Funciones necesarias en data/libs (Si ya tienes la funciona de arriba agregada solo agrega doRemovePoints, en caso de que no agrega las dos)

    Código:
    function getPremiumPoints(cid)
    local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'')
    if(res:getID() == -1) then
    return false
    end
    local ret = res:getDataInt("premium_points")
    res:free()
    return tonumber(ret)
    end

    function doRemovePoints(cid, points)
    return db.executeQuery("UPDATE `accounts` SET `premium_points` = `premium_points` - " .. points .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";")
    end

    Script

    Código:
    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

    npcHandler:setMessage(MESSAGE_GREET, "Hiho |PLAYERNAME|. I sell items for premium points say {list}.")

    function creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then
    return false
    end

    -- LISTA ITEMS
    if(msgcontains(msg, 'list')) then
    doShowTextDialog(cid, 1968, "Premium List Shop\n\n[5 points] Crystal coin\n[15 points] Boots of haste")
    end

    local sheenita_items = {
         -- CONFIG = NAME, ID, POINTS
         ["crystal coin"] = {2160, 5},
         ["boots of haste"] = {2195, 15},
         }

    -- NO MOVER NADA
    for text_sheenita, x in pairs(sheenita_items) do
         if (msgcontains(msg, text_sheenita)) then
           if getPremiumPoints(cid) < x[2] then
               selfSay("Sorry, You need ".. x[2] .." premium points to buy a x1 ".. getItemNameById(x[1])..".", cid)
           else
                 doRemovePoints(cid, x[2])
                      doPlayerAddItem(cid,x[1])
                               doPlayerSave(cid)
               selfSay("You bought a x1 ".. getItemNameById(x[1]) .." for ".. x[2] .." premium points, thanks for donating!", cid)
           end
         end
     end

    return true
    end

    npcHandler:setCallback(CALLBACK_GREET, greetCallback)
    npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
    npcHandler:addModule(FocusModule:new())

    Si les Sirvio den Me Gusta

    Creditos:
    Sheenita



    AFC By Psycho & Alfa Server
    [Tienes que estar registrado y conectado para ver este vínculo]
    Ver perfil de usuario http://dio-pcl.ddns.net

    Invitado


    Invitado
    Excelente! lo probe en un ot y me funciono Jajaja te ganas un :(MG): +1

    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.