Geplaatst: 5 september 200915 jaren comment_1475733 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); } } } }
Geplaatst: 6 september 200915 jaren comment_1476657 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.
Geplaatst: 6 september 200915 jaren Auteur comment_1476803 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.
Geplaatst: 6 september 200915 jaren comment_1477270 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; }
Geplaatst: 6 september 200915 jaren comment_1477285 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;
Geplaatst: 6 september 200915 jaren Auteur comment_1477611 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); ??
Geplaatst: 7 september 200915 jaren comment_1478423 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
Geplaatst: 8 september 200915 jaren comment_1478997 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 200915 jaren door Crusher!!
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: