Never Geplaatst: 20 juni 2011 Rapport Geplaatst: 20 juni 2011 (bewerkt) hallo allemaal, ik heb een probleempje met mijn Vote Map script de probleem is: ik kan wel voten (en hij count wel wat de meest votes heeft), maar als de vote klaar is dan ga ik niet naar de map :S Hier is de Script: // de map namen new Map[][] = { "Los Santos", "Las Venturas", "San Fierro" }; new CurrentMap = 0; new Votes[50]; new CanVote[MAX_PLAYERS]; new bool:ActiveVote; public OnPlayerConnect(playerid) { if (ActiveVote == true) CanVote[playerid] = 0; } forward BeginVote(); public BeginVote() { SendClientMessageToAll(red,"Voting Ends in 15 seconds. Cast your Votes"); SetTimer("endvote",15000,0); ActiveVote = true; new info[150]; for (new i = 0;i<sizeof(MapNames);i++) { if (i == 0) format(info,sizeof(info),"%s\n",Map[i]); if (i == sizeof(MapNames)-1) format(info,sizeof(info),"%s%s",info,Map[i]); if (i != sizeof(MapNames) && i != 0) format(info,sizeof(info),"%s\n",info,Map[i]); } for (new i = 0;i<MAX_PLAYERS; i++) { CanVote[i] = 1; ShowPlayerDialog(i,500,DIALOG_STYLE_LIST,"Vote for Map",info,"Vote","Vote"); } return 1; } stock GetHighestNumberEx(num[], size = sizeof(num)) { new highesty = 0; for (new i = 0; i < size; i++) { if (num[i] > highesty) highesty = num[i]; } return highesty; } forward endvote(); public endvote() { ActiveVote = false; new high = GetHighestNumberEx(Votes); printf("%d %s",high,Map); for (new i = 0; i<sizeof(Votes);i++) { if (Votes[i] == high) { CurrentMap = i; new msg[228]; format(msg,sizeof(msg),"The Map %s Has been Nominated.",Map[i]); SendClientMessageToAll(red,msg); SetTimerEx("Spawn",1000,0,"%d",i); } } return 1; } stock GetHighestNumber(...) { new args = numargs(); new highestyet = 0; for (new i = 0; i<args; i++) { if (getarg(i,0) > highestyet) highestyet = getarg(i,0); } return highestyet; } //ik denk dat de probleem hier zit maar weet het niet zeker :S// forward Spawn(playerid); public Spawn(playerid) { if(Map[CurrentMap][1]) { LS=1; ForceClassSelection(playerid); } if (Map[CurrentMap][2]) { LV=1; ForceClassSelection(playerid); } if (Map[CurrentMap][3]) { SF=1; ForceClassSelection(playerid); } return 1; } ////dit plaats je wanneer je de VoteMap wilt laten beginnen CallRemoteFunction("BeginVote",""); ik hoop dat iemand mij hier uit kan helpen Alvast Bedankt, Never Bewerkt: 20 juni 2011 door Never Reageren
Megadreams Geplaatst: 21 juni 2011 Rapport Geplaatst: 21 juni 2011 Zover ik kan afleiden wil je dus dat de spelers ergens anders spawnen na de vote? Dan zit het volgens mij toch in je OnPlayerRequestClass mag ik deze callback aub even zien? Reageren
Big Boss Geplaatst: 21 juni 2011 Rapport Geplaatst: 21 juni 2011 Het probleem zit 'm inderdaad in je 'spawn' functie. Die wordt opgeroepen met SetTimerEx("Spawn",1000,0,"%d",i); Maar: hierin is i niet het playerid, maar de map die gestart moet worden. Reageren
Megadreams Geplaatst: 21 juni 2011 Rapport Geplaatst: 21 juni 2011 Dat was mij nog niet eens opgevallen. Je zal zoals Big Boss al ongeveer zei de playerid moeten meegeven. Je kan dit doen door een 2de loop maar of dat dan weer efficiënt is is dan weer anders... Reageren
Never Geplaatst: 22 juni 2011 Auteur Rapport Geplaatst: 22 juni 2011 Heel erg bedankt dat jullie mij hier uit willen helpen, maar ik begrijp er nu helemaal niets van want als ik nu moet voten: dan zie ik alleen Los Santos en San Fierro, Maar geen Las Venturas en misschien doe ik het bij Spawn Function dat Script Fout: If(Map[Currentmap][1] <-- dat ik dit fout doe ik heb dit: new Map[][] = { "Los Santos", "Las Venturas", "San Fierro" }; hoe kan ik met een script laten weten dat ik van deze functie wil? Bijv. ik heb een CTeam gemaakt, dan kan ik de systeem laten weten door dit: if(CTeam[playerid] == TEAM_Cop){ <-- zoals dit ik hoop dat iemand mij kan helpen Alvast bedankt, Never Reageren
Dragon707 Geplaatst: 29 juni 2011 Rapport Geplaatst: 29 juni 2011 Heel erg bedankt dat jullie mij hier uit willen helpen, maar ik begrijp er nu helemaal niets van want als ik nu moet voten: dan zie ik alleen Los Santos en San Fierro, Maar geen Las Venturas en misschien doe ik het bij Spawn Function dat Script Fout: If(Map[Currentmap][1] <-- dat ik dit fout doe ik heb dit: new Map[][] = { "Los Santos", "Las Venturas", "San Fierro" }; hoe kan ik met een script laten weten dat ik van deze functie wil? Bijv. ik heb een CTeam gemaakt, dan kan ik de systeem laten weten door dit: if(CTeam[playerid] == TEAM_Cop){ <-- zoals dit ik hoop dat iemand mij kan helpen Alvast bedankt, Never Het is al een tijdje geleden dat ik met PAWN heb gewerkt. Maar ik hoop je te kunnen helpen. Wanneer jij Map[Currentmap][1] doet en Currentmap is bijv: 0 dan krijg je als resultaat "o". Probeer het eens zonder die [1]. Als het goed is krijg je dan wel het gewenste resultaat. Je kan ook proberen te debuggen door new msg[228]; format(msg,sizeof(msg),"DEBUG RESULT: %s, %s, %s",Map[0], Map[1], Map[2]); SendClientMessageToAll(red,msg); Dan krijg je als het goed is het volgende resultaat: "DEBUG RESULT: Los Santos, Las Venturas, San Fierro" Wanneer je het volgende doet new msg[228]; format(msg,sizeof(msg),"DEBUG RESULT: %s, %s, %s",Map[0][1], Map[1][1], Map[2][1]); SendClientMessageToAll(red,msg); Dan krijg je als het goed is het volgende resultaat: "DEBUG RESULT: o, a, a" --- MOMENT PLEASE, ZAL DEZE REPLY VANAVOND EVEN AFMAKEN. MOET OP HET MOMENT EVENTJES WEG --- Reageren
Never Geplaatst: 29 juni 2011 Auteur Rapport Geplaatst: 29 juni 2011 (bewerkt) Het is al een tijdje geleden dat ik met PAWN heb gewerkt. Maar ik hoop je te kunnen helpen. Wanneer jij Map[Currentmap][1] doet en Currentmap is bijv: 0 dan krijg je als resultaat "o". Probeer het eens zonder die [1]. Als het goed is krijg je dan wel het gewenste resultaat. Je kan ook proberen te debuggen door new msg[228]; format(msg,sizeof(msg),"DEBUG RESULT: %s, %s, %s",Map[0], Map[1], Map[2]); SendClientMessageToAll(red,msg); Dan krijg je als het goed is het volgende resultaat: "DEBUG RESULT: Los Santos, Las Venturas, San Fierro" Wanneer je het volgende doet new msg[228]; format(msg,sizeof(msg),"DEBUG RESULT: %s, %s, %s",Map[0][1], Map[1][1], Map[2][1]); SendClientMessageToAll(red,msg); Dan krijg je als het goed is het volgende resultaat: "DEBUG RESULT: o, a, a" --- MOMENT PLEASE, ZAL DEZE REPLY VANAVOND EVEN AFMAKEN. MOET OP HET MOMENT EVENTJES WEG --- Heel erg Bedankt voor het helpen, Maar als ik if(CurrentMap[1]) < --- als ik die [1] weghaal hoe moet de script weten welke map ik bedoel? dus hoe moet ik het laten weten dat ik Los Santos, Las venturas of San Fierro Bedoel? zodat als meer mensen op Los Santos hebben gestemd dat de Map naar Los Santos gaat en niet naar alle 3 de mappen. (dat probleem heb ik nu :S) Alvast Bedankt, Never Bewerkt: 29 juni 2011 door Never Reageren
Dragon707 Geplaatst: 29 juni 2011 Rapport Geplaatst: 29 juni 2011 Het is al een tijdje geleden dat ik met PAWN heb gewerkt. Maar ik hoop je te kunnen helpen. Wanneer jij Map[Currentmap][1] doet en Currentmap is bijv: 0 dan krijg je als resultaat "o". Probeer het eens zonder die [1]. Als het goed is krijg je dan wel het gewenste resultaat. Je kan ook proberen te debuggen door new msg[228]; format(msg,sizeof(msg),"DEBUG RESULT: %s, %s, %s",Map[0], Map[1], Map[2]); SendClientMessageToAll(red,msg); Dan krijg je als het goed is het volgende resultaat: "DEBUG RESULT: Los Santos, Las Venturas, San Fierro" Wanneer je het volgende doet new msg[228]; format(msg,sizeof(msg),"DEBUG RESULT: %s, %s, %s",Map[0][1], Map[1][1], Map[2][1]); SendClientMessageToAll(red,msg); Dan krijg je als het goed is het volgende resultaat: "DEBUG RESULT: o, a, a" --- MOMENT PLEASE, ZAL DEZE REPLY VANAVOND EVEN AFMAKEN. MOET OP HET MOMENT EVENTJES WEG --- Heel erg Bedankt voor het helpen, Maar als ik if(CurrentMap[1]) < --- als ik die [1] weghaal hoe moet de script weten welke map ik bedoel? dus hoe moet ik het laten weten dat ik Los Santos, Las venturas of San Fierro Bedoel? zodat als meer mensen op Los Santos hebben gestemd dat de Map naar Los Santos gaat en niet naar alle 3 de mappen. (dat probleem heb ik nu :S) Alvast Bedankt, Never Je hebt nu Map[Currentmap][1]. Currentmap is een integer tussen de 0 en de sizeof Map. dan moet je gebruik maken van Map[Currentmap]. Maar nu wat je probleem is. qua timer zou ik het iets anders oplossen. Doro het volgende te doen: // Hier je timer (zonder Ex) SetTimerEx("SpawnTimer",1000,0); forward SpawnTimer(); public SpawnTimer() { // Een for loop voor alle spelers. // Met daarin Spawn(playerid); } Reageren
Never Geplaatst: 29 juni 2011 Auteur Rapport Geplaatst: 29 juni 2011 (bewerkt) ik heb nu de volgende Gedaan: // de positions zijn wel effe voor test maar ik weet niet hoe ik het moet doen als ik 2 teams heb en dat ze op andere pos gaan starten :s new MapPos[][4] = { {55,66,77}, {10,20,30}, {40,50,60} }; new Map[][] = { "Los Santos", "Las Venturas", "San Fiaro" }; new CurrentMap = 0; new Votes[50]; new CanVote[MAX_PLAYERS]; new bool:ActiveVote; public OnPlayerConnect(playerid) { if (ActiveVote == true) CanVote[playerid] = 0; return 1; } forward BeginVote(); public BeginVote() { SendClientMessageToAll(COLOR_RED,"Voting Ends in 15 seconds. Cast your Votes"); SetTimer("endvote",15000,0); ActiveVote = true; new info[150]; for (new i = 0;i<sizeof(MapPos);i++) { if (i == 0) format(info,sizeof(info),"%s\n",Map[i]); if (i == sizeof(MapPos)-1) format(info,sizeof(info),"%s%s",info,Map[i]); if (i != sizeof(MapPos) && i != 0) format(info,sizeof(info),"%s\n",info,Map[i]); } for (new i = 0;i<MAX_PLAYERS; i++) { CanVote[i] = 1; ShowPlayerDialog(i,500,DIALOG_STYLE_LIST,"Vote for Map",info,"Vote","Vote"); } return 1; } stock GetHighestNumberEx(num[], size = sizeof(num)) { new highesty = 0; for (new i = 0; i < size; i++) { if (num[i] > highesty) highesty = num[i]; } return highesty; } forward endvote(); public endvote() { ActiveVote = false; new high = GetHighestNumberEx(Votes); printf("%d",high); for (new i = 0; i<sizeof(Votes);i++) { if (Votes[i] == high) { CurrentMap = i; new msg[50]; format(msg,sizeof(msg),"The Map %s Has been Nominated.",Map[i]); SendClientMessageToAll(COLOR_RED,msg); break; } } return 1; } stock GetHighestNumber(...) { new args = numargs(); new highestyet = 0; for (new i = 0; i<args; i++) { if (getarg(i,0) > highestyet) highestyet = getarg(i,0); } return highestyet; } forward Spawn(playerid); public Spawn(playerid) { SetPlayerPos(playerid,MapPos[CurrentMap][1],MapPos[CurrentMap][2],MapPos[CurrentMap][3]); new msg[50]; format(msg,sizeof(msg),"You have Spawned In Map: %s(%d,%d,%d)",Map[CurrentMap],MapPos[CurrentMap][0],MapPos[CurrentMap][1],MapPos[CurrentMap][2]); SendClientMessage(playerid,COLOR_RED,msg); return 1; } //en deze heb ik gergens in me script staan: //SetTimerEx("Spawn",1000,0,"%d",playerid); //CallRemoteFunction("BeginVote",""); Alvast Bedankt, Never Bewerkt: 29 juni 2011 door Never 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.