Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2017-04-01, 16:34


marcin778

Krytyk serwerów MTA






Wiek: 24
Na forum: 4149 dni
Posty: 2268
Nick w MP: Marcineg

Piwa: 4662

Respekt: 1436,8
Respekt: 1436,8

Kronix.Cooder, Kolega nie ogarnie, po co tak skomplikowanie? :P

mlodasnygo,

s

rhmax 5
rhmin 5
rhm 0
rhp 0
wynik 0

addEvent("regulation",true)
addEventHandler("regulation",root,function(typ)
    local veh getPedOccupiedVehicle(client)
        if veh then
        local hand getVehicleHandling(veh)['suspensionLowerLimit']
        local rh getElementData(veh"rh")
        if typ == "+" then
            if rhp rhmax then
                outputChatBox("Nie mo?esz ju?.",client)
                rhp rhmax
            return end
            wynik hand 0.05
            rhp rhp 1
            if rhm <= 0 then
                rhm 0
            return end
            rhm rhm 1
            setVehicleHandling(veh"suspensionLowerLimit"wynik)
        elseif typ == "-" then
            if rhm rhmin then
                outputChatBox("Nie mo?esz ju?.",client)
                rhm rhmin
            return end
            wynik hand 0.05
            rhm rhm 1
            if rhp <= 0 then
                rhp 0
            return end
            rhp rhp 1
            setVehicleHandling(veh"suspensionLowerLimit"wynik)
        end
    end
end)
            
                


c


addEventHandler("onClientGUIClick",root,function()
    if source == suspensionpl then
        triggerServerEvent("regulation",localPlayer"+")
    elseif source == suspensionmi then
        triggerServerEvent("regulation",localPlayer"-")
    end
end)


Testowane i dzia?a. Musisz mie? buttony suspensionmi i suspensionpl

Podpis
Moje prace: https://www.youtube.com/c...MuaWGHPp1mhlGnw

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

 
Więcej szczegółów
Wystawiono 2 piw(a):
mlodasnygo, Kronix.Cooder
Wysłany: 2017-04-01, 18:48


Kronix.Cooder







Wiek: 36
Na forum: 4899 dni
Posty: 26

Piwa: 15

Respekt: 90

marcin778, fakt, troch? mnie ponios?o, dla pocz?tkuj?cych to zupe?nie nie przydatne xD
najbardziej chodzi?o mi o pokazanie ze mo?na unikn?? kopiowania "addEventHandler" jak i zmiennych "pomocniczych" dla kolejnych warto?ci z Handling kt?re domy?lam si? b?d?.
Tabelka i po sprawie, a o funkcji mo?na wtedy przecie? zapomnie? tym bardziej o kopiowaniu aby obs?u?y? inny Handling, a mo?e nawet jaki? wyj?tek od regu?y? i oczywi?cie zapis danych do bazy czy gdziekolwiek, brak dodatkowych zmiennych, wiec brak dodatkowych danych do zapisu.


