Yoko

All sides of Injection
It is currently 2025-11-23 23:55:18

All times are UTC+02:00




Post new topic  Reply to topic  [ 27 posts ]  Go to page 1 2 Next
Author Message
PostPosted: 2008-01-21 06:44:33 
Offline

Joined: 2007-12-30 14:23:05
Posts: 48
В общем суть такова, есть два набора оружия, например щит с мечом и лук, нужен скриптик, по которому с помощью одной кнопки менялись бы эти два набора. То есть нажал - и если в руках первый набор то одеваеться второй и наоборот. Нашел в поиске только вот это:

Code:
sub Equipt()
if uo.getlayer('_0x13B1')=="Rhand" then
   uo.arm("1")
   else
   uo.usetype('0x13B1')
endsub

но он работает односторонне то есть, если в руках не лук он его одевает, а вот менять его не arm("1") не хочет. Шард ДрВ. Буду оч благодарен


Top
   
 Post subject:
PostPosted: 2008-01-21 10:50:56 
Offline
User avatar

Joined: 2005-04-05 04:13:24
Posts: 139
Location: DRW
а end if где?)


Top
   
 Post subject:
PostPosted: 2008-01-21 14:01:24 
Offline

Joined: 2007-12-30 14:23:05
Posts: 48
Спасибо, но это все равно не помогло


Top
   
 Post subject:
PostPosted: 2008-01-21 14:05:27 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
на до не много логику скрипта переделать.
Логичней было бы сначала посмотреть что находится в правой руке.
uo.GetGraphic(uo.getObjAtLayer('RHand'))
дальше
одевать предмет лутше через equipt если надо одеть по типу.


Top
   
 Post subject:
PostPosted: 2008-01-21 14:05:48 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
Avel Mink wrote:
Спасибо, но это все равно не помогло


а ты сделал набор с именем "1"? если нет то сделай так, одень оружие
в клиенте напиши:
Code:
,setarm 1


пробуй


Top
   
 Post subject:
PostPosted: 2008-01-22 05:51:15 
Offline

Joined: 2007-12-30 14:23:05
Posts: 48
Kynep wrote:
Avel Mink wrote:
Спасибо, но это все равно не помогло


а ты сделал набор с именем "1"? если нет то сделай так, одень оружие
в клиенте напиши:
Code:
,setarm 1


пробуй


да не ну эт понятно, тут дело в скрипте


Top
   
 Post subject:
PostPosted: 2008-01-22 11:03:15 
Offline
Expert!
User avatar

Joined: 2004-04-04 21:40:09
Posts: 1007
Code:
sub Equipt()

Var SwordType = "0x13BA"
Var SwordWrapedType = "0x13B9"

  If (UO.GetGraphic(UO.ObjAtLayer("Rhand")) == SwordType) OR (UO.GetGraphic(UO.ObjAtLayer("Rhand")) == SwordWrapedType) Then
    UO.Arm("Arbaletik")
  Else
    UO.Arm("ShitIMech")
  EndIf

endsub


Top
   
 Post subject:
PostPosted: 2008-01-23 03:54:48 
Offline

Joined: 2007-12-30 14:23:05
Posts: 48
Спасибо за скрипт - работает, только можно его переделать так что б ышла проверка не на меч, а на лук, так как у лука один тип, а вот бегаю я не всегда с мечом. Буду оч благодарен


Top
   
 Post subject:
PostPosted: 2008-01-23 10:56:51 
Offline
Expert!
User avatar

Joined: 2004-04-04 21:40:09
Posts: 1007
Как все запущено... :roll:

Переделаем так.

(какой тип у лука на ДРВ я понятия не имею, уже 2 года не играл, так что придется поработать самому и найти нужные типы)

Code:
sub Equipt()
# Скрипт на цикличную смену наборов вооружения
# (C) AGRS, 2008

# Скрипт проверяет наличие в правой руке одного из типов основного оружия
# Если оно обнаружено, то экипируется набор сменного оружия
# В противном случае экипируется набор основного оружия
# Наборы оружия устанавливаются командой ,setarm
# Подробнее о команде: http://yoko.netroof.net/help/index.php?lang=rus&a=item&item=setarm

