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)
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