NPC Team Grouper

Status
Zamknięty.

Scootyy

Senior User
Zarejestrowany
Dołączył
Lipiec 26, 2009
Posty
564
Liczba reakcji
12
Wiek
36
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

http://wklej.org/id/376853/

____________________________________________________________

autorem skryptu jest Damadgerz.
Link do tematu na otland.net
http://otland.net/f82/mod-full-auto-war-teambattle-event-random-rewards-92825/
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
 
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Bardzo ciekawy i interesuj?cy MOD na wary gratuluj? 10/10
 
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Jak robisz NPC i masz kilka odpowiedzi 'yes' to zr?b to lepiej w ten spos?b:
Kod:
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.
 
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?
 
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.
 
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Jak robisz NPC i masz kilka odpowiedzi 'yes' to zr?b to lepiej w ten spos?b:
Kod:
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.
 
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

od?wie?am ;)...............
 
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

bardzo fajny skrypt, przyda si? :) 9/10
 
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:onThink

[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
 
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 :/
 
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Dlaczego taki b??d wyskakuje ?
 
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.
 
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?
 
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

Bardzo dobry skrypt mi dzia?a poprawnie
 
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?
 
Odp: [mod]BattleEvent

Odp:
Notka moderatorska:
BattleEvent

cos zle moze skopiowaliscie wydaje mi sie ze cos z druzyna niebieska zle
 
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. :)
 
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:
 
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:onCreatureSay
[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:onThink
[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 +++
 
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:onLogin
[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
Zamknięty.
Back
Do góry