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: 4290 dni
Posty: 2268
Nick w MP: Marcineg

Piwa: 4661

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 + 1 > rhmax then
                outputChatBox("Nie mo?esz ju?.",client)
                rhp = rhmax
            return end
            wynik = hand + 0.05
            rhp = rhp + 1
            if rhm - 1 <= 0 then
                rhm = 0
            return end
            rhm = rhm - 1
            setVehicleHandling(veh, "suspensionLowerLimit", wynik)
        elseif typ == "-" then
            if rhm + 1 > rhmin then
                outputChatBox("Nie mo?esz ju?.",client)
                rhm = rhmin
            return end
            wynik = hand - 0.05
            rhm = rhm + 1
            if rhp - 1 <= 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: 5041 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.


--SERWER: 

local 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 poniewa? chcesz przesun?? max 5 razy miedzy nomina? a maximum lub minimum.
            step     = 0.05 -- poniewa? oczekuje si? przeskakiwa? o 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 -- poniewa? dla 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(m) then 
        value = handling_cfg[model][cfgname].max(m); 
        outputChatBox("Nie mo?esz ju?.",client); 
    elseif value < handling_cfg[model][cfgname].min(m) then 
        value = handling_cfg[model][cfgname].min(m);
        outputChatBox("Nie mo?esz ju?.",client);
    end
    
    setVehicleHandling(veh,cfgname,value);
    
end);

-- CSIDE: zale?nie od potrzeby:
    -- oczywi?cie CreateButton podstawi? swoje 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 buttons[ source ] then return end
    triggerServerEvent("regulation",localPlayer,  buttons[ source ].typ,   buttons[ source ].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