Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   Пишу евент (Буду просби помощи писать сюда) (https://forum.zone-game.info/showthread.php?t=18962)

La2Riviera 01.04.2012 17:25

Пишу евент (Буду просби помощи писать сюда)
 
Такс пишу евент аля ДоТа.
За исходник взял ctf евент так как больше всего подходит.
Сделал спавн турелек и зданий. Защитил их.
1 что мне надо помочь:

Код:

def onAttack (self,npc,player,damage,isPet):
  npcId = npc.getNpcId()
  if npcId == BASE2 and player.getName() not in TEAM1 :
    player.reduceCurrentHp(9999,player)

Как мне сделеать нечто похожее

Код:

def onAttack (self,npc,player,damage,isPet):
  npcId = npc.getNpcId()
  if npcId == BASE2 and npcId == TURD1 "Как написать тут проверку на то жив ли тот нпц или нет" :
    player.reduceCurrentHp(9999,player)

Мне надо сделать так чтобы люди не били базу пока Турельки живи.
сли нпцид == база2 и нпцид == турелька1 жива
то хп чудика который атакует ее -9999

L2scripts-Guard 01.04.2012 17:27

Re: Пишу евент (Буду просби помощи писать сюда)
 
npcId == BASE2 and npcId == TURD1

Так не будет никогда если BASE2 != TURD1

А вообще возможно проверить если жив или нет с помощью !npc.isDead()
Может помочь.

La2Riviera 01.04.2012 17:28

Re: Пишу евент (Буду просби помощи писать сюда)
 
iqman, это что такое? О_О
Код:

//delete 2min

L2scripts-Guard 01.04.2012 17:30

Re: Пишу евент (Буду просби помощи писать сюда)
 
Опять не совсем то пишу, что же такое со мной сегодня ))

Добавлено через 2 минуты
У меня вопрос, турелька одна в мире или несколько?

Добавлено через 2 минуты
Так-же в скрипте ее спавните? вообще как ее спавн происходит?

La2Riviera 01.04.2012 17:34

Re: Пишу евент (Буду просби помощи писать сюда)
 
еще вопрос.
Код:

def onAttack (self,npc,player,damage,isPet):
  npcId = npc.getNpcId()
  if npcId == BASE2 and player.getName() not in TEAM1 :
    player.reduceCurrentHp(9999,player)
  if npcId == TURD1 and player.getName() not in TEAM1 :
    player.reduceCurrentHp(9999,player)
  if npcId == TURD2 and player.getName() not in TEAM1 :
    player.reduceCurrentHp(9999,player)
  if npcId == TURD3 and player.getName() not in TEAM1 :
    player.reduceCurrentHp(9999,player)
  if npcId == INHD and player.getName() not in TEAM1 :
    player.reduceCurrentHp(9999,player)
  if npcId == BASE1 and player.getName() not in TEAM2 :
    player.reduceCurrentHp(9999,player)
  if npcId == TURL1 and player.getName() not in TEAM2 :
    player.reduceCurrentHp(9999,player)
  if npcId == TURL2 and player.getName() not in TEAM2 :
    player.reduceCurrentHp(9999,player)
  if npcId == TURL3 and player.getName() not in TEAM2 :
    player.reduceCurrentHp(9999,player)
  if npcId == INHL and player.getName() not in TEAM2 :
    player.reduceCurrentHp(9999,player)
  return

Почему эта фишка работает ток на BASE1/2.
Просто когда я в команде 1 и бью свою вышку то мну не убивает 0_0 (думал мб напутал тим1/2 но нет когда бью вышку противника то тоже не убивает)

Добавлено через 48 секунд
iqman, Спавн вот так.
Код:

      Announcements.getInstance().announceToAll("Event "+str(NAME)+" has started!")
      npc.deleteMe()
      npc1=self.addSpawn(BASE1,t1[0],t1[1],t1[2],30000,False,0)
      npc2=self.addSpawn(BASE2,t2[0],t2[1],t2[2],30000,False,0)
      npc3=self.addSpawn(TURL1,lt1[0],lt1[1],lt1[2],3600000,False,0)
      npc4=self.addSpawn(TURL2,lt2[0],lt2[1],lt2[2],3600000,False,0)
      npc5=self.addSpawn(TURL3,lt3[0],lt3[1],lt3[2],3600000,False,0)
      npc6=self.addSpawn(INHL,li[0],li[1],li[2],900000,False,0)
      npc7=self.addSpawn(TURD1,dt1[0],dt1[1],dt1[2],3600000,False,0)
      npc8=self.addSpawn(TURD2,dt2[0],dt2[1],dt2[2],3600000,False,0)
      npc9=self.addSpawn(TURD3,dt3[0],dt3[1],dt3[2],3600000,False,0)
      npc10=self.addSpawn(INHD,di[0],di[1],di[2],900000,False,0)

И их всего 6 + инхибитора 2 + 2 базы

L2scripts-Guard 01.04.2012 17:36

Re: Пишу евент (Буду просби помощи писать сюда)
 
Я с путонам правда долго не работал, но помню что там надо глобалы обозначать над каждым методом что бы они нормально работали.
Ну и естественно регистрацию всех участвующих НПЦ делать при загрузки скрипта.

Добавлено через 2 минуты
Ок, обозначаем спавны как глобалы, и тогда можем ими пользоваться в любом методе (нужно вроде в каждом методе их декларировать), и используем !npcX.isDead()
X = Ваш обозначенный НПЦ
НЕ работал года 2 с путоном, забыл уже почти все, буду рад если кто-то сможет помочь тут больше меня =)

La2Riviera 01.04.2012 17:42

Re: Пишу евент (Буду просби помощи писать сюда)
 
iqman, спс щас попробуем )

Добавлено через 1 минуту
У нас тут ! задает параметр НЕ да?

Добавлено через 7 минут
Разобрался почему не работало
Код:

if npcId == TURD3 and player.getName() not in TEAM1 :
    player.reduceCurrentHp(9999,player)

Забыл
Код:

QUEST.addKillId(int(TURD3))
QUEST.addAttackId(int(TURD3))
QUEST.addSkillUseId(int(TURD3))

Добавлено через 29 минут
!npcX.isDead()
Вместо Х
должен быть именно ИД нпц да? нельзя вписать переменную что я ввел
TURD3

L2scripts-Guard 01.04.2012 18:14

Re: Пишу евент (Буду просби помощи писать сюда)
 
npc1 - npc10
Смотря какой НПЦ инстанс проверяете.

La2Riviera 01.04.2012 18:37

Re: Пишу евент (Буду просби помощи писать сюда)
 
А все врубился спс )


Текущее время: 00:45. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot