Jump to content

Dialog


patrick1995

Recommended Posts

Bovenaan m'n script heb ik staan:

new wapenid[128];

En als je dan een ding in een dialog selecteert, word wapenid ingesteld op het id van het wapen, vb, 36 (minigun).

Maar ik krijg nu de volgende error code's:



C:\xampp\htdocs\sampserver\gamemodes\penls.pwn(19706) : error 032: array index out of bounds (variable "wapenid")
C:\xampp\htdocs\sampserver\gamemodes\penls.pwn(19710) : error 032: array index out of bounds (variable "wapenid")
C:\xampp\htdocs\sampserver\gamemodes\penls.pwn(19714) : error 032: array index out of bounds (variable "wapenid")
C:\xampp\htdocs\sampserver\gamemodes\penls.pwn(19718) : error 032: array index out of bounds (variable "wapenid")
C:\xampp\htdocs\sampserver\gamemodes\penls.pwn(19722) : error 032: array index out of bounds (variable "wapenid")
C:\xampp\htdocs\sampserver\gamemodes\penls.pwn(19726) : error 032: array index out of bounds (variable "wapenid")
C:\xampp\htdocs\sampserver\gamemodes\penls.pwn(19730) : error 032: array index out of bounds (variable "wapenid")
C:\xampp\htdocs\sampserver\gamemodes\penls.pwn(19734) : error 032: array index out of bounds (variable "wapenid")
C:\xampp\htdocs\sampserver\gamemodes\penls.pwn(19738) : error 032: array index out of bounds (variable "wapenid")
Pawn compiler 3.2.3664          	Copyright (c) 1997-2006, ITB CompuPhase


9 Errors.

Edit: ik heb het probleem al opgelost, ik had ingesteld staan dat de array 128 is, maar de array was maar 1.

Dus new wapenid[1]; lost het al op.

Bewerkt: door patrick1995
Link to comment
Delen op andere websites

Voor één (echt maar één) integer is een array niet nodig, tenzij je meerdere integers in die array wilt stoppen. Een array van maar één cel is dus niet nodig, je kan dan net zo goed die index weglaten.

Link to comment
Delen op andere websites

Er zit nu nog een fout in m'n script, maar pawno geeft geen error code.

Normaal geeft het command /givegun dan het wapen, maar er worden hele andere dingen doorgezonden aan givegun dan wat ik in het formulier invul.


