mosweg Geplaatst: 5 september 2009 Rapport Geplaatst: 5 september 2009 Ik ben bezig met een race minigame, en ik heb er nu een begin count ingezet (die van Sandra Jump-Competition) Maar nu werkt het unfreezen alleen maar bij 1 speler, Weet iemand hoe ik het zo neerzet zodat het voor iedereen geld die aan de race mee doet? Hier is de code van de timer: forward Start();public Start() { for(new i = 0; i < MAX_PLAYERS; i++) { if(join[i] == 1) { Count++; if(Count == 1) GameTextForPlayer(i, "~g~30", 3000, 3); if(Count == 2) GameTextForPlayer(i, "~g~29", 3000, 3); if(Count == 3) GameTextForPlayer(i, "~g~28", 3000, 3); if(Count == 4) GameTextForPlayer(i, "~g~27", 3000, 3); if(Count == 5) GameTextForPlayer(i, "~g~26", 3000, 3); if(Count == 6) GameTextForPlayer(i, "~g~25", 3000, 3); if(Count == 7) GameTextForPlayer(i, "~g~24", 3000, 3); if(Count == 8) GameTextForPlayer(i, "~g~23", 3000, 3); if(Count == 9) GameTextForPlayer(i, "~g~22", 3000, 3); if(Count == 10) GameTextForPlayer(i, "~g~21", 3000, 3); if(Count == 11) GameTextForPlayer(i, "~g~20", 3000, 3); if(Count == 12) GameTextForPlayer(i, "~g~19", 3000, 3); if(Count == 13) GameTextForPlayer(i, "~g~18", 3000, 3); if(Count == 14) GameTextForPlayer(i, "~g~17", 3000, 3); if(Count == 15) GameTextForPlayer(i, "~g~16", 3000, 3); if(Count == 16) GameTextForPlayer(i, "~b~15", 3000, 3); if(Count == 17) GameTextForPlayer(i, "~b~14", 3000, 3); if(Count == 18) GameTextForPlayer(i, "~b~13", 3000, 3); if(Count == 19) GameTextForPlayer(i, "~b~12", 3000, 3); if(Count == 20) GameTextForPlayer(i, "~b~11", 3000, 3); if(Count == 21) GameTextForPlayer(i, "~b~10", 3000, 3); if(Count == 22) GameTextForPlayer(i, "~b~9", 3000, 3); if(Count == 23) GameTextForPlayer(i, "~b~8", 3000, 3); if(Count == 24) GameTextForPlayer(i, "~b~7", 3000, 3); if(Count == 25) GameTextForPlayer(i, "~b~6", 3000, 3); if(Count == 26) GameTextForPlayer(i, "~r~5", 3000, 3); if(Count == 27) GameTextForPlayer(i, "~r~4", 3000, 3); if(Count == 28) GameTextForPlayer(i, "~r~3", 3000, 3);PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); if(Count == 29) GameTextForPlayer(i, "~r~2", 3000, 3);PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); if(Count == 30) GameTextForPlayer(i, "~r~1", 3000, 3);PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); if(Count == 31) { racestart = 2; GameTextForPlayer(i, "~b~Go ~g~Go! ~r~GO!!", 2000, 3); KillTimer(countstart); PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0); TogglePlayerControllable(i, 1); } } } } Reageren
Big Boss Geplaatst: 6 september 2009 Rapport Geplaatst: 6 september 2009 Uhg, wat is dat voor een inefficiënte code ... new Count = 30; forward Start(); public Start() { if(Count == -1) { return 1; } for(new i = 0; i < MAX_PLAYERS; i++) { if(join[i] == 1) { switch(Count) case 0: { GameTextForPlayer(i, "GO! GO! GO!", 2500, 3); racestart = 2; TogglePlayerControllable(i, 1); } case 1..3: { format(string, sizeof(string), "~r~%d", Count); GameTextForPlayer(i, string, 1000, 3); PlayerPlaySound(1, 1057, 0.0, 0.0, 0.0); } default: { format(string, sizeof(string), "~g~%d", Count); GameTextForPlayer(i, string, 1000, 3); } } } if(Count >= 0) { Count--; } SetTimer("Start", 1000, 0); return 1; } Geen idee of dit werkt, maar daar zou je in ieder geval naar toe moeten werken. Het heeft geen zin om 30 if's te zetten als je de format en/of switch gebruikt. Reageren
mosweg Geplaatst: 6 september 2009 Auteur Rapport Geplaatst: 6 september 2009 Als eerste krijg ik deze errors: F:\Server B\filterscripts\chiliadrace.pwn(377) : warning 217: loose indentation F:\Server B\filterscripts\chiliadrace.pwn(384) : error 001: expected token: "{", but found "case" F:\Server B\filterscripts\chiliadrace.pwn(403) : warning 217: loose indentation F:\Server B\filterscripts\chiliadrace.pwn(409) : error 030: compound statement not closed at the end of file (started at line 376) Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 2 Errors. en als ik bij switch(Count) switch(Count) { doe en daarna nog een } acteraan dan werkt het wel maar krijg ik direct GO GO GO Ik heb de } ook al ergens anders neergezet maar dat werkte ook niet, case 1..3: naar case 1.3: veranderd werkte ook al niet. dus ik weet niet echt hoe ik dat moet oplossen. Ik kan het ook terug zetten naar de vorige want het gaat me erom dat iedereen die de race heeft gejoint ook weer kan bewegen naar de countdown. Reageren
Wanted Geplaatst: 6 september 2009 Rapport Geplaatst: 6 september 2009 Zo zou het moeten werken. Heb het niet getest, maar heb wel op errors gecontroleerd. new Count = 30; forward Start(); public Start() { if(Count == -1) { return 1; } for(new i = 0; i < MAX_PLAYERS; i++) { if(join[i] == 1) { switch(Count) { case 0: { GameTextForPlayer(i, "GO! GO! GO!", 2500, 3); racestart = 2; TogglePlayerControllable(i, 1); } case 1..3: { format(string, sizeof(string), "~r~%d", Count); GameTextForPlayer(i, string, 1000, 3); PlayerPlaySound(1, 1057, 0.0, 0.0, 0.0); } default: { format(string, sizeof(string), "~g~%d", Count); GameTextForPlayer(i, string, 1000, 3); } } } } if(Count >= 0) { Count--; } SetTimer("Start", 1000, 0); return 1; } Reageren
Big Boss Geplaatst: 6 september 2009 Rapport Geplaatst: 6 september 2009 acteraan dan werkt het wel maar krijg ik direct GO GO GO Vergeet ook niet je Count op 30 te zetten, he. new Count = 30; Reageren
mosweg Geplaatst: 6 september 2009 Auteur Rapport Geplaatst: 6 september 2009 new Count = 30; werkt helemaal niet, Ik heb nu bovenaan staan new Count; en bij OnFilterScriptInit staan: Count = 30; Maar ik krijg nog steeds GO GO GO, Dus als iemand weet hoe ik gewoon iedereen weer op TogglePlayerControllable(playerid, 1); komt is het ook goed, Ook al staat er voor alle spelers die gejoint zijn, toch doet hij die ene actie niet, Zonder dat ingewikelde systeem doet de counter het prima, maar doe hij alleen maar voor spelerslot 0 TogglePlayerControllable(playerid, 1); Dus hoe doe ik gewoon wat in mijn eerste bericht staat alleen dan met gewoon voor alle spelers TogglePlayerControllable(playerid, 1); ?? Reageren
Morph1 Geplaatst: 7 september 2009 Rapport Geplaatst: 7 september 2009 new Count = 30; werkt helemaal niet,Ik heb nu bovenaan staan new Count; en bij OnFilterScriptInit staan: Count = 30; Maar ik krijg nog steeds GO GO GO, Dus als iemand weet hoe ik gewoon iedereen weer op TogglePlayerControllable(playerid, 1); komt is het ook goed, Ook al staat er voor alle spelers die gejoint zijn, toch doet hij die ene actie niet, Zonder dat ingewikelde systeem doet de counter het prima, maar doe hij alleen maar voor spelerslot 0 TogglePlayerControllable(playerid, 1); Dus hoe doe ik gewoon wat in mijn eerste bericht staat alleen dan met gewoon voor alle spelers TogglePlayerControllable(playerid, 1); ?? volgens mij kan je ook geen filterscript en gamemode in een bouwen. maja. ik zal wel weer iets fouts zeggen Reageren
Crusher!! Geplaatst: 8 september 2009 Rapport Geplaatst: 8 september 2009 (bewerkt) forward Start(); new Count; new join[MAX_PLAYERS]; new CountTimer = 0; public Start() { for(new i = 0; i < MAX_PLAYERS; i++) { if(join[i] == 1) { Count++; if(Count == 1) GameTextForPlayer(i, "~g~30", 3000, 3); else if(Count == 2) GameTextForPlayer(i, "~g~29", 3000, 3); else if(Count == 3) GameTextForPlayer(i, "~g~28", 3000, 3); else if(Count == 4) GameTextForPlayer(i, "~g~27", 3000, 3); else if(Count == 5) GameTextForPlayer(i, "~g~26", 3000, 3); else if(Count == 6) GameTextForPlayer(i, "~g~25", 3000, 3); else if(Count == 7) GameTextForPlayer(i, "~g~24", 3000, 3); else if(Count == 8) GameTextForPlayer(i, "~g~23", 3000, 3); else if(Count == 9) GameTextForPlayer(i, "~g~22", 3000, 3); else if(Count == 10) GameTextForPlayer(i, "~g~21", 3000, 3); else if(Count == 11) GameTextForPlayer(i, "~g~20", 3000, 3); else if(Count == 12) GameTextForPlayer(i, "~g~19", 3000, 3); else if(Count == 13) GameTextForPlayer(i, "~g~18", 3000, 3); else if(Count == 14) GameTextForPlayer(i, "~g~17", 3000, 3); else if(Count == 15) GameTextForPlayer(i, "~g~16", 3000, 3); else if(Count == 16) GameTextForPlayer(i, "~b~15", 3000, 3); else if(Count == 17) GameTextForPlayer(i, "~b~14", 3000, 3); else if(Count == 18) GameTextForPlayer(i, "~b~13", 3000, 3); else if(Count == 19) GameTextForPlayer(i, "~b~12", 3000, 3); else if(Count == 20) GameTextForPlayer(i, "~b~11", 3000, 3); else if(Count == 21) GameTextForPlayer(i, "~b~10", 3000, 3); else if(Count == 22) GameTextForPlayer(i, "~b~9", 3000, 3); else if(Count == 23) GameTextForPlayer(i, "~b~8", 3000, 3); else if(Count == 24) GameTextForPlayer(i, "~b~7", 3000, 3); else if(Count == 25) GameTextForPlayer(i, "~b~6", 3000, 3); else if(Count == 26) GameTextForPlayer(i, "~r~5", 3000, 3); else if(Count == 27) GameTextForPlayer(i, "~r~4", 3000, 3); else if(Count == 28) GameTextForPlayer(i, "~r~3", 3000, 3);PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); else if(Count == 29) GameTextForPlayer(i, "~r~2", 3000, 3), PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); else if(Count == 30) GameTextForPlayer(i, "~r~1", 3000, 3), PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); CountTimer = SetTimer("Start", 1000,0); // start timer if(Count == 31) { KillTimer(CountTimer); // als de count al 31 is dan stopt ie de timer racestart = 2; GameTextForPlayer(i, "~b~Go ~g~Go! ~r~GO!!", 2000, 3); KillTimer(countstart); PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0); TogglePlayerControllable(i, 1); } } } } EDIT: new Count; new cString[100]; new CountTimer = 0; new join[MAX_PLAYERS]; public Start() { for(new i = 0; i < MAX_PLAYERS; i++) { if(join[i] == 1) { Count++; Format(cString, 100, "~b~Time: ~g~%d", Count); GameTextForAll(cString,1000,5); CountTimer = SetTimer("Start", 1000,0); // start timer if(Count == 31) { KillTimer(CountTimer); // als de count al 31 is dan stopt ie de timer racestart = 2; GameTextForPlayer(i, "~b~Go ~g~Go! ~r~GO!!", 2000, 3); KillTimer(countstart); PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0); TogglePlayerControllable(i, 1); } } } } EDIT2: Thnx GtaF voor goede uitlijning,........ Bewerkt: 8 september 2009 door Crusher!! Reageren
Recommended Posts
Een reactie plaatsen
Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.