Witamy na GTAOnline Obecny czas to 2017-09-22, 06:37 Użytkowników: 71542
Strona główna | Użytkownicy | Grupy | Faq | Regulamin | Zaloguj

Poprzedni temat :: Następny temat
Wykrywanie gracza po nazwie konta zamiast po nicku
Autor Wiadomość

flimbo123 





Informacje
Nick w MP: Flimbo
Wiek: 24
Na forum: 2599 dni
Posty: 77
Piwa: 171
Respekt: 60

Wysłany: 2016-12-20, 14:10   Wykrywanie gracza po nazwie konta zamiast po nicku



addCommandHandler("zaparkuj",function(plr)
    if getPedOccupiedVehicle(plrthen
        if getElementData(getPedOccupiedVehicle(plr),"owner")==getPlayerName(plrthen
            local x,y,z=getElementPosition(getPedOccupiedVehicle(plr))
            local _,_,rot1=getVehicleRotation(getPedOccupiedVehicle(plr))
            setElementData(getPedOccupiedVehicle(plr),"x",x)
            setElementData(getPedOccupiedVehicle(plr),"y",y)
            setElementData(getPedOccupiedVehicle(plr),"z",z)
            setElementData(getPedOccupiedVehicle(plr),"rot",rot)
            outputChatBox("*Twój pojazd został zaparkowany.",plr,255,255,255)
            executeCommandHandler("save",plr)
        end
    end
end)


Chodzi o to, żeby zamiast GetPlayerName używało getAccountName. Jestem początkujacy w LUA i niezbyt umiem to rozkminić, bo prosta zamiana na GetAccountName zamiast GetPlayerName nie funkcjonuje poprawnie.

Postaw piwo autorowi tego posta
 

marcin778 
Majster Bułeczka.





Informacje
Nick w MP: Ml.Bryg|Marcin
Wiek: 29
Na forum: 972 dni
Posty: 1844
Piwa: 2493
Respekt: 751
Respekt: 751Respekt: 751

Wysłany: 2016-12-20, 14:14   



addCommandHandler("zaparkuj",function(plr)
    if getPedOccupiedVehicle(plrthen
      local kt getPlayerAccount(plr)
         if kt then
        if getElementData(getPedOccupiedVehicle(plr),"owner")==getAccountName(ktthen
            local x,y,z=getElementPosition(getPedOccupiedVehicle(plr))
            local _,_,rot1=getVehicleRotation(getPedOccupiedVehicle(plr))
            setElementData(getPedOccupiedVehicle(plr),"x",x)
            setElementData(getPedOccupiedVehicle(plr),"y",y)
            setElementData(getPedOccupiedVehicle(plr),"z",z)
            setElementData(getPedOccupiedVehicle(plr),"rot",rot)
            outputChatBox("*Twój pojazd został zaparkowany.",plr,255,255,255)
            executeCommandHandler("save",plr)
             end
        end
    end
end)


_________________
Pomagam w miarę możliwości GG: 49018649
Również robię skrypty na zamówienie.

http://creative-game.pl

-- obecnie
-- obecnie
-- dawniej
-- dawniej
-- obecnie
Postaw piwo autorowi tego posta
 

flimbo123 





Informacje
Nick w MP: Flimbo
Wiek: 24
Na forum: 2599 dni
Posty: 77
Piwa: 171
Respekt: 60

Wysłany: 2016-12-20, 22:14   



Super! Działa! jednak mam jeszcze pare innych funkcji na identycznej zasadzie. Jeśli zmienna "kt" już jest zdefiniowana to wystarczy tylko dodać "=getAccountName(kt)" [...] i będzie git?

Dla przykładu:

addCommandHandler("stworzauto",function(plr,cmd,model)
    if isObjectInACLGroup("user."..getPlayerName(plr),aclGetGroup("Admin")) then
        if not model then return end
        local x,y,z=getElementPosition(plr)
        local v=createVehicle(model,x,y,z)
        local _,_,rot=getVehicleRotation(v)
        setElementPosition(plr,x,y,z+2)
        setVehicleRotation(plr,0,0,rot)
        setElementData(v,"owner"==getAccountName(kt))
        setElementData(v,"przeb",0)
        executeCommandHandler("save",plr)
    end
end)


Postaw piwo autorowi tego posta
 

marcin778 
Majster Bułeczka.





Informacje
Nick w MP: Ml.Bryg|Marcin
Wiek: 29
Na forum: 972 dni
Posty: 1844
Piwa: 2493
Respekt: 751
Respekt: 751Respekt: 751

Wysłany: 2016-12-21, 17:59   



Tak, aczkolwiek w przypadku
Więcej informacji znajdziesz w Wikipedii MTA:

setElementData
nie robimy tego tak jak ty to zrobiłeś, tylko:
     setElementData(v,"owner"getAccountName(kt))
to ustawia elementdate "owner" na nazwe konta danego gracza. Znak "==" używamy najczęściej gdy sprawdzamy czy coś jest równe, np w przypadku
Więcej informacji znajdziesz w Wikipedii MTA:

getElementData
wyglądałoby to tak:
if getElementData(v"owner")==getAccountData(ktthen
Ponadto 'v' to nie jest żaden argument ponieważ nie ma nigdzie pętli ani żadnej takiej zmiennej, no chyba, że poza tym skrawkiem co pokazałeś. Zmienna 'kt' zdefiniowana jest tylko w komendzie 'zaparkuj' ponieważ jest ona lokalna, możesz zrobić kolejną taką zmienną lokalną, która będzie działała tylko w komendzie 'stworzauto'
addCommandHandler("stworzauto",function(plr,cmd,model)
    if isObjectInACLGroup("user."..getPlayerName(plr),aclGetGroup("Admin")) then
        if not model then return end
        local kt getPlayerAccount(plr)
        local x,y,z=getElementPosition(plr)
        local v=createVehicle(model,x,y,z)
        local _,_,rot=getVehicleRotation(v)
        setElementPosition(plr,x,y,z+2)
        setVehicleRotation(plr,0,0,rot)
        setElementData(v,"owner",getAccountName(kt))
        setElementData(v,"przeb",0)
        executeCommandHandler("save",plr)
    end
end)
lub możesz zrobić z jednej zmiennej lokalnej zmienną globalną czyli usunąć przedrostek 'local' wtedy zmienna ta będzie działać na całym kodzie.

Mała uwaga, aby pobrać nazwę konta gracza to trzeba najpierw pobrać konto gracza, którego chcemy pobrać nazwę, od tego właśnie jest zmienna 'kt'.

_________________
Pomagam w miarę możliwości GG: 49018649
Również robię skrypty na zamówienie.

http://creative-game.pl

-- obecnie
-- obecnie
-- dawniej
-- dawniej
-- obecnie
Postaw piwo autorowi tego posta
 

flimbo123 





Informacje
Nick w MP: Flimbo
Wiek: 24
Na forum: 2599 dni
Posty: 77
Piwa: 171
Respekt: 60

Wysłany: 2016-12-21, 18:45   



marcin778, Drogi Marcinie, nie da się ukryć, że wszystko rzetelnie i zrozumiale wytłumaczyłeś. Jednak używając podanego przez ciebie wyżej przykładu komendy "stworzauto" niestety nie tworzy ona pojazdu na nazwę konta. Nie dzieje się nic.

Aby uniknąć niedopowiedzeń podaję ci cały kod z komendami dla skryptu:


addEventHandler("onResourceStart",getResourceRootElement(getThisResource()),function()
    local q=dbQuery(db,"SELECT * FROM `Save`")
    local x=dbPoll(q,-1)
    dbFree(q)
    for _,v in ipairs(x)do
        local car=createVehicle(v.Model,v.x,v.y,v.z)
        setVehicleColor(car,v.c1,v.c2,v.c3,v.c4,v.c5,v.c6)
        setElementData(car,"owner",v.owner)
        setElementData(car,"przeb",v.przebieg)
        setElementData(car,"fuel",v.paliwo)
        setElementData(car,"v:id",v.ID)
        setElementHealth(car,v.hp)
        setElementData(car,"x",v.x)
        setElementData(car,"y",v.y)
        setElementData(car,"z",v.z)
        setElementData(car,"rot",v.rot)
        setVehicleRotation(car,0,0,v.rot)
        setVehicleHandling(car,"driveType",v.driveType)
        setVehicleHandling(car,"numberOfGears",v.numberOfGears)
        setVehicleHandling(car,"maxVelocity",v.maxVelocity)
        setVehicleHandling(car,"engineAcceleration",v.engineAcceleration)
        setVehicleHandling(car,"steeringLock",v.steeringLock)
        tuning=fromJSON(v.tuning)
        for _,value in ipairs(tuning)do
            addVehicleUpgrade(car,value)
        end
    end
end)

addCommandHandler("stworzauto",function(plr,cmd,model)
    if isObjectInACLGroup("user."..getPlayerName(plr),aclGetGroup("Admin")) then
        if not model then return end
        local kt getPlayerAccount(plr)
        local x,y,z=getElementPosition(plr)
        local v=createVehicle(model,x,y,z)
        local _,_,rot=getVehicleRotation(v)
        setElementPosition(plr,x,y,z+2)
        setVehicleRotation(plr,0,0,rot)
        setElementData(v,"owner",getAccountName(kt))
        setElementData(v,"przeb",0)
        executeCommandHandler("save",plr)
    end
end)

addCommandHandler("zaparkuj",function(plr)
    if getPedOccupiedVehicle(plrthen
      local kt getPlayerAccount(plr)
         if kt then
        if getElementData(getPedOccupiedVehicle(plr),"owner")==getAccountName(ktthen
            local x,y,z=getElementPosition(getPedOccupiedVehicle(plr))
            local _,_,rot1=getVehicleRotation(getPedOccupiedVehicle(plr))
            setElementData(getPedOccupiedVehicle(plr),"x",x)
            setElementData(getPedOccupiedVehicle(plr),"y",y)
            setElementData(getPedOccupiedVehicle(plr),"z",z)
            setElementData(getPedOccupiedVehicle(plr),"rot",rot)
            outputChatBox("*Twój pojazd został zaparkowany.",plr,255,255,255)
            executeCommandHandler("save",plr)
             end
        end
    end
end)
        
        
addCommandHandler("przepiszpojazd",function(plr,cmd,nick)
    if getPedOccupiedVehicle(plrthen
        if getElementData(getPedOccupiedVehicle(plr),"owner")==getPlayerName(plrthen
            local auto=getPedOccupiedVehicle(plr)
            local gracz=getPlayerFromName(nick)
            if not gracz then return outputChatBox("*Nie znaleziono takiego gracza.",plr,255,255,255end
            setElementData(auto,"owner",nick)
            executeCommandHandler("save",plr)
            outputChatBox("*Pomyślne przepisanie pojazdu.",plr,255,255,255)
            outputChatBox("*Otrzymujesz pojazd : "..getVehicleName(auto).." od gracza : "..getPlayerName(plr).."!",gracz,255,255,255)
        end
    end
end)

addEventHandler("onVehicleStartEnter",root,function(plr,seat)
    if seat==0 then
        local own=getElementData(source,"owner")
        if own then
            if own~=getPlayerName(plrthen
                cancelEvent()
                outputChatBox("*To auto należy do innego gracza.",plr,255,255,255)
            end
        end
    end
end)


((Wstęp kodu czyli łączenie się z bazą danych, formaty zapisu itp pozwoliłem sobie pominąć, bo i tak w tej sprawie jest to bezużyteczne.))

PS: Oczywiście piwami już cię nagrodziłem :>

Postaw piwo autorowi tego posta
 

marcin778 
Majster Bułeczka.





Informacje
Nick w MP: Ml.Bryg|Marcin
Wiek: 29
Na forum: 972 dni
Posty: 1844
Piwa: 2493
Respekt: 751
Respekt: 751Respekt: 751

Wysłany: 2016-12-21, 18:52   



Nie wina przykładu, tylko nie istniejącej funkcji 'setVehicleRotation'. Wpisz /debugscript 3 na chacie bądź konsoli i wyskoczy ci debugowanie wszystkich zasobów, tam zawsze pojawiają się błędy czy też ostrzeżenia odnośnie błędów w skrypcie, wszystko jest tam napisane w jakiej linijce jest błąd oraz na czym on polega. Co do problemu rozwiązanie jest proste nie istnieje coś takiego jak setVehicleRotation tylko
Więcej informacji znajdziesz w Wikipedii MTA:

setElementRotation


addEventHandler("onResourceStart",getResourceRootElement(getThisResource()),function()
    local q=dbQuery(db,"SELECT * FROM `Save`")
    local x=dbPoll(q,-1)
    dbFree(q)
    for _,v in ipairs(x)do
        local car=createVehicle(v.Model,v.x,v.y,v.z)
        setVehicleColor(car,v.c1,v.c2,v.c3,v.c4,v.c5,v.c6)
        setElementData(car,"owner",v.owner)
        setElementData(car,"przeb",v.przebieg)
        setElementData(car,"fuel",v.paliwo)
        setElementData(car,"v:id",v.ID)
        setElementHealth(car,v.hp)
        setElementData(car,"x",v.x)
        setElementData(car,"y",v.y)
        setElementData(car,"z",v.z)
        setElementData(car,"rot",v.rot)
        setElementRotation(car,0,0,v.rot)
        setVehicleHandling(car,"driveType",v.driveType)
        setVehicleHandling(car,"numberOfGears",v.numberOfGears)
        setVehicleHandling(car,"maxVelocity",v.maxVelocity)
        setVehicleHandling(car,"engineAcceleration",v.engineAcceleration)
        setVehicleHandling(car,"steeringLock",v.steeringLock)
        tuning=fromJSON(v.tuning)
        for _,value in ipairs(tuning)do
            addVehicleUpgrade(car,value)
        end
    end
end)

addCommandHandler("stworzauto",function(plr,cmd,model)
    if isObjectInACLGroup("user."..getPlayerName(plr),aclGetGroup("Admin")) then
        if not model then return end
        local kt getPlayerAccount(plr)
        local x,y,z=getElementPosition(plr)
        local v=createVehicle(model,x,y,z)
        local _,_,rot=getVehicleRotation(v)
        setElementPosition(plr,x,y,z+2)
        setElementRotation(plr,0,0,rot)
        setElementData(v,"owner",getAccountName(kt))
        setElementData(v,"przeb",0)
        executeCommandHandler("save",plr)
    end
end)

addCommandHandler("zaparkuj",function(plr)
    if getPedOccupiedVehicle(plrthen
      local kt getPlayerAccount(plr)
         if kt then
        if getElementData(getPedOccupiedVehicle(plr),"owner")==getAccountName(ktthen
            local x,y,z=getElementPosition(getPedOccupiedVehicle(plr))
            local _,_,rot1=getVehicleRotation(getPedOccupiedVehicle(plr))
            setElementData(getPedOccupiedVehicle(plr),"x",x)
            setElementData(getPedOccupiedVehicle(plr),"y",y)
            setElementData(getPedOccupiedVehicle(plr),"z",z)
            setElementData(getPedOccupiedVehicle(plr),"rot",rot)
            outputChatBox("*Twój pojazd został zaparkowany.",plr,255,255,255)
            executeCommandHandler("save",plr)
             end
        end
    end
end)
        
        
addCommandHandler("przepiszpojazd",function(plr,cmd,nick)
    if getPedOccupiedVehicle(plrthen
        if getElementData(getPedOccupiedVehicle(plr),"owner")==getPlayerName(plrthen
            local auto=getPedOccupiedVehicle(plr)
            local gracz=getPlayerFromName(nick)
            if not gracz then return outputChatBox("*Nie znaleziono takiego gracza.",plr,255,255,255end
            setElementData(auto,"owner",nick)
            executeCommandHandler("save",plr)
            outputChatBox("*Pomyślne przepisanie pojazdu.",plr,255,255,255)
            outputChatBox("*Otrzymujesz pojazd : "..getVehicleName(auto).." od gracza : "..getPlayerName(plr).."!",gracz,255,255,255)
        end
    end
end)

addEventHandler("onVehicleStartEnter",root,function(plr,seat)
    if seat==0 then
        local own=getElementData(source,"owner")
        if own then
            if own~=getPlayerName(plrthen
                cancelEvent()
                outputChatBox("*To auto należy do innego gracza.",plr,255,255,255)
            end
        end
    end
end)


_________________
Pomagam w miarę możliwości GG: 49018649
Również robię skrypty na zamówienie.

http://creative-game.pl

-- obecnie
-- obecnie
-- dawniej
-- dawniej
-- obecnie
Postaw piwo autorowi tego posta
 
Tagi: wykrywanie :: gracza :: nazwie :: konta :: zamiast :: nicku
Anonymous



Dołaczył: Wczoraj 0:00
Posty: 1
Skad: google.com


Anonymous Koniecznie zajrzyj na:






Wyświetl posty z ostatnich:   
Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Wersja do druku

Skocz do:  


phpBB by Przemo modified by xXx 2003-2016

Template GTAONLINE created by gtaonline.pl



Strona wygenerowana w 0,19 sekundy. Zapytań do SQL: 18