if(dialogid == 3)
   	{
	if(response == 1)
	{
   		if(listitem == 0)
   		{
		new listitems[] = "Brass Knuckles";
		ShowPlayerDialog(playerid,7,DIALOG_STYLE_LIST,"Kies wapen",listitems,"Selecteer","Annuleer");
   		}
   		if(listitem == 1)
   		{
   		new listitems[] = "Golf club\nNitestick\nKnife\nBaseball bat\nShovel\nPool que\nKatana\nChainsaw\nCane";
		ShowPlayerDialog(playerid,6,DIALOG_STYLE_LIST,"Kies wapen",listitems,"Selecteer","Annuleer");
   		}
   		return 1;
	}
	return 1;
	}

	if(dialogid == 4)
	{
		if(response == 1)
		{
		if(!response) SendClientMessage(playerid, 0xFFFFFFFF, "Je hebt niet het aantal ammo ingevuld!");
		new geefwapen[128];
		format(geefwapen, sizeof(geefwapen), "/givegun %i %i %i", wplayerid,wapenid,inputtext);
       	OnPlayerCommandText(playerid, geefwapen);
       	SendClientMessage(playerid, COLOR_GREEN, geefwapen);
		}
	}
	if(dialogid == 5)
	{
		if(response == 1)
		{
		if(!response) SendClientMessage(playerid, 0xFFFFFFFF, "Je hebt niet het id ingevuld!");
        	wplayerid[2] = strval(inputtext);
		ShowPlayerDialog(playerid,4,DIALOG_STYLE_INPUT,"Aantal ammo","\n\nAmmo","OK","Annuleer");
		}
	}
	if(dialogid == 6)
	{
		if(response == 1)
		{
    		if(listitem == 0)
    		{
			wapenid[1] = 2;
			}
			if(listitem == 1)
    		{
			wapenid[1] = 3;
			}
			if(listitem == 2)
    		{
			wapenid[1] = 4;
			}
			if(listitem == 3)
    		{
			wapenid[1] = 5;
			}
			if(listitem == 4)
    		{
			wapenid[1] = 6;
			}
			if(listitem == 5)
    		{
			wapenid[1] = 7;
			}
			if(listitem == 6)
    		{
			wapenid[1] = 8;
			}
			if(listitem == 7)
    		{
			wapenid[1] = 9;
			}
			if(listitem == 
    		{
			wapenid[2] = 15;
			}
   		ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Aan wie","\n\nID","OK","Annuleer");
		}
	}
	if(dialogid == 7)
	{
		if(response == 1)
		{
    		if(listitem == 0)
    		{
			wapenid[1] = 1;
			}
   		ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Aan wie","\n\nID","OK","Annuleer");
		}
	}

Bewerkt: door patrick1995
Link to comment
Delen op andere websites

format(geefwapen, sizeof(geefwapen), "/givegun %i %i %i", wplayerid,wapenid,inputtext);

De variable inputtext is een string. Die moet je eerst weer tot integer omzetten voordat je hem ook als integer kan gebruiken.

Verander die regel dus naar:

format(geefwapen, sizeof(geefwapen), "/givegun %i %i %i", wplayerid,wapenid,strval(inputtext));

Link to comment
Delen op andere websites

Dit heeft een fout opgelost, maar er blijft nog een fout.

Het aantal ammo komt nu goed binnen, maar het playerid en het wapenid komen niet goed binnen. Hoe kan ik dit oplossen.

Link to comment
Delen op andere websites

if(response == 1)
{
      if(!response) SendClientMessage(playerid, 0xFFFFFFFF, "Je hebt niet het aantal ammo ingevuld!");
      ...
}

Klinkt erg onlogisch, niet?

En

new listitems[] = "Golf club\nNitestick\nKnife\nBaseball bat\nShovel\nPool que\nKatana\nChainsaw\nCane";
                       ShowPlayerDialog(playerid,6,DIALOG_STYLE_LIST,"Kies wapen",listitems,"Selecteer","Annuleer");

Kan je vervangen door:

                       ShowPlayerDialog(playerid,6,DIALOG_STYLE_LIST,"Kies wapen","Golf club\nNitestick\nKnife\nBaseball bat\nShovel\nPool que\nKatana\nChainsaw\nCane","Selecteer","Annuleer");

Bespaart ~100bytes RAM. :bier:

Bewerkt: door GTAguillaume
Link to comment
Delen op andere websites

http://www.gtaforum.nl/topic/105958-tutsa-mp-03dialog-box/page__p__1558520__hl__dialog__fromsearch__1entry1558520 in deze tut stond dat het wel zo moet. Maar 'k denk niet dat dit mijn probleem op gaat lossen :O, maar ik ga wel ff kijken of 't werkt, en ram maakt mij eigenlijk niets uit, want m'n computer heeft 4 gb ram waar ik het op test, en ik heb binnenkort mijn server ergens anders gehost staan, en dan maakt het voor mij niets uit hoeveel ram dat ding gebruikt.
Link to comment
Delen op andere websites

http://www.gtaforum....1entry1558520 in deze tut stond dat het wel zo moet. Maar 'k denk niet dat dit mijn probleem op gaat lossen :O, maar ik ga wel ff kijken of 't werkt, en ram maakt mij eigenlijk niets uit, want m'n computer heeft 4 gb ram waar ik het op test, en ik heb binnenkort mijn server ergens anders gehost staan, en dan maakt het voor mij niets uit hoeveel ram dat ding gebruikt.

Naja het moet niet zo, dat waren meer voorbeelden en overzichtelijker naar mijn mening maar listitem kan ook meteen in de dialog.

Link to comment
Delen op andere websites

Naja het moet niet zo, dat waren meer voorbeelden en overzichtelijker naar mijn mening maar listitem kan ook meteen in de dialog.

Ach 't maakt me ook niet uit hoe het erin staat. Maar 't gaat me er nu om dat m'n probleem opgelost wordt, maar 't is blijkbaar erg moeilijk want er is nog geen oplossing traantjes.gif

Bewerkt: door patrick1995
Link to comment
Delen op andere websites

Oke...


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
Bij een command: ShowPlayerDialog(playerid,3,DIALOG_STYLE_LIST,"Kies een wapencategorie",listitems,"Selecteer","Annuleer");
   if(dialogid == 0)
   {
       if (response == 1)
       {
       	if(!response) SendClientMessage(playerid, 0xFFFFFFFF, "Je hebt geen wachtwoord ingevuld!");
  	     	new wachtwoord[128];
       	format(wachtwoord, sizeof(wachtwoord), "/login %s", inputtext);
       	OnPlayerCommandText(playerid, wachtwoord);
       	TogglePlayerControllable(playerid,1);
		SetPlayerPos(playerid, 1529.6,-1691.2,13.3);
		SetPlayerInterior(playerid,0);
       	return 1;
	}
	else if (response == 0)
	{
	Kick(playerid);
	return 1;
	}
	}

   if(dialogid == 1)
   {
       if(response == 1)
       {
       	if(!response) SendClientMessage(playerid, 0xFFFFFFFF, "Je hebt geen wachtwoord ingevuld!");
  	     	new wachtwoord[128];
       	format(wachtwoord, sizeof(wachtwoord), "/regnick %s", inputtext);
       	OnPlayerCommandText(playerid, wachtwoord);
		SetPlayerPos(playerid, 1529.6,-1691.2,13.3);
		SetPlayerInterior(playerid,0);
       	return 1;
       }
       else if (response == 0)
	{
       	Kick(playerid);
       	return 1;
    	}
}
if(dialogid == 3)
   	{
	if(response == 1)
	{
    	if(listitem == 0)
    	{
		ShowPlayerDialog(playerid,6,DIALOG_STYLE_LIST,"Kies wapen","Golf club\nNitestick\nKnife\nBaseball bat\nShovel\nPool que\nKatana\nChainsaw\nCane","Selecteer","Annuleer");
    	}
    	if(listitem == 1)
    	{
    	new listitems[] = "Golf club\nNitestick\nKnife\nBaseball bat\nShovel\nPool que\nKatana\nChainsaw\nCane";
		ShowPlayerDialog(playerid,6,DIALOG_STYLE_LIST,"Kies wapen",listitems,"Selecteer","Annuleer");
    	}
    	if(listitem == 2)
    	{
		new listitems[] = "Pistol\nSilenced 9mm\nDesert eagle";
		ShowPlayerDialog(playerid,8,DIALOG_STYLE_LIST,"Kies wapen",listitems,"Selecteer","Annuleer");
    	}
    	if(listitem == 3)
    	{
		new listitems[] = "Shotgun\nSawn-off shotgun\nCombat shotgun";
		ShowPlayerDialog(playerid,9,DIALOG_STYLE_LIST,"Kies wapen",listitems,"Selecteer","Annuleer");
    	}
    	if(listitem == 4)
    	{
		new listitems[] = "Micro-MP5\nMP5\nTec-9";
		ShowPlayerDialog(playerid,10,DIALOG_STYLE_LIST,"Kies wapen",listitems,"Selecteer","Annuleer");
    	}
        	if(listitem == 5)
    	{
		new listitems[] = "AK-47\nM4";
		ShowPlayerDialog(playerid,11,DIALOG_STYLE_LIST,"Kies wapen",listitems,"Selecteer","Annuleer");
    	}
    	if(listitem == 6)
    	{
		new listitems[] = "Country rifle\nSniper rifle";
		ShowPlayerDialog(playerid,12,DIALOG_STYLE_LIST,"Kies wapen",listitems,"Selecteer","Annuleer");
    	}
    	if(listitem == 7)
    	{
		new listitems[] = "RPG\nHeat seeker\nFlamethrower\nMinigun";
		ShowPlayerDialog(playerid,13,DIALOG_STYLE_LIST,"Kies wapen",listitems,"Selecteer","Annuleer");
    	}
    	if(listitem == 
    	{
		new listitems[] = "Grenade\nTear gas\nMolotov cocktail\nRemote satchel\nDetonator";
		ShowPlayerDialog(playerid,14,DIALOG_STYLE_LIST,"Kies wapen",listitems,"Selecteer","Annuleer");
    	}
    	if(listitem == 9)
    	{
		new listitems[] = "Spray can\nFire extinguisher\nCamera";
		ShowPlayerDialog(playerid,15,DIALOG_STYLE_LIST,"Kies wapen",listitems,"Selecteer","Annuleer");
    	}
    	if(listitem == 10)
    	{
		new listitems[] = "Dildo 1\nDildo 2\nDildo 3\nDildo4\nFlowers";
		ShowPlayerDialog(playerid,16,DIALOG_STYLE_LIST,"Kies wapen",listitems,"Selecteer","Annuleer");
    	}
    	if(listitem == 11)
    	{
		new listitems[] = "Night vision goggles\nThermal goggles\nParachute";
		ShowPlayerDialog(playerid,17,DIALOG_STYLE_LIST,"Kies wapen",listitems,"Selecteer","Annuleer");
    	}
    	return 1;
	}
	return 1;
	}

	if(dialogid == 4)
	{
		if(response == 1)
		{
		if(!response) SendClientMessage(playerid, 0xFFFFFFFF, "Je hebt niet het aantal ammo ingevuld!");
		new geefwapen[128];
		format(geefwapen, sizeof(geefwapen), "/givegun %i %i %i", wplayerid,wapenid,strval(inputtext));
       	OnPlayerCommandText(playerid, geefwapen);
       	SendClientMessage(playerid, COLOR_GREEN, geefwapen);
       	SendClientMessage(playerid, COLOR_GREEN, wapenid);
       	if (wplayerid[2] == 1)
       	{
       	SendClientMessage(playerid, COLOR_GREEN, "hmm  't is 1");
       	}
		}
	}
	if(dialogid == 5)
	{
		if(response == 1)
		{
		if(!response) SendClientMessage(playerid, 0xFFFFFFFF, "Je hebt niet het id ingevuld!");
     	wplayerid[2] = strval(inputtext);
		ShowPlayerDialog(playerid,4,DIALOG_STYLE_INPUT,"Aantal ammo","\n\nAmmo","OK","Annuleer");
		}
	}
	if(dialogid == 6)
	{
		if(response == 1)
		{
	    	if(listitem == 0)
	    	{
			wapenid[1] = 2;
			}
			if(listitem == 1)
	    	{
			wapenid[1] = 3;
			}
			if(listitem == 2)
	    	{
			wapenid[1] = 4;
			}
			if(listitem == 3)
	    	{
			wapenid[1] = 5;
			}
			if(listitem == 4)
	    	{
			wapenid[1] = 6;
			}
			if(listitem == 5)
	    	{
			wapenid[1] = 7;
			}
			if(listitem == 6)
	    	{
			wapenid[1] = 8;
			}
			if(listitem == 7)
	    	{
			wapenid[1] = 9;
			}
			if(listitem == 
	    	{
			wapenid[2] = 15;
			}
   		ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Aan wie","\n\nID","OK","Annuleer");
		}
	}
	if(dialogid == 7)
	{
		if(response == 1)
		{
	    	if(listitem == 0)
	    	{
			wapenid[1] = 1;
			}
   		ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Aan wie","\n\nID","OK","Annuleer");
		}
	}
	if(dialogid == 
	{
		if(response == 1)
		{
	    	if(listitem == 0)
	    	{
			wapenid[2] = 22;
			}
			if(listitem == 1)
	    	{
			wapenid[2] = 23;
			}
			if(listitem == 2)
	    	{
			wapenid[2] = 24;
			}
   		ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Aan wie","\n\nID","OK","Annuleer");
		}
	}
	if(dialogid == 9)
	{
		if(response == 1)
		{
	    	if(listitem == 0)
	    	{
			wapenid[2] = 25;
			}
			if(listitem == 1)
	    	{
			wapenid[2] = 26;
			}
			if(listitem == 2)
	    	{
			wapenid[2] = 27;
			}
   		ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Aan wie","\n\nID","OK","Annuleer");
		}
	}
	if(dialogid == 10)
	{
		if(response == 1)
		{
	    	if(listitem == 0)
	    	{
			wapenid[2] = 32;
			}
			if(listitem == 1)
	    	{
			wapenid[2] = 28;
			}
			if(listitem == 2)
	    	{
			wapenid[2] = 29;
			}
   		ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Aan wie","\n\nID","OK","Annuleer");
		}
	}
	if(dialogid == 11)
	{
		if(response == 1)
		{
	    	if(listitem == 0)
	    	{
			wapenid[2] = 30;
			}
			if(listitem == 1)
	    	{
			wapenid[2] = 31;
			}
   		ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Aan wie","\n\nID","OK","Annuleer");
		}
	}
	if(dialogid == 12)
	{
		if(response == 1)
		{
	    	if(listitem == 0)
	    	{
			wapenid[2] = 33;
			}
			if(listitem == 1)
	    	{
			wapenid[2] = 34;
			}
   		ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Aan wie","\n\nID","OK","Annuleer");
		}
	}
	if(dialogid == 13)
	{
		if(response == 1)
		{
	    	if(listitem == 0)
	    	{
			wapenid[2] = 35;
			}
			if(listitem == 1)
	    	{
			wapenid[2] = 36;
			}
	     	if(listitem == 2)
	    	{
			wapenid[2] = 37;
			}
			if(listitem == 3)
	    	{
			wapenid[2] = 38;
			}
   		ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Aan wie","\n\nID","OK","Annuleer");
		}
	}
	if(dialogid == 14)
	{
		if(response == 1)
		{
	    	if(listitem == 0)
	    	{
			wapenid[2] = 16;
			}
			if(listitem == 1)
	    	{
			wapenid[2] = 17;
			}
	     	if(listitem == 2)
	    	{
			wapenid[2] = 18;
			}
			if(listitem == 3)
	    	{
			wapenid[2] = 39;
			}
			if(listitem == 4)
	    	{
			wapenid[2] = 40;
			}
   		ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Aan wie","\n\nID","OK","Annuleer");
		}
	}
	if(dialogid == 15)
	{
		if(response == 1)
		{
	    	if(listitem == 0)
	    	{
			wapenid[2] = 41;
			}
			if(listitem == 1)
	    	{
			wapenid[2] = 42;
			}
	     	if(listitem == 2)
	    	{
			wapenid[2] = 43;
			}
   		ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Aan wie","\n\nID","OK","Annuleer");
		}
	}
	if(dialogid == 16)
	{
		if(response == 1)
		{
	    	if(listitem == 0)
	    	{
			wapenid[2] = 10;
			}
			if(listitem == 1)
	    	{
			wapenid[2] = 11;
			}
	     	if(listitem == 2)
	    	{
			wapenid[2] = 12;
			}
			if(listitem == 3)
	    	{
			wapenid[2] = 13;
			}
			if(listitem == 4)
	    	{
			wapenid[2] = 14;
			}
   		ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Aan wie","\n\nID","OK","Annuleer");
		}
	}
	if(dialogid == 17)
	{
		if(response == 1)
		{
	    	if(listitem == 0)
	    	{
			wapenid[2] = 44;
			}
			if(listitem == 1)
	    	{
			wapenid[2] = 45;
			}
	     	if(listitem == 2)
	    	{
			wapenid[2] = 46;
			}
   		ShowPlayerDialog(playerid,5,DIALOG_STYLE_INPUT,"Aan wie","\n\nID","OK","Annuleer");
		}
	}

return 1;
}

Verder heb ik nog login ShowPlayerDialog's maar daar zitten geen fouten in want die werken gwn helemaal.

Bewerkt: door patrick1995
Link to comment
Delen op andere websites

Een beetje late reactie, maar in dit hele script zitten veel fouten en dingen die niet voor meerdere spelers tegelijk werken. Ook is dit script erg inefficiënt, dat is nog niet het grootste probleem, maar om lag te voorkomen met meerdere spelers zou het wel aangeraden zijn.

Ik raad je ook aan om goed te kijken in andermans script, die hetzelfde doen als jouw script. Zie bijvoorbeeld dit script. Hier leer je veel van.

Ten slotte zal eventjes wat fouten in het script op een rijtje zetten:

1. Gebruik arrays

- Dit script werkt alleen als 1 speler dit tegelijk gebruikt. Als 2 mensen het proberen te gebruiken dan werkt het niet, of heel slecht. Om dit op te lossen, moet bijvoorbeeld new variable; veranderen naar new variable[MAX_PLAYERS]; (Het beste zou zijn om een define te maken waarin het maximum aantal spelers in staan. Dit doe je door bijvoorbeeld #define MAX_SPELERS 50 bovenaan je script neer te zetten. Hierin is de 50 het maximum aantal spelers. Gebruik dan: new variable[MAX_SPELERS];.) Om nu deze variable te gebruiken, gebruik je bijvoorbeeld: format(string, sizeof(string), "De inhoud van jouw array is: %d", variable[playerid]);.

2. Gebruik + en/of -

if(listitem == 1)
{
wapenid[1] = 3;
}

if(listitem == 2)
{
wapenid[1] = 4;
}

if(listitem == 3)
{
wapenid[1] = 5;
}

if(listitem == 4)
{
wapenid[1] = 6;
}

if(listitem == 5)
{
wapenid[1] = 7;
}

if(listitem == 6)
{
wapenid[1] = 8;
}

if(listitem == 7)
{
wapenid[1] = 9;
}

Deze code kan je net zo goed zo schrijven:

wapenid[1] = listitem + 2;

Ik hoop dat ik je hierbij al iets op weg geholpen heb.

MVG,

Wanted

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