Witaj
Gość

Wątek: [Poradnik] NPC Buffer  (Przeczytany 27938 razy)

  • Wiadomości: 145

  • Pochwał: -3

Odp: [Poradnik]NPC Buffer
« Odpowiedź #50 dnia: Czerwiec 15, 2009, 12:32:00 pm »
Dzięki pomogło, jednakże jest kolejny błąd mianowicie taki:


Error on: C:\Server\gameserver\data\scripts\custom\9999_NPCBuffer\__init__.py.error.log
Line: -1 - Column: -1

Traceback (innermost last):
  (no code object) at line 0
SyntaxError: ('invalid syntax', ('__init__.py', 38, 33, '                                st.getPlayer().setCurrentHp(st.getPlayer().getMaxHp())'))
« Ostatnia zmiana: Czerwiec 16, 2009, 11:16:22 am wysłana przez Matim »


  • *******
  • Wiadomości: 1092

  • Pochwał: 22

Odp: [Poradnik]NPC Buffer
« Odpowiedź #51 dnia: Czerwiec 15, 2009, 12:47:50 pm »
Pokaż script całego Buffera. Zresztą tych nawiasów jest trochę za dużo ... dla przykładu :

Cytuj
.getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().restoreHPMP()


  • Wiadomości: 145

  • Pochwał: -3

Odp: [Poradnik]NPC Buffer
« Odpowiedź #52 dnia: Czerwiec 15, 2009, 12:51:02 pm »
Proszę bardzo, przepisany zywcem z tego tematu ;

import sys
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from net.sf.l2j.gameserver.datatables import SkillTable
from net.sf.l2j                import L2DatabaseFactory
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest

qn = "9999_NPCBuffer"

NPC=[40010]
ADENA_ID=57
QuestId     = 9999
QuestName   = "NPCBuffer"
QuestDesc   = "custom"
InitialHtml = "1.htm"

print "importing custom: 9999: NPCBuffer"

