• logo_cipsoft
    Nowe serwery zostały otwarte 19 Lut 2025:
    Noctalia (Open PvP) Ignitera (Open PvP) us_logo Xybra (Open PvP)

Creaturescripts Poszukiwany martwy lub ?ywy.

Status
Zamknięty.

Arkam

Forum friend
Dołączył
Grudzień 20, 2008
Posty
1980
Liczba reakcji
180
Autorem skryptu jest u?ytkownik 'Socket'.

Utw?rz plik o nazwie rep.lua w data \ creaturescripts \ scripts i umie?? w nim:

PHP:
function onKill(cid,target)

  if isPlayer(cid) and isPlayer(target) then
    local sk = getCreatureSkullType(target)
    local level = getPlayerLevel(target)
    local prize = {0.7*level*100, 1.3*level*100}
    if getPlayerIp(cid) ~= getPlayerIp(target) then
      if sk == SKULL_WHITE or sk == SKULL_RED or sk == SKULL_BLACK then
        if haveReward(getPlayerName(target)) then
          doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "The government payed ".. getPlayerReward(getPlayerName(target)) .." gold coins for the killer of ".. getPlayerName(target) ..". Thank you.")
          doPlayerAddMoney(cid, getPlayerReward(getPlayerName(target)))
          setPlayerReward(getPlayerName(target),0)
        else
          doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "That player aren't wanted.")
        end
      else
        doPlayerAddReward(getPlayerName(cid), math.random(prize[1],prize[2]))
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Now the government will pay ".. getPlayerReward(getPlayerName(cid)) .." gold coins for your head.")
        setPlayerReward(getPlayerName(target),0)  
      end
    end
  end
  return true
end


Utw?rz plik o nazwie rep.lua w data \ talkactions \ scripts i umie?? w nim:

PHP:
function onSay(cid, words, param)
name = {}
for i in param:gmatch('(%a+)') do
  table.insert(name,i)