# Указать тип основного оружия (в правой руке) в нормальном состоянии
Var WeaponType = "0x13BA"

# Указать тип основного оружия (в правой руке) в перевернутом состоянии
# Если оружие уронить на пол, оно поворачивается на 90 градусов на большинстве шардов
# И его графический тип изменяется
Var WeaponWrapedType = "0x13B9"

# Указать название набора с основным оружием
Var ArmDefault = "MainWeaponSet"

# Указать название набора со сменным оружием
Var ArmToChange = "SecondaryWeaponSet"

  If (UO.GetGraphic(UO.ObjAtLayer("Rhand")) == WeaponType) OR (UO.GetGraphic(UO.ObjAtLayer("Rhand")) == WeaponWrapedType) Then
    UO.Arm(ArmToChange)
  Else
    UO.Arm(ArmDefault)
  EndIf

endsub


Top
   
 Post subject:
PostPosted: 2008-01-24 03:55:00 
Offline

Joined: 2007-12-30 14:23:05
Posts: 48
Спасибо за столь понятное обьяснение, но это можно было не писать, я сам не пойму в чем проблема, тип лука на дрв 0x13B1 и он не переворачивается на полу, то есть всего один тип

под 1 у меня допустим алеба, под 2 - лук, но он все равно не хочет переклучаться на алебу, лук берет, а второй набор ни в какую не хочет

если переделать его под лук получится

Code:
sub Equipt() 
Var WeaponType = "0x13B1"


if (UO.GetGraphic(UO.ObjAtLayer("Rhand")) == WeaponType)  Then
    UO.Arm(1)
  Else
    UO.Arm(2)
  EndIf

endsub


Last edited by Avel Mink on 2008-01-24 04:26:35, edited 2 times in total.

Top
   
 Post subject:
PostPosted: 2008-01-24 04:23:12 
Offline

Joined: 2007-12-30 14:23:05
Posts: 48
Всеи спасибо нашел уже другой скрипт

Code:
sub BowGet() 
uo.findtype ('0x13B1',-1,'backpack')
if Uo.ContainerOf('finditem')==Uo.GetSerial('backpack') then
UO.Setarm('BowArm')
uo.waittargetobject('laststatus')
uo.usetype('0x13B1')
uo.print('Лук')
else
UO.Arm('BowArm')
uo.print('Меч')
end if
UO.Attack('laststatus')
end sub


Может мне терь кто-нить поможет с другим скриптиком на атаку ближайшего к тебе игрока, нашел вот такой скрипт, но в нем указан файддистанс 20 и поэтому он атакует не ближайшего, а рандомно в пределах 20

Code:
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
#++++++++++++++-= Auto Attack Men\Women    =-++++++++++++++++
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#+++++++++++++-= Auto Attack all players    =-+++++++++++++++
sub StartAttack1() ;биндим для атаки всех чаров
StartAttack(1)
end sub
#++++++++++-= Auto Attack PK players only   =-+++++++++++++++
sub StartAttack0() ;биндим для атаки только ПК,серых и вражественной гильдии
StartAttack(0)
end sub

sub StartAttack(status)
UO.Ignore("self")
Var FindOK=false,temp,mess,t=0,k
DIM Friend[50]
VAR endlist=6; последнее число в списке друзей
Friend[0]="feduk"
Friend[1]="SENYA"
Friend[2]="Gurza"
Friend[3]="ALF"
Friend[4]="Flatra"
Friend[5]="Antonio."
Friend[6]="Freeman"
uo.set('finddistance','20')
 for t=0 to 1
  repeat
   uo.findtype("0x019"+str(t),"-1","ground")
   temp=0
   for k=0 to endlist
    if Uo.GetName("finditem")==Friend[k] and uo.findcount()<>0 then
     UO.Ignore("finditem")
     k=endlist
     temp=1
    end if
   next
   if temp==0 and uo.findcount()<>0 then
    if status==0 and uo.getnotoriety("finditem")>2 then
     UO.addobject('Enemy',uo.getserial("finditem"))
     Uo.print ("Curent target = "+uo.getname('Enemy'))
     uo.ignore('Enemy')
     return
      else
      if status==1 then
       UO.addobject('Enemy',uo.getserial("finditem"))
       Uo.print("Curent target = "+uo.getname('Enemy'))
       uo.ignore('Enemy')
       return
        else
         uo.ignore("finditem")
      end if                         
     end if
    end if
  until uo.findcount()==0
   if uo.findcount()==0 then
    UO.IgnoreReset()       
   end if
 next
