Yazar
Skill Title: Apprentice
Toplam Mesaj: 63
Oyun Tarzı: Rp
Emulatör: Sphere
Tecrübe: Player
Yaş: 34
Beğeni: 3
|
Mesaj #100971
21-02-2021 05:48 GMT
bir buton yaptım bandajı tıkladığımda oto kendine basıyor hata almıyorum o şekilde spherede ama üst üste sürekli o butona basınca hata veriyor mesela hitsi 100 oldugunda basınca hata almıyorum atıncada bandajı kendine hata almıyorum ama hitsi az olunca sürekli basmak istedigimde sphereye hata gönderiyor nedendir bu acaba Script Kodu: 09:39:ERROR:(a_asd.scp,59)Undefined keyword 'self' Script Kodu: [dialog D_asd button]
on=1 src.bandaj src.self sdialog D_deneme return 1 |
|||||||
Yazar
Skill Title: Adept
Toplam Mesaj: 707
Oyun Tarzı: Rp
Emulatör: Sphere
Tecrübe: Scripter
Yaş: 29
Beğeni: 107
|
Mesaj #100972
21-02-2021 07:30 GMT
// Emin değilim mantık yürütüyorum sadece. Sanırım bandajı bir kere kullanır kullanmaz kullanmaya devam etmesini sağlarsan target çıkmadığı için self fonksiyonu uyarı verir tahminimce. Bandaj delay itemin neyse i_Healing kısmıyla değiştir bi dene. Script Kodu: [dialog d_asd button]
on=1 if !( <src.findid.i_healing> ) src.bandaj src.self endif sdialog d_Deneme Hayat dediğin bir çift bacak gidebildiğin yol kadardır. |
|||||||
Yazar
Skill Title: Apprentice
Toplam Mesaj: 63
Oyun Tarzı: Rp
Emulatör: Sphere
Tecrübe: Player
Yaş: 34
Beğeni: 3
|
Mesaj #100997
22-02-2021 04:32 GMT
Buraylamı çatışıyor ? Bu şekilde yaptığımda, tek değişen bandajı atıyor sürekli bastığımda yetişemiyorsunuz diyor Script Kodu: if !( <src.findid.i_heal_delay> ) src.bandaj src.self endif Script Kodu: if (<src.findid.i_heal_delay>)
src.sys_kirmizi Bandajları tekrar kullanmak için <kalansure <src.findid.i_heal_delay.timer>> beklemelisiniz. return 1 endif |
|||||||
Yazar
Skill Title: Adept
Toplam Mesaj: 585
Oyun Tarzı:
Emulatör: Sphere
Tecrübe: Player
Yaş: 30
Beğeni: 61
|
Mesaj #101020
23-02-2021 16:23 GMT
Kaynak kodlardan bakıldığında self komutu sadece clientten gelen isteklere göre sphere tarafından çözülmeniyor. Bir fake target için fix yapılmış bu yüzden de tanımsız olarak görüyor. İlgili kaynak kod aşağıda Script Kodu: case CV_SELF: // Fake self target. if ( GetTargMode() >= CLIMODE_MOUSE_TYPE ) { ASSERT(m_pChar); Event_Target(GetTargMode(), m_pChar->GetUID(), m_pChar->GetTopPoint()); addTargetCancel(); break; } return false; Eğer Sphere-X derlemesi üzerinden ilerliyorsanız buradaki if tanımlamasını kaldırarak sorununuzun çözülebileceğini umuyorum. Eğer emülatör üzerinden değişiklik yapma imkanınız yoksa onbutton altına yeni bir fonksiyon yazmanız gerekebilir. Örneğin ; Script Kodu: [FUNCTION HEALING_START] IF (<FLAGS> & statf_dead) || (<FLAGS> & statf_freeze) || (<FLAGS> & statf_stone) SRC.SYSMESSAGE @38,,1,1 Şu anki durumunuzda kullanamazsınız. ELIF (<FINDID(i_healing2)>) SRC.SYSMESSAGE @38,,1,1 Bandajları şu an kullanamazsınız. ELIF (<ISUSESKILL Magery>) SRC.SYSMESSAGE @38,,1,1 Büyü yaparken bandaj kullanamazsınız. ELIF (<FINDID(i_healing)>) SRC.SYSMESSAGE @38,,1,1 Şuan zaten tedavi aşamasındasınız. ELSE SRC.ANIM 17 SERV.NEWITEM I_HEALING,1,<UID>,1 NEW.LINK <UID> DELAY 30 EVENTS +E_HEALING SYSMESSAGE @044,,1 Tedaviye başladın. ENDIF RETURN 1 Gibi, bandaj scriptinizi görmeden yazıldı fakat genelde bu bandaj scripti kullanıldığı için bu şekilde bir örnek verdim. Kendi bandaj scriptinizi paylaşırsanız yardımcı olmaya çalışırım. Anladığım kadarıyla dialog üzerinden direkt oyuncunun kendisine bandaj atmasını sağlamaya çalışıyorsunuz, target çıkartmadan.
|
|||||||
Yazar
Skill Title: Apprentice
Toplam Mesaj: 63
Oyun Tarzı: Rp
Emulatör: Sphere
Tecrübe: Player
Yaş: 34
Beğeni: 3
|
Mesaj #101034
24-02-2021 02:46 GMT
Anladığım kadarıyla dialog üzerinden direkt oyuncunun kendisine bandaj atmasını sağlamaya çalışıyorsunuz, target çıkartmadan. EVET o şekilde birşey yapmaya çalışıyorum ve atıyor ama sorun hatalar benim anladığım kadarı ile ; attıgımda hiç bir hata vermiyor bandajı canı full ikende hata almıyorum hata aldıgım yerler bandaj attıgı anda tekrar bandaja basmam o arada şunu diyor Beklemelisniz.... o ksımda sphere eror veriyor. Birde çantamda bandaj yokken o butona bastıgımda çantanızda bandaj yoktur diyip tekrar spherede hatalar oluşuyor Tetiklendiği Buton Script Kodu: on=1 if !( <src.findid.i_heal_delay> ) src.bandaj src.self endif sdialog D_potmenu Bandaj scriptim; Script Kodu: [ITEMDEF 0ee9]
DUPEITEM=0e21 NAME=Bandage%s [ITEMDEF 0e21] DEFNAME=i_bandage NAME=Bandage%s RESOURCES=i_cloth TYPE=T_BANDAGE WEIGHT=0.0 DUPELIST=0ee9 value=1 ON=@CREATE ATTR=0 on=@dclick ATTR=0 IF !(<src.isinpack <uid>>) src.sys_kirmizi <def.unpackmsg> return 1 endif if (<src.tag0.heal_tekrar> > 0) src.sys_kirmizi Bandajları şu an kullanamazsınız. return 1 endif if (<src.flags>&statf_freeze) src.sys_kirmizi Bu durumda bandajları kullanamazsınız. return 1 endif IF (<SRC.ACTION>==SKILL_MAGERY) || (<SRC.ACTION>==ID(SKILL_MAGERY)) src.sys_kirmizi Büyü uygularken bandaj kullanamazsınız. return 1 endif if (<src.findid.i_heal_delay>) src.sys_kirmizi Bandajları tekrar kullanmak için <kalansure <src.findid.i_heal_delay.timer>> beklemelisiniz. return 1 endif src.tag0.heal_tekrar=0 src.events -e_heal src.tag0.heal_bozuldu= src.sys_beyaz Kimi tedavi etmek istiyorsunuz ? targetf f_heal return 1 [function f_heal] if !(<src.restest 1 i_bandage>) src.sys_kirmizi Bandajınız yok. return 1 endif if !(<argo.ischar>) src.sys_kirmizi Bunu eşyalar üzerinde kullanamazsın. src.sys_beyaz Kimi tedavi etmek istiyorsunuz ? targetf f_heal RETURN 1 ENDIF if (<src.isdeath>) src.sys_kirmizi Ölüyken bandaj kullanamazsınız. return 1 endif IF (<ARGO.DISTANCE> > 6) || !(<ARGO.CANSEELOS>) src.sys_kirmizi Hedefe ulaşamıyorsun. return 1 endif if !((<argo.isplayer>) || (<argo.isanimals>) || (STRMATCH(*Dummy*,'<ARGO.ID>'))) src.sys_kirmizi Bunu sadece oyuncular, hayvanlar ve Dummyler üzerinde kullanabilirsiniz. return 1 endif if (<eval <src.p.z>+8> < <argo.p.z>) || (<eval <src.p.z>-8> > <argo.p.z>) src.sys_kirmizi <src.targ.name> ile aynı seviyede değilsiniz. return 1 endif if (<argo.ismonsters>) && !(<argo.isplayer>) && !(<argo.isanimals>) src.sys_kirmizi Bunu iyileştiremezsiniz. return 1 endif if (<argo.hits> >= <argo.maxhits>) if !(<argo.isdeath>) if !(<argo.findid.i_rune_poison>) if !(<argo.findid.i_bleeding>) argo.hits <argo.str> src.sys_kirmizi <argo.name> tedaviye ihtiyaç duymuyor. return 1 endif endif endif endif if (<argo.isdeath>) IF (<ARGO.IsInHouse>) IF !(<ARGO.TAG0.HOUSE_RESURRECT>) SRC.SYS_KIRMIZI Ev içindeki oyuncuları hayata döndüremezsiniz. RETURN 1 ENDIF ENDIF //src.anim 17 src.spd 2 src.face <argo> src.consume 5 i_bandage src.effect 3,0376a,2,10,1 serv.newitem i_heal_delay new.equip if (<argo.ispk>) || (<argo.iscriminal>) src.criminal 1 endif if (<argo.isplayer>) argo.resurrect 1 argo.effect 3,0376a,2,10,1 argo.sayua 048,0,0,6 * <src.name> Tarafından Dirilir * else src.sys_kirmizi Hatalı seçim. endif return 1 endif SRC.TAG0.HEAL_TEKRAR 1 src.spd 1 SRC.FACE <argo> SRC.F_HEAL_X <argo.uid> src.sys_beyaz Tedavi süreci basladi ! return 1 [function f_heal_x] ref1 <args> src.events +e_heal if (<ref1.hits> > <ref1.str>) ref1.hits <ref1.str> endif if (<src.tag0.heal_bozuldu> == 1) src.sayua 38,0,0,6 * Bandajları Yırtılır * src.sys_kirmizi Bandaj uygulama işleminiz başarısız oldu. src.tag0.heal_tekrar=0 src.events -e_heal src.tag0.heal_bozuldu= src.consume 1 i_bandage return 1 endif if !(<src.restest 1 i_bandage>) src.sys_kirmizi Bandajınız yok. src.tag0.heal_tekrar=0 src.events -e_heal src.tag0.heal_bozuldu= return 1 endif if (<ref1.hits> == <ref1.str>) && !(<ref1.hits> == 0) && !(<ref1.findid.i_rune_poison>) && !(<ref1.findid.i_bleeding>) src.sys_kirmizi <qval (<src.uid> == <ref1.uid>)?Tedaviye ihtiyaç duymuyorsun.:<ref1.name> tedaviye ihtiyaç duymuyor.> src.tag0.heal_tekrar=0 events -e_heal src.tag0.heal_bozuldu= return 1 endif if (<ref1.isdeath>) src.sys_kirmizi <ref1.name> isimli oyuncu hayatını kaybetti. src.tag0.heal_tekrar=0 src.events -e_heal src.tag0.heal_bozuldu= return 1 endif if !(<eval <src.tag0.heal_tekrar>> >= 4) src.face <ref1> src.tag0.heal_tekrar +=1 src.TIMERF 1,src.f_heal_x <ref1> // bunu elleme 1 saniyede bir düşüo else src.f_heal_finish <ref1> src.tag0.heal_tekrar=0 src.events -e_heal return 1 endif [function f_heal_finish] ref1 <args> if !(<src.restest 1 i_bandage>) src.sys_kirmizi Bandajınız yok. src.tag0.heal_tekrar=0 src.events -e_heal src.tag0.heal_bozuldu= return 1 endif if (<ref1.isdeath>) src.sys_kirmizi <ref1.name> isimli oyuncu tedavi süresinde hayatını kaybetti. src.tag0.heal_tekrar=0 src.events -e_heal src.tag0.heal_bozuldu= return 1 endif if (<ref1.hits> > <ref1.str>) ref1.hits <ref1.str> endif if (<ref1.hits> == <ref1.str>) && !(<ref1.hits> == 0) && !(<ref1.findid.i_rune_poison>) src.sys_kirmizi <qval (<ref1.uid> == <src.uid>)?Tedaviye ihtiyaç duymuyorsun.:<ref1.name> tedaviye ihtiyaç duymuyor.> src.tag0.heal_tekrar=0 src.events -e_heal src.tag0.heal_bozuldu= return 1 endif //////// kendini ve başkasını yara if (<ref1.findid.i_bleeding>) if !(<ref1.uid> == <src.uid>) if (<ref1.ispk>) || (<ref1.iscriminal>) src.criminal 1 endif endif ref1.sayua 048,0,0,6 <qval (<ref1.uid> == <src.uid>)?* Yarasını İyileştirir *:* <src.name> Tarafından Yarası İyileştirilir *> ref1.findid.i_bleeding.remove if (<ref1.hits> >= <ref1.str>) ref1.hits <ref1.str> endif ref1.effect 3,0376a,2,10,1 src.consume 1 i_bandage serv.newitem i_heal_delay new.equip return 1 endif //////// başkasının ve kendini zehir tedavi if (<ref1.findid.i_rune_poison>) if !(rand(10) == 1) ref1.sayua 048,0,0,6 <qval (<ref1.uid> == <src.uid>)?* Zehiri Tedavi Eder *:* <src.name> Tarafından Zehiri Tedavi Edilir *> ref1.findid.i_rune_poison.remove ref1.effect 3,0376a,2,10,1 if !(<ref1.uid> == <src.uid>) if (<ref1.ispk>) || (<ref1.iscriminal>) src.criminal 1 endif endif else ref1.effect 3,i_fx_curse,2,10,1 ref1.sayua 38,0,0,6 <qval (<ref1.uid> == <src.uid>)?* Zehiri Tedavi Edemez *:* <src.name> Tarafından Zehiri Tedavi Edemez *> endif if (<ref1.hits> >= <ref1.str>) ref1.hits <ref1.str> endif src.consume 1 i_bandage serv.newitem i_heal_delay new.equip return 1 endif //// veteriner if (<ref1.isanimals>) if (<ref1.hits> < <ref1.str>) ref1.sayua 0bb2,0,0,0 * <src.name> Tarafından Tedavi Edilir * LOCAL.MINHEAL = <EVAL (<SRC.VETERINARY> / 70) + (<SRC.ANIMALLORE> / 60) + 3> LOCAL.MAXHEAL = <EVAL (<SRC.VETERINARY> / 70) + (<SRC.ANIMALLORE> / 60) + 10> LOCAL.HEAL = <EVAL {<LOCAL.MINHEAL>,<LOCAL.MAXHEAL>}> IF (<LOCAL.HEAL> <= 0) LOCAL.HEAL = 1 ENDIF REF1.HITS += <dLOCAL.HEAL> if (<ref1.hits> >= <ref1.str>) ref1.hits <ref1.str> endif ref1.effect 3,0376a,2,10,1 src.consume 1 i_bandage serv.newitem i_heal_delay new.equip return 1 endif endif //////// kendini ve başkasını tedavi/// if (<ref1.hits> < <ref1.str>) ref1.sayua 048,0,0,6 <qval (<ref1.uid> == <src.uid>)?* Kendini Tedavi Eder *:* <src.name> Tarafından Tedavi Edilir *> LOCAL.MINHEAL = <EVAL (<SRC.ANATOMY> / 70) + (<SRC.HEALING> / 60) + 3> LOCAL.MAXHEAL = <EVAL (<SRC.ANATOMY> / 70) + (<SRC.HEALING> / 60) + 10> LOCAL.HEAL = <EVAL {<LOCAL.MINHEAL>,<LOCAL.MAXHEAL>}> IF (<LOCAL.HEAL> <= 0) LOCAL.HEAL = 1 ENDIF REF1.HITS += <dLOCAL.HEAL> src.sys_beyaz +<dLOCAL.HEAL> Hits if !(<ref1.uid> == <src.uid>) src.<qval (<ref1.ispk>)?criminal 1:sysmessage> src.<qval (<ref1.iscriminal>)?criminal 1:sysmessage> endif if (<ref1.hits> >= <ref1.str>) ref1.hits <ref1.str> endif ref1.effect 3,0376a,2,10,1 src.consume 1 i_bandage serv.newitem i_heal_delay new.equip return 1 endif [itemdef i_heal_delay] name Healing Delay id 0186a type t_eq_script weight 0 layer layer_special On=@Create attr attr_invis|attr_newbie On=@Equip timer 6 On=@Timer //cont.sys_beyaz Bandaj uygulaması yapabilirsiniz. remove return 1 [events e_heal] on=@gethit IF (RAND(5) == 1) tag0.heal_bozuldu 1 endif on=@death tag0.heal_bozuldu 1 targetkapat on=@logout src.tag0.heal_bozuldu 1 [EOF] |
Sayfalar: 1
Benzer Konular :
Konular | Mesajlar | Son gönderen | Tarih |
i_rune_magic_reflection hatası | 2 | xrambo | 25-02-2021 |
ref1.remove' Hatası | 12 | xrambo | 21-02-2021 |
Runebook Undefined symbol Hatası | 4 | piedra_lara | 09-02-2021 |
'ref1.remove' hatası | 6 | piedra_lara | 03-02-2021 |
Sphere x ve ultima sürüm kurulum hatası | 4 | Nioble | 28-01-2021 |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |