[Pytanie]Teleport za item

Zaczęty przez dymek84, Marzec 01, 2010, 07:14:32 AM

Poprzedni wątek - Następny wątek

dymek84

Jest taka możliwość aby w global gk dodać teleport w dane miejsce za jakiś item??

Luno


Matim

Zobacz jak działają questowe GK.

data/scripts/teleports

One mają różne sprawdzenia, czy masz dany status, item itp.

Naito

#3
Kod ten dziala napewno w oparciu o pliki l2jserver Gracia Final

1. Wejdz do folderu gamserver/data i edytuj plik scripts.cfg dodajac w nim na samym dole taka linijke:
Kod (python) [Zaznacz]
# Custom Teleports
teleports/1142_Custom_Gate/__init__.py


2.Przejdz teraz do katalogu gameserver/data/scripts/teleports/ i utworz w nim katalog o nazwie: 1142_Custom_Gate

3.Wejdz do utworzonego katalogu i utworz plik tekstowy nazywajac go: __init__.py

4. Wklej zawartosc ktora podam nizej do pliku z pkt 3

Kod (python) [Zaznacz]
# Custom_Gate - by Naito
import sys

from com.l2jserver.gameserver.model.actor.instance import      L2PcInstance
from com.l2jserver.gameserver.model.quest        import State
from com.l2jserver.gameserver.model.quest        import QuestState
from com.l2jserver.gameserver.model.quest.jython import QuestJython as JQuest
qn = "1142_Custom_Gate"
TOKEN = 110001
COIN = 110002

DATA={
11000:[174289,-86424,-5108], #Teleport pierwszy ktory powinien miec takie samo ID jak nazwa pliku htm w ktorym beda podane odpowiednie opcje teleportow
}

class Quest (JQuest) :

def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

def onAdvEvent (self,event,npc, player) :
   htmltext = event
   st = player.getQuestState(qn)
   if not st : return
   if event.isdigit():
      dest=int(event)
      if dest in DATA.keys():
         x,y,z=DATA[dest]
         if x and y and z:
            if st.getQuestItemsCount(TOKEN) > 0 and st.getQuestItemsCount(COIN) > 0:
              st.takeItems(TOKEN,0) and st.takeItems(COIN,0)
              st.getPlayer().teleToLocation(x,y,z)
            else:
              st.exitQuest(1)
              return "Musisz posiadac TOKEN i COIN aby skorzystac z teleportu"
   st.exitQuest(1)
   return

def onTalk (Self,npc,player):
   st = player.getQuestState(qn) 
   npcId = npc.getNpcId()
   if player.getLevel() <= 74:
     htmltext="1.htm"
     st.exitQuest(1)
   else:
     htmltext=str(npcId)+".htm"
   return htmltext

QUEST       = Quest(-1,qn,"Teleports")

for i in DATA.keys() :
    QUEST.addStartNpc(i)
    QUEST.addTalkId(i)


Npc ten bedzie wymagal aby gracz mial przy sobie wiecej niz 0 TOKEN i COIN za co odpowiada ta linijka:
Kod (python) [Zaznacz]
if st.getQuestItemsCount(TOKEN) > 0 and st.getQuestItemsCount(COIN) > 0:
Jak rowniez nie zabierze tych przedmitow graczowi za co odpowiada ta linijka kodu:
Kod (python) [Zaznacz]
st.takeItems(TOKEN,0) and st.takeItems(COIN,0)

Oczywiscie nie koniecznie musi tak byc mozna to zmienic tak aby wymagaly przedmioty i aby je zabieraly mysle ze jasno widac jak to zmienic.

5. Utworz w tym katalogu plik o nazwie 1.htm i wklej do niego te zawartosc:
Kod (html) [Zaznacz]

<html><title>Custom Gate by Naito</title>
<body>
<center>
Gate Information:<br><br>
If u want use teleport, you must have 74 lvl or above
</center>
</body></html>


linjka ktora odpowiada za wymagany poziom gracza:
Kod (python) [Zaznacz]
if player.getLevel() <= 74:

6. Utworz kolejny plik htm , nazwij go tak jak ID pierwszego teleportu czyli 11000.htm i wklej do niego te zawartosc:
<html><title>Custom Gate by Naito</title>
<body>
<br>
Custom Teleport Manager:<br>
<br>
<a action="bypass -h Quest 1142_Custom_Gate 11000">Teleprot Me !</a>
</body></html>


7. Edytuj kod html npc w ktorym chcesz aby byly te teleporty i dodaj w nim taki wpis:
<a action="bypass -h npc_%objectId%_Quest 1142_Custom_Gate">Custom Teleport Manager</a>

8. Oczywiscie aby npc wymagal itemow o id ktorych uzylem musza byc one wczesniej dodane do bazy danych w tabeli etcitem
za pomoca takich polecen:

Kod (sql) [Zaznacz]
INSERT INTO `etcitem` (`item_id`, `name`, `additionalname`, `crystallizable`, `item_type`, `weight`, `consume_type`, `material`, `crystal_type`, `duration`, `time`, `price`, `crystal_count`, `sellable`, `dropable`, `destroyable`, `tradeable`, `depositable`, `handler`, `skill`) VALUES
(110001, 'Token', '', 'false', 'quest', 5, 'stackable', 'gold', 'none', 1, 43200, 1, 0, 'false', 'false', 'true', 'false', 'false', 'none', '0-0;'),
(110002, 'Coin', '', 'false', 'quest', 5, 'stackable', 'gold', 'none', 1, 43200, 1, 0, 'false', 'false', 'true', 'false', 'false', 'none', '0-0;');


To chyba wszystko a jesli sa jakies bledy lub ktos czegos nie rozumie to prosze o poinformowanie mnie o tym postaram sie pomoc.
Zapraszam na serwer Team Speak 3 - Dead Echo - Community of Gamers - Adres: deadecho.pl


W Lineage 2 gram na serwerze: EU Core | Nick: Naito | Clan: BlackSwans

l2Diablo

gówno nie działa ić ty  matim buuuu   GG 22903714 jak takiś mądry to napisz to pokaże jak twoje dzieło działa hehe

Vearth

Lol ten wątek ma juz ponad 16 miesięcy. Matim już tu nie zagląda do tego działu... :?

P4CZU


SearchDeveloper

Naito testowałeś to?

Bo nie bardzo to działa przynajmniej dla mnie ... zmieniłem wszystkie importy pod swoje pliki i powiem ci że nie działa.
Wkleiłem w scripts.cfg no nie wiem spójrz na to może gdzieś zrobiłeś błąd ;p

Veandil

//offtop
Cytat: P4CZU w Grudzień 16, 2011, 07:20:11 PM
I tak mało co komu pomagał. ;)

mało komu pomagał? za coś takiego powinna być chłosta.
//ontop
u mnie wszystko trybi po lekkich przeróbkach
WWW.KOMPANIA-OW.XORG.PL
ASG to nie tylko zabawa- to sposób życia

maly232

Cytat: technics1990 w Październik 29, 2010, 08:33:46 PM
Head admin z Rosji dlatego lt strona
admin to ja

Brianoc

Przeanalizuj teleport do valakasa baiuma czy antharasa. Tam jest sprawdzany quest item, rusz glowa i przerob
a.k.a Szakalaka

Bot coder!

Nayana

Cytat: Brianoc w Grudzień 25, 2011, 02:37:17 PM
Przeanalizuj teleport do valakasa baiuma czy antharasa. Tam jest sprawdzany quest item, rusz glowa i przerob

Nie musi koniecznie przerabiać tych TP, może po prostu na nich się wzorować.
Ja mam paczkę aCis'a, i wzorowałem się na TP do valakasa, wszystko poszło gładko, no i oczywiście działa.