end sub


Как писалось в посте где я его нашед нужно В цикле изменить файнддистанс, но как это сдеалать я не знаю


Top
   
 Post subject:
PostPosted: 2008-01-24 04:39:02 
Offline
User avatar

Joined: 2005-04-05 04:13:24
Posts: 139
Location: DRW
Code:
uo.set('finddistance','20')

тупо здесь меняешь число..
неужели так трудно пройтись хотябы глазами по скрипту в поисках пошожих букаф? %)


Top
   
 Post subject:
PostPosted: 2008-01-24 06:26:08 
Offline

Joined: 2006-11-25 17:44:44
Posts: 258
Ты не прав ?)


Top
   
 Post subject:
PostPosted: 2008-01-24 13:56:51 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
grundick wrote:
Ты не прав ?)


Интерестно в чем?


Top
   
 Post subject:
PostPosted: 2008-01-26 16:55:40 
Offline

Joined: 2007-12-30 14:23:05
Posts: 48
Если б все так было легко я б не спрашивал, мне нужен циклический файддистанс, то есть сначала ищет на растоянии 1тайл, потом 2 и т.д. до 20 пока не найдет кого-нить, а если находит то атачит


Top
   
 Post subject:
PostPosted: 2008-01-26 16:58:53 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
Avel Mink wrote:
Если б все так было легко я б не спрашивал, мне нужен циклический файддистанс, то есть сначала ищет на растоянии 1тайл, потом 2 и т.д. до 20 пока не найдет кого-нить, а если находит то атачит


Ипать, это 20 циклов. Зачем, када можно искать в 20 тайлах, и тупо игнорить если тебе не нужен объект.


Top
   
 Post subject:
PostPosted: 2008-01-26 19:22:04 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
;) ему надо найти ближайшего;)
а что бы это сделать надо перебрать все объекты, циклов может быть куда больше;)


Top
   
 Post subject:
PostPosted: 2008-01-26 19:32:49 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
Grin wrote:
;) ему надо найти ближайшего;)
а что бы это сделать надо перебрать все объекты, циклов может быть куда больше;)


Помоему где то видел сриптег, который считает расстояние до обьекта, вроде в топике Полезности. Можно ешо заюзать.


Top
   
 Post subject:
PostPosted: 2008-01-26 20:12:56 
Offline

Joined: 2007-12-30 14:23:05
Posts: 48
короч вот он, но что сним дальше делать и куда его пихать я не знаю, помогите пожалуйста знающие

Code:
; Функция GetDistance возвращает расстояние до координат 
; (как UO.GetDistance - до объекта)
;
; Почему так - потому что учим математику :)
;
Sub GetDistance( X, Y )
   VAR A, B, C
   A = abs( X - UO.GetX() )
   B = abs( Y - UO.GetY() )
   If A > B Then
      C = A
   Else
      C = B
   EndIf
   Return C
endsub


Top
   
 Post subject:
PostPosted: 2008-01-26 20:32:31 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Kynep wrote:
Grin wrote:
;) ему надо найти ближайшего;)
а что бы это сделать надо перебрать все объекты, циклов может быть куда больше;)


Помоему где то видел сриптег, который считает расстояние до обьекта, вроде в топике Полезности. Можно ешо заюзать.

uo.getDistance() ?)

А ваще - циклически пробежаццо по всем найденным и выбрать ближайшего, имхо :)

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 27 posts ]  Go to page 1 2 Next

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited