Jump to content

Vote Map


Never

Recommended Posts

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 :bier:

Alvast Bedankt,

Never

Bewerkt: door Never
Link to comment
Delen op andere websites

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

Link to comment
Delen op andere websites

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 ---

Link to comment
Delen op andere websites

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: door Never
Link to comment
Delen op andere websites

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);
}

Link to comment
Delen op andere websites

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: door Never
Link to comment
Delen op andere websites

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.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...