GTA Közösség - A magyar GTA fórum

Multi Theft Auto (MTA) => MTA: Szerverfejlesztés => Segítségkérés => A témát indította: AceHardlightHUN - 2016. augusztus 24. - 13:30:43

Cím: Setrendszam probléma
Írta: AceHardlightHUN - 2016. augusztus 24. - 13:30:43
Na hali megint! írtam egy scriptet ami valamiért nemmegy.
 
function PlateText(commandName,text,also)
local Vehicle = getPedOccupiedVehicle(getLocalPlayer())
if (adminlevel >= 9) then
if Vehicle then
if text and not also then
   setVehiclePlateText( Vehicle, text )
elseif text and also then
   setVehiclePlateText( Vehicle, text .. \" \" .. also )
else
    outputChatBox(\"Kénes szöveg is nemigaz?\",thePlayer)
end
else
outputChatBox(\"Úgy látom nem vagy kocsiban\",thePlayer)
end
end
end
addCommandHandler(\"setrendszam\",PlateText)
Cím: Setrendszam probléma
Írta: id100 - 2016. augusztus 24. - 14:07:15
Hol van meghatározva az adminlevel?
thePlayer nem létezik ilyenkor használj localPlayert.
Cím: Setrendszam probléma
Írta: AceHardlightHUN - 2016. augusztus 24. - 14:18:40
Idézetet írta: id100 date=1472040435\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"62801\" data-ipsquote-contentclass=\"forums_Topic
Hol van meghatározva az adminlevel?
thePlayer nem létezik ilyenkor használj localPlayert.
 
Line 3 if (adminlevel>=9)
Cím: Setrendszam probléma
Írta: #chrstn - 2016. augusztus 24. - 14:28:48
if (getElementData(localPlayer, \"adminlevel\") >= 9) then

 
próbáld így
Cím: Setrendszam probléma
Írta: AceHardlightHUN - 2016. augusztus 24. - 14:34:44
Idézetet írta: #chrstn date=1472041728\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"62801\" data-ipsquote-contentclass=\"forums_Topic

if (getElementData(localPlayer, \"adminlevel\") >= 9) then

 
próbáld így
 
nem ott lesz a problem. így sem megy

Dupla hozzászólás automatikusan összefûzve. ( 2016. augusztus 24. - 14:35:03 )

bár mondjuk kliens oldalba írtam
Cím: Setrendszam probléma
Írta: id100 - 2016. augusztus 24. - 15:18:39
thePlayert nézted?
Cím: Setrendszam probléma
Írta: Xistance - 2016. augusztus 24. - 15:59:09
Debugot mutassál.
Cím: Setrendszam probléma
Írta: impreZZa - 2016. augusztus 24. - 16:11:56
if (adminlevel >= 9) then

 
Ez a rész nem jó, hogy állítod be az admin szintet?
Cím: Setrendszam probléma
Írta: id100 - 2016. augusztus 24. - 16:21:24
Ha más nem kipróbálhatnád a thePlayer = localPlayer -t mert ha nincs megadva (azaz szerveroldali a kód) akkor biztos nem fog menni.
Cím: Setrendszam probléma
Írta: impreZZa - 2016. augusztus 24. - 16:34:13
Idézetet írta: id100 date=1472048484\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"62801\" data-ipsquote-contentclass=\"forums_Topic
Ha más nem kipróbálhatnád a thePlayer = localPlayer -t mert ha nincs megadva (azaz szerveroldali a kód) akkor biztos nem fog menni.
 


bár mondjuk kliens oldalba írtam
 
[/quote]
Meg amúgyis csak az outputChatBox-nál használta, ami kliens oldalon felesleges..
Cím: Setrendszam probléma
Írta: id100 - 2016. augusztus 24. - 16:43:33
Ez eddig rendben van de simán lehet hibaokozó, megáll a kód (nálam volt rá példa).
Ez itt csak egy outputChatBox, de legközelebb komolyabb hiba is lehet belőle, ezért szóltam neki, hogy figyeljen rá.
Egyébként ha ennyire ragaszkodik a thePlayerhez, akkor thePlayer = localPlayer.
Cím: Setrendszam probléma
Írta: Robika1 - 2016. augusztus 24. - 18:18:10
Csak így a player változóhoz hozzászólva, a thePlayer és a localPlayer (getLocalPlayer() rövidítése, beépített MTA változó) nem ugyanaz. Az egyik szerver-, a másik kliensoldali.
Robika1
Cím: Setrendszam probléma
Írta: id100 - 2016. augusztus 24. - 18:59:46
thePlayer = localPlayer
Senki sem mondta hogy ugyanaz, a script elejére írva viszont az lesz.
Cím: Setrendszam probléma
Írta: AceHardlightHUN - 2016. augusztus 24. - 20:25:00
Na na na nem voltam 3 órát gépnél és felrobbant a topic. Adtam hozzá egy szerver oldalt és a thePlayert oldal playerre alakítottam
Az admint màr így kérem le
if (getElementData(localPlayer, \"adminlevel\") >= 9) then
Debug semmit nem ír
És még mindig nem megy.
Cím: Setrendszam probléma
Írta: Eduka - 2016. augusztus 24. - 21:36:40
Ha az adminlevelt külön funkcióban hívtad meg, h lekérje az adminszintet, akkor azt a funkciót meg is kell hívni
 
adminLevel(localPlayer)
Cím: Setrendszam probléma
Írta: #chrstn - 2016. augusztus 24. - 21:54:34
próbáld meg úgy, hogy kiveszed az adminleveles elágazást... ha úgy lefut, akkor azzal lesz a gond
Cím: Setrendszam probléma
Írta: Eduka - 2016. augusztus 24. - 22:58:36
Biztos h az a gond, tobbi menni fog
Cím: Setrendszam probléma
Írta: AceHardlightHUN - 2016. augusztus 25. - 12:19:05
így el sem akar indulni. eddig működött az F10 el hogy mutatja a rendszámot most meg az sem megy.
 
function PlateText(commandName,text,also)
local Vehicle = getPedOccupiedVehicle(getLocalPlayer())
if Vehicle then
if text and not also then
   setVehiclePlateText( Vehicle, text )
elseif text and also then
   setVehiclePlateText( Vehicle, text .. \" \" .. also )
else
    outputChatBox(\"Kénes szöveg is nemigaz?\",localPlayer)
end
else
outputChatBox(\"Úgy látom nem vagy kocsiban\",localPlayer)
end
end
end
addCommandHandler(\"setrendszam\",PlateText)

 
itt a teljes.
 
function dxDrawTextOnElement(TheElement,text,height,distance,R,G,B,alpha,size,font,checkBuildings,checkVehicles,checkPeds,checkDummies,seeThroughStuff,ignoreSomeObjectsForCamera,ignoredElement)
      local x, y, z = getElementPosition(TheElement)
      local x2, y2, z2 = getElementPosition(localPlayer)
      local distance = distance or 20
      local height = height or 1
                                local checkBuildings = checkBuildings or true
                                local checkVehicles = checkVehicles or false
                                local checkPeds = checkPeds or false
                                local checkObjects = checkObjects or true
                                local checkDummies = checkDummies or true
                                local seeThroughStuff = seeThroughStuff or false
                                local ignoreSomeObjectsForCamera = ignoreSomeObjectsForCamera or false
                                local ignoredElement = ignoredElement or nil
      if (isLineOfSightClear(x, y, z, x2, y2, z2, checkBuildings, checkVehicles, checkPeds , checkObjects,checkDummies,seeThroughStuff,ignoreSomeObjectsForCamera,ignoredElement)) then
         local sx, sy = getScreenFromWorldPosition(x, y, z+height)
         if(sx) and (sy) then
            local distanceBetweenPoints = getDistanceBetweenPoints3D(x, y, z, x2, y2, z2)
            if(distanceBetweenPoints < distance) then
               dxDrawText(text, sx+2, sy+3.5, sx, sy, tocolor(R or 255, G or 255, B or 255, 100), (size or 1)-(distanceBetweenPoints / distance), font or \"arial\", \"center\", \"center\")
   end
end
end
end
 
function keszrendszam()
for k,v in ipairs(getElementsByType(\"vehicle\")) do
        local rendszam = getVehiclePlateText(v)
local visible = getElementData(getLocalPlayer(), \"rendszam\") or 0
if visible == 1 then
if rendszam then
dxDrawTextOnElement(v,rendszam,0.8,16,255,255,255,255,2,\"arial\")
end
end
end
end
addEventHandler(\"onClientRender\", getRootElement(), keszrendszam)
--[[addCommandHandler(\"teszt\", function()
setElementData(getLocalPlayer(), \"rendszam\", 1)
end)
addCommandHandler(\"teszt2\", function()
setElementData(getLocalPlayer(), \"rendszam\", 0)
end)]]--
function nulla()
setElementData(getLocalPlayer(), \"rendszam\", 0)
end
addEventHandler(\"onClientPlayerJoin\", getRootElement(), nulla)
addEventHandler(\"onClientPlayerQuit\", getRootElement(), nulla)
addEventHandler(\"onClientResourceStart\", getRootElement(), nulla)
addEventHandler(\"onClientResourceStop\", getRootElement(), nulla)
function ream()
local rendszam = getElementData(getLocalPlayer(), \"rendszam\") or 0
if rendszam == 0 then
setElementData(getLocalPlayer(), \"rendszam\", 1)
--outputChatBox(\"asd\")
elseif rendszam == 1 then
setElementData(getLocalPlayer(), \"rendszam\", 0)
--outputChatBox(\"kecske\")
end
end
bindKey(\"F10\", \"down\", ream)
function PlateText(commandName,text,also)
local Vehicle = getPedOccupiedVehicle(getLocalPlayer())
if Vehicle then
if text and not also then
   setVehiclePlateText( Vehicle, text )
elseif text and also then
   setVehiclePlateText( Vehicle, text .. \" \" .. also )
else
    outputChatBox(\"Kénes szöveg is nemigaz?\",localPlayer)
end
else
outputChatBox(\"Úgy látom nem vagy kocsiban\",localPlayer)
end
end
end
addCommandHandler(\"setrendszam\",PlateText)
Cím: Setrendszam probléma
Írta: Senus - 2016. szeptember 17. - 19:56:58
Client oldalba írtad nem de? :) Most lehet hülyeséget mondok de nekem ez serverbe müködik csak :(  :thumbsup:
Cím: Setrendszam probléma
Írta: AceHardlightHUN - 2016. szeptember 18. - 09:42:26
Próbáltam mind 2 be.
Cím: Setrendszam probléma
Írta: Changeme - 2016. szeptember 18. - 13:26:14
A rendszám változtatást szerver oldalon illik megcsinálni, mert ha nem, akkor csak a lokális játékosnak változtatja meg.
 
function PlateText(thePlayer, commandName, text, also)
        local vehicle = getPedOccupiedVehicle(thePlayer)
        local adminlevel = getElementData(thePlayer, \'adminlevel\')
        if (adminlevel >= 9) then
        if vehicle then
                if text and not also then
                        setVehiclePlateText( vehicle, text )
                elseif text and also then
                        setVehiclePlateText( vehicle, text .. \" \" .. also )
                else
                    outputChatBox(\"Kéne szöveg is nemigaz?\", thePlayer)
                end
        else
                outputChatBox(\"Úgy látom nem vagy kocsiban\", thePlayer)
        end
        end
end
addCommandHandler(\"setrendszam\",PlateText)

 
Így már működnie kéne.
Cím: Setrendszam probléma
Írta: AlexSwamp - 2016. szeptember 19. - 16:49:16
Idézetet írta: Changeme date=1474197974\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"62801\" data-ipsquote-contentclass=\"forums_Topic
A rendszám változtatást szerver oldalon illik megcsinálni, mert ha nem, akkor csak a lokális játékosnak változtatja meg.
 
function PlateText(thePlayer, commandName, text, also)
        local vehicle = getPedOccupiedVehicle(thePlayer)
        local adminlevel = getElementData(thePlayer, \'adminlevel\')
        if (adminlevel >= 9) then
        if vehicle then
                if text and not also then
                        setVehiclePlateText( vehicle, text )
                elseif text and also then
                        setVehiclePlateText( vehicle, text .. \" \" .. also )
                else
                    outputChatBox(\"Kéne szöveg is nemigaz?\", thePlayer)
                end
        else
                outputChatBox(\"Úgy látom nem vagy kocsiban\", thePlayer)
        end
        end
end
addCommandHandler(\"setrendszam\",PlateText)

 
Így már működnie kéne.
 
Megcsinálhatod te client oldalon is, csak szinkronizálni kell azt. Ezt megtudod tenni client oldalon is amúgy, ha pl írsz hozzá egy olyan function-t amely minden játékosnál lecserélni az adott járműre. Legalábbis elviekben ez egy működőképes megoldás lehet.  :thumbsup:
Cím: Setrendszam probléma
Írta: Xenius - 2016. szeptember 24. - 11:37:32
Szerver oldal
 
addCommandHandler(\"setrendszam\", function(player, cmd, ...)
if not ... then
outputChatBox(\"/\"..cmd..\" [Rendszám]\", player)
else
local veh = getPedOccupiedVehicle(player)
if not veh then
   outputChatBox(\"Nem vagy járműben\", player)
else
   local plate = table.concat({...}, \" \")
   setVehiclePlateText(veh, plate)
   outputChatBox(\"Rendszám átírva: \"..plate, player)
end
end
end)
Cím: Setrendszam probléma
Írta: JokerSajt - 2016. szeptember 28. - 18:48:52
Sok dolgot csináltok de arra nem gondoltok hogy ha nem debuggol és nem ír errort mi a hiba :)? Az adminlevel if nem megy tovább. Alias egy nil értéket kap ami kisebb 9 nél.



-- Ha server oldalon fut akkor definiálj a cmd elé még egy thePlayer változót (thePlayer, cmd, dataName, value) és cseréld ki a localPlayert thePlayerre
function setData(cmd, dataName, value)
     if not dataName or not value then return end
     setElementData(localPlayer, dataName, value)
     -- A Value lehet string vagy boolean érték is.
     outputChatBox(tostring(dataName)..\" -> \"..tostring(value))
end
addCommandHandler(\"setData\", setData)
 
Ha megvolt a setData funkció létrehozása akkor a /setData-val állítsd be magadnak az adminlevelt 12 -re (/setData adminlevel 12)
Majd ezután próbáld a kommandot.
Különben tudom hogy az én régi scriptemet használod amit még doubleMTA-nak adtam el. Innen töltheted le azt:



-- Fos Script warning :) Első scriptjeim közül való :D
http://data.hu/get/10003443/joker_table.rar
 
Huzina Patrik voltam.
Cím: Setrendszam probléma
Írta: AceHardlightHUN - 2016. szeptember 30. - 22:09:20
Már azóta megoldottam! Köszi! A legfőbb probléma a parancs kivitelezése volt. Ugyanis sikerült működésre bírni csak server resi után régi rendszám volt.
Ergo egy mysql callbackel az adatbázist kellett átírni. Így egyszerűbb is.