end
name = table.concat(name, ' ')  
  if words == '!addreward' then
    if name == nil and param:match('(%d+)') == nil then
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Player not found.")
      return true
    elseif name == nil then
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Choose the player to add ".. param:match('(%d+)') .." in his reward.")
      return true
    elseif param:match('(%d+)') == nil then
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Choose the reward to add to ".. name ..".")
      return true
    end
    if getPlayerGUIDByName(name) then
      doPlayerAddReward(name,tonumber(param:match('(%d+)')))
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "You added ".. tonumber(param:match('(%d+)')) .. " gold coins in the reward of ".. name ..".")
      return true
    else
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, name.." isn't a Player.")
      return true
    end
  elseif words == '!removereward' then
    if name == nil and param:match('(%d+)') == nil then
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Player not found.")
      return true
    elseif name == nil then
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Choose the player to remove ".. param:match('(%d+)') .." from his reward.")
      return true
    elseif param:match('(%d+)') == nil then
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Choose the reward to remove from ".. name ..".")
      return true
    elseif getPlayerGUIDByName(name) then
      doPlayerRemoveReward(name,tonumber(param:match('(%d+)')))
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "You removed ".. param:match('(%d+)') .. " gold coins in the reward of ".. name ..".")
      return true
    else
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Player not found.")
      return true  
    end
  elseif words == '!setreward' then
    if name == nil and param:match('(%d+)') == nil then
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Player not found.")
      return true
    elseif name == nil then
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Choose the player to set his reward to ".. param:match('(%d+)') ..".")
      return true
    elseif param:match('(%d+)') == nil then
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Choose the reward to set from ".. name ..".")
      return true
    elseif getPlayerGUIDByName(name) then
      setPlayerReward(name,tonumber(param:match('(%d+)')))
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "You set the reward from ".. name .." to ".. param:match('(%d+)') ..".")
      return true
    else
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Player not found.")
      return true
    end
  elseif words == '!reward' then
    local voca = {[0]='No vocation', [1]='Sorcerer',[2]='Druid',[3]='Paladin',[4]='Knight',[5]='Master Sorcerer',[6]='Elder Druid',[7]='Royal Paladin',[8]='Elite Knight'}

    if getPlayerGUIDByName(name) then
      local voca = {[0]='No vocation', [1]='Sorcerer',[2]='Druid',[3]='Paladin',[4]='Knight',[5]='Master Sorcerer',[6]='Elder Druid',[7]='Royal Paladin',[8]='Elite Knight'}
      local query = db.getResult("SELECT `level`,`vocation` FROM `players` WHERE `id` = ".. getPlayerGUIDByName(name) ..";")
      local level, voc = query:getDataInt('level'), query:getDataInt('vocation')
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "\n|¯¯¯¯| "..param..": Level "..level.."\n|            | "..voca[voc].."\n|____| Reward: ".. getPlayerReward(param) .. "\nWanted") 
      return true
    else
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Player not found.")
      return true
    end
  elseif words == '!pay' then
  gold = param:match('(%d+)')
    if gold then
      if type(tonumber(gold)) == 'number' then
        if getPlayerReward(getPlayerName(cid)) >= tonumber(gold) then
          if doPlayerRemoveMoney(cid, tonumber(gold)) then
            doPlayerRemoveReward(getPlayerName(cid),tonumber(gold))
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "You removed ".. gold .." gold coins from your reward.")
            return true
          else
            doPlayerSendTextMessage(cid,MESSAGE_EVENT_ORANGE, "You don't have ".. gold .." gold coins.")
            return true
          end
        else
          doPlayerSendTextMessage(cid,MESSAGE_EVENT_ORANGE, "You don't have ".. gold .." gold coins in your reward.")
          return true
        end
      else
        doPlayerSendTextMessage(cid,MESSAGE_EVENT_ORANGE, gold.." isn't a number.")
        return true
      end
    else
        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Choose how many gold coins you'll remove from your reward.")
        return true
    end
  elseif words == '!support' then
    local str = "?Functions:\n\n!reward Socket » Will show how many gold coin the government will pay if you kill Socket.\n\n!pay 10 » Will remove 10 gold coins from your reward.\n\n!support » Will show this to you."
    local str1 = "?Functions:\n\n!addreward Socket 10 » Will add 10 gold coins in the reward of Socket.\n\n!removereward Socket 10 » Will remove 10 gold coins from the reward of Socket.\n\n!setreward Socket 10 » Will change the reward of Socket to 10.\n\n!reward Socket » Will show how many gold coin the government will pay if you kill Socket.\n\n!pay 10 » Will remove 10 gold coins from your reward.\n\n!support » Will show this to you."
    if getPlayerAccess(cid) > 3 then
      doPlayerPopupFYI(cid, str1)
      return true
    else
      doPlayerPopupFYI(cid, str)
      return true
    end
  end
end

Utw?rz plik o nazwie rep.lua w data \ lib i dodaj w nim to:

PHP:
function rewardtable()
local q = db.executeQuery("ALTER TABLE `players` ADD `reward` INT NOT NULL DEFAULT '0' AFTER `name`;")
  return q
end 
function setPlayerReward(player,qnt)
  db.executeQuery("UPDATE `players` SET `reward` = '".. qnt .."' WHERE `name` = '".. player .."' LIMIT 1;")
  return true
end
function getPlayerReward(player)
local get = db.getResult("SELECT `reward` FROM `players` WHERE `name` = '".. player .."';")
local reward = get:getDataInt('reward')
  return reward
end
function haveReward(player)
  if getPlayerReward(player) > 0 then
    return true
  end
  return false
