Lua - Rozdělení náhodně do 2 skupin (50/50)

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Zamčeno
Uživatelský avatar
strangereu
Level 4.5
Level 4.5
Příspěvky: 1719
Registrován: 17 zář 2011 12:36
Bydliště: Vršovice
Kontaktovat uživatele:

Lua - Rozdělení náhodně do 2 skupin (50/50)

Příspěvek od strangereu »

Čau,
Chtěl bych se zeptat jestli někdo z Vás neví, jak rozdělit v lua počet něčeho na 2 poloviny.
Dám příklad:
Mám 10 kusů ovoce, polovina jsou hrušky a druhá polovina zase jablka a potřeboval bych to rozdělit na skupiny, aby se vypsalo tohle:
Máš x jablek a y hrušek... Přičemž x = jablkům a y = hruškám.

Potřebuji to totiž do jedné hry, ale v místo ovoce budou hráči :D.
A dělám toto:
Na serveru je třeba 10 hráčů a z toho se náhodně vybere 5 hráčů do jedné skupiny a zbytek hráčů do druhé skupiny, tudíž vždy polovina z daného počtu hráčů.

Jak by se toto dalo udělat?

Tohle už mám:

Kód: Vybrat vše

---------------------------------------
-- First Hide N Seek gamemode in MTA --
---------------------------------------
local gPC = getPlayerCount()

function main ()
outputChatBox ("#ffffffWelcome on first Hide N Seek gamemode in MTA", source, 255,255,255, true )
outputChatBox ("#ffffffYou will be moved to random team... Wait 5 seconds.", source, 255,255,255, true )
end
addEventHandler("onPlayerJoin", root, main )


function setRandomTeam ()
if ( gPC == 1 ) then
outputChatBox ("#ffffffFor this moment is here "..gPC.." player.", source, 255,255,255, true )
else
outputChatBox ("#ffffffFor this moment is here "..gPC.." players.", source, 255,255,255, true )
end
outputChatBox ("#ffffff50% of players will be seekers and missing 50% have to find them.", source, 255,255,255, true )




end
setTimer (setRandomTeam, 5000,1)



gPC je na získání počtu hráčů.
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: Lua - Rozdělení náhodně do 2 skupin (50/50)

Příspěvek od CZechBoY »

Zdar,
prostě vem každýho druhýho hráče a dej ho do druhý skupiny, zbytek bude skupina1 třeba.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Uživatelský avatar
strangereu
Level 4.5
Level 4.5
Příspěvky: 1719
Registrován: 17 zář 2011 12:36
Bydliště: Vršovice
Kontaktovat uživatele:

Re: Lua - Rozdělení náhodně do 2 skupin (50/50)

Příspěvek od strangereu »

Kdyby jsi mi řekl jak, tak bych byl moc rád, protože já s tou matikou v lua jsem se ještě nesetkal.
Uživatelský avatar
Žbeky
Guru Level 13
Guru Level 13
Příspěvky: 22288
Registrován: 29 kvě 2008 06:52
Bydliště: Vsetín - Pardubice

Re: Lua - Rozdělení náhodně do 2 skupin (50/50)

Příspěvek od Žbeky »

For zvětšující se o 2 do počtu hráčů, každý i-tý do skupiny A, i+1 do skupiny B

Toto fakt není žádná extra matika
V SZ řeším jen záležitosti týkající se fóra. Na prosby a žádosti o technickou podporu nereaguji. Díky za pochopení.

HiJackThis + návod - HW Monitor - Jak označit příspěvek za vyřešený - Pravidla fóra
Uživatelský avatar
strangereu
Level 4.5
Level 4.5
Příspěvky: 1719
Registrován: 17 zář 2011 12:36
Bydliště: Vršovice
Kontaktovat uživatele:

Re: Lua - Rozdělení náhodně do 2 skupin (50/50)

Příspěvek od strangereu »

Já to zkusil udělat takovýmto způsobem, jen si nejsem jistý, jestli to opravdu bude fungovat, tak jak by mělo.

if ( gPC == gPC+1 ) then
outputChatBox("Jsi druhej")
else
outputChatBox("Jsi prvni")
end

E: Tak takhle to nefunguje, bere to každého jako druhého, pokud je na serveru více hráčů než 1.

E2: Když jsem zkoušel dělat to for, tak to vypisuje tajten error:
'in' expected near '+'

Kod vypadá takto:
for i, i+1 in ipairs(getPlayerCount()) do

end

Takže si s takovou blbostí nevím vubec rady :D
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: Lua - Rozdělení náhodně do 2 skupin (50/50)

Příspěvek od CZechBoY »

Ta podmínka je úplně zcestná :lol: zatím jsem teda neviděl že by se nějaká číslo rovnalo číslu o jedna větší no :idea:
Chtělo by to zjistit jestli jsou vůbec v Lua pole.
Jak to Lua funguje? TO se spouští pro každého hráče zvlášť nebo na serveru?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Uživatelský avatar
strangereu
Level 4.5
Level 4.5
Příspěvky: 1719
Registrován: 17 zář 2011 12:36
Bydliště: Vršovice
Kontaktovat uživatele:

Re: Lua - Rozdělení náhodně do 2 skupin (50/50)

Příspěvek od strangereu »

Jsou tam udělané eventy třeba:

function jmenofunkce ()
outputChatBox("hello world")

end
addEventHandler ("onPlayerJoin", root, jmenofunkce")

Určitě ti dojde při jaké činnosti se vypíše Hello World :).

