Lua - Rozdělení náhodně do 2 skupin (50/50) Vyřešeno

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

Uživatelský avatar
strangereu
Level 4.5
Level 4.5
Příspěvky: 1719
Registrován: září 11
Bydliště: Vršovice
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod strangereu » 16 lis 2013 20:28

Č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áčů.
http://screenshare.cz/

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod CZechBoY » 16 lis 2013 23:03

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: září 11
Bydliště: Vršovice
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod strangereu » 17 lis 2013 08:43

Kdyby jsi mi řekl jak, tak bych byl moc rád, protože já s tou matikou v lua jsem se ještě nesetkal.
http://screenshare.cz/

Uživatelský avatar
Žbeky
Moderátor
Guru Level 13
Guru Level 13
Příspěvky: 22288
Registrován: květen 08
Bydliště: Vsetín - Pardubice
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod Žbeky » 17 lis 2013 10:19

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: září 11
Bydliště: Vršovice
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod strangereu » 17 lis 2013 11:15

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
http://screenshare.cz/

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod CZechBoY » 17 lis 2013 13:57

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: září 11
Bydliště: Vršovice
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod strangereu » 17 lis 2013 14:41

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
http://screenshare.cz/

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod CZechBoY » 17 lis 2013 14:49

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: září 11
Bydliště: Vršovice
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod strangereu » 17 lis 2013 14:51

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
http://screenshare.cz/

Uživatelský avatar
domitea
Tvůrce článků
Level 4.5
Level 4.5
Příspěvky: 1971
Registrován: červen 09
Bydliště: Královehradecký kraj
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod domitea » 17 lis 2013 14:52

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: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod CZechBoY » 17 lis 2013 14:54

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: září 11
Bydliště: Vršovice
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Lua - Rozdělení náhodně do 2 skupin (50/50)  Vyřešeno

Příspěvekod strangereu » 17 lis 2013 14:58

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
http://screenshare.cz/


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Náhodné vypínání PC Příloha(y)
    od VojtouNerCZ » 17 led 2025 15:34 » v BSOD (Blue Screen Of Death)
    1
    2685
    od VojtouNerCZ Zobrazit poslední příspěvek
    20 led 2025 15:31
  • Náhodné restarty notebooku
    od Villentretenmerth » 07 led 2025 15:43 » v Problémy s hardwarem
    3
    2190
    od Villentretenmerth Zobrazit poslední příspěvek
    10 led 2025 19:53
  • počítač se náhodně restartuje
    od JXC0B » 25 říj 2024 20:24 » v Vše ostatní (hw)
    4
    3497
    od pcmaker Zobrazit poslední příspěvek
    27 říj 2024 10:14
  • Crucial MX500 - náhodne hlášení o prehriati Příloha(y)
    od michal84 » 21 pro 2024 10:17 » v Problémy s hardwarem
    29
    6639
    od michal84 Zobrazit poslední příspěvek
    28 pro 2024 08:21
  • Náhodné zamrznutí PC, řešením je pouze tvrdý restart.
    od Sipsisipi » 21 srp 2024 19:12 » v Problémy s hardwarem
    10
    4328
    od Sipsisipi Zobrazit poslední příspěvek
    25 srp 2024 10:37

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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů