BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

Pedido onLook

Pedido onLook

#1 Pedido onLook el Miér Feb 19, 2014 2:33 pm

Amy Azzkaban


Miembro
Hola, tengo este script:

Código:
function getDeaths(cid)
  local query, d = db.getResult("SELECT `player_id` FROM `player_killers` WHERE `player_id` = " ..getPlayerGUID(cid)), 0
  if (query:getID() ~= -1) then
      repeat
        d = d+1
      until not query:next()
      query:free()
  end
  return d 
end

function getPlayerFrags(cid)
    local time = os.time()
    local times = {today = (time - 86400), week = (time - (7 * 86400))}
    local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC")
    if(result:getID() ~= -1) then
        repeat
            local content = {date = result:getDataInt("date")}
            if(content.date > times.today) then
                table.insert(contents.day, content)
            elseif(content.date > times.week) then
                table.insert(contents.week, content)
            else
                table.insert(contents.month, content)
            end
        until not result:next()
        result:free()
    end
 
    local size = {
        day = table.maxn(contents.day),
        week = table.maxn(contents.week),
        month = table.maxn(contents.month)
    }
    return size.day + size.week + size.month
end

function onLook(cid, thing, position, lookDistance)
  if isPlayer(thing.uid) and thing.uid ~= cid then
      return doPlayerSetSpecialDescription(thing.uid, '\n'.. '[Frags: ' .. getPlayerFrags(thing.uid) .. ' - Deaths: ' .. getDeaths(thing.uid) .. ' - ' .. (isPremium(thing.uid) and (getPlayerPremiumDays(thing.uid) .. ' Premium days left.') or 'Not Premium') .. ']')
  elseif thing.uid == cid then   
      local string = 'You see yourself.'
      if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then
        string = string..' You are '.. getPlayerGroupName(cid) ..'.'
      elseif getPlayerVocation(cid) ~= 0 then
        string = string..' You are '.. getPlayerVocationName(cid) ..'.'
      else
        string = string..' You have no vocation.'
      end
             
      if getPlayerGuildId(cid) > 0 then
        string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid)
        string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.'
      end
     
      string = string..'\n'.. '[Frags: ' .. getPlayerFrags(cid) .. ' - Deaths: ' .. getDeaths(cid) .. ' - ' .. (isPremium(cid) and (getPlayerPremiumDays(cid) .. ' Premium days left.') or 'Not Premium') .. ']'

      if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then
        string = string..'\nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..'], Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].'
        string = string..'\nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.'
      end

      if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then
        string = string..'\nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].'
      end
      return false, doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) 
  end
  return 1
end

Ese script funciona perfectamente, y enseña las frags, muertes, y cuantos dias premiums me quedan, y lo que necesito es que enseñe los resets o rebirths también. Uso el siguiente sistema: [Tienes que estar registrado y conectado para ver este vínculo] el cual es para hacer resets y se pueden ver al hacer look, pero para eso tengo que usar un creaturescript... y lo que necesito es que en el script que puse al comienzo, es que si le pueden agregar para ver también los resets al darle look a un player.

Me ayudan?
Gracias.

#2 Re: Pedido onLook el Miér Feb 19, 2014 4:58 pm

Sirakx


Moderador
ya me di una idea pero en el post que hay en otland hay varios rebirts postea el que tienes



[Tienes que estar registrado y conectado para ver esa imagen]
http://celesta-global.net/

#3 Re: Pedido onLook el Miér Feb 19, 2014 5:03 pm

DavidR


Moderador
Así?:
Código:
function getDeaths(cid)
  local query, d = db.getResult("SELECT `player_id` FROM `player_killers` WHERE `player_id` = " ..getPlayerGUID(cid)), 0
  if (query:getID() ~= -1) then
      repeat
        d = d+1
      until not query:next()
      query:free()
  end
  return d 
end

