Itemloader filtern

  • Hi liebe Community.

    Bei der Entwicklung meines Dropeditor für ein Spiel namens Flyff bin ich auf ein Problem gestoßen.
    Zuerst scheiterte es daran, die itemnamen aus der Propitem.txt.txt zu laden, danach daran diese mit den definenamen zu vergleichen.
    Jetzt werden alle Items geladne aber und der definename auch, allerdings werden auch manche Itembeschreibungen geladen.´
    Bei den items wo auch die beshcreibung gezeigt wird crasht mein Tool wenn ich es anwähle und jammert von wegen variabel wurde nicht deklariert.

    Kleine Erklärung

    In jeder itemzeile der propitem.txt steht einmal der definename, einmal der verweis auf den namen (dritte spalte--> IDS_PROPITEM_TXT_IRGENDWAS) und einmal der verweis auf den namen (letze spalte --> IDS_PROPITEM_TXT_IRGENDWAS2)

    Hier der Source für diesen Prozess(stammt nicht von mir habe ihn von einem netten Supporter in einem andren Forum bekommen der aber mit dieser Frage nun auch überfordert war^^)


    [autoit]

    #include <GUIListView.au3>
    Opt("GUIOnEventMode", 1)
    $hGUI = GUICreate("Test", 500, 600)
    GUISetOnEvent(-3, "close")
    $hCombo = GUICtrlCreateCombo("", 20, 20, 400, 500)
    GUICtrlSetOnEvent(-1, "bla")
    GUISetState()
    $itemnames = propitemget_itemname("propItem.txt.txt")
    If IsArray($itemnames) Then
    $inames = $itemnames[0]
    For $x = 1 To UBound($itemnames) - 1
    If $itemnames[$x] <> "" Then $inames &= "|" & $itemnames[$x]
    Next
    GUICtrlSetData($hCombo, $inames)
    Else
    MsgBox(0, "", $itemnames)
    EndIf

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1
    WEnd
    Func propitemget_itemname($propitempath)
    Return StringRegExp(FileRead($propitempath), "IDS_PROPITEM_TXT_\w*\s([\w ()äÄöÖüÜ.]*)", 3)
    EndFunc ;==>propitemget_itemname
    Func propitemget_itemverweis($propitempath, $itemname)
    Return StringRegExp(FileRead($propitempath), "(IDS_PROPITEM_TXT_\w*)\s" & $itemname, 3)
    EndFunc ;==>propitemget_itemverweis

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func propitemget_itemdefine($propitempath, $itemverweis)
    Return StringRegExp(FileRead($propitempath), "(II_[\w_]*)\s" & $itemverweis, 3)
    EndFunc ;==>propitemget_itemdefine
    Func bla()
    $Z = propitemget_itemverweis("propItem.txt.txt", GUICtrlRead($hCombo))
    If IsArray($Z) Then $BliBlaBlubb = propitemget_itemdefine("propItem.txt", $Z[0])
    If IsArray($BliBlaBlubb) Then
    FileOpen("propmoverex.inc", 1)
    FileWrite("propmoverex.inc", "DropItem(" & $BliBlaBlubb[0] & ", 200000000, 0, 1);" & @CRLF)
    FileClose("propmoverex.inc")
    EndIf
    EndFunc ;==>bla
    Func close()
    Exit
    EndFunc ;==>close

    [/autoit]


    Hier propitem.txt (für definenamen) und Propitem.txt.txt (für Itemnamen) downloaden : http://www.file-upload.net/download-2658748/Resource.rar.html


    Ab der Zeile in Propitem.txt in der "//MANGEKYO STUFF//" steht kümmert euch nicht mehr drum diese habeich per hand hinzugefügt da könnten fehler drin sein bei der namensanzeige, meine Kunden werden die ieintr#äge ab der zeile sowieso nicht haben da ich sie gemacht habe^^, in Zeilen davor werden aber auch chon descriptions gelesen.

    Beispiel für definenamen : II_SYS_SYS_SCR_BXIRISH01 definenamen stehen in der zweiten spalte in propitem.txt verweise auf propitem.txt.txt in der spalte 3 also direkt danach
    In propitem.txt.txt stehen dann verweise auf propitem.txt und dahinter die namen.


    hoffe irgendwer weiß da ne lösung, die Funktion ist wirklich wichtig für das Tool.
    Danke im Vorraus
    MFG Kyu

  • Spoiler anzeigen
    [autoit]

    #include <GUIListView.au3>
    Opt("GUIOnEventMode", 1)
    $hGUI = GUICreate("Test", 500, 600)
    GUISetOnEvent(-3, "close")
    $hCombo = GUICtrlCreateCombo("", 20, 20, 400, 500)
    GUICtrlSetOnEvent(-1, "bla")
    GUISetState()
    $itemnames = propitemget_itemname("propItem.txt.txt")
    If IsArray($itemnames) Then
    $inames = $itemnames[0]
    For $x = 1 To UBound($itemnames) - 1
    If $itemnames[$x] <> "" Then $inames &= "|" & $itemnames[$x]
    Next
    GUICtrlSetData($hCombo, $inames)
    Else
    MsgBox(0, "", $itemnames)
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    WEnd
    Func propitemget_itemname($propitempath)
    Return StringRegExp(FileRead($propitempath), "IDS_PROPITEM_TXT_\w*\s([\w ()äÄöÖüÜ.]*)", 3)
    EndFunc ;==>propitemget_itemname
    Func propitemget_itemverweis($propitempath, $itemname)
    Return StringRegExp(FileRead($propitempath), "(IDS_PROPITEM_TXT_\w*)\s" & $itemname, 3)
    EndFunc ;==>propitemget_itemverweis

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func propitemget_itemdefine($propitempath, $itemverweis)
    Return StringRegExp(FileRead($propitempath), "(II_[\w_]*)\s" & $itemverweis, 3)
    EndFunc ;==>propitemget_itemdefine
    Func bla()
    Local $BliBlaBlubb
    $Z = propitemget_itemverweis("propItem.txt.txt", GUICtrlRead($hCombo))
    If IsArray($Z) Then $BliBlaBlubb = propitemget_itemdefine("propItem.txt", $Z[0])
    If IsArray($BliBlaBlubb) Then
    FileOpen("propmoverex.inc", 1)
    FileWrite("propmoverex.inc", "DropItem(" & $BliBlaBlubb[0] & ", 200000000, 0, 1);" & @CRLF)
    FileClose("propmoverex.inc")
    EndIf
    EndFunc ;==>bla
    Func close()
    Exit
    EndFunc ;==>close

    [/autoit]


    Das Problem bestand darin, dass die Variable $BliBlaBlubb nur deklariert wurde, wenn $Z ein Array ist. Ob $Z nun ein Array ist oder nicht, AutoIt meckert rum, dass $BliBlaBlubb villeicht noch nicht deklariert ist. Ein Local $BliBlaBlubb löst das Problem. Es deklariert $BliBlaBlubb für die Funktion und überschreibt es immer mit dem neuen Wert, wenn $Z ein Array ist.
    Wie du die Itembeschreibungen rausfiltern kannst, weiß ich leider immernoch nicht.

  • Erleichtert dem Admin Drops für bestimmte Monster zu definieren.

    Dropdefinedatei:

    http://www.file-upload.net/download-26588…overEx.inc.html


    Das Problem is wenn ich es declare crasht es zwar nicht mehr, aber die beschreibungen sidn ja trotzdem noch drin udn bei manchen items wirds nur eingtragen wenn ich die beschreibung wähle =/

    Einmal editiert, zuletzt von Kyubinoyoko (9. Juli 2010 um 12:20)

  • Ich glaube nicht, das sich jetzt jemand da durchkämpfen mag, um dir das zusammenzuschustern.
    Leider beherrsche ich das nicht.