A v lua to určitě bude, tam jde o to akorát udělat, že každej druhej hráč bude v teamu 2.

A jak to funguje?
No úplně jednoduše, zapneš na serveru nějaký ten script, třeba s tím eventem jak jsem tu napsal, což by vypisovalo každému hráči při připojení Hello World.
Takže stačí to jen zapnout a ono to pracuje samo, protože ten onPlayerJoin se bude opakovat pro každého hráče znovu a znovu... Přece jen to je na připojení, ale těch eventů je takhle tisíce.
Ale tento event na připojení tam bude použit při tom třídění do těch teamů.

Já už si ten team vytvořil.

Kód: Vybrat vše

function teams ()
Hiders = createTeam ( "Hiders", 255,255,255)
Seekers = createTeam ( "Seekers", 255,0,255)
end
addEventHandler("onResourceStart", root, teams )

Teamy s názvy Hiders a Seekers se vytvoří při zapnutí scriptu, pokud se script vypne, teamy zmizej.

A háček je tady:

Kód: Vybrat vše

function setTeam ( source )
-- Tady bude asi nějaké to for něco něco in gPC do
setPlayerTeam ( source, Hidders ) -- Pokud bude číslo sudé, tak sem
end

-- Tady bude asi nějaké to for něco+1 ? něco in gPC do
setPlayerTeam ( source, Seekers ) -- Pokud bude číslo liché, tak sem
end

end


Snad to chápeš :D
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: Lua - Rozdělení náhodně do 2 skupin (50/50)

Příspěvek od CZechBoY »

Tak onPlayerJoin zařadíš toho hráče do týmu ne?
Jsou tam globální proměnný nebo nějaký počítadlo kolik je délka pole atd.? Jsou vůbec v Lua pole?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Uživatelský avatar
strangereu
Level 4.5
Level 4.5
Příspěvky: 1719
Registrován: 17 zář 2011 12:36
Bydliště: Vršovice
Kontaktovat uživatele:

Re: Lua - Rozdělení náhodně do 2 skupin (50/50)

Příspěvek od strangereu »

No na to onPlayerJoin potřebuji zařadit hráče do teamu, což jsem dá se říct udělal,
to je to setPlayerTeam.
A ty pole tam určitě budou.
http://www.root.cz/clanky/operatory-a-a ... azyku-lua/ Jsou to ty pole, které máš na mysli?
Jinak plno užitečných věcí nalezneš zde: https://wiki.multitheftauto.com/wiki/Useful_Functions
Uživatelský avatar
domitea
Tvůrce článků
Příspěvky: 1971
Registrován: 24 čer 2009 19:46
Bydliště: Královehradecký kraj
Kontaktovat uživatele:

Re: Lua - Rozdělení náhodně do 2 skupin (50/50)

Příspěvek od domitea »

To by šlo přes modulo ;) Teď se bude jednat o takový Céčkovský pseodo kód a předpokládám, že v source je seznam všech hráčů:

Kód: Vybrat vše

for (int i = 0; i < source.size; i++)
{
 if (i % 2 == 0 || i = 0) // pokud je to sudé číslo, nebo nula, protože pak by to nebylo 50/50 :-)
  {
   println("Jsi prvni");
  }
  else
  {
   println("Jsi druhy");
  }
}
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: Lua - Rozdělení náhodně do 2 skupin (50/50)

Příspěvek od CZechBoY »

domitea: to už víme asi 2 dny :D
Asociativní není potřeba, stačí obyč...
Pokud si je teda už zařadil do týmu tak co teda ještě chceš? :D
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Uživatelský avatar
strangereu
Level 4.5
Level 4.5
Příspěvky: 1719
Registrován: 17 zář 2011 12:36
Bydliště: Vršovice
Kontaktovat uživatele:

Re: Lua - Rozdělení náhodně do 2 skupin (50/50)

Příspěvek od strangereu »

Právě, že ty funkce na zařazení mám připravené, až bude hotovej ten kód na dělení hráčů :D

A k tomu kodu z céčka, to asi né hele, podívej se na ty errory :lol:
errors.png


--- Doplnění předchozího příspěvku (17 Lis 2013 15:44) ---

Takže vyřešeno :)

Výsledek je toto.

for i,player in ipairs(getElementsByType("player")) do
if i % 2 == 0 then
outputChatBox("Si prvy", player)
else
outputChatBox("Si druhy", player)
end
end
Zamčeno
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Náhodné vypínání PC
    od VojtouNerCZ » » v BSOD (Blue Screen Of Death)
    1 Odpovědi
    4364 Zobrazení
    Poslední příspěvek od VojtouNerCZ
  • Náhodné restarty notebooku
    od Villentretenmerth » » v Problémy s hardwarem
    3 Odpovědi
    3318 Zobrazení
    Poslední příspěvek od Villentretenmerth
  • Crucial MX500 - náhodne hlášení o prehriati
    od michal84 » » v Problémy s hardwarem
    29 Odpovědi
    8410 Zobrazení
    Poslední příspěvek od michal84
  • náhodné lagy(skoro zamrzání) high-end PC při hraní
    od mk2442 » » v Hry
    3 Odpovědi
    6816 Zobrazení
    Poslední příspěvek od kellne
  • Rozdělení sítě na podsítě, výpočet podsítí podle počtu hostů
    od zuzana3 » » v Administrace sítě
    12 Odpovědi
    8626 Zobrazení
    Poslední příspěvek od petr22

Zpět na „Programování a tvorba webu“