Scootyy
Senior User
- Joined
- Jul 26, 2009
- Messages
- 564
- Reaction score
- 12
- Age
- 34
Witam,
mo?e przedstawi? na czym to polega.
-Gracz podchodzi do NPC i zapisuje si? na event "war"
-S? 2 teamy czerwoni i niebiescy
-Wygrana dru?yna dostaje losow? nagrod?
Mod testowany na TFS 0.3.5 oraz 0.3.6 na wersji 0.4 Crashuje
Krok 1 - database
Dodajemy 2 zapytania do sql
Krok 2 - NPC
data/npc tworzymy Eventer.xml
data/npc/scripts tworzymy event.lua
Krok 3 - instalacja moda
w /mods/ robimy plik o nazwie event.xml
____________________________________________________________
autorem skryptu jest Damadgerz.
Link do tematu na otland.net
Ja jedynie lekko spolszycz?em NPC, je?eli chcecie mie? po angielsku skopiujcie go z tematu.
Je?eli macie jakie? pytania, piszcie w tym temacie, postaram si? pom?c
mo?e przedstawi? na czym to polega.
-Gracz podchodzi do NPC i zapisuje si? na event "war"
-S? 2 teamy czerwoni i niebiescy
-Wygrana dru?yna dostaje losow? nagrod?
Mod testowany na TFS 0.3.5 oraz 0.3.6 na wersji 0.4 Crashuje
Krok 1 - database
Dodajemy 2 zapytania do sql
PHP:
CREATE TABLE `Teams` (
`id` int(11) NOT NULL auto_increment,
`blue` varchar(255) NOT NULL,
`red` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
PHP:
INSERT INTO `Teams` (`id`, `Blue`, `Red`) VALUES ('1', '0', '0');
data/npc tworzymy Eventer.xml
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Eventer" script="event.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="129" head="79" body="113" legs="105" feet="86" addons="0"/>
<parameters>
<parameter key="message_greet" value="Witaj |PLAYERNAME|. Jezeli chcesz dolaczyc do eventu napisz {Battle}"/>
<parameter key="message_farewell" value="Do widzenia"/>
<parameter key="message_walkaway" value="Szkoda...." />
</parameters>
</npc>
PHP:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
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
local joined = 10000 ---musi byc jak w modzie
local maxPlayerEachTeam = 1 ---musi byc jak w modzie
local team1Name = "Blue" ---musi byc jak w modzie
local team2Name = "red"
local running2 = 12001 --musi byc jak w modzie
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if getGlobalStorageValue(running2) == 1 then
npcHandler:say("Walka rozpocznie sie pozniej, bedzie napisane kiedy rozpoczna sie zapisy do niej.", cid)
return false
end
if msgcontains(msg, 'battle') then
npcHandler:say("Jezeli chcesz dolaczyc do Eventu wpisz {yes}. Aktualnie jest " .. getBlue() .. "/" .. maxPlayerEachTeam .. " graczy w {" .. team1Name .. "} team oraz " .. getRed() .. "/" .. maxPlayerEachTeam .. " graczy w {" .. team2Name .. "} team.", cid)
talkState[talkUser] = 1
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
if getPlayerStorageValue(cid, joined) ~= 1 and getPlayerStorageValue(cid, joined) ~= 2 then
npcHandler:say("Czy chcesz dolaczyc do {" .. team1Name .. "} team albo {" .. team2Name .. "} team?", cid)
talkState[talkUser] = 2
else
npcHandler:say("Jestes juz zapisany!", cid)
talkState[talkUser] = 0
end
elseif msgcontains(msg, 'no') and talkState[talkUser] == 1 then
npcHandler:say("Okay then.", cid)
talkState[talkUser] = 0
elseif msgcontains(msg, team1Name) and talkState[talkUser] == 2 then
if getBlue() ~= maxPlayerEachTeam then --fixed
setPlayerStorageValue(cid, joined, 1)
db.executeQuery("UPDATE `Teams` SET `blue` = `blue` + " .. 1 .. " WHERE `id`= '" .. 1 .. "' LIMIT 1;")
npcHandler:say("Dolaczyles do " .. team1Name .. " team! Kiedy oba teamy beda mialy " .. maxPlayerEachTeam .. " graczy wszyscy zostana przeteleportowani na arene walk.", cid)
doBroadcastMessage("Event: " .. getPlayerName(cid) .. " Dolaczyl do bitwy " .. team1Name .. " team oraz " .. team2Name .. " team!")
talkState[talkUser] = 0
else
npcHandler:say("{" .. team1Name .. "} team jest aktualnie pelny, dolacz do {" .. team2Name .. "} team albo zaczekaj az ktos wyjdzie z {" .. team1Name .. "} team.", cid) --fixed
talkState[talkUser] = 1
end
elseif msgcontains(msg, team2Name) and talkState[talkUser] == 2 then
if getRed() ~= maxPlayerEachTeam then --fixed
setPlayerStorageValue(cid, joined, 2) --fixed
db.executeQuery("UPDATE `Teams` SET `red` = `red` + " .. 1 .. " WHERE `id`= '" .. 1 .. "' LIMIT 1;")
npcHandler:say("Dolaczyles do " .. team2Name .. " team! Kiedy oba teamu beda mialy " .. maxPlayerEachTeam .. " graczy, wszyscy zostana przeteleportowani na arene.", cid)
doBroadcastMessage("Event: " .. getPlayerName(cid) .. " Dolaczyles do bitwy " .. team1Name .. " team oraz " .. team2Name .. " team!")
talkState[talkUser] = 0
else
npcHandler:say("{" .. team2Name .. "} jest aktualnie pelny, dolacz do {" .. team1Name .. "} team albo zaczekaj az ktos wyjdzie. {" .. team2Name .. "} team.", cid)
talkState[talkUser] = 1
end
elseif msgcontains(msg, 'leave') then
npcHandler:say("Czy chcesz sie wypisac?", cid)
talkState[talkUser] = 3
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 3 then
if getPlayerStorageValue(cid,joined) == 1 then
setPlayerStorageValue(cid, joined, -1) -- fixed
removeBlue()
npcHandler:say("Wypisales sie z eventu.", cid)
doBroadcastMessage("Event: " .. getPlayerName(cid) .. " wyszedl z walki " .. team1Name .. " oraz " .. team2Name .. "!")
elseif getPlayerStorageValue(cid,joined) == 2 then --fixed
setPlayerStorageValue(cid,joined,-1)
removeRed()
npcHandler:say("Wyszedles z eventu.", cid)
doBroadcastMessage("Event: " .. getPlayerName(cid) .. " wyszedl z walki " .. team1Name .. " oraz " .. team2Name .. "!")
else
npcHandler:say("Jestes juz zapisany!", cid)
end
talkState[talkUser] = 0 -- moved
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Krok 3 - instalacja moda
w /mods/ robimy plik o nazwie event.xml
____________________________________________________________
autorem skryptu jest Damadgerz.
Link do tematu na otland.net
Ja jedynie lekko spolszycz?em NPC, je?eli chcecie mie? po angielsku skopiujcie go z tematu.
Je?eli macie jakie? pytania, piszcie w tym temacie, postaram si? pom?c