skill aufhebung

Rund um das Scripten unter Sphere 55i

Moderator: Mods - Sphere

Antworten
Nachricht
Autor
Ethion

skill aufhebung

#1 Beitrag von Ethion » 22 Mai 2007 14:20

hallo, ich hab auf meinem server nen Problem.

und zwar folgendes.

wenn ein player hiding used, und dannach sofort war/pace drückt, wird die anwendung aufgehoben, allerdings bei gedrückter taste gaint der skill bis ans cap beinahe im 1/4 sekundentakt weiter.

nu würd ich gern versuchen diesen"bug" irgends wie auszuhebeln, oder den skills nen timer zu verpassen, das diese nur alle 3 bis 5 sek je nach skill funktionieren.


wäre echt nett wenn mir jemand helfen könnte.


gruss ethi

nazghul

#2 Beitrag von nazghul » 22 Mai 2007 14:28

k.A. ob @skillstart unter .55i schon tut - dann damit

btw, unter .56b ist der Fehler übrigens gefixt (wie eine menge anderer, für die man kein Workaround scripten kann)

Ethion

#3 Beitrag von Ethion » 22 Mai 2007 14:47

öhm sagen wir mal mir sagt @skillstart nix, bin selber erst seid heute mit scripts in verbindung, und muss mir da erstma einiges an input besorgen damit ich , hier wohl anstendig mitreden kann sry. koenntest du mir also bitte erklären was du damit meinst?

nazghul

#4 Beitrag von nazghul » 22 Mai 2007 15:51

@skillstart ist ein trigger, also die Anweisung an den Server, ein bestimmtes (dahinter stehendes) Skript auszuführen, wenn eine bestimmte Situation eintritt - in diesem Fall eben das Starten eines Skills. Andere Trigger sind z.B. @DCLICK, @STEP usw

Trigger können sowohl auf Items liegen, als auch auf Charakteren und Regionen. Naheliegenderweise hat jede der drei Gruppen geringfügig unterschiedliche Trigger-Möglichkeiten (Items führen selten einen Skill aus, während Regionen selten doppelclickt werden :) )

Trigger kann man entweder direkt in die CHARDEF resp. ITEMDEF hineinschreiben, oder über sogenannte Events zuweisen - bei Charakteren durch EVENT=eventname, bei Items durch TYP=eventname (in .56b gibt es noch weitere Möglichkeiten)

Ein Event ist im Prinzip eine Sammlung von Triggern:

Code: Alles auswählen

[events e_fubar]
on=@dclick
  // mach was
  return 0 //sorgt dafür, dass der Server das Ereignis mit seinen
  // hart codierten Aktionen weiter bearbeitet

on=@step
  // mach was anderes
  return 1 // für den Server ist die Sache damit beendet
Trigger bekommen normalerweise bestimmte Statusvariablen übergeben, die das Ereignis genauer erklären. Sie heissen z.B. ARGN1, ARGN2, ARGO, ARGS (nicht alle sind überall sinnvoll gesetzt)

Details findest Du ausführlich im Sphere-Wiki, das unter der ZRI http://sphere.uozone.net/index.php?title=Main_Page erreichbar ist.

Zu Deinem Problem: Wie gesagt, ich weiss nicht, ob das uralte .55i @SkillStart unterstützt. Wenn, dann gilt:

Code: Alles auswählen

on=@skillstart
  if <argn1> == skill_hiding
    if !<src.restest 1 i_hide_blocker>
      src.newitem i_hide_blocker
      src.act.equip
      return 0 // skill ausführen lassen
    else // blocker-Item ist vorhanden
      action=-1
      return 1 // skill abbrechen
    endif
  endif

[itemdef i_hide_blocker]
id=i_memory
type=t_eq_script
name="Hide-Blocker"

on=@equip
  timer=3*60 // 3 Minuten

on=@timer
  remove
  return 1

Ethion

#5 Beitrag von Ethion » 22 Mai 2007 16:07

danke werde es mal ausprobieren und mich dann nochmal melden :)

Xorea
Bronze Mitglied
Beiträge: 220
Registriert: 21 Jan 2004 10:24
Wohnort: Berlin
Kontaktdaten:

#6 Beitrag von Xorea » 23 Mai 2007 11:09

andernfalls konnte man das irgendwie fixen... *krams wühls*

find ich grad nich...

es gibt eine Anleitung um Sphere 55.i komplett zu fixen dadrunter fällt auch der war/peace bug.

