What's new

NPC Team Grouper

Status
Not open for further replies.

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

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');
Krok 2 - NPC
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>
data/npc/scripts tworzymy event.lua
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
 

dejwidmr

Advanced User
Joined
Dec 2, 2009
Messages
239
Reaction score
7
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Bardzo ciekawy i interesuj?cy MOD na wary gratuluj? 10/10
 

Invicten

User
Joined
Jul 4, 2010
Messages
21
Reaction score
17
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Jak robisz NPC i masz kilka odpowiedzi 'yes' to zr?b to lepiej w ten spos?b:
Code:
if msgcontains(msg, 'yes') then
	if talkState[talkUser] == x then
        elseif talkState[talkUser] == x then

etc...

Zajeba?e? spraw? z konfiguracj?. Komu b?dzie si? chcia?o przeszukiwa? pliki w poszukiwaniu opcji. Lepiej zrobi? to w function.lua, wtedy b?dzie si? mo?na do niej odwo?a? w ka?dym skrypcie.
 

bartox

Active User
Joined
Jul 9, 2009
Messages
99
Reaction score
10
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

spoko skrypt 9/10
da sie wybrac nagrode jaka ma dostawac? dostaje tylko jeden wylosowany czy caly team?
da sie wybrac w jakm teamie chcesz byc?
 

Arteek

Advanced User
Joined
May 6, 2010
Messages
272
Reaction score
37
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Bardzo ciekawy skrypt, ciekawe jak si? prezentuje na OTS, ale przede wszystkim mo?e sta? si? ciekawym urozmaiceniem na serverze.
 

Scootyy

Senior User
Joined
Jul 26, 2009
Messages
564
Reaction score
12
Age
34
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Jak robisz NPC i masz kilka odpowiedzi 'yes' to zr?b to lepiej w ten spos?b:
Code:
if msgcontains(msg, 'yes') then
	if talkState[talkUser] == x then
        elseif talkState[talkUser] == x then
etc...
Zajeba?e? spraw? z konfiguracj?. Komu b?dzie si? chcia?o przeszukiwa? pliki w poszukiwaniu opcji. Lepiej zrobi? to w function.lua, wtedy b?dzie si? mo?na do niej odwo?a? w ka?dym skrypcie.

napisa?em, ?e nie ja jestem autorem skryptu

spoko skrypt 9/10
da sie wybrac nagrode jaka ma dostawac? dostaje tylko jeden wylosowany czy caly team?
da sie wybrac w jakm teamie chcesz byc?


1.tak

PHP:
                        rewards_id = {8306, 8306, 8306, 8306, 8305},

2. ka?dy gracz, kt?ry by? w wygranym teamie dostaje nagrod?.

3.tak, NPC podaje te? informacje ilu graczy jest w danym teamie.
 

Scootyy

Senior User
Joined
Jul 26, 2009
Messages
564
Reaction score
12
Age
34
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

od?wie?am ;)...............
 

Jamakazu

User
Joined
Aug 26, 2008
Messages
25
Reaction score
0
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

bardzo fajny skrypt, przyda si? :) 9/10
 

Kono

User
Joined
Apr 7, 2008
Messages
13
Reaction score
1
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Ja mam b??d jaki? i nie wiem jak se z nim poradzic

[09/09/2010 13:47:05] Lua Script Error: [GlobalEvent Interface]
[09/09/2010 13:47:05] buffer:eek:nThink

[09/09/2010 13:47:05] [string "loadBuffer"]:50: attempt to call global 'getBlue' (a nil value)
[09/09/2010 13:47:05] stack traceback:
[09/09/2010 13:47:05] [string "loadBuffer"]:50: in function <[string "loadBuffer"]:48>
[09/09/2010 13:47:05] [Error - GlobalEvents::think] Couldn't execute event: TeamBattle
 

Shikos

Advanced User
Joined
Jun 26, 2009
Messages
152
Reaction score
2
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

UP@ tez wlasnie chyba mam taki sam blad co sie dzieje? i wogole jak pisze battle do npc to nic sie nie dzieje :/
 

Shikos

Advanced User
Joined
Jun 26, 2009
Messages
152
Reaction score
2
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Dlaczego taki b??d wyskakuje ?
 

BaXoN

Active User
Joined
Sep 11, 2010
Messages
78
Reaction score
10
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Skrypt, bardzo fajnie wykonany szczeg?lnie je?li chodzi o te nagrody. Ciekawe.
Nied?ugo przetestuje u siebie.
 

Shikos

Advanced User
Joined
Jun 26, 2009
Messages
152
Reaction score
2
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Czemu nikt nie chce odpisac? Czemu wyskakuje taki blad w silniku pozaladowaniu wszystkiego co napisal 3x UP Ile mozna pytac?
 

Duun

User
Joined
Jul 28, 2009
Messages
19
Reaction score
0
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Bardzo dobry skrypt mi dzia?a poprawnie
 

pomocny92

Active User
Joined
Jun 2, 2008
Messages
62
Reaction score
0
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

mam to samo..
[string "loadBuffer"]:50: attempt to call global 'getBlue' (a nil value) itd..
moze ktos wie ocb?
 

Karzelus

Advanced User
Joined
Oct 4, 2010
Messages
186
Reaction score
16
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

cos zle moze skopiowaliscie wydaje mi sie ze cos z druzyna niebieska zle
 

Deyvv

Active User
Joined
Nov 3, 2010
Messages
69
Reaction score
8
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Mo?e wasz silnik tego nie ogarnia ?

A co do skryptu to ciekawy, dru?yny, nagrody hm.. brawo :)
Mo?e wykorzystam. :)
 

Seylock

Active User
Joined
Oct 21, 2010
Messages
147
Reaction score
5
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Bardzo ciekawy mod :lol: Przydatny na eventach, i dla urozmajcenia ots ;) Czego? takiego w?a?nie szuka?em, ?wietnie nada si? na OTS rpg, na jakie? eventy :lol: Ocena skryptu 10/10 (nie znam si? na tych p?tlach itd, ale pomys? jak i d?ugo?? skryptu jak najbardziej mi odpowiada) :lol:
 

Predatori

User
Joined
Nov 9, 2010
Messages
23
Reaction score
0
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

0/11/2010 21:36:36] [Error - Npc interface]
[30/11/2010 21:36:36] data/npc/scripts/event.lua:eek:nCreatureSay
[30/11/2010 21:36:36] Description:
[30/11/2010 21:36:36] data/npc/scripts/event.lua:24: attempt to call global 'getBlue' (a nil value)
[30/11/2010 21:36:36] stack traceback:
[30/11/2010 21:36:36] data/npc/scripts/event.lua:24: in function 'callback'
[30/11/2010 21:36:36] data/npc/lib/npcsystem/npchandler.lua:390: in function 'onCreatureSay'
[30/11/2010 21:36:36] data/npc/scripts/event.lua:7: in function <data/npc/scripts/event.lua:7>

[30/11/2010 21:36:46] [Error - GlobalEvent Interface]
[30/11/2010 21:36:46] buffer:eek:nThink
[30/11/2010 21:36:46] Description:
[30/11/2010 21:36:46] [string "loadBuffer"]:50: attempt to call global 'getBlue' (a nil value)
[30/11/2010 21:36:46] stack traceback:
[30/11/2010 21:36:46] [string "loadBuffer"]:50: in function <[string "loadBuffer"]:48>
[30/11/2010 21:36:46] [Error - GlobalEvents::think] Couldn't execute event: TeamBattle


bardzo prosze opomoc bardzo chcia? bym miec tego skrypta ale takei cos mi wyskuje dam reputa jak pomorzecie naprawic +++
 

Predatori

User
Joined
Nov 9, 2010
Messages
23
Reaction score
0
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

[11/12/2010 18:03:37] Demore has logged in.
[11/12/2010 18:03:37] [Error - CreatureScript Interface]
[11/12/2010 18:03:37] buffer:eek:nLogin
[11/12/2010 18:03:37] Description:
[11/12/2010 18:03:37] data/lib/032-position.lua:2: attempt to index global 'position' (a nil value)
[11/12/2010 18:03:37] stack traceback:
[11/12/2010 18:03:37] data/lib/032-position.lua:2: in function 'isInRange'
[11/12/2010 18:03:37] [string "loadBuffer"]:5: in function <[string "loadBuffer"]:3>
[11/12/2010 18:03:37] > Broadcasted message: "Demore have left the War-Event".
[11/12/2010 18:03:37] Demore has logged out.

HElP jak skonfigurowa? ?? PLik Event w mods
bo z tego co wiem to jest wina z?ej konfiguracji.
Takie co? wyskakuje za ka?dym razem gdy prubuje sie zalogowa?.
 
Status
Not open for further replies.
Top