--SERWERlocal handling_cfg = {
    default = { -- czyli domy?lnie ma zastosowanie do wszystkich pozosta?ych modeli kt?rych nie ma w tej tabeli.
        suspensionLowerLimit = { 
            min     = function(a) return getOriginalHandling(tonumber(a)).suspensionLowerLimit - (5*0.05); end, 
            max     = function(a) return getOriginalHandling(tonumber(a)).suspensionLowerLimit + (5*0.05); end, -- razy 5 warto?? step poniewachcesz przesun?? max 5 razy miedzy nominaa maximum lub minimum.
            step     0.05 -- poniewaoczekuje siprzeskakiwao taka warto?? kod"wynik = hand + 0.05"
        },
        suspensionUpperLimit = { 
            min     = function(a) return getOriginalHandling(tonumber(a)).suspensionUpperLimit - (5*0.05); end, 
            max     = function(a) return getOriginalHandling(tonumber(a)).suspensionUpperLimit + (5*0.05); end, 
            step     0.05 
        },
        suspensionDamping ={ 
            min     = function(a) return getOriginalHandling(tonumber(a)).suspensionDamping - (5*0.01); end, 
            max     = function(a) return getOriginalHandling(tonumber(a)).suspensionDamping + (5*0.01); end, 
            step     0.01 
        },
        mass = { 
            min     = function(a) return getOriginalHandling(tonumber(a)).mass - (5*100.0); end, 
            max     = function(a) return getOriginalHandling(tonumber(a)).mass + (5*100.0); end, 
            step     100.0 
        }
        -- ... pozosta?e warto?ci handling (uzupe?ni?!)
    },
    [400] = { -- model pojazdu "wyj?tek"
        suspensionLowerLimit = {
            min     = function(a) return getOriginalHandling(a).suspensionLowerLimit - (8*0.09); end, -- potrzebujemy dla tego modelu wi?cej przesuni??
            max     = function(a) return getOriginalHandling(a).suspensionLowerLimit + (8*0.09); end, 
            step     0.09 -- poniewadla tego modelu chcemy wi?kszy skok
        }
    }
    --... reszta modeli "wyj?tki" oraz ich tabele
};


addEvent("regulation",true);
addEventHandler("regulation",root,function(cfgname,c)

    local veh getPedOccupiedVehicle(client);
    local model getElementModel(veh);
    
    local m model;
    -- je?eli NIE! (istnieje podany model "i" istnieje wewn?trz cfgname) 
    if not (handling_cfg[model] and handling_cfg[model][cfgname]) then
        model "default"; -- zmiana na warto?? domy?lna z tabeli
    end
    
    local value getVehicleHandling(veh)[cfgname] + tonumber(c..handling_cfg[model][cfgname].step);
    
    if value handling_cfg[model][cfgname].max(mthen 
        value handling_cfg[model][cfgname].max(m); 
        outputChatBox("Nie mo?esz ju?.",client); 
    elseif value handling_cfg[model][cfgname].min(mthen 
        value handling_cfg[model][cfgname].min(m);
        outputChatBox("Nie mo?esz ju?.",client);
    end
    
    setVehicleHandling(veh,cfgname,value);
    
end);

-- CSIDEzale?nie od potrzeby:
    -- oczywi?cie CreateButton podstawiswoje parametry
local buttons = {
    [guiCreateButton(x,y,w,h,"dolnylimitWi?cej",relat,parent)]     = {typ="suspensionLowerLimit",    func="+"},
    [guiCreateButton(x,y,w,h,"g?rnylimitMniej",relat,parent)]     = {typ="suspensionUpperLimit",    func="-"},
    [guiCreateButton(x,y,w,h," Wi?cej",relat,parent)]             = {typ="suspensionDamping",        func="+"},
    [guiCreateButton(x,y,w,h," mniej",relat,parent)]             = {typ="suspensionDamping",        func="-"}
    -- pozosta?e uzupe?ni?
};
    
addEventHandler("onClientGUIClick",root,function()
    if not buttonssource then return end
    triggerServerEvent("regulation",localPlayer,  buttonssource ].typ,   buttonssource ].func);
end)



to jedynie moja propozycja i nie musi by? trafna, by? mo?e s? lepsze sposoby wykonania, a przede wszystkim, nie wa?ne jak, tylko ?eby dzia?a?o.
--// pisane z pami?ci mog? by? b??dy. stara?em si? nie u?ywa? skr?conego zapisu wiec powinno by? czytelniej

mlodasnygo: jak na pocz?tek, kolega wy?ej chyba wyczerpa? temat, m?j post ma charakter jedynie informacyjny. (?e mo?na inaczej)

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
marcin778
Tagi: poruszanie :: się :: tabeli
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » poruszanie się po tabeli 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
Dodaj temat do Ulubionych
Wersja do druku