Hallo und zwar bin ich auf der Suche nach einem 3D Label.
Es soll so sein das wenn ich einen auf die Gegnerliste des Keybinders setzte über diesem Spieler dann GEGNER steht.
Kann mir das jemand Coden?
Overlay AHK
- Mike.Jankins
- Geschlossen
- Erledigt
-
-
Naja es gibt ja eine Funktion um 3DTextLabels zu erstellen, jedoch nicht direkt über dem Kopf vom Spieler und das schwierigste ist, dass man macht dass das 3DTextLabel sich mit dem Spieler mitbewegt. Habe das mal mit einem Loop getestet der die Coordinaten ausließt und dann den Text Updated, jedoch zieht das viel Leistung und es sieht kacke aus da das 3DTextLabel flackert.
-
Doch man kann TextLabels an Spieler und Fahrzeuge attachen.
-
Doch man kann TextLabels an Spieler und Fahrzeuge attachen.
Wie genau funktioniert das? Ich habe nur eine Funktion um welche zu erstellen.
-
Das ist jetzt aus meiner persönlichen Funktionssammlung rauskopiert, aber wenn man das alles in die UDF einfügt, sollte es auch klappen:
PHP
Alles anzeigen; In den Deklarationsbereich: global SAMP_INFO_PTR := 0x21A0F8 global SAMP_MAX_TEXTLABELS := 1024 global SAMP_POOLS := 0x3CD global SAMP_POOL_TEXTLABEL := 0xC ; TextLabel-Funktionen updateTextLabel(textLabelID, text) { return textLabelID < 0 || textLabelID > 2047 || !checkHandles() ? false : __WRITESTRING(hGTA, dwSAMP, [SAMP_INFO_PTR, SAMP_POOLS, SAMP_POOL_TEXTLABEL, textLabelID * 0x1D, 0x0], text) } createTextLabel(text, color, xPos, yPos, zPos, drawDistance := 50.0, testLOS := 0, playerID := 0xFFFF, vehicleID := 0xFFFF) { if (!checkHandles()) return -1 dwAddress := __DWORD(hGTA, dwSAMP, [SAMP_INFO_PTR, SAMP_POOLS, SAMP_POOL_TEXTLABEL]) if (!dwAddress) return -1 Loop, 2048 { textLabelID := A_Index - 1 if (!__DWORD(hGTA, dwAddress, [0xE800 + textLabelID * 4])) { return __CALL(hGTA, dwSAMP + 0x11C0, [["i", dwAddress], ["i", textLabelID], ["s", text], ["i", color], ["f", xPos], ["f", yPos], ["f", zPos] , ["f", drawDistance], ["i", testLOS], ["i", playerID], ["i", vehicleID]], false, true) ? textLabelID : -1 } } return -1 } deleteTextLabel(ByRef textLabelID) { if (textLabelID < 0 || !checkHandles()) return false if (__CALL(hGTA, dwSAMP + 0x12D0, [["i", __DWORD(hGTA, dwSAMP, [SAMP_INFO_PTR, SAMP_POOLS, SAMP_POOL_TEXTLABEL])], ["i", textLabelID]], false, true)) { textLabelID := -1 return true } return false } ; Memory-Funktionen __DWORD(hProcess, dwAddress, offsets) { if (!hProcess || !dwAddress) return "" VarSetCapacity(dwRead, 4) for i, o in offsets { dwRet := DllCall("ReadProcessMemory", "UInt", hProcess, "UInt", dwAddress + o, "Str", dwRead, "UInt", 4, "UInt*", 0) if (!dwRet) return "" dwAddress := NumGet(dwRead, 0, "UInt") } return dwAddress } __READMEM(hProcess, dwAddress, oOffsets, sDatatype = "Int") { if (!hProcess || !dwAddress) return "" VarSetCapacity(dwRead, 4) for i, o in oOffsets { dwRet := DllCall("ReadProcessMemory", "UInt", hProcess, "UInt", dwAddress + o, "Str", dwRead, "UInt", 4, "UInt*", 0) if (!dwRet) return "" if (i == oOffsets.MaxIndex()) return NumGet(dwRead, 0, sDatatype) dwAddress := NumGet(dwRead, 0, "UInt") } } __WRITESTRING(hProcess, dwAddress, oOffsets, wString) { if (!hProcess || !dwAddress) return false if A_IsUnicode wString := __unicodeToAnsi(wString) requiredSize := StrPut(wString) VarSetCapacity(buffer, requiredSize) for i, o in oOffsets { if (i == oOffsets.MaxIndex()) { StrPut(wString, &buffer, StrLen(wString) + 1) return DllCall("WriteProcessMemory", "UInt", hProcess, "UInt", dwAddress + o, "Str", buffer, "UInt", requiredSize, "UInt", 0, "UInt") } dwRet := DllCall("ReadProcessMemory", "UInt", hProcess, "UInt", dwAddress + o, "Str", buffer, "UInt", 4, "UInt*", 0) if (!dwRet) return false dwAddress := NumGet(buffer, 0, "UInt") } } __WRITEMEM(hProcess, dwAddress, oOffsets, value, sDatatype = "Int") { dwLen := datatypes[sDatatype] if (dwLen < 1 || !hProcess || !dwAddress) return false VarSetCapacity(dwRead, 4) for i, o in oOffsets { if (i == oOffsets.MaxIndex()) { NumPut(value, dwRead, 0, sDatatype) return DllCall("WriteProcessMemory", "UInt", hProcess, "UInt", dwAddress + o, "UInt", &dwRead, "UInt", dwLen, "UInt", 0) } dwRet := DllCall("ReadProcessMemory", "UInt", hProcess, "UInt", dwAddress + o, "Str", dwRead, "UInt", 4, "UInt*", 0) if (!dwRet) return false dwAddress := NumGet(dwRead, 0, "UInt") } } __WRITERAW(hProcess, dwAddress, pBuffer, dwLen) { return (!hProcess || !dwAddress || !pBuffer || dwLen < 1) ? false : DllCall("WriteProcessMemory", "UInt", hProcess, "UInt", dwAddress, "UInt", pBuffer, "UInt", dwLen, "UInt", 0, "UInt") } __CALL(hProcess, dwFunc, aParams, bCleanupStack = true, bThisCall = false, bReturn = false, sDatatype = "Char") { if (!hProcess || !dwFunc) return "" dataOffset := 0 i := aParams.MaxIndex() bytesUsed := 0 bytesMax := 5120 dwLen := i * 5 + bCleanupStack * 3 + bReturn * 5 + 6 VarSetCapacity(injectData, dwLen, 0) while (i > 0) { if (aParams[i][1] == "i" || aParams[i][1] == "p" || aParams[i][1] == "f") value := aParams[i][2] else if (aParams[i][1] == "s") { if (bytesMax - bytesUsed < StrLen(aParams[i][2])) return "" value := pMemory + bytesUsed __WRITESTRING(hProcess, value, [0x0], aParams[i][2]) bytesUsed += StrLen(aParams[i][2]) + 1 if (ErrorLevel) return "" } else return "" NumPut((bThisCall && i == 1 ? 0xB9 : 0x68), injectData, dataOffset, "UChar") NumPut(value, injectData, ++dataOffset, aParams[i][1] == "f" ? "Float" : "Int") dataOffset += 4 i-- } offset := dwFunc - (pInjectFunc + dataOffset + 5) NumPut(0xE8, injectData, dataOffset, "UChar") NumPut(offset, injectData, ++dataOffset, "Int") dataOffset += 4 if (bReturn) { NumPut(sDatatype = "Char" ? 0xA2 : 0xA3, injectData, dataOffset, "UChar") NumPut(pMemory, injectData, ++dataOffset, "UInt") dataOffset += 4 } if (bCleanupStack) { NumPut(0xC483, injectData, dataOffset, "UShort") dataOffset += 2 NumPut((aParams.MaxIndex() - bThisCall) * 4, injectData, dataOffset, "UChar") dataOffset++ } NumPut(0xC3, injectData, dataOffset, "UChar") __WRITERAW(hGTA, pInjectFunc, &injectData, dwLen) if (ErrorLevel) return "" hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0) if (ErrorLevel) return "" waitForSingleObject(hThread, 0xFFFFFFFF) closeProcess(hThread) if (bReturn) return __READMEM(hGTA, pMemory, [0x0], sDatatype) return true }
Beispiel: -
Achja, habe immer die anderen Parameter nie beachtet xD
Aber was bedeutet denn testLOS ? -
Test Line Of Sight.
-
testLOS ist dafür da, um die TextLabel durch Wände sichtbar zu machen, oder eben nicht. (Binär/0 & 1)
-
Das ist jetzt aus meiner persönlichen Funktionssammlung rauskopiert, aber wenn man das alles in die UDF einfügt, sollte es auch klappen:
PHP
Alles anzeigen; In den Deklarationsbereich: global SAMP_INFO_PTR := 0x21A0F8 global SAMP_MAX_TEXTLABELS := 1024 global SAMP_POOLS := 0x3CD global SAMP_POOL_TEXTLABEL := 0xC ; TextLabel-Funktionen updateTextLabel(textLabelID, text) { return textLabelID < 0 || textLabelID > 2047 || !checkHandles() ? false : __WRITESTRING(hGTA, dwSAMP, [SAMP_INFO_PTR, SAMP_POOLS, SAMP_POOL_TEXTLABEL, textLabelID * 0x1D, 0x0], text) } createTextLabel(text, color, xPos, yPos, zPos, drawDistance := 50.0, testLOS := 0, playerID := 0xFFFF, vehicleID := 0xFFFF) { if (!checkHandles()) return -1 dwAddress := __DWORD(hGTA, dwSAMP, [SAMP_INFO_PTR, SAMP_POOLS, SAMP_POOL_TEXTLABEL]) if (!dwAddress) return -1 Loop, 2048 { textLabelID := A_Index - 1 if (!__DWORD(hGTA, dwAddress, [0xE800 + textLabelID * 4])) { return __CALL(hGTA, dwSAMP + 0x11C0, [["i", dwAddress], ["i", textLabelID], ["s", text], ["i", color], ["f", xPos], ["f", yPos], ["f", zPos] , ["f", drawDistance], ["i", testLOS], ["i", playerID], ["i", vehicleID]], false, true) ? textLabelID : -1 } } return -1 } deleteTextLabel(ByRef textLabelID) { if (textLabelID < 0 || !checkHandles()) return false if (__CALL(hGTA, dwSAMP + 0x12D0, [["i", __DWORD(hGTA, dwSAMP, [SAMP_INFO_PTR, SAMP_POOLS, SAMP_POOL_TEXTLABEL])], ["i", textLabelID]], false, true)) { textLabelID := -1 return true } return false } ; Memory-Funktionen __DWORD(hProcess, dwAddress, offsets) { if (!hProcess || !dwAddress) return "" VarSetCapacity(dwRead, 4) for i, o in offsets { dwRet := DllCall("ReadProcessMemory", "UInt", hProcess, "UInt", dwAddress + o, "Str", dwRead, "UInt", 4, "UInt*", 0) if (!dwRet) return "" dwAddress := NumGet(dwRead, 0, "UInt") } return dwAddress } __READMEM(hProcess, dwAddress, oOffsets, sDatatype = "Int") { if (!hProcess || !dwAddress) return "" VarSetCapacity(dwRead, 4) for i, o in oOffsets { dwRet := DllCall("ReadProcessMemory", "UInt", hProcess, "UInt", dwAddress + o, "Str", dwRead, "UInt", 4, "UInt*", 0) if (!dwRet) return "" if (i == oOffsets.MaxIndex()) return NumGet(dwRead, 0, sDatatype) dwAddress := NumGet(dwRead, 0, "UInt") } } __WRITESTRING(hProcess, dwAddress, oOffsets, wString) { if (!hProcess || !dwAddress) return false if A_IsUnicode wString := __unicodeToAnsi(wString) requiredSize := StrPut(wString) VarSetCapacity(buffer, requiredSize) for i, o in oOffsets { if (i == oOffsets.MaxIndex()) { StrPut(wString, &buffer, StrLen(wString) + 1) return DllCall("WriteProcessMemory", "UInt", hProcess, "UInt", dwAddress + o, "Str", buffer, "UInt", requiredSize, "UInt", 0, "UInt") } dwRet := DllCall("ReadProcessMemory", "UInt", hProcess, "UInt", dwAddress + o, "Str", buffer, "UInt", 4, "UInt*", 0) if (!dwRet) return false dwAddress := NumGet(buffer, 0, "UInt") } } __WRITEMEM(hProcess, dwAddress, oOffsets, value, sDatatype = "Int") { dwLen := datatypes[sDatatype] if (dwLen < 1 || !hProcess || !dwAddress) return false VarSetCapacity(dwRead, 4) for i, o in oOffsets { if (i == oOffsets.MaxIndex()) { NumPut(value, dwRead, 0, sDatatype) return DllCall("WriteProcessMemory", "UInt", hProcess, "UInt", dwAddress + o, "UInt", &dwRead, "UInt", dwLen, "UInt", 0) } dwRet := DllCall("ReadProcessMemory", "UInt", hProcess, "UInt", dwAddress + o, "Str", dwRead, "UInt", 4, "UInt*", 0) if (!dwRet) return false dwAddress := NumGet(dwRead, 0, "UInt") } } __WRITERAW(hProcess, dwAddress, pBuffer, dwLen) { return (!hProcess || !dwAddress || !pBuffer || dwLen < 1) ? false : DllCall("WriteProcessMemory", "UInt", hProcess, "UInt", dwAddress, "UInt", pBuffer, "UInt", dwLen, "UInt", 0, "UInt") } __CALL(hProcess, dwFunc, aParams, bCleanupStack = true, bThisCall = false, bReturn = false, sDatatype = "Char") { if (!hProcess || !dwFunc) return "" dataOffset := 0 i := aParams.MaxIndex() bytesUsed := 0 bytesMax := 5120 dwLen := i * 5 + bCleanupStack * 3 + bReturn * 5 + 6 VarSetCapacity(injectData, dwLen, 0) while (i > 0) { if (aParams[i][1] == "i" || aParams[i][1] == "p" || aParams[i][1] == "f") value := aParams[i][2] else if (aParams[i][1] == "s") { if (bytesMax - bytesUsed < StrLen(aParams[i][2])) return "" value := pMemory + bytesUsed __WRITESTRING(hProcess, value, [0x0], aParams[i][2]) bytesUsed += StrLen(aParams[i][2]) + 1 if (ErrorLevel) return "" } else return "" NumPut((bThisCall && i == 1 ? 0xB9 : 0x68), injectData, dataOffset, "UChar") NumPut(value, injectData, ++dataOffset, aParams[i][1] == "f" ? "Float" : "Int") dataOffset += 4 i-- } offset := dwFunc - (pInjectFunc + dataOffset + 5) NumPut(0xE8, injectData, dataOffset, "UChar") NumPut(offset, injectData, ++dataOffset, "Int") dataOffset += 4 if (bReturn) { NumPut(sDatatype = "Char" ? 0xA2 : 0xA3, injectData, dataOffset, "UChar") NumPut(pMemory, injectData, ++dataOffset, "UInt") dataOffset += 4 } if (bCleanupStack) { NumPut(0xC483, injectData, dataOffset, "UShort") dataOffset += 2 NumPut((aParams.MaxIndex() - bThisCall) * 4, injectData, dataOffset, "UChar") dataOffset++ } NumPut(0xC3, injectData, dataOffset, "UChar") __WRITERAW(hGTA, pInjectFunc, &injectData, dwLen) if (ErrorLevel) return "" hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0) if (ErrorLevel) return "" waitForSingleObject(hThread, 0xFFFFFFFF) closeProcess(hThread) if (bReturn) return __READMEM(hGTA, pMemory, [0x0], sDatatype) return true }
Beispiel:Ist es möglich das ganze auch über Skin ID zu erstellen?
-
Ja aber dies geht dann erst wenn der spieler in deiner nähe ist also streamdistanz.
-
-
Ja aber dies geht dann erst wenn der spieler in deiner nähe ist also streamdistanz.
Das soll er auch erst dann
-
Das soll er auch erst dann
Ja anders gehts auch garnicht
-
Ja anders gehts auch garnicht
Kannst du mir verraten wie es funktioniert ?
Es gibt auf dem Server ca 30 verschiedene skins die angezeigt werden sollen. Das ganze dann aber nicht als Befehl sondern dauerhaft
-
Hab jetzt nicht alle skin ids im kopf und kein bock die raus zu suchen aber hier aus einem andern keybinder.
Achso nur Copy&Past hilft dir auch.
ganzoben iwo: SetTimer, listUpdate, 500
Code
Alles anzeigenglobal Frak := ["SAPD", "FBI", "Sanitäter", "Russen", "Yakuza", "Regierung", "News", "Grove", "Ballas", "LCM", "Ordnungsamt", "GMBH", "Rifa", "Triaden", "Vagos"] global SAPD := [163,164,265,266,267,280,281,282,283,284,288,194] global FBI := [165,166,286,294,194] global Sanitäter := [70,274,275,276,193] global Russen := [111,112,113,124,125,126,127,272,40] global Yakuza := [122,123,186,203,204,228,169,224] global Regierung := [17,147,187,295,12,76,150,219] global News := [60,170,188,227,240,250,56,226] global Grove := [105,106,107,269,271,65] global Ballas := [102,103,104,293,13] global LCM := [46,47,48,98,185,223,214,249] global Ordnungsamt := [8,50,71,233] global GMBH := [34,44,132,133,202,206,261,31,131] global Rifa := [114,115,116,173,174,175,184,273,195,298] global Triaden := [117,118,120,208,263] global Vagos := [108,109,110,292,91] getFraktionBySkinID(id){ for a, b in Frak for c, x in %b% if(ID==x) return Frak[a] }
Code
Alles anzeigenlistUpdate: if(!WinExist("GTA:SA:MP")) return cID := getClosestPlayerId() cName := getPlayerNameByID(cID) cSkin := getTargetPlayerSkinIdById(cID) cFraktion := getFraktionBySkinID(cSkin) if(cFraktion != "" && cFraktion != " ") { Loop, Read, %A_AppData%/.dm-binder/Fraktionen/%cFraktion%.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == cName){ found := 1 } } if(found != 1) { string = `n%cName% FileAppend, %string%, %A_AppData%/.dm-binder/Fraktionen/%cFraktion%.txt } sleep, 1500 updateLists(cName, cFraktion) } return updateLists(Name, Fraktion) { if(Fraktion != "SAPD") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/SAPD.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/SAPD.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/SAPD.txt } } if(Fraktion != "FBI") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/FBI.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/FBI.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/FBI.txt } } if(Fraktion != "Sanitäter") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Sanitäter.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/Sanitäter.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/Sanitäter.txt } } if(Fraktion != "Russen") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Russen.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/Russen.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/Russen.txt } } if(Fraktion != "Yakuza") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Yakuza.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/Yakuza.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/Yakuza.txt } } if(Fraktion != "Regierung") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Regierung.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/Regierung.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/Regierung.txt } } if(Fraktion != "News") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/News.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/News.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/News.txt } } if(Fraktion != "Grove") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Grove.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/Grove.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/Grove.txt } } if(Fraktion != "Ballas") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Ballas.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/Ballas.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/Ballas.txt } } if(Fraktion != "LCM") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/LCM.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/LCM.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/LCM.txt } } if(Fraktion != "Ordnungsamt") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Ordnungsamt.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/Ordnungsamt.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/Ordnungsamt.txt } } if(Fraktion != "GMBH") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/GMBH.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/GMBH.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/GMBH.txt } } if(Fraktion != "Rifa") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Rifa.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/Rifa.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/Rifa.txt } } if(Fraktion != "Triaden") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Triaden.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/Triaden.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/Triaden.txt } } if(Fraktion != "Vagos") { if(Name != "") { found := 0 fileInhalt := "" Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Vagos.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == Name){ found := 1 continue } fileInhalt = %fileInhalt%`n%A_LoopReadLine% } FileDelete, %A_AppData%/.dm-binder/Fraktionen/Vagos.txt FileAppend, %fileInhalt%, %A_AppData%/.dm-binder/Fraktionen/Vagos.txt } } } ~RButton:: while GetKeyState("RButton", "P") { pPed := getTargetPed() pID := getIdByPed(pPed) pSkin:= getTargetPlayerSkinIdById(pID) pName := getPlayerNameByID(pID) pFraktion := getFraktionBySkinID(pSkin) found := 0 if(pName != -1 && pID != -1 && pFraktion != "" && pFraktion != " ") { Loop, Read, %A_AppData%/.dm-binder/Fraktionen/%pFraktion%.txt { if(strlen(A_LoopReadLine) < 1) continue if(A_LoopReadLine == pName){ found := 1 } } if(found != 1) { string = `n%pName% FileAppend, %string%, %A_AppData%/.dm-binder/Fraktionen/%pFraktion%.txt } sleep, 1500 updateLists(pName, pFraktion) } } return
Code
Alles anzeigen:?:/yakuza:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" YakuzaCount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Yakuza.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { YakuzaCount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "Yakuza (" . YakuzaCount . " online)", text, "Ok") return :?:/cops:: :?:/sapd:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" SAPDCount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/SAPD.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { SAPDCount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "SAPD (" . SAPDCount . " online)", text, "Ok") return :?:/fbi:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" FBICount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/FBI.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { FBICount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "FBI (" . FBICount . " online)", text, "Ok") return :?:/sanis:: :?:/sanitäter:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" SanitäterCount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Sanitäter.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { SanitäterCount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "Sanitäter (" . SanitäterCount . " online)", text, "Ok") return :?:/russen:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" RussenCount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Russen.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { RussenCount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "Russen (" . RussenCount . " online)", text, "Ok") return :?:/regierung:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" RegierungCount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Regierung.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { RegierungCount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "Regierung (" . RegierungCount . " online)", text, "Ok") return :?:/sannews:: :?:/news:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" NewsCount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/News.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { NewsCount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "San News (" . NewsCount . " online)", text, "Ok") return :?:/grove:: :?:/gs:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" GroveCount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Grove.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { GroveCount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "Grove (" . GroveCount . " online)", text, "Ok") return :?:/ballas:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" BallasCount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Ballas.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { BallasCount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "Ballas (" . BallasCount . " online)", text, "Ok") return :?:/lcm:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" LCMCount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/LCM.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { LCMCount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "Los Chickos Malos (" . LCMCount . " online)", text, "Ok") return :?:/ordnungsamt:: :?:/oamt:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" OrdnungsamtCount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Ordnungsamt.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { OrdnungsamtCount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "Ordnungsamt (" . OrdnungsamtCount . " online)", text, "Ok") return :?:/gmbh:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" GMBHCount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/GMBH.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { GMBHCount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "GMBH (" . GMBHCount . " online)", text, "Ok") return :?:/rifa:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" RifaCount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Rifa.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { RifaCount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "San Fiero Rifa (" . RifaCount . " online)", text, "Ok") return :?:/triaden:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" TriadenCount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Triaden.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { TriadenCount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "Triaden (" . TriadenCount . " online)", text, "Ok") return :?:/vagos:: Suspend Permit sleep, 100 text := "{FFFFFF}ID`t{FFFFFF}Name`t{FFFFFF}Status`n" VagosCount := 0 Loop, Read, %A_AppData%/.dm-binder/Fraktionen/Vagos.txt { if(strlen(A_LoopReadLine) < 1) continue id := getPlayerIdByName(A_LoopReadLine) if(id != -1) { VagosCount++ text .= mc id "`t" A_LoopReadLine "`t{00FF00}online`n" } } ShowDialog(5, sc "Vagos (" . VagosCount . " online)", text, "Ok") return getPlayerColor(dwPlayerID) { if (!checkHandles()) return -1 dwColor := readDWORD(hGTA, dwSAMP + 0x103078 + dwPlayerID * 4) if (ErrorLevel) return -1 return dwColor }
-
Wie füge ich dann ein Label über die Personen ? Ich sehe aktuell nur das es in dialog angezeigt wird
-
Dein code also td einfach dort hinzufügen wo bei dem code was ich dir geschickt habe die gegner hinzugefügt werden die Spieler id musste du halt ersetzen.
-
Hast du die FileCreateDir evtl noch ?
Dann muss ich das ganze nicht maneull erstellen
-
Nein habe ich nicht.
-
Alles klar dann mache ich das ganze manuell. Ist es normal das die Text Dateien mit den Namen voll gespammt werden ?
-