function getPlayerFrags(cid)
    local time = os.time()
    local times = {today = (time - 86400), week = (time - (7 * 86400))}
    local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC")
    if(result:getID() ~= -1) then
        repeat
            local content = {date = result:getDataInt("date")}
            if(content.date > times.today) then
                table.insert(contents.day, content)
            elseif(content.date > times.week) then
                table.insert(contents.week, content)
            else
                table.insert(contents.month, content)
            end
        until not result:next()
        result:free()
    end
 
    local size = {
        day = table.maxn(contents.day),
        week = table.maxn(contents.week),
        month = table.maxn(contents.month)
    }
    return size.day + size.week + size.month
end

function onLook(cid, thing, position, lookDistance)
  if isPlayer(thing.uid) and thing.uid ~= cid then
      return doPlayerSetSpecialDescription(thing.uid, (getPlayerSex(thing.uid) == PLAYERSEX_FEMALE and '.\nShe' or '.\nHe') .. ' has prestiged ' .. getCreatureStorage(thing.uid, 85987) .. ' ' .. (getCreatureStorage(thing.uid, 85987) == 1 and 'time' or 'times') .. '.\n[Frags: ' .. getPlayerFrags(thing.uid) .. ' - Deaths: ' .. getDeaths(thing.uid) .. ' - ' .. (isPremium(thing.uid) and (getPlayerPremiumDays(thing.uid) .. ' Premium days left.') or 'Not Premium') .. ']')
  elseif thing.uid == cid then   
      local string = 'You see yourself.'
      if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then
        string = string..' You are '.. getPlayerGroupName(cid) ..'.'
      elseif getPlayerVocation(cid) ~= 0 then
        string = string..' You are '.. getPlayerVocationName(cid) ..'.'
      else
        string = string..' You have no vocation.'
      end
   
      if getPlayerGuildId(cid) > 0 then
        string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid)
        string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.'
      end
     
      string = string..' You have prestiged '..getCreatureStorage(thing.uid, 85987)..' '..(getCreatureStorage(thing.uid, 85987) == 1 and 'time' or 'times')..'.\n'.. '[Frags: ' .. getPlayerFrags(cid) .. ' - Deaths: ' .. getDeaths(cid) .. ' - ' .. (isPremium(cid) and (getPlayerPremiumDays(cid) .. ' Premium days left.') or 'Not Premium') .. ']'

      if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then
        string = string..'\nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..'], Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].'
        string = string..'\nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.'
      end

      if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then
        string = string..'\nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].'
      end
      return false, doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) 
  end
  return 1
end



Última edición por DavidR el Miér Feb 19, 2014 6:04 pm, editado 1 vez

http://www.blacktibia.org/

#4 Re: Pedido onLook el Miér Feb 19, 2014 5:03 pm

Hellscors


Miembro
TU OT/Data/Creaturescripts creas un archivo lua ,le pones como nombre rebirth y dentro pegas esto:

Código:
local config = {
  storage = 85987
}
 
function onLogin(cid)
  if (getCreatureStorage(cid, config.storage) < 0) then
      doCreatureSetStorage(cid, config.storage, 0)
  end
  registerCreatureEvent(cid, "Rebirth-Look")
  return true
end
 
function onLook(cid, thing, position, lookDistance)
  if (isPlayer(thing.uid)) then
      if (thing.uid == cid) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You have rebirthed " .. getCreatureStorage(cid, config.storage) .. " time" .. (getCreatureStorage(cid, config.storage) == 1 and "" or "s") .. ".")
      else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(thing.uid) .. " has rebirthed " .. getCreatureStorage(thing.uid, config.storage) .. " time" .. (getCreatureStorage(thing.uid, config.storage) == 1 and "" or "s") .. ".")
      end
  end
  return true
end

Creaturescripts.xml

Código:
<event type="login" name="Rebirth-Login" event="script" value="rebirth.lua"/>
        <event type="look" name="Rebirth-Look" event="script" value="rebirth.lua"/>

y en Login.lua

Código:
registerCreatureEvent(cid, "RebirthLogin")
   registerCreatureEvent(cid, "Rebirth-Look")

http://www.blacktibia.org/t32971-86-prestige-imperia-ot-server-h

#5 Re: Pedido onLook el Miér Feb 19, 2014 5:09 pm

Sirakx


Moderador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Así?:
Código:
function getDeaths(cid)
  local query, d = db.getResult("SELECT `player_id` FROM `player_killers` WHERE `player_id` = " ..getPlayerGUID(cid)), 0
  if (query:getID() ~= -1) then
      repeat
        d = d+1
      until not query:next()
      query:free()
  end
  return d 
end

function getPlayerFrags(cid)
    local time = os.time()
    local times = {today = (time - 86400), week = (time - (7 * 86400))}
    local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC")
    if(result:getID() ~= -1) then
        repeat
            local content = {date = result:getDataInt("date")}
            if(content.date > times.today) then
                table.insert(contents.day, content)
            elseif(content.date > times.week) then
                table.insert(contents.week, content)
            else
                table.insert(contents.month, content)
            end
        until not result:next()
        result:free()
    end
 
    local size = {
        day = table.maxn(contents.day),
        week = table.maxn(contents.week),
        month = table.maxn(contents.month)
    }
    return size.day + size.week + size.month
end

function onLook(cid, thing, position, lookDistance)
  if isPlayer(thing.uid) and thing.uid ~= cid then
      return doPlayerSetSpecialDescription(thing.uid, (getPlayerSex(thing.uid) == PLAYERSEX_FEMALE and '.\nShe' or '.\nHe') .. ' has prestiged ' .. getCreatureStorage(thing.uid, 85987) .. ' ' .. (getCreatureStorage(thing.uid, 85987) == 1 and 'time' or 'times') .. '.\n[Frags: ' .. getPlayerFrags(thing.uid) .. ' - Deaths: ' .. getDeaths(thing.uid) .. ' - ' .. (isPremium(thing.uid) and (getPlayerPremiumDays(thing.uid) .. ' Premium days left.') or 'Not Premium') .. ']')
  elseif thing.uid == cid then   
      local string = 'You see yourself.'
      if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then
        string = string..' You are '.. getPlayerGroupName(cid) ..'.'
      elseif getPlayerVocation(cid) ~= 0 then
        string = string..' You are '.. getPlayerVocationName(cid) ..'.'
      else
        string = string..' You have no vocation.'
      end
    
     if getPlayerStorageValue(cid, 85987) >= 1 then
      string = string..' You have prestiged ' .. getCreatureStorage(thing.uid, 85987) .. ' ' .. (getCreatureStorage(thing.uid, 85987) == 1 and 'time' or 'times') .. '.'
     end
    
      if getPlayerGuildId(cid) > 0 then
        string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid)
        string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.'
      end
     
      string = string..'\n'.. '[Frags: ' .. getPlayerFrags(cid) .. ' - Deaths: ' .. getDeaths(cid) .. ' - ' .. (isPremium(cid) and (getPlayerPremiumDays(cid) .. ' Premium days left.') or 'Not Premium') .. ']'

      if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then
        string = string..'\nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..'], Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].'
        string = string..'\nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.'
      end

      if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then
        string = string..'\nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].'
      end
      return false, doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) 
  end
  return 1
end


Lo que amy quiere es que se mire en un player al darle look cuantos rebirts se a puesto

[Tienes que estar registrado y conectado para ver este vínculo] escribió:TU OT/Data/Creaturescripts creas un archivo lua ,le pones como nombre rebirth y dentro pegas esto:

Código:
local config = {
   storage = 85987
}
 
function onLogin(cid)
   if (getCreatureStorage(cid, config.storage) < 0) then
      doCreatureSetStorage(cid, config.storage, 0)
   end
   registerCreatureEvent(cid, "Rebirth-Look")
   return true
end
 
function onLook(cid, thing, position, lookDistance)
   if (isPlayer(thing.uid)) then
      if (thing.uid == cid) then
         doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You have rebirthed " .. getCreatureStorage(cid, config.storage) .. " time" .. (getCreatureStorage(cid, config.storage) == 1 and "" or "s") .. ".")
      else
         doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(thing.uid) .. " has rebirthed " .. getCreatureStorage(thing.uid, config.storage) .. " time" .. (getCreatureStorage(thing.uid, config.storage) == 1 and "" or "s") .. ".")
      end
   end
   return true
end

Creaturescripts.xml

           
Código:
<event type="login" name="Rebirth-Login" event="script" value="rebirth.lua"/>
        <event type="look" name="Rebirth-Look" event="script" value="rebirth.lua"/>

y en Login.lua

Código:
registerCreatureEvent(cid, "RebirthLogin")
   registerCreatureEvent(cid, "Rebirth-Look")

Ya mire tu script y no creo que te muestre cuantos rebirts has echo

http://celesta-global.net/

#6 Re: Pedido onLook el Miér Feb 19, 2014 5:10 pm

Hellscors


Miembro
Yo tengo un server ,y lo uso ,y me funciona perfectamente .

http://www.blacktibia.org/t32971-86-prestige-imperia-ot-server-h

#7 Re: Pedido onLook el Miér Feb 19, 2014 5:13 pm

Sirakx


Moderador
Lo único que hace por lo que mire es mostrarte el storage al darte un rebirt :/



[Tienes que estar registrado y conectado para ver esa imagen]
http://celesta-global.net/

#8 Re: Pedido onLook el Miér Feb 19, 2014 5:16 pm

Hellscors


Miembro
@UP

Por lo que "miras" jaja ,primero pruebalo men ,que parte de "Yo tengo un server y lo uso y me funciona PERFECTAMENTE" ,pero Amy ,pruebalo y dime que tal (:

http://www.blacktibia.org/t32971-86-prestige-imperia-ot-server-h

#9 Re: Pedido onLook el Miér Feb 19, 2014 5:27 pm

DavidR


Moderador
Están haciendo Spam! -.-'

Y esto va para los dos (@God Rakzzo y @Hellscors) :
Ella quiere un script que tenga lo de rebirth Y lo de death-kills al mirar a una persona además de los prem days.
Hellcors, tu script si sirve, pero le faltan muchos detalles por cubrir. Y no es lo que ella pide. Solo es una parte de lo que ella pide.

Que hice yo? (que es lo que está pidiendo ella)
Un onLook que muestres los prestiges/rebirth/loquesea y las kills death y los premium days.
El que ella tiene, muestra los kills death y los prem days. Está pidiendo ayuda para que también puedan verse los prestiges. Lo que hice fue modificar su script para que también aparezcan los prestiges (que es lo que ella está pidiendo).

Recomendación: Lean bien el pedido del usuario. Y dejen de hacer spam!

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

Saludos.

http://www.blacktibia.org/

#10 Re: Pedido onLook el Miér Feb 19, 2014 5:33 pm

Sirakx


Moderador
Davird no es spam, siempre y cuando comentes algo del tema, puedes pasarte por las reglas del forum

Este comentario que estoy haciendo ahorita si puede considerarse como "spam", Aun que mas bien es una aclaración.

http://celesta-global.net/

#11 Re: Pedido onLook el Miér Feb 19, 2014 5:45 pm

Amy Azzkaban


Miembro
13:43 You see yourself. You are Knight.
[Frags: 0 - Deaths: 0 - 34 Premium days left.]
no me aparecen los resets.

Edito: Al hacer look me aparece en letras color naranja en el default y no junto a lo demas en verde en medio de la pantalla... como lo soluciono?

13:50 You have rebirthed 1 time.

Edito 2: Le di like a todos, pero me quedé con el script de DavidR que es justo lo que necesitaba y complementó el script que tenia.

Muchas gracias y tema solucionado.

#12 Re: Pedido onLook Hoy a las 1:29 pm

Contenido patrocinado


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.

 

¿Quién está en línea?

En total hay 0 usuarios en línea: 0 Registrados, 0 Ocultos y 0 Invitado

Usuarios navegando en este foro: Ninguno

Forum Statistics

Nuestros miembros han públicado un total de posts en temas.
Actualmente hay miembros registrados.
Démosle la bienvenida al miembro más reciente,
La mayor cantidad de usuarios en línea ha sido de .