Witam. Mam tabele i p?ki co zrobi?em, ?eby wybiera?o mi losowo skina z tej tabeli. Jak jednak zrobi?, ?eby bra?o po kolei z tabeli, a gdy dojdzie do ostatniego to od pocz?tku?
Stawiam piwko za pomoc!
To u g?ry to jedna sprawa.
Planuje zrobi?, ?e gracz stoi w blipie i za pomoc? dw?ch klawiszy ustawia sobie skina nast?pnego lub poprzedniego z tabeli. (tylko tutaj lekko skrypt do przebudowy, bo teraz jest onMarkerHit, a wtedy b?dzie musia?o by? onPlayerIsInMarker czy co? w ten dese? xD). W ka?dym razie druga sprawa to jak zrobi?, ?eby sprawdzi?o kt?rego skina z tabeli mam obecnie i wczyta?o poprzedniego?
Czy b?dzie potrzeba przebudowy tabeli? Mam na my?li zrobienie tak:
Zaznaczy?em te? jeden przecinek - czy jest on w tym miejscu konieczny?
//edit:
W skr?cie: Jak zamieni? math.random na co?, ?eby bra?o skiny po kolei z tabeli, a nie dawa?o losowego?
Ciastuu?, a podasz dowolny przyk?ad jak u?y? tego? Najlepiej co? w stylu, ?e jest:
15% szans na print("fart")
85% szans na print("nie masz farta")
//Da si? co? pomno?y? w tabeli?
Przyk?adowo chcia?bym mie? 90% szans na trafienie Manany z Tabeli i 10% na Trafienie Infernusa to czy da si? zrobi? co? w tym stylu?:
Mam podobny a raczej du?o wi?kszy problem. Czy mo?na skontaktowa? si? z Tob? poza forum? Niestety nie mog? na PW a bardzo zale?y mi na kontakcie bo wydaje mi si?, ?e mo?esz mi pom?c.
Ciastuu?, a podasz dowolny przyk?ad jak u?y? tego? Najlepiej co? w stylu, ?e jest:
15% szans na print("fart")
85% szans na print("nie masz farta")
//Da si? co? pomno?y? w tabeli?
Przyk?adowo chcia?bym mie? 90% szans na trafienie Manany z Tabeli i 10% na Trafienie Infernusa to czy da si? zrobi? co? w tym stylu?:
tabelka = {
10*{"infernus"},
90*{"manana"},
}
Ja to zrobi?em w taki spos?b:
function math.percent(percent,maxvalue)
if tonumber(percent) and tonumber(maxvalue) then
return (maxvalue*percent)/100
end
return false
end
tabelka = {
{vehicle="Infernus", chance=10},
{vehicle="Manana", chance=60},
{vehicle="Faggio", chance=30},
}
function losuj(plr)
percenttable={}
vehicletable={}
for i,v in ipairs(tabelka) do
local rand=math.random(100)
local percent=math.percent(rand,v.chance)
table.insert(percenttable, percent)
table.insert(vehicletable, {vehicle=v.vehicle, chance=percent})
end
table.sort(percenttable, function(a,b) return a > b end)
for i,v in ipairs(vehicletable) do
if v.chance == percenttable[1] then
outputChatBox("Wygrana: "..v.vehicle, plr, 0, 255, 0)
outputChatBox("ID modelu: "..getVehicleModelFromName(v.vehicle), plr, 0, 255, 0)
end
end
end
addCommandHandler("losuj", losuj)
/edit:
@down
by?em akurat w trakcie edycji postu, pr?bowa?em par? sposob?w w tym czasie, w sumie nie wpad?oby mi takie wykonanie na my?l.
/edit2:
tamten post by? jedynie pomy?k?, ?le przeczyta?em o co chodzi autorowi, zaraz po tym usun??em tamten post.
Podpis
Osiągnięcia:
- wygrana w konkursie LUA (kat. średnia) - 05.02.18
- 150 reputacji - 06.02.18
- 100 postów - 06.02.18
Ostatnio zmieniony przez Toffiaaak. 2018-02-07, 03:39, w całości zmieniany 4 razy
Ciastuu?, a podasz dowolny przyk?ad jak u?y? tego? Najlepiej co? w stylu, ?e jest:
15% szans na print("fart")
85% szans na print("nie masz farta")
//Da si? co? pomno?y? w tabeli?
Przyk?adowo chcia?bym mie? 90% szans na trafienie Manany z Tabeli i 10% na Trafienie Infernusa to czy da si? zrobi? co? w tym stylu?:
To mu pomogles, autorowi bardziej chodzilo o liczbe losowa a nie stala.
Moj kod dziala na zasadzie prawdopodobienstwa, mozna go skrocic do mniejszej postaci, ale mysle ze ten Ci jak na razie wystarczy.
Zamiast liczby wpisujesz "procent" prawdopodobienstwa wylosowania danego itemu z tabeli.
local chances={
["infernus"]=2,
["manana"]=80,
["nic"]=20,
}
function losuj()
local list={}
for thing, percentage in pairs(chances) do
for i=1, percentage do
table.insert(list, thing)
end
end
return list[math.random(#list)]
end
outputChatBox("wylosowales: "..tostring(losuj())) -- wylosowany item
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