Skip to content
View in the app

A better way to browse. Learn more.

GTAGames.nl - De Nederlandse Grand Theft Auto Community!

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Vote Map

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

Edited by Never

Featured Replies

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?

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.

Dat was mij nog niet eens opgevallen. :bonk: 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...

  • Author

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

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

  • Author

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

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

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

  • Author

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

Edited by Never

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.