end
function doPlayerAddReward(player,qnt)
t = (qnt and qnt or 1)
local get = db.getResult("SELECT `reward` FROM `players` WHERE `name` = '".. player .."';")
local reward = get:getDataInt('reward')
  return db.executeQuery("UPDATE `players` SET `reward` = '".. reward + t .."' WHERE `name` = '".. player .."' LIMIT 1;")
end
function doPlayerRemoveReward(player,qnt)
t = (qnt and qnt or 1)
local get = db.getResult("SELECT `reward` FROM `players` WHERE `name` = '".. player .."';")
local reward = get:getDataInt('reward')
  if reward > t then
    return db.executeQuery("UPDATE `players` SET `reward` = '".. reward - t .."' WHERE `name` = '".. player .."' LIMIT 1;")
  else
    return db.executeQuery("UPDATE `players` SET `reward` = '".. 0 .."' WHERE `name` = '".. player .."' LIMIT 1;")
  end
end

Utw?rz kolejny plik o nazwie rep.lua w data \ movements \ scripts i umie?? w nim:

PHP:
local sex = {
  [0] = 'she\'s',
  [1] = 'he\'s',
}
local config = {
  bc = true,
  uid = 1000,
  reward = 1500
}

function onStepIn(cid, item, pos)
  if item.uid == config.uid then
    doPlayerAddReward(getPlayerName(cid),config.reward)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You entered an area of government, now you're wanted for ".. getPlayerReward(getPlayerName(cid)) .." gold coins.")
    if config.bc == true then
      doBroadcastMessage(getPlayerName(cid).." have entered an area of government, now ".. sex[getPlayerSex(cid)] .." wanted for ".. getPlayerReward(getPlayerName(cid)) .. " gold coins.", 22)
    end
  end
  return true
end

w bazie danych wykonaj zapytanie
PHP:
ALTER TABLE `players` ADD `reward` INT NOT NULL DEFAULT '0' AFTER `name`

w data \ lib lub przejd? do pliku data.lua lub global.lua go i dodaj w nim:

PHP:
dofile(getDataDir() .. "lib/rep.lua")

w pliku creaturescripts.xml dodaj:

PHP:
<event type="kill" name="rep" event="script" value="rep.lua"/>

do login.lua dodaj:
PHP:
registerCreatureEvent(cid, "rep")

do talkactions.xml dodaj:
PHP:
<talkaction words="!addreward" access="5" event="script" value="rep.lua"/>
<talkaction words="!removereward" access="5" event="script" value="rep.lua"/>
<talkaction words="!setreward" access="5" event="script" value="rep.lua"/>
<talkaction words="!reward" event="script" value="rep.lua"/>
<talkaction words="!support" event="script" value="rep.lua"/>
<talkaction words="!pay" event="script" value="rep.lua"/>

do movements.xml dodaj:
PHP:
<movevent type="StepIn" itemid="5588" event="script" value="rep.lua"/>

w itemid = "5588" zmiana id p?yty "chroniona przez rz?d."

Screeny:


!addreward lub !removereward
addremove.png


!pay
pay.png


!setreward
seta.png


Co si? dzieje gdy gracz wejdzie na chronion? kratke?
movu.png



Dok?adniejszego korzystania ze skryptu nie b?d? omawia? gdy? jest to banalne i gdy kto? na prawd? b?dzie chcia? go w?o?y? w sw?j ots to zauwa?y jak dzia?a.
 
Odp: Poszukiwany martwy lub ?ywy.

Skrypt bardzo fajny, napewno pojawi si? na moim otsie. Mam pytanie da?o by si? wsadzi? wygl?d tego typka pomi?dzy tymi czerwonymi kreskami?
 
Odp: Poszukiwany martwy lub ?ywy.

Da?o by si? ale ju? nie przez lua ;/(raczej nie jestem do ko?ca pewnien), ale przez tibia api na 100%
 
Odp: Poszukiwany martwy lub ?ywy.

Bardzo dobry skrypt napewno u?yje go na swoim ots:D
 
Status
Zamknięty.
Do góry