Jump to content
  • 0

pomoc Postupne zaradovanie


Twixo

Dotaz

čaute, robim zavod system. Mam to už nejako spravene. Iba potrebujem ako sa budu zaradovať, napr 1. (ten čo založi) nastavi poziciu x y z, 2. ktorý sa pripoji vedla neho, 3. kto sa pripoji sa zaradi za 1. a 4. sa zaradí za 2., atd. To neviem proste zistiť kolkí sa pripojil a staví podla toho poziciu. Ostatok viem (freeze, odpočed, štart a hned unfreeze). Najviac mi pomôže nejaky tut kde to je.

 

PS: Na google som hladal

Edited by Twixo
Link to comment
Share on other sites

12 odpovědí na tuto otázku

Recommended Posts

  • 0

Je vidieť, že si nikdy nebol gangster na SP :d + ten tvoj napad je pičovina. Ak skonči ten timer a da kolize ON a budu dvaja v sebe a da ON iba sa bugnu ;)

Edited by Twixo
Link to comment
Share on other sites

  • 0

No tak keď to chceš zložitejšie: Vytvor si premenne, ktorú majú zápornú hodnotu. Keď sa hráč 1 pripojí do preteku, tak ho dáš na pozíciu 1 a hodnotu prvej premennej nastavíš na kladnú, čiže je obsadená. Keď sa pripojí ďalší hráč, tak zistíš, či sú predošle pozície voľne, v tomto prípade je pozícia 1 už obsadená čiže ho logicky dáš na pozíciu 2, nastavíš hodnotu druhej premennej na kladnú a takto pokračuješ až po max. počet pozícii.

Link to comment
Share on other sites

  • 0

Achh.... Vidím, že tu lítají vynikající rady určitě... Snad nebude vadit, když se přidám:

 

Řešení tvého problému je hned několik. Dovolil jsem ti vybrat asi nejjednoduší ale ne zrovna efektivní. Deklaruj si 2 proměnné s datovým typem boolen s polem, a druhou float taky s polem, kde u obou bude max. hodnota rovna počtu míst. Pozice pro každé místo na startu závodu(vím, že to dá práci je všechny sehnat) přiřať k té float proměnné s polem. Tak, a jakmilé je někdo připojí, zjisti mu, jaké misto je volné pomocí podmínky, cyklu a boolen prom. a pokud se najde, tak ho pošli na ty pozice, co máš v té float proměnné, a boolen proměnnou nastav na true. Na proměnné i pole tu máš návod, s tím, že cyklus je dosti jednoduchá záležitost(napsal bych ti ukázku, ale nejsem na pc).

Link to comment
Share on other sites

  • 0

Achh.... Vidím, že tu lítají vynikající rady určitě... Snad nebude vadit, když se přidám:

 

Řešení tvého problému je hned několik. Dovolil jsem ti vybrat asi nejjednoduší ale ne zrovna efektivní. Deklaruj si 2 proměnné s datovým typem boolen s polem, a druhou float taky s polem, kde u obou bude max. hodnota rovna počtu míst. Pozice pro každé místo na startu závodu(vím, že to dá práci je všechny sehnat) přiřať k té float proměnné s polem. Tak, a jakmilé je někdo připojí, zjisti mu, jaké misto je volné pomocí podmínky, cyklu a boolen prom. a pokud se najde, tak ho pošli na ty pozice, co máš v té float proměnné, a boolen proměnnou nastav na true. Na proměnné i pole tu máš návod, s tím, že cyklus je dosti jednoduchá záležitost(napsal bych ti ukázku, ale nejsem na pc).

Super, skusim to nejak spaviť

 

 

//EDIT: No myslel som, že som to pochopil ale robil som to uplne zle. Nenapísal by si nejaku krátku ukážku?

Link to comment
Share on other sites

  • 0

Ak som pochopil správne, nebude jednoduchšie, keď si uložíš pozíciu toho miesta úplne naľavo, a keďže majú byť "vedľa seba", tak proste pripočítaš/odpočítaš k X Y o nejakú hodnotu podľa potreby aby bola medzi nimi medzera.

 

Napr.

new
	const Float:gRaceStart[3] = {X, Y, Z},
	gRacersCount,
        gCurrentQueue
	;

//Keď sa pripojí na závod (spawneš ho)
SetVehiclePos(jeho auto, gRaceStart[0] + (2.0 * gRacersCount), gRaceStart[1] + (1.5 * gCurrentQueue), gRaceStart[2]);
gRacersCount++;
if(!gRacersCount % 3)
{
    gCurrentQueue++; //Keď sú traja vedľa seba, pripočítame aby sme vedeli, v ktorej sme rade.
    gRacersCount = 0; //Musíme vyresetovať, lebo inakšie by to nehádzalo spawn za prvé auto v rade pred
}

A potom, si môžeš pridať nejakú kontrolu, aby sa začali radiť za sebou, keď napr budú 3 vedľa seba. //Tak som ti ju tam hodil

 

Celé si to však musíš prerobiť podľa potreby súradníc, pretože osi X, Y môže byť obrátene + možno musíš od osí odčitovať a nie pričitovať ako som to spravil (záleží ako máš orientovaný ten štart závodu).

Edited by Sanios
Link to comment
Share on other sites

  • 0

Ak som pochopil správne, nebude jednoduchšie, keď si uložíš pozíciu toho miesta úplne naľavo, a keďže majú byť "vedľa seba", tak proste pripočítaš/odpočítaš k X Y o nejakú hodnotu podľa potreby aby bola medzi nimi medzera.

 

Napr.

new
	const Float:gRaceStart[3] = {X, Y, Z},
	gRacersCount,
        gCurrentQueue
	;

//Keď sa pripojí na závod (spawneš ho)
SetVehiclePos(jeho auto, gRaceStart[0] + (2.0 * gRacersCount), gRaceStart[1] + (1.5 * gCurrentQueue), gRaceStart[2]);
gRacersCount++;
if(!gRacersCount % 3)
{
    gCurrentQueue++; //Keď sú traja vedľa seba, pripočítame aby sme vedeli, v ktorej sme rade.
    gRacersCount = 0; //Musíme vyresetovať, lebo inakšie by to nehádzalo spawn za prvé auto v rade pred
}

A potom, si môžeš pridať nejakú kontrolu, aby sa začali radiť za sebou, keď napr budú 3 vedľa seba. //Tak som ti ju tam hodil

 

Celé si to však musíš prerobiť podľa potreby súradníc, pretože osi X, Y môže byť obrátene + možno musíš od osí odčitovať a nie pričitovať ako som to spravil (záleží ako máš orientovaný ten štart závodu).

gCurrentQueue++; gCurrentQueue to je ako ten čo založil a ++ sú další dvaja čo sa pripojili? 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...