Shadok
Advanced User
- Joined
- Feb 26, 2010
- Messages
- 381
- Reaction score
- 65
Stworzyli : Maniucza and Karpio
OTS/MODS/castlesystem.xml dodaj:
Phpmyadmin: Dodaj:
and.:
@down
Edytowane ;p
Regards,
Shadok
Jako jeden z niewielu ots?w prezentujemy Pa?stwu nowatorski i oryginalny system zamk?w. Jest on przeznaczony dla wszystkich cech?w i jest zdobycie zamku w czasie bitwy, kt?ra odbywa si? w ka?d? ?rod? i niedziel?. Walka odbywa si? o godzinie 19:00 na specjalny obszar, s? przygotowane do walki 4 stanowiska dla 4 gildii. Zwalczania gildie mo?e zg?osi? tylko lider i vice-lider polecenia / lock, wymaga obecno?ci 5 graczy w grze z gildii stoi w bezpiecznym miejscu do PZ. Celem jest pokonanie gildii atakuj?cych przeciwnik?w w przeciwnym gildii, a zadaniem najwi?ksze szkody do kr?la w zamku, a ostateczne zabi?. Je?li gildia mo?e zdoby? zamek w nast?pnej bitwie pojawi? si? w roli obro?cy i b?dzie mia? na celu ochron? w?asnego kr?la zamek przed zabiciem. Terminie do zabicia kr?la w zamku znajduje si? 30 minut liczony od otwarcia bar?w stanowisk. Wszystkie informacje potrzebne w czasie bitwy o zamek w kanale "Bitwa" Castle, istniej? r?wnie? o zmar?ych i przyst?pienie do walki gildii. Je?li ka?da osoba zosta?a zabita podczas walki nie traci exp EQ, ale nie jest teleportowany poza walk?. O gildii Zamek daje bonusy takie jak:
* Mo?liwo?? zap?aty przed dniem liderem 150cc lub vice liderem gildii.
* Dost?p do 36 teleporty do g??wnych atrakcji exp na mapie.
* Dost?p do sklepu na w?asny operacji w zamku i wszystkie NPC.
Informacja na temat nagrody:
* Ka?dy dzie? dla ka?dego cz?onka cechu poziomach wy?szych ni? 75 s? automatycznie wyp?acone pieni?dze do banku.
Okresowej * zale?y od poziomu gry, mo?na obliczy? wed?ug wzoru:
level_gracza level_gracza/0.90 * * * level_gracza 10000 (w gp)
Przyk?ady poziom?w op?at za:
132lvl - 147cc
205lvl - 228cc
303lvl - 337cc
608lvl - 675cc
* P?atno?? odbywa si? codziennie o 16:00.
* Je?li w momencie wyp?aty gracz jest online, aby otrzyma? pieni?dze z banku musi si? przelogowa?.
Instrukcje jak wzi?? udzia? w bitwie o zamek ...
Pami?taj, ?e musisz by? liderem lub vice liderem gildii i gra musi by? co najmniej 5 os?b z gildii stoi w PZ. Je?li spe?niasz te warunki, a soboty i niedziele od 19:00 do wpisz polecenie / lock. Pami?taj, aby mie? otwarty kana? "Walka o Zamek", w niej znajdziesz wiele aktualnych informacji! Po wpisaniu polecenia zostanie przeniesiony wraz z lud?mi z gildii stoi PZ jednym z 4 miejsc na polu bitwy:
OTS/MODS/castlesystem.xml dodaj:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Castle System" version="1.0" author="Maniucza i Karpio" contact="http://tibia.net.pl/members/maniucza.html" enabled="yes">
<config name="CastleSystem Lib"><![CDATA[
castle = {}
castle.wallid = 7594
castle.wall = {{x = 587,y = 675,z = 7, stackpos = 1}, {x = 587,y = 676,z = 7, stackpos = 1}, {x = 587,y = 677,z = 7, stackpos = 1}}
castle.fromx = 583
castle.tox = 586
castle.fromy = 675
castle.toy = 677
castle.z = 7
castle.kick = {x = 583,y = 670,z = 7}
castle.teams = 0
castle.pos = {x = 583,y = 670,z = 7}
castle.mostdamage = 0
castle.winnerteam = 0
castle.monster = {x = 585, y = 673, z = 7}
castle.msg = true
castle.gary = true
castle.garypos =
{
[1] = {x = x, y = y, z = z},
[2] = {x = x, y = y, z = z},
[3] = {x = x, y = y, z = z},
[4] = {x = x, y = y, z = z}
}
function castle:firstTimer()
if(os.date("%A") == "Thursday") then
setGlobalStorageValue(1, 1)
setGlobalStorageValue(2, os.time())
if(castle.gary) then
setGlobalStorageValue(1, 1)
end
doBroadcastMessage("Attention! Immediately register to Castle Wars. Leaders of the guild can enter your guild command:! Castle", MESSAGE_STATUS_WARNING)
end
return true
end
function castle:secondTimer()
if(os.date("%A") == "Thursday") then
if(getGlobalStorageValue(1) == 1) then
setGlobalStorageValue(1, 2)
end
if(castle.teams == 0) then
local result = db.getResult("SELECT * FROM castles WHERE id=1;")
local winner = result:getDataString("owner")
result:free()
doBroadcastMessage("Gilds"..winner.." defended castle. Congratulations!", MESSAGE_STATUS_WARNING)
setGlobalStorageValue(1, 3)
end
doBroadcastMessage("Fight for Castle has begun!", MESSAGE_STATUS_WARNING)
for i = 1, #castle.mur do
doRemoveItem(getThingFromPos(castle.mur[i]).uid, 1)
end
local mon = doSummonCreature("King", castle.monster)
registerCreatureEvent(mon, "hit")
end
return true
end
function castle:thirdTimer()
if(os.date("%A") == "Thursday" and getGlobalStorageValue(1) == 2) then
for i = 1, #castle.mur do
doCreateItem(castle.murid, 1, castle.mur[i])
end
castle:kickLosers()
local result = db.getResult("SELECT * FROM castles WHERE id=1;")
local winner = result:getDataString("owner")
result:free()
doBroadcastMessage("he struggle for the castle came to an end. Guilds "..winner.." defended castle. Congratulations!", MESSAGE_STATUS_WARNING)
setGlobalStorageValue(1, 3)
end
return true
end
function castle:kickLosers(id)
if(id == nil) then
local result = db.getResult("SELECT * FROM castles WHERE id=1;")
id = result:getDataInt("ownerid")
result:free()
end
if(id == "all") then
for x = castle.fromx, castle.tox do
for y = castle.fromy, castle.toy do
local player = getThingFromPos({x=x, y=y, z=castle.z, stackpos = 253})
if(player.itemid > 0) then
if(isPlayer(player) == true) then
doTeleportThing(player, castle.kick)
if(castle.msg == true) then
return doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Przegral"..(getPlayerSex(player) == 0 and "as" or "es")..".")
end
end
end
end
end
elseif(isNumber(id) == true) then
for x = castle.fromx, castle.tox do
for y = castle.fromy, castle.toy do
local player = getThingFromPos({x=x, y=y, z=castle.z, stackpos = 253})
if(player.itemid > 0) then
if(isPlayer(player) == true) then
if(getPlayerGuildId(player) ~= id) then
doTeleportThing(player, castle.kick)
if(castle.msg == true) then
return doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Przegral"..(getPlayerSex(player) == 0 and "as" or "es")..".")
end
end
end
end
end
end
end
return true
end
function castle:addTeam(cid, gid)
if(getGlobalStorageValue(1) == 1) then
local result = db.getResult("SELECT * FROM castles_war WHERE guild_id="..gid.." AND time="..getGlobalStorageValue(2)..";")
if(result:getID() ~= -1) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Guild is already written to the fight.")
end
db.executeQuery("INSERT INTO `castles_war` (`castle_id` ,`guild_id` ,`damage` ,`time`)VALUES ('1', '"..gid.."', '0', '"..getGlobalStorageValue(2).."');")
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Gilds added.")
for k, v in pairs(getPlayersOnline()) do
if(getPlayerGuildId(v) == gid) then
if(getTilePzInfo(getCreaturePosition(v)) == true) then
if(castle.gary) then
doTeleportThing(v, castle.garypos[getGlobalStorageValue(3)])
if(getGlobalStorageValue(3) < 4) then
setGlobalStorageValue(3, getGlobalStorageValue(3) + 1)
end
else
doTeleportThing(v, castle.pos)
end
if(castle.msg == true) then
return doPlayerSendTextMessage(v, MESSAGE_INFO_DESCR, "Your guild, she joined the Fight for Castle.")
end
end
end
end
castle.teams = castle.teams + 1
else
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "There are currently no records.")
end
return true
end
function castle:onHit(cid, attacker, type, combat, value)
if(getCreatureName(cid) == "King") then
if(db.executeQuery("UPDATE `castles_war` SET `damage`=`damage`+"..value.." WHERE `guild_id`="..getPlayerGuildId(attacker).." AND `time`="..getGlobalStorageValue(2)..";") ~= true) then
return false
else
return true
end
end
return true
end
function castle:onKill(cid, target)
if(getCreatureName(target) == "King" and getGlobalStorageValue(1) == 2) then
local result = db.getResult("SELECT * FROM `castles_war` WHERE `time`="..getGlobalStorageValue(2).." ORDER BY `damage` DESC LIMIT 1;")
castle.mostdamage = result:getDataInt("damage")
castle.winnerteam = result:getDataInt("guild_id")
result:free()
local result2 = db.getResult("SELECT * FROM guilds WHERE id="..castle.winnerteam..";")
local name = result2:getDataString("name")
result2:free()
setGlobalStorageValue(1, 3)
doBroadcastMessage("Gilds "..name.." injuries inflicted the greatest king and is the winner. The reward is replaced by the castle.")
db.executeQuery("UPDATE castles SET ownerid="..castle.winnerteam..", owner=\""..name.."\" WHERE id=1;")
castle:kickLosers(castle.winnerteam)
end
return true
end
]]></config>
<event type="login" name="Castle King Kill" event="script"><![CDATA[
domodlib("CastleSystem Lib")
function onKill(cid, target, lastHit)
if(getCreatureName(target) == "King") then
castle:onKill(cid, target)
return true
end
return true
end]]></event>
<event type="statschange" name="Hit" event="script"><![CDATA[
domodlib("CastleSystem Lib")
function onStatsChange(cid, attacker, type, combat, value)
castle:onHit(cid, attacker, type, combat, value)
return true
end]]></event>
<globalevent name="timer1" time="18:20" event="script"><![CDATA[
domodlib("CastleSystem Lib")
function onTimer()
castle:firstTimer()
return true
end]]></globalevent>
<globalevent name="timer2" time="18:22" event="script"><![CDATA[
domodlib("CastleSystem Lib")
function onTimer()
castle:secondTimer()
return true
end]]></globalevent>
<globalevent name="timer3" time="18:24" event="script"><![CDATA[
domodlib("CastleSystem Lib")
function onTimer()
castle:thirdTimer()
return true
end]]></globalevent>
<talkaction words="!zamek" event="buffer"><![CDATA[
domodlib("CastleSystem Lib")
function onSay(cid, words, param, channel)
if(getPlayerGuildLevel(cid) == 3) then
castle:addTeam(cid, getPlayerGuildId(cid))
return true
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Nie jestes liderem gildi.")
return true
end
]]></talkaction>
</mod>
Phpmyadmin: Dodaj:
Code:
CREATE TABLE IF NOT EXISTS `castles` (
`id` int(11) NOT NULL auto_increment,
`castle_name` varchar(255) NOT NULL,
`owner_guild` varchar(255) NOT NULL,
`castle_war` varchar(255) NOT NULL,
`last_conqueror` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1
Code:
CREATE TABLE IF NOT EXISTS `castles_war` (
`castle_id` int(5) NOT NULL,
`guild_id` int(5) NOT NULL,
`damage` int(20) NOT NULL,
`time` int(50) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Edytowane ;p
Regards,
Shadok