Ich meine auch mal das sowas in der Knowledge Base hier im Forum zu finden war, aber das wohl irgendwie zerschossen oder so

hab dann doch noch das hier gefunden:

http://www.geocities.com/cenedra_of_tol ... torial.txt

da wird auch mit ON=@SKILLSTART gearbeitet als Trigger, dürfte also funktionieren von nazghul. Arbeite, insofern Bedarf besteht, die anderen aber auch ab ;)

Liebe Grüße

Xori

nazghul

#7 Beitrag von nazghul » 23 Mai 2007 11:22

Xorea hat geschrieben: es gibt eine Anleitung um Sphere 55.i komplett zu fixen dadrunter fällt auch der war/peace bug.
*Lachanfall abschüttelt*

Glaubs mir einfach: Das geht nicht. Die Scriptmöglichkeiten von .55i sind einfach zu beschränkt, und eine ganze Reihe der .55i Bugs und Exploits sind derart im Quellcode verankert, dass man nichtmal ein vernünftiges Workaround hinbiegen kann.

Wenn schon beim Parsen eines malformed packet ein Pufferüberlauf entsteht oder interne Variablen verändert werden, lange bevor auf dieses Packet reagierende Skripte auch nur aufgerufen werden, oder wenn der Server Rückgabewerte eines Triggers geflissentlich ignoriert und damit eine race condition entsteht, dann ist da kein Workaround möglich. Wenn der Server die Rechtsmäßigkeit einer Aktion einfach nicht prüft, sondern sie ausführt, ohne das einem Skript auch nur mitzuteilen ...

Selbst die als function hook für Windows-.55i aufgebauten "Schutz-Bibliotheken" decken nicht einmal die Hälfte der bekannten Exploits ab (mit denen man Charaktere oder Items löschen, Passworte ändern, Owner werden...).

Schon zu Kells Zeiten, und auch später unter .56b haben dutzende Devs probiert, ob man nicht ein "security kit" für .55i liefern könnte, weil das sehr viel Druck aus der Entwicklung genommen hätte: Es geht einfach nicht. Fakt ist, dass ich Dir JEDE .55i Installation innerhalb 5 Minuten zum Absturz bringe oder gar exploite, ganz egal wie Du Dich bemühst, sie zu sichern - alles was ich brauche ist ein Spieler-Account.

Indes, EINEN Bugfix gibt es. So wie es für ein bekanntes Consumer-Betriebssystem hunderte von Patches gibt. Dieser Bugfix nennt sich "Sphere .56b"

Ethion

#8 Beitrag von Ethion » 24 Mai 2007 00:48

haben es anders gelöst :) mit nem netten effekt

Xorea
Bronze Mitglied
Beiträge: 220
Registriert: 21 Jan 2004 10:24
Wohnort: Berlin
Kontaktdaten:

#9 Beitrag von Xorea » 25 Mai 2007 11:40

Na ja Naz wie du meinst ;)

Liebe Grüße

Xori

nazghul

#10 Beitrag von nazghul » 25 Mai 2007 12:00

Das hat mit "Meinung" nichts zu tun, Xorea. Ich kenne den Code, der damals in die .55R einfloss, genauso wie den aktuellen. Es geht also um Fakten. Auch wenn sie Dir nicht gefallen sollten.

.55i enthält (mindestens, ich kenne kaum alles) 17 Stellen mit Gefahr eines Buffer Overflow sowie diverse Race Conditions, getriggert durch malformed Packets, oder durch eine Serie aufeinanderfolgender, für sich völlig legitimer Aktionen, in die kein Skript eingreifen kann. Selbst ein intelligenter packet analyzer scheitert da.

Abgesehen davon, dass ich eine Reihe der - vor allem aus Osteuropa stammenden - "Vorschalt-Bibliotheken", die die Sicherheit verbessern sollen, nicht mal in die Nähe meines Servers lassen würde - disassemblieren und das Ergebnis analysieren deckt da mehr geplante Backdoors auf als Exploits geschlossen werden :)

Die einzige Chance für einen .55i Shard ist daher, sich die Leute SEHR genau anzusehen, bevor sie einen Account bekommen (oder einfach Glück zu haben). Ich habe bis vor kurzem selbst einen .55i Shard in Betrieb gehabt, und bis auf einen "Besuch" eines pg.de-Idioten vor ein paar Jahren nie Probleme gehabt - was aber genau an dem o.g. Verfahren lag: Wir kennen unsere Spieler.

Antworten