Ir para conteúdo

Featured Replies

Postado
Spoiler

local config = {
affected = 10, -- how many players (deathAssits) from table deathList should this script be executed for?
killStorageValue = 3943,
deathStorageValue = 3944,
-- commands for the texts (those inside of ||, example: |KILLS| to show skills): KILLS, KILLERNAME, TARGETNAME
rewardItem = {
  use = true,
  itemid = 2152,
  minLevel = false, -- false if you don't want any level req
  minLevelDiff = false, -- false if you don't want any level diff req (negative numbers allowed).
},
killMessage = {
  use = true,
  text = "You owned |TARGETNAME|!",
  messageClass = MESSAGE_STATUS_CONSOLE_RED
},
broadcastMessage = {
  use = true,
  minLevel = false, -- false if you don't want any level req
  minLevelDiff = false, -- false if you don't want any level diff req (negative numbers allowed).
  text = "|KILLERNAME| [|KILLERLEVEL|] matou |TARGETNAME| [|TARGETLEVEL|]",
  messageClass = MESSAGE_STATUS_CONSOLE_BLUE
},
killerAnimation = {
  use = true,
  text = "Frag!", -- Only 9 letters! No "commands" here.
  color = 144
},
targetAnimation = {
  use = true,
  text = "Owned!", -- Only 9 letters! No "commands" here.
  color = 180
}
}
function onDeath(cid, corpse, deathList)
for i = 1, math.min(config.affected, getConfigInfo('deathAssistCount')) do
  local killer = deathList
  if(isPlayer(killer) == TRUE) then
   local targetKills = math.max(0, getPlayerStorageValue(cid, config.killStorageValue)) + 1
   local targetDeaths = math.max(0, getPlayerStorageValue(cid, config.deathStorageValue)) + 1
 
   local killerKills = math.max(0, getPlayerStorageValue(killer, config.killStorageValue)) + 1
   local killerDeaths = math.max(0, getPlayerStorageValue(killer, config.deathStorageValue)) + 1
 
   setPlayerStorageValue(killer, config.killStorageValue, targetKills)
   setPlayerStorageValue(cid, config.deathStorageValue, targetDeaths)
   local killerLevel = getPlayerLevel(killer)
   local targetLevel = getPlayerLevel(cid)
   local levelDiff = targetLevel - killerLevel
   local values = {
    ["KILLERKILLS"]              = killerKills,
    ["KILLERDEATHS"]        = killerDeaths,
    ["KILLERNAME"]                = getCreatureName(killer),
    ["KILLERLEVEL"]              = killerLevel,
   
    ["TARGETKILLS"]              = targetKills,
    ["TARGETDEATHS"]        = targetDeaths,
    ["TARGETNAME"]                = getCreatureName(cid),
    ["TARGETLEVEL"]              = targetLevel
   }
   function formateString(str)
    return(str:gsub("|([A-Z]+)|", (function(a) return values[a] end)))
   end
 
   if(config.rewardItem.use and (not config.rewardItem.minLevel or targetLevel >= config.rewardItem.minLevel) and (not config.rewardItem.minLevelDiff or levelDiff >= config.rewardItem.minLevelDiff)) then
    local uid = doPlayerAddItem(killer, config.rewardItem.itemid, 50)
   end
   if(config.killMessage.use) then
    doPlayerSendTextMessage(killer, config.killMessage.messageClass, formateString(config.killMessage.text))
   end
   if(config.broadcastMessage.use and (not config.broadcastMessage.minLevel or getPlayerLevel(cid) >= config.broadcastMessage.minLevel) and (not config.broadcastMessage.minLevelDiff or levelDiff >= config.broadcastMessage.minLevelDiff)) then
    broadcastMessage(formateString(config.broadcastMessage.text), config.broadcastMessage.messageClass)
   end
   if(config.killerAnimation.use) then
    doSendAnimatedText(getCreaturePosition(killer), config.killerAnimation.text, config.killerAnimation.color)
   end
   if(config.targetAnimation.use) then
    doSendAnimatedText(getCreaturePosition(cid), config.targetAnimation.text, config.targetAnimation.color)
   end
  end
end
return true
end

 

[22:51:05.905] [Error - CreatureScript Interface]
[22:51:05.906] data/creaturescripts/scripts/deathbroadcast.lua:onDeath
[22:51:05.906] Description:
[22:51:05.906] data/creaturescripts/scripts/deathbroadcast.lua:39: bad argument #2 to 'max' (number expected, got string)
[22:51:05.906] stack traceback:
[22:51:05.906]     [C]: in function 'max'
[22:51:05.906]     data/creaturescripts/scripts/deathbroadcast.lua:39: in function <data/creaturescripts/scripts/deathbroadcast.lua:35>

 

OT PURA DIVERSÃO | IP: otfun.servegame.com | 8.60 | Port: 7171

 

1584817_1.png

Postado

 data/creaturescripts/scripts/deathbroadcast.lua:39: bad argument #2 to 'max' (number expected, got string)

 

The error is quite clear it is telling you the line number, what the error is, the function which is causing the error, what is expect, what it received instead.

 

This is the code on line 39

local targetKills = math.max(0, getPlayerStorageValue(cid, config.killStorageValue)) + 1

The error is telling us the 2nd argument which is passed to math.max is returning a string rather than a number.

This is the 2nd argument.

getPlayerStorageValue(cid, config.killStorageValue)

The server believes you are returning a non-number value so there is a simple way to resolve this.

 

You can write a function which will check to see what type of data is being return, the purpose of a function is to provide a blueprint of checks, balances and some form of data manipulation.

 

Create a new function outside of onDeath

function getStorage(cid, storage)
	local value = getPlayerStorageValue(cid, storage)
	if type(value) == "string" then
		value = tonumber(value)
	end
	return value
end

And then you would change the code on line 39 from this

local targetKills = math.max(0, getPlayerStorageValue(cid, config.killStorageValue)) + 1

To this

local targetKills = math.max(0, getStorage(cid, config.killStorageValue)) + 1

 

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo