• 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!..

    Compartir:

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

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

    Psycho

    Psycho
    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 & DMOT Server
    [Tienes que estar registrado y conectado para ver este vínculo]
    5 participantes
    http://digidarkss.com

    Invitado

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

    5 participantes

    zunnade

    zunnade
    Miembro
    Miembro
    God Maya tengo un problema, hago el comando /addpoints Adm Parcker, 12

    por dar ese ejemplo y no me da puntos y lo hago igual pero cambiandole el signo / por ! y tampoco

    en cambio este comando si me funciona !points me dice esto: 05:57 You have: 0 premium points.

    que hago God Maya?

    5 participantes

    zunnade

    zunnade
    Miembro
    Miembro
    al empezar a montar todo este sistema de points a mi ot server hize esto

    copie en mi base de datos en phpmyadmin esto :

    ALTER TABLE `accounts` ADD `premium_points` INT NOT NULL DEFAULT 0

    resulta que al hacerlo me salio un mensaje como este :
    [Tienes que estar registrado y conectado para ver este vínculo]

    resulta que ahora tengo dos en mi base de datos relacionadas a points y creo que estan teniendo interferencias una de la otra por lo que no me funciona bien el sistema de points.

    lo que quiero es eliminar la antigua que es esta :
    SELECT * FROM `accounts` ORDER BY `accounts`.`premium_points` ASC

    [Tienes que estar registrado y conectado para ver este vínculo]

    -------------------------------------------------------------------------------------

    el problema es que no consigo como hacerlo, intento encontrar la manera y con consigo la solucion me sale este problema cuando intento editar la base [Tienes que estar registrado y conectado para ver este vínculo]

    por favor ayudame god maya, como puedo eliminar una y quedarme con la que quiero implementar. ??

    5 participantes

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    zunnade escribió:God Maya tengo un problema, hago el comando /addpoints Adm Parcker, 12

    por dar ese ejemplo y no me da puntos y lo hago igual pero cambiandole el signo / por ! y tampoco

    en cambio este comando si me funciona !points me dice esto: 05:57 You have: 0 premium points.

    que hago God Maya?

    /addpoints Dwarfer,10



    [Sistema] Premiun Point dentro del Game!.. YNU5B25
    5 participantes
    http://www.tibiaface.com

    Josens

    Josens
    Miembro
    Miembro
    zunnade escribió:al empezar a montar todo este sistema de points a mi ot server hize esto

    copie en mi base de datos en phpmyadmin esto :

    ALTER TABLE `accounts` ADD `premium_points` INT NOT NULL DEFAULT 0

    resulta que al hacerlo me salio un mensaje como este :
    [Tienes que estar registrado y conectado para ver este vínculo]

    resulta que ahora tengo dos en mi base de datos relacionadas a points y creo que estan teniendo interferencias una de la otra por lo que no me funciona bien el sistema de points.

    lo que quiero es eliminar la antigua que es esta :
    SELECT * FROM `accounts` ORDER BY `accounts`.`premium_points` ASC

    [Tienes que estar registrado y conectado para ver este vínculo]

    -------------------------------------------------------------------------------------

    el problema es que no consigo como hacerlo, intento encontrar la manera y con consigo la solucion me sale este problema cuando intento editar la base [Tienes que estar registrado y conectado para ver este vínculo]

    por favor ayudame god maya, como puedo eliminar una y quedarme con la que quiero implementar. ??


    Bro, el error que te da, es porque acualmente posees la tabla, asi que no te molestes en seguir agregandola si ya existe.

    Ahora, pasando al ot, que error te da cuando intentas agregar puntos?



    Very Happy Que te sirva [Sistema] Premiun Point dentro del Game!.. 2764
    5 participantes

    cimmeria

    cimmeria
    Miembro
    Miembro
    busca la tabla premium_points y por hay tiene que salirte algo para borrar solo esa tabla tipo asín

    [Sistema] Premiun Point dentro del Game!.. Kevin16

    luego arriba donde sale  sql arriba pues hay una vez borrada la que quieres insertas la nueva

    5 participantes
    http://sayayinz.ddns.net

    Contenido patrocinado


    5 participantes

    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.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).