class Quest (JQuest) :

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


   def onEvent(self,event,st):
      htmltext = event
      count=st.getQuestItemsCount(ADENA_ID)
      if count < 150000 or st.getPlayer().getLevel() < 40 :
          htmltext = "<html><head><body>No Tienes Adena</body></html>"
      else:
         st.takeItems(ADENA_ID,0)
         st.getPlayer().setTarget(st.getPlayer())
         
         if event == "1":
            st.takeItems(ADENA_ID,1000)
            st.getPlayer().setCurrentCp(st.getPlayer().getMaxCp())
                                st.getPlayer().setCurrentHp(st.getPlayer().getMaxHp())
                                st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "1.htm"     
            st.setState(COMPLETED)

         #Wind Walk
         if event == "2":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4342,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Decrease Weight
         if event == "3":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4343,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Shield
         if event == "4":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4344,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Might
         if event == "5":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4345,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Mental Shield
         if event == "6":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4346,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Bless the Body
         if event == "7":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4347,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Bless the Soul
         if event == "8":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4348,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Magic Barrier
         if event == "9":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4349,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Resist Shock
         if event == "10":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4350,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Concentration
         if event == "11":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4351,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Berserker Spirit
         if event == "12":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4352,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Bless Shield
         if event == "13":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4353,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Vampiric Rage
         if event == "14":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4354,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Acumen
         if event == "15":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4355,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Empower
         if event == "16":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4356,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Haste
         if event == "17":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4357,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Guidance
         if event == "18":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4358,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Focus
         if event == "19":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4359,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Death Whisper
         if event == "20":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(4360,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         if event == "21":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(271,1).getEffects(st.getPlayer(),st.getPlayer())   
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "22":
            st.takeItems(ADENA_ID,20000)   
            SkillTable.getInstance().getInfo(272,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "23":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(273,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "24":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(274,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "25":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(275,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "26":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(276,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "27":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(277,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "28":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(307,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "29":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(309,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "30":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(310,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "31":
            st.takeItems(ADENA_ID,20000)     
            SkillTable.getInstance().getInfo(311,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "32":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(366,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "3.htm"

         if event == "33":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(365,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())         
            return "3.htm"

         if event == "34":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(264,1).getEffects(st.getPlayer(),st.getPlayer())   
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "35":
            st.takeItems(ADENA_ID,20000)   
            SkillTable.getInstance().getInfo(265,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "36":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(266,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "37":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(267,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "38":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(268,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "39":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(269,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "40":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(270,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "41":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(304,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "42":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(305,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "43":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(306,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"   

         if event == "44":
            st.takeItems(ADENA_ID,20000)   
            SkillTable.getInstance().getInfo(308,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "45":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(363,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"

         if event == "46":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(364,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"   
             
         if event == "47":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(349,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "4.htm"   
            st.setState(COMPLETED)
           
           
         #Chant of Battle
         if event == "48":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1007,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
           
         #Chant of Shielding
         if event == "49":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1009,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
           
         #Chant of Fire
         if event == "50":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1006,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
           
         #Chant of Flame
         if event == "51":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1002,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
           
         #Chant of life
         if event == "52":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1229,18).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
           
         #Chant of Fury
         if event == "53":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1251,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
           
         #Chant of Evasion
         if event == "54":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1252,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
           
         #Chant of Rage
         if event == "55":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1253,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
           
         #Chant of Revenge
         if event == "56":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1284,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
           
         #Chant of Vampire
         if event == "57":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1310,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
           
         #Chant of Eagle
         if event == "58":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1309,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
           
         #Chant of Predator
         if event == "59":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1308,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
           
         #Chant of Spirit
         if event == "60":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1362,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
           
         #Chant of Victory
         if event == "61":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1363,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)
           
         #chant of magnus
         if event == "62":
            st.takeItems(ADENA_ID,20000)
            SkillTable.getInstance().getInfo(1413,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "5.htm"
            st.setState(COMPLETED)   
         
         #MPreg
         if event == "63":
            st.takeItems(ADENA_ID,1000)
            SkillTable.getInstance().getInfo(1013,32).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "1.htm"     
            st.setState(COMPLETED)         

         #greatmight
         if event == "64":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1388,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #greatshield
         if event == "65":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1389,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #holyresist
         if event == "66":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1392,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #Unholyresist
         if event == "67":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1393,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #pof
         if event == "68":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1356,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #elemtprotect
         if event == "69":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1352,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #wildmagic
         if event == "70":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1303,2).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #advblock
         if event == "71":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1304,3).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #divProtect
         if event == "72":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1353,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #pow
         if event == "73":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1355,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #powi
         if event == "74":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1357,1).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #manaregen
         if event == "75":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1047,4).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)

         #ba
         if event == "76":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1311,6).getEffects(st.getPlayer(),st.getPlayer())
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "2.htm"     
            st.setState(COMPLETED)
                        #noble
         if event == "77":
            st.takeItems(ADENA_ID,25000)
            SkillTable.getInstance().getInfo(1323,1).getEffects(st.getPlayer(),st.getPlayer())
            return "1.htm"     
            st.setState(COMPLETED)
           

         #Cancellation
         if event == "78":
            st.takeItems(ADENA_ID,5000)
            st.getPlayer().useMagic(SkillTable.getInstance().getInfo(9950,1),False,False)
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "1.htm"
            st.setState(COMPLETED)         
           
         if htmltext != event:
            st.setState(COMPLETED)
            st.exitQuest(1)
      return htmltext


   def onTalk (self,npc,player):
      st = player.getQuestState(qn)
      htmltext = "<html><head><body>I have nothing to say to you</body></html>"
      st.setState(State.STARTED)
      return InitialHtml

QUEST       = Quest(QuestId,str(QuestId) + "_" + QuestName,QuestDesc)

for npcId in NPC:
 QUEST.addStartNpc(npcId)
 QUEST.addTalkId(npcId)



//Matim , wszelkie kody itp umieszczamy w odpowiednim "bloku" , tak jak zrobiłem to ja
« Ostatnia zmiana: Czerwiec 15, 2009, 12:59:39 pm wysłana przez Matim »


  • Wiadomości: 145

  • Pochwał: -3

Odp: [Poradnik]NPC Buffer
« Odpowiedź #53 dnia: Czerwiec 15, 2009, 01:02:40 pm »
Matim a miałbyś czas żeby te bloki porobić w skrypcie jak mają być?
Bo nie tylko ja mam taki problem, a temat bedzie powracał, z góry dzięki


  • *******
  • Wiadomości: 1092

  • Pochwał: 22

Odp: [Poradnik]NPC Buffer
« Odpowiedź #54 dnia: Czerwiec 15, 2009, 01:13:58 pm »
Pisząc bloki miałem na myśli :

Cytuj

lub :


 :)

Co do buffera to zaraz go naprawię . Cierpliwości tylko przetestuje .



  • Wiadomości: 145

  • Pochwał: -3

Odp: [Poradnik]NPC Buffer
« Odpowiedź #55 dnia: Czerwiec 15, 2009, 01:15:55 pm »
oki dzięki, ja w tym czasie sprawdzę twojego npc vote :p czekam na poprawionego NPC Buffera jeszcze raz thx


  • *******
  • Wiadomości: 1092

  • Pochwał: 22

Odp: [Poradnik]NPC Buffer
« Odpowiedź #56 dnia: Czerwiec 16, 2009, 11:14:54 am »
mariucha - przepraszam, ale aktualnie nie mam żadnego clienta L2 na dysku, ale w tym czasie możesz przecież użyć innych gotowych NPC Bufferów, lub L2J Buff Creator'a autorstwa DragonHunter'a, a o to link do niego :

Click

Ten owy program automatycznie wygeneruje Ci skrypt i html'e do buffera. Jeśli chcesz mieć już gotowego to przeszukaj : www.maxcheaters.com lub www.ragezone.com


  • Wiadomości: 145

  • Pochwał: -3

Odp: [Poradnik]NPC Buffer
« Odpowiedź #57 dnia: Czerwiec 16, 2009, 01:23:27 pm »
Dzięki poszukam i na pewno cos znajde, chciałem tylko zasygnalizować, że poradnik zawiera błędy.


  • *******
  • Wiadomości: 1092

  • Pochwał: 22

Odp: [Poradnik]NPC Buffer
« Odpowiedź #58 dnia: Czerwiec 16, 2009, 01:24:44 pm »
Znajdę chwilę czasu to go zredaguje .


  • Wiadomości: 15

  • Pochwał: 0

  • L2Fog
Odp: [Poradnik]NPC Buffer
« Odpowiedź #59 dnia: Luty 17, 2010, 03:20:27 pm »
Witam czy mógłby ktoś te skrypty poprawić, sambym poprawił jak bym wiedział jak  :P
Matim czy naprawiłeś te skrypty jak tak to plz. wstaw w temat napewno się komuś przydadzą. Z góry dzięki  8)

______________________________________________________
6477276


  • Wiadomości: 15

  • Pochwał: 0

  • L2Fog
Odp: [Poradnik]NPC Buffer
« Odpowiedź #60 dnia: Luty 17, 2010, 03:33:45 pm »
Ok poradziłem sobie z poprzednim błędem ale z tym to już nie :D
Error on: D:\serwer\serwerCT1.5\Gameserver\data\scripts\custom\9999_NPCBuffer\__init__.py.error.log
Line: -1 - Column: -1

Traceback (innermost last):
  File "__init__.py", line 2, in ?
ImportError: no module named net

hmm... co jest z tym nie tak  :x

______________________________________________________
6477276


  • Wiadomości: 538

  • Pochwał: 26

Odp: [Poradnik]NPC Buffer
« Odpowiedź #61 dnia: Luty 17, 2010, 06:32:33 pm »
Traceback (innermost last):
  File "__init__.py", line 2, in ?
ImportError: no module named net[/code]

hmm... co jest z tym nie tak  :x

Tak jak mówi komunikat błędu "no module named net", zgaduje, że chcesz użyć skryptu, który znajduje się parę postów wyżej, gdzie mamy importu chociażby

from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from net.sf.l2j.gameserver.datatables import SkillTable
from net.sf.l2j                import L2DatabaseFactory
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest

Czyli (czytamy) "Z modulu net.sf.l2j.(...)  zaimportuj L2PcInstance" itd.
A jeśli używasz nowego kodu l2j, to tam takich modułów nie uświadczysz (moduly jythonowe, są mapowane na pakiety javowe). Struktura pakietów w l2j wygląda teraz "com.l2jserver....".
Musisz to po prostu poprawić.


  • Wiadomości: 15

  • Pochwał: 0

  • L2Fog
Odp: [Poradnik]NPC Buffer
« Odpowiedź #62 dnia: Luty 17, 2010, 11:07:22 pm »
Mam pliki l2jfree i zmieniłem na :
import sys
from com.l2jfree.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from com.l2jfree.gameserver.datatables import SkillTable
from com.l2jfree.gameserver.model.quest import State
from com.l2jfree.gameserver.model.quest import QuestState
from com.l2jfree.gameserver.model.quest.jython import QuestJython as JQuest

lecz nie będzie:
Error on: D:\serwer\serwerCT1.5\Gameserver\data\scripts\custom\997_Buffer\__init__.py.error.log
Line: -1 - Column: -1

Traceback (innermost last):
  File "__init__.py", line 569, in ?
TypeError: com.l2jfree.gameserver.model.quest.State(): expected 0 args; got 2


______________________________________________________
6477276


  • Wiadomości: 538

  • Pochwał: 26

Odp: [Poradnik]NPC Buffer
« Odpowiedź #63 dnia: Luty 18, 2010, 12:44:35 am »
Nie widze tu zadnego jawnego tworzenia State, co dokladnie zawiera ta linijka kodu, o ktora sie pluje ?

Btw, ten kod ma w sobie troche innego typu usterek:

1) Ma przemasakryczna ilosc powtorzonego kodu ( zrobionego metoda copy&paste ), co nie tylko wyglada tragicznie, ale jest tragiczne w utrzymaniu i ewentualnych zmianach, znalezienie bledu jest ciezkie.

2) W ifach jest tu taka kolejnosc:
if event == "78":
            st.takeItems(ADENA_ID,5000)
            st.getPlayer().useMagic(SkillTable.getInstance().getInfo(9950,1),False,False)
            st.getPlayer().setCurrentMp(st.getPlayer().getMaxMp())
            return "1.htm"
            st.setState(COMPLETED)
Oczywistym jest ze to setState sie nigdy nie wykona

tak samo na koncu jest
if htmltext != event:
            st.setState(COMPLETED)
            st.exitQuest(1)
ktore tez sie nigdy nie wykona, bo sterowanie tu nie ma szans dojsc.

Sugeruje uprzątniecie tego kodu w nastepujący sposob:

import sys
from com.l2jfree.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from com.l2jfree.gameserver.datatables import SkillTable
from com.l2jfree.gameserver.model.quest import State
from com.l2jfree.gameserver.model.quest import QuestState
from com.l2jfree.gameserver.model.quest.jython import QuestJython as JQuest

qn = "9999_NPCBuffer"

NPC = [40010]
ADENA_ID = 57
QuestId = 9999
QuestName = "NPCBuffer"
QuestDesc = "custom"
InitialHtml = "1.htm"

print "importing custom: 9999: NPCBuffer"

BUFFS = {
  #event id, adena, sk_id, sk_lv, html
    "2":[25000, 4342, 2, "2.htm"], #Wind walk
    "3":[25000, 4343, 3, "2.htm"], #Decrease weight
    "4":[25000, 4344, 3, "2.htm"], #Shield
    "5":[25000, 4345, 3, "2.htm"], #Might
    "6":[25000, 4346, 4, "2.htm"], #Mental Shield
    "7":[25000, 4347, 6, "2.htm"], #Bless the body
    "8":[25000, 4348, 6, "2.htm"], #Bless the soul
    "9":[25000, 4349, 2, "2.htm"], #Magic Barrier
    "10":[25000, 4350, 4, "2.htm"], #Resist Shock
    "11":[25000, 4351, 6, "2.htm"], #Concentration
    "12":[25000, 4352, 2, "2.htm"], #Berserker Spirit
    "13":[25000, 4353, 6, "2.htm"], #Bless Shield
    "14":[25000, 4354, 4, "2.htm"], #Vampiric Rage
    "15":[25000,4355,3,"2.html"], #Acumen
    "16":[25000,4356,3,"2.html"], #Empower
    "17":[25000,4357,2,"2.html"], #Haste
    "18":[25000,4358,3,"2.html"], #Guidance
    "19":[25000,4359,3,"2.html"], #Focus
    "20":[25000,4360,3,"2.html"], #DeathWhisper
    "21":[20000,271,1,"3.html"],
    "22":[20000,272,1,"3.html"],
    "23":[20000,273,1,"3.html"],
    "24":[20000,274,1,"3.html"],
    "25":[20000,275,1,"3.html"],
    "26":[20000,276,1,"3.html"],
    "27":[20000,277,1,"3.html"],
    "28":[20000,307,1,"3.html"],
    "29":[20000,309,1,"3.html"],
    "30":[20000,310,1,"3.html"],
    "31":[20000,311,1,"3.html"],
    "32":[20000,366,1,"3.html"],
    "33":[20000,365,1,"3.html"],
    "34":[20000,264,1,"4.html"],
    "35":[20000,265,1,"4.html"],
    "36":[20000,266,1,"4.html"],
    "37":[20000,267,1,"4.html"],
    "38":[20000,268,1,"4.html"],
    "39":[20000,269,1,"4.html"],
    "40":[20000,270,1,"4.html"],
    "41":[20000,304,1,"4.html"],
    "42":[20000,305,1,"4.html"],
    "43":[20000,306,1,"4.html"],
    "44":[20000,308,1,"4.html"],
    "45":[20000,363,1,"4.html"],
    "46":[20000,364,1,"4.html"],
    "47":[20000,349,1,"4.html"],
    "48":[20000,1007,3,"5.html"], #ChantofBattle
    "49":[20000,1009,3,"5.html"], #ChantofShielding
    "50":[20000,1006,3,"5.html"], #ChantofFire
    "51":[20000,1002,3,"5.html"], #ChantofFlame
    "52":[20000,1229,18,"5.html"], #Chantoflife
    "53":[20000,1251,2,"5.html"], #ChantofFury
    "54":[20000,1252,3,"5.html"], #ChantofEvasion
    "55":[20000,1253,3,"5.html"], #ChantofRage
    "56":[20000,1284,3, "5.html"], #ChantofRevenge
    "57":[20000,1310,4,"5.html"], #ChantofVampire
    "58":[20000,1309,3,"5.html"], #ChantofEagle
    "59":[20000,1308,3,"5.html"], #ChantofPredator
    "60":[20000,1362,1,"5.html"], #ChantofSpirit
    "61":[20000,1363,1,"5.html"], #ChantofVictory
    "62":[20000,1413,1,"5.html"], #chantofmagnus
    "63":[1000,1013,32,"1.html"], #MPreg
    "64":[25000,1388,3,"2.html"], #greatmight
    "65":[25000,1389,3,"2.html"], #greatshield
    "66":[25000,1392,3,"2.html"], #holyresist
    "67":[25000,1393,3,"2.html"], #Unholyresist
    "68":[25000,1356,1,"2.html"], #pof
    "69":[25000,1352,1,"2.html"], #elemtprotect
    "70":[25000,1303,2,"2.html"], #wildmagic
    "71":[25000,1304,3,"2.html"], #advblock
    "72":[25000,1353,1,"2.html"], #divProtect
    "73":[25000,1355,1,"2.html"], #pow
    "74":[25000,1357,1,"2.html"], #powi
    "75":[25000,1047,4,"2.html"], #manaregen
    "76":[25000,1311,6,"2.html"], #ba
    "77":[25000,1323,1,"1.html"]  #noble
}

class Quest (JQuest) :

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

    def buffPlayer(self, event, st):
        if not BUFFS.has_key(event):
            return event
       
        adena, skill_id, skill_lv, html = BUFFS[event]
        player = st.getPlayer()
       
        st.takeItems(ADENA_ID, adena)
        SkillTable.getInstance().getInfo(skill_id, skill_lv).getEffects(player, player)
        player.setCurrentMp(player.getMaxMp())
       
        return html     


    def onEvent(self, event, st):
        player = st.getPlayer()
        htmltext = event
        if st.getQuestItemsCount(ADENA_ID) < 150000 or player.getLevel() < 40 :
            htmltext = "<html><head><body>No Tienes Adena</body></html>"
        else:
            player.setTarget(st.getPlayer())
           
            if event == "1":
                st.takeItems(ADENA_ID, 1000)
                player.setCurrentCp(player.getMaxCp())
                player.setCurrentHp(player.getMaxHp())
                player.setCurrentMp(player.getMaxMp())
                htmltext = "1.htm"     
            elif event == "78": #cancellation
                st.takeItems(ADENA_ID, 5000)
                player.useMagic(SkillTable.getInstance().getInfo(9950, 1), False, False)
                player.setCurrentMp(player.getMaxMp())
                htmltext = "1.htm"
            else:
                htmltext = self.buffPlayer(event, st)
   
        return htmltext


    def onTalk (self, npc, player):
        st = player.getQuestState(qn)
        st.setState(State.STARTED)
        return InitialHtml

QUEST = Quest(QuestId, str(QuestId) + "_" + QuestName, QuestDesc)

for npcId in NPC:
    QUEST.addStartNpc(npcId)
    QUEST.addTalkId(npcId)


  • Wiadomości: 15

  • Pochwał: 0

  • L2Fog
Odp: [Poradnik]NPC Buffer
« Odpowiedź #64 dnia: Luty 18, 2010, 11:05:01 am »
Error on: D:\serwer\serwerCT1.5\Gameserver\data\scripts\custom\997_Buffer\__init__.py.error.log
Line: -1 - Column: -1

Traceback (innermost last):
  (no code object) at line 0
SyntaxError: ('invalid syntax', ('__init__.py', 117, 9, '        st.takeItems(ADENA_ID, adena)'))

Next error.


______________________________________________________
6477276


  • Wiadomości: 538

  • Pochwał: 26

Odp: [Poradnik]NPC Buffer
« Odpowiedź #65 dnia: Luty 18, 2010, 05:12:45 pm »
Taki blad masz dokladnie na tym skrypcie co wkleilem wyzej ?
Bo patrzac po numeracji wierszy, to niezbyt.


  • Wiadomości: 15

  • Pochwał: 0

  • L2Fog
Odp: [Poradnik]NPC Buffer
« Odpowiedź #66 dnia: Luty 18, 2010, 05:42:12 pm »
tak na tym co wkleiłeś  :? i nie mogę go rozgryźć

______________________________________________________
6477276


  • Wiadomości: 538

  • Pochwał: 26

Odp: [Poradnik]NPC Buffer
« Odpowiedź #67 dnia: Luty 20, 2010, 08:08:34 pm »
Nie mam jak tego przetestowac "na żywo", ale jak napisałem w pythonie klasy dla Playera i State i odpalilem to jako program pythonowy, to wszystko dziala jak powinno, bez bledow.

Upewnij sie ze przekopiowales poprawnie ( czy przez przypadek sie wciecia gdzies nie popsuly ).
W razie czego zamieszczam jeszcze wersje w pliku.



  • Wiadomości: 15

  • Pochwał: 0

  • L2Fog
Odp: [Poradnik]NPC Buffer
« Odpowiedź #68 dnia: Luty 20, 2010, 08:41:39 pm »
ok buffer działa  :)

______________________________________________________
6477276


  • Wiadomości: 24

  • Pochwał: -1

Odp: [Poradnik]NPC Buffer
« Odpowiedź #69 dnia: Wrzesień 25, 2010, 12:04:17 am »
Sorq, że odświeżam temat, ale to przy okazji nawiązanie do tego, bo czytając to wszystko jednego nie rozumiem, tj. nie znalazłem odp. pisząc własnego buffera. Mianowicie skill "Cancellation", który jest podpisany pod Id 9950. Tylko, że skill o takim Id nie istnieje, więc nie bardzo rozumiem sens tego jak i samo działanie (lub raczej nie-działanie).
Luno ładnie przepisał kod i zrobił to na tablicach, wyodrębnił ten skill, więc pewnie zna odpowiedź.
Zwyczajnie wydaje mi się to trochę dziwne rozwiązanie, no ale zobaczymy co inni mają do powiedzenia...
-------
Ok, już nie ważne. Znalazłem o wiele ładniejszą funkcję. Nie dość, że działa to wygląda estetyczniej ;)
Tak więc błąd w bufferze błędem, ale sorki za wskrzeszanie tematu ;)
« Ostatnia zmiana: Wrzesień 25, 2010, 11:27:02 am wysłana przez Slynx »


  • Wiadomości: 538

  • Pochwał: 26

Odp: [Poradnik]NPC Buffer
« Odpowiedź #70 dnia: Wrzesień 29, 2010, 11:09:39 pm »
Szczerze mowiac, nawet nie sprawdzalem czy jest taki skill ani co dokladnie by robil, wydzielilem dlatego, ze jego uzycie bylo inaczej zrobione, a nie zaglebialem sie zbytnio :) chcialem tylko uporzadkowac troche ten kod.

Jesli to ma byc po prostu usuniecie wszystkich buffow, to fakt, wystarczy wywolac jedna metode.


  • Wiadomości: 13

  • Pochwał: 0

Odp: [Poradnik] NPC Buffer
« Odpowiedź #71 dnia: Styczeń 22, 2012, 05:17:08 pm »
Witam,
Mam problem z tym bufferem  w momencie gdy chce wgrac  tego npc do bazy mysql to wywala mi taki blad : 1048 - Column 'runspd' cannot be null ktos wie o co chodzi prosze o pomoc (zaznaczam ze zrobilem w wszystko tak jak Maślan opisał).


  • Wiadomości: 100

  • Pochwał: 4

  • ZAKAZ OGNIA Z DUPY
Odp: [Poradnik] NPC Buffer
« Odpowiedź #72 dnia: Styczeń 24, 2012, 09:47:15 am »
Witam,
Mam problem z tym bufferem  w momencie gdy chce wgrac  tego npc do bazy mysql to wywala mi taki blad : 1048 - Column 'runspd' cannot be null ktos wie o co chodzi prosze o pomoc (zaznaczam ze zrobilem w wszystko tak jak Maślan opisał).


Wyjście 1

Jeżeli wgrywasz przez nawicata, to żeby nie mieć błędu musisz sprawdzić ilość kolumn npck'a i ilość kolumn na twoim serwerze. Jeżeli wszystko się zgadza, to sprawdź (jeżeli np wyskakuje Ci błąd z runspd, to zobacz w której kolumnie znajduje się w folderze, który ściągnąłeś, a w której kolumnie w twoim navicacie, jeżeli jest to ta sama cyfra, nie ma mowy o błędzie) czy wszystko dobrze zrobiłeś.Możesz ew. sprawdzić, czy nie masz takiego już npcka w bazie danych.

Wyjście 2

Drugim wyjściem, jakie mogę Ci zaproponować, jest wgranie "ręczne" do bazy danych. Po prostu tworzysz nową tabelę, i wpisujesz pokolei, ID,IDTemplated,Name itp. Dzięki temu rozwiązaniu, możesz mieć później kłopoty (tak słyszałem), ale jak jeszcze się w to bawiłem, i wgrywałem npcka ręcznie, to żadnych problemów nie doświadczyłem.

Wyjście 3

Pamiętaj o tym, że wszędzie musi być jakaś cyfra. W żadnym wypadku, nie możesz pozostawić np. "". Musi to być "0", ale nigdy puste. Sprawdź, czy nie masz tak w runspd.
« Ostatnia zmiana: Styczeń 24, 2012, 09:48:51 am wysłana przez Nayana »


  • Wiadomości: 13

  • Pochwał: 0

Odp: [Poradnik] NPC Buffer
« Odpowiedź #73 dnia: Styczeń 24, 2012, 06:20:52 pm »
Nie mam pojęcia jak zrobić 1wyjscie 2wpisalem ręcznie i spawnuje mi npc ale nie widzę go no i jak kliknę na niego i biorę q wtedy mam komunikat "you are either not on a quest that involves this NPC,or you don't meet this npc's minimum quest requirements." i nie wiem co jest gdzie znajdę tego runspd bo nie wiem gdzie szukać :( a buffera nie ściągałem zrobiłem krok po kroku jak pisal maslan chyba muszę sobie odpuścić buffera na servie bo za długo sie z tym mecze tak samo jak z global gk i gm shop ^^.


  • Wiadomości: 100

  • Pochwał: 4

  • ZAKAZ OGNIA Z DUPY
Odp: [Poradnik] NPC Buffer
« Odpowiedź #74 dnia: Styczeń 24, 2012, 06:30:56 pm »
Nie mam pojęcia jak zrobić 1wyjscie 2wpisalem ręcznie i spawnuje mi npc ale nie widzę go no i jak kliknę na niego i biorę q wtedy mam komunikat "you are either not on a quest that involves this NPC,or you don't meet this npc's minimum quest requirements." i nie wiem co jest gdzie znajdę tego runspd bo nie wiem gdzie szukać :( a buffera nie ściągałem zrobiłem krok po kroku jak pisal maslan chyba muszę sobie odpuścić buffera na servie bo za długo sie z tym mecze tak samo jak z global gk i gm shop ^^.
Przecież to są najprostsze rzeczy jakie mogą być. Odpalasz nawicata, wklejasz npcki, podmieniasz html'e, //spawn 1234 i masz gotowe.