patrick1995 Geplaatst: 5 maart 2010 Rapport Geplaatst: 5 maart 2010 (bewerkt) 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: 5 maart 2010 door patrick1995 Reageren
.Timothy Geplaatst: 5 maart 2010 Rapport Geplaatst: 5 maart 2010 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. Reageren
patrick1995 Geplaatst: 5 maart 2010 Auteur Rapport Geplaatst: 5 maart 2010 (bewerkt) 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: 6 maart 2010 door patrick1995 Reageren
Wanted Geplaatst: 6 maart 2010 Rapport Geplaatst: 6 maart 2010 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)); Reageren
patrick1995 Geplaatst: 6 maart 2010 Auteur Rapport Geplaatst: 6 maart 2010 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. Reageren
newbie Geplaatst: 6 maart 2010 Rapport Geplaatst: 6 maart 2010 wrm zo ingewikkeld doen met dialogen? Reageren
GTAguillaume Geplaatst: 6 maart 2010 Rapport Geplaatst: 6 maart 2010 (bewerkt) 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. Bewerkt: 6 maart 2010 door GTAguillaume Reageren
patrick1995 Geplaatst: 7 maart 2010 Auteur Rapport Geplaatst: 7 maart 2010 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. Reageren
Megadreams Geplaatst: 7 maart 2010 Rapport Geplaatst: 7 maart 2010 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. Reageren
patrick1995 Geplaatst: 7 maart 2010 Auteur Rapport Geplaatst: 7 maart 2010 (bewerkt) 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 Bewerkt: 7 maart 2010 door patrick1995 Reageren
Megadreams Geplaatst: 7 maart 2010 Rapport Geplaatst: 7 maart 2010 Geef even de volledige dialog boxes Ik merk dat je er meerdere gebruikt dus geef misschien de volledig OnDialogResponse + de ShowDialogs Reageren
patrick1995 Geplaatst: 7 maart 2010 Auteur Rapport Geplaatst: 7 maart 2010 (bewerkt) 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: 7 maart 2010 door patrick1995 Reageren
Wanted Geplaatst: 12 maart 2010 Rapport Geplaatst: 12 maart 2010 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 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.