Andreyyy 3 Odesláno: 19. Červenec, 2014 Share Odesláno: 19. Červenec, 2014 Zdravím, dělám prison mod a nevím jak udělat spawnování pro vězně. Chtěl bych, aby každý vězeň se spawnul do jiné a svojí cely. Jak to mám prosím udělat? Link to comment Share on other sites More sharing options...
0 babecka 0 Odesláno: 19. Červenec, 2014 Share Odesláno: 19. Červenec, 2014 Vytvor si premennú. Potom stock, napr. IsCellOccupied a zisti cez neho, či je cela obsadená pomocou tej premennej. Samozrejme, keď sa do nej niekto spawne, zmeníš hodnotu premennej na true. Potom už len dáš do spawnu if(!IsCellOccupied) //kod a hotovo. Link to comment Share on other sites More sharing options...
0 Andreyyy 3 Odesláno: 19. Červenec, 2014 Author Share Odesláno: 19. Červenec, 2014 Napsal by jsi mi prosím kód? Link to comment Share on other sites More sharing options...
0 babecka 0 Odesláno: 19. Červenec, 2014 Share Odesláno: 19. Červenec, 2014 // na vrch new bool:Cela[3]; // 3 si zmeň na počet ciel, ktoré máš v móde // OnGameModeInit Cela[0] = false; // Aby server vedel, že cely nie sú obsadené Cela[1] = false; Cela[2] = false; // Ak ich máš viac tak pokračuješ, tu pracujeme len s troma // do Spawnu if(Cela[0] == false) { // Tu spawneš hráča do cely } else if(Cela[1] == false) { // Tu spawneš hráča do cely } // atď. Dá sa to urobiť jednoduchšie pomocou switch alebo stocku, ale na ntb nemám Pawno a toto som vymyslel len tak z hlavy. Link to comment Share on other sites More sharing options...
0 Uživatel 0 Odesláno: 20. Červenec, 2014 Share Odesláno: 20. Červenec, 2014 // na vrch new bool:Cela[3]; // 3 si zmeň na počet ciel, ktoré máš v móde // OnGameModeInit Cela[0] = false; // Aby server vedel, že cely nie sú obsadené Cela[1] = false; Cela[2] = false; // Ak ich máš viac tak pokračuješ, tu pracujeme len s troma // do Spawnu if(Cela[0] == false) { // Tu spawneš hráča do cely } else if(Cela[1] == false) { // Tu spawneš hráča do cely } // atď. Dá sa to urobiť jednoduchšie pomocou switch alebo stocku, ale na ntb nemám Pawno a toto som vymyslel len tak z hlavy. Dobrý pokus. Ale ne ... co když bude mít těch cel třeba 10?. Nebo ještě víc. To mu i klidně 100 řádků zaberou jen podmínky. Jinak, ke kontrole, pokud je už v cele, nemusíš využívat boolen. Napadlo mě zajímavější řešení. Stačí využít jen cyklus : new Cela[10] = 0; public OnPlayerSpawn(playerid) { for(new i; i<10; Cela[i]++) { if(Cela[i] == 0) { //Pokud cela nebude zabraná, spawne se v ní. Cela[i] = 1; SetPlayerPos(playerid .... ); break; }else{ //Pokud je zabraná, tak hledá dál.. continue; } } return 1; } Trošku jsem to testla, a něco málo jde, ale pro jistotu to zkus . Link to comment Share on other sites More sharing options...
0 Hlavní moderátor vEnd 279 Odesláno: 20. Červenec, 2014 Hlavní moderátor Share Odesláno: 20. Červenec, 2014 Karolínka: new Cela[10] = 0; useless, počáteční hodnota všech proměnných a polí je vždy 0, navíc takhle se rozhodně pole neinicializuje for(new i; i<10; Cela[i]++) celkem by mě zajímalo to tvé testování, právě jsi vytvořila nekonečný cyklus, poněvadž nezvětšuješ proměnnou i, ale hodnotu Cela[0] Dobrý pokus, ale ne ... ať už tedy nepíši naprázdno: - vytvoř si dvojrozměrné pole, do kterého uložíš pozice X, Y a Z pro port do určité cely, těch cel bys měl mít asi tolik, kolik je maximální definovaný počet hráčů (to dá rozum, aby měl každý svou celu), poté jednoduše použij hráčovo ID, které je vždy jedinečné: (kdyby chtěl někdo namítat, že mi chybí kontrola, zda je cela obsazená, ať si přečte tučně zvýrazněná slova) new const Float:celyPoz[MAX_PLAYERS][3] = { {0.0,1.1,2.2}, //pozice pro port do 1. cely {0.0,1.1,2.2}, // 2. cely {0.0,1.1,2.2}, // 3. cely //atd., bude nutné naplnit všechny pozice }; a do OnPlayerSpawn: SetPlayerPos(playerid,celyPoz[playerid][0],celyPoz[playerid][1],celyPoz[playerid][2]); je to jedno z možných řešení, podle počtu hráčů na serveru si MAX_PLAYERS přizpůsob podle svého, defaultně je to 500, což je do začátku zbytečné, navíc naplňování pole 500 pozicemi cel by bylo dost otravné Link to comment Share on other sites More sharing options...
0 Andreyyy 3 Odesláno: 20. Červenec, 2014 Author Share Odesláno: 20. Červenec, 2014 SetPlayerPos(playerid,celyPoz[playerid][0],celyPoz[playerid][1],celyPoz[playerid][2]); Tohle trochu nechápu... To "celyPoz" Tam mám dát souřadnice kde se spawne nebo jak? a Když mám 20 cel tak mám dát od 0 do 19 nebo 0 do 20? Link to comment Share on other sites More sharing options...
0 Matess 36 Odesláno: 20. Červenec, 2014 Share Odesláno: 20. Červenec, 2014 Přesně tak. Souřadnice jednotlivých cel. new const Float:celyPoz[MAX_PLAYERS][3] = { {x1,y1,z1}, // pro ID 0 se přiřadí tato cela {x2,y2,z2}, // pro ID 1 se přiřadí tato cela {x3,y3,z3}, // pro ID 2 se přiřadí tato cela }; Link to comment Share on other sites More sharing options...
Dotaz
Andreyyy 3
Zdravím,
dělám prison mod a nevím jak udělat spawnování pro vězně. Chtěl bych, aby každý vězeň se spawnul do jiné a svojí cely. Jak to mám prosím udělat?
Link to comment
Share on other sites
7 odpovědí na tuto otázku
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now