Geplaatst: 23 juli 201016 jaren hoi, ik heb een timer gemaakt maar als ik in het spel zit start de timer niet. script: public OnPlayerUpdate(playerid) { if(IsPlayerInRangeOfPoint(playerid, 8.0, 1860.2535,-61.1402,28.6894) && par12[playerid]) { SetPlayerScore(playerid, GetPlayerScore(playerid) + 2); TextDrawShowForPlayer(playerid, Text:STUNTT); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 10.0); //Timer SetTimer("stuntoff", 3000, true); par12[playerid] = false; } return 1; } public stuntoff(playerid) { TextDrawHideForPlayer(playerid, Text:STUNTT); } weet iemand waarom de timer niet start?
Geplaatst: 23 juli 201016 jaren Omdat dit alleen werkt voor speler ID 0, je hebt SetTimerEx nodig SetTimerEx("stuntoff", 3000, false, "i", playerid); Ohh, en merk op dat OnPlayerUpdate ongeveer elke 0.25 seconden (als ik het mij nog goed herinner) word aangeroepen, met andere woorden: hij gaat elke 0.25 seconden een timer starten. Dit is nu niet zo erg omdat je meerdere keren een textdraw kunt weg doen, maar moest je laters nog met timers werken, dat is namelijk een veel gemaakte beginnersfout. Bewerkt: 23 juli 201016 jaren door GTAguillaume
Geplaatst: 23 juli 201016 jaren Auteur ik wou hem niet elke 0.25 seconde opnieuw starten , ik was hem vergeten op false te zetten.
Geplaatst: 23 juli 201016 jaren Returns 0 - Update from this player will not be replicated to other clients.Returns 1 - Indicates that this update can be processed normally and sent to other player Dus, als je hem op 0 zet, dan gaat hij alleen die speler behandelen elke 0.25 seconds, je hebt dus zoiets nodig als dit: http://www.gtaforum.nl/topic/114233-give-player-score-1-keer/page__view__findpost__p__1693652
Geplaatst: 25 juli 201016 jaren Auteur ik snap dat return nog niet helemaal , het script klopt ook niet egt meer , want de scores van de spelers verwisselen steeds
Geplaatst: 25 juli 201016 jaren Uhm, return 0; onder OnPlayerUpdate lijkt me niet zo'n goed idee. Dan krijgt iedereen desync.
Geplaatst: 25 juli 201016 jaren Auteur wat is dan wel handig? het hele scriptje: new Text:STUNTT; new Text:STUNTV; new bool:par32[MAX_PLAYERS]; new bool:par35[MAX_PLAYERS]; public OnGameModeInit() { STUNTT = TextDrawCreate(261.000000,41.000000,"+2 stuntpoints"); TextDrawUseBox(STUNTT,1); TextDrawBoxColor(STUNTT,0x00000033); TextDrawTextSize(STUNTT,371.000000,3.000000); TextDrawAlignment(STUNTT,0); TextDrawBackgroundColor(STUNTT,0x000000ff); TextDrawFont(STUNTT,3); TextDrawLetterSize(STUNTT,0.399999,1.700000); TextDrawColor(STUNTT,0xffffffff); TextDrawSetOutline(STUNTT,1); TextDrawSetProportional(STUNTT,1); TextDrawSetShadow(STUNTT,1); STUNTV = TextDrawCreate(261.000000,41.000000,"+5 stuntpoints"); TextDrawUseBox(STUNTV,1); TextDrawBoxColor(STUNTV,0x00000033); TextDrawTextSize(STUNTV,371.000000,3.000000); TextDrawAlignment(STUNTV,0); TextDrawBackgroundColor(STUNTV,0x000000ff); TextDrawFont(STUNTV,3); TextDrawLetterSize(STUNTV,0.399999,1.700000); TextDrawColor(STUNTV,0xffffffff); TextDrawSetOutline(STUNTV,1); TextDrawSetProportional(STUNTV,1); TextDrawSetShadow(STUNTV,1); POINT = TextDrawCreate(250.000000,4.000000,"stuntpoints"); TextDrawBackgroundColor(POINT,0x000000ff); TextDrawFont(POINT,3); TextDrawLetterSize(POINT,0.499999,2.000000); TextDrawColor(POINT,0xffffffff); return 1; } public OnPlayerConnect(playerid) { par32[playerid] = true; par35[playerid] = true; return 1; } public OnPlayerUpdate(playerid) { if(IsPlayerInRangeOfPoint(playerid, 8.0, -789.0284,-1992.0940,55.8738) && par32[playerid]) { SetPlayerScore(playerid, GetPlayerScore(playerid) + 2); TextDrawShowForPlayer(playerid, Text:STUNTT); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 10.0); SetTimerEx("stuntoff", 3000, false, "i", playerid); par32[playerid] = false; } if(IsPlayerInRangeOfPoint(playerid, 8.0, -861.5653,-1995.8247,125.3853) && par35[playerid]) { SetPlayerScore(playerid, GetPlayerScore(playerid) + 4); TextDrawShowForPlayer(playerid, Text:STUNTV); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 10.0); SetTimerEx("stuntoff", 3000, false, "i", playerid); par35[playerid] = false; } return 1; } public stuntoff(playerid) { TextDrawHideForPlayer(playerid, Text:STUNTT); TextDrawHideForPlayer(playerid, Text:STUNTV); } public Update() { for(new i; i<MAX_PLAYERS; i++) { if(!IsPlayerConnected(i)) continue; new str[128]; format(str, sizeof(str), "stuntpoints: %i",GetPlayerScore(i)); TextDrawSetString(POINT, str); } }
Geplaatst: 26 juli 201016 jaren new bool:CV1[MAX_PLAYERS][2]; OnPlayerConnect(playerid) CV1[playerid][0] = true; CV1[playerid][1] = true; public OnPlayerUpdate(playerid) { if(IsPlayerInRangeOfPoint(playerid, 8.0, -789.0284,-1992.0940,55.8738) && par32[playerid] && CV1[playerid][0]) { SetPlayerScore(playerid, GetPlayerScore(playerid) + 2); TextDrawShowForPlayer(playerid, Text:STUNTT); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 10.0); SetTimerEx("stuntoff", 3000, false, "i", playerid); par32[playerid] = false; CV1[playerid][0]=false; } if(IsPlayerInRangeOfPoint(playerid, 8.0, -861.5653,-1995.8247,125.3853) && par35[playerid] && CV1[playerid][1]) { SetPlayerScore(playerid, GetPlayerScore(playerid) + 4); TextDrawShowForPlayer(playerid, Text:STUNTV); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 10.0); SetTimerEx("stuntoff", 3000, false, "i", playerid); par35[playerid] = false; CV1[playerid][1]=false; } return 1; }
hoi,
ik heb een timer gemaakt maar als ik in het spel zit start de timer niet.
script:
public OnPlayerUpdate(playerid) { if(IsPlayerInRangeOfPoint(playerid, 8.0, 1860.2535,-61.1402,28.6894) && par12[playerid]) { SetPlayerScore(playerid, GetPlayerScore(playerid) + 2); TextDrawShowForPlayer(playerid, Text:STUNTT); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 10.0); //Timer SetTimer("stuntoff", 3000, true); par12[playerid] = false; } return 1; } public stuntoff(playerid) { TextDrawHideForPlayer(playerid, Text:STUNTT); }weet iemand waarom de timer niet start?