InfernusDrifter Geplaatst: 23 maart 2010 Rapport Geplaatst: 23 maart 2010 (bewerkt) Hey, Eerst wil ik ff zeggen dat ik nieuw ben hier, ik ben van plan om hier wel regelmatig te posten en geen one day-poster te zijn (als je begrijpt wat ik bedoel). Nu over mijn probleem. In opdracht van een goede vriend van mij ben ik bezig om een nieuw soort GameMode te maken, een Convoy server word het. Dat houdt in dat iedereen een trucker is, samen moet je verschillende opdrachten doen en door heel San Andreas rijden met vrachtwagens. De basisscript werkt 100%, je kan kiezen tussen man en vrouw en er zijn al een paar vrachtwagens/trailers bij de playerspawn. Nu volg ik dus wat tutorials om een accountsysteem te maken en een adminsysteem, ik heb het scriptje zelf wel kunnen maken, alleen als ik deze in de script stop waar de server op runt en hem dan wil opslaan, geeft 'ie een paar errors. Het is me nog onduidelijk wat ik verkeerd heb gedaan, en nu is mijn vraag of iemand dit voor of met mij kan oplossen. Alvast bedankt EDIT: Errors: error 003: declaration of a local variable must appear in a compound block error 017: undefined symbol "cmd" warning 215: expression has no effect error 001: expected token: ";", but found "]" fatal error 107: too many error messages on one line Bewerkt: 23 maart 2010 door InfernusDrifter Reageren
Wanted Geplaatst: 23 maart 2010 Rapport Geplaatst: 23 maart 2010 We willen je best helpen, maar het zou makkelijk zijn om het stukje script te posten waarin die errors zijn. Hier staan een aantal van de meest voorkomende errors en warnings. Misschien dat dat je helpt. MVG, Wanted Reageren
InfernusDrifter Geplaatst: 23 maart 2010 Auteur Rapport Geplaatst: 23 maart 2010 Ik denk dat er hier iets is misgegaan: public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/mycommand", cmdtext, true, 10) == 0) new cmd[256],tmp[256], tmp2[256]; new idx; new string[256]; cmd = strtok(cmdtext, idx); GetPlayerName(playerid, playername, sizeof(playername)); if(strcmp(cmd, "/register", true) == 0); tmp = strtok(cmdtext, idx); if(!strlen(tmp)); SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /register (password)"); } else { if (!dini_Exists(udb_encode(playername))); dini_Create(udb_encode(playername)); dini_IntSet(udb_encode(playername), "password", udb_hash(tmp)); dini_IntSet(udb_encode(playername), "adminlevel", 0); dini_IntSet(udb_encode(playername), "money", 0); format(string, sizeof(string), "Your account is registered! You can now log in.", playername, tmp); SendClientMessage(playerid, COLOR_YELLOW, string); } else { format(string, sizeof(string), "is already registered.", playername,tmp); SendClientMessage(playerid, COLOR_RED, string); }} if(strcmp(cmd, "/login", true) == 0); { GetPlayerName(playerid, playername, sizeof(playername)); if(logged[playerid] == 1) { SendClientMessage(playerid, COLOR_RED, "You are already logged in!"); } if(!strlen(tmp)){ SendClientMessage(playerid, COLOR_YELLOW, "Use: /login (password)"); } else { if (dini_Exists(udb_encode(playername))); tmp2 = dini_Get(udb_encode(playername), "password"); if (udb_hash(tmp) != strval(tmp2)); SendClientMessage(playerid, COLOR_RED, "Wrong password!"); } else { logged[playerid] = 1; money[playerid] = dini_Int(udb_encode(playername), "money"); adminlevel[playerid] = dini_Int(udb_encode(playername), "adminlevel"); format(string, sizeof(string), "%s, you are now logged in. Your adminlevel is %d and you have %d dollar", playername, adminlevel[playerid], money[playerid]); SendClientMessage(playerid, COLOR_GREEN, string); GivePlayerMoney(playerid, money[playerid]); } } else { format(string, sizeof(string), "The account %s, doesn't exist yet. Type /register [password] to make an account", playername); SendClientMessage(playerid, COLOR_RED, string); }} return 1; Reageren
Wanted Geplaatst: 23 maart 2010 Rapport Geplaatst: 23 maart 2010 Dat weet ik zelfs zeker. Er is heel wat fout in die code. Ten eerste is het makkelijker voor je als je je eigen code ïndenteerd. Ïndenteren is gewoon een tab na elke '{' plaatsen, en een tab terug na een '}'. Bovendien hoort er na een 'if(...)' geen ';' te staan. Maar hier is je code terug, geïndenteerd en al. Deze code zou geen errors moeten geven. In ieder geval, veel succes met je script! MVG, Wanted public OnPlayerCommandText(playerid, cmdtext[]) { new cmd[256], tmp[256], tmp2[256]; new idx; new string[256]; cmd = strtok(cmdtext, idx); GetPlayerName(playerid, playername, sizeof(playername)); if (strcmp(cmd, "/register", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /register (password)"); } else { if(!dini_Exists(udb_encode(playername))) { dini_Create(udb_encode(playername)); dini_IntSet(udb_encode(playername), "password", udb_hash(tmp)); dini_IntSet(udb_encode(playername), "adminlevel", 0); dini_IntSet(udb_encode(playername), "money", 0); format(string, sizeof(string), "Your account is registered! You can now log in.", playername, tmp); SendClientMessage(playerid, COLOR_YELLOW, string); } else { format(string, sizeof(string), "is already registered.", playername,tmp); SendClientMessage(playerid, COLOR_RED, string); } return 1; } } if (strcmp(cmd, "/login", true) == 0) { if(logged[playerid] == 1) { SendClientMessage(playerid, COLOR_RED, "You are already logged in!"); } if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_YELLOW, "Use: /login (password)"); } else { if(dini_Exists(udb_encode(playername))) { tmp2 = dini_Get(udb_encode(playername), "password"); if (udb_hash(tmp) != strval(tmp2)) { SendClientMessage(playerid, COLOR_RED, "Wrong password!"); } else { logged[playerid] = 1; money[playerid] = dini_Int(udb_encode(playername), "money"); adminlevel[playerid] = dini_Int(udb_encode(playername), "adminlevel"); format(string, sizeof(string), "%s, you are now logged in. Your adminlevel is %d and you have %d dollar", playername, adminlevel[playerid], money[playerid]); SendClientMessage(playerid, COLOR_GREEN, string); GivePlayerMoney(playerid, money[playerid]); } } else { format(string, sizeof(string), "The account %s, doesn't exist yet. Type /register [password] to make an account", playername); SendClientMessage(playerid, COLOR_RED, string); } return 1; } } return 1; } Reageren
InfernusDrifter Geplaatst: 23 maart 2010 Auteur Rapport Geplaatst: 23 maart 2010 Heel erg bedankt, ik krijg nu alsnog wat errors, maar ik denk dat dat probleem bij mij ligt. (103) : error 029: invalid expression, assumed zero (103) : error 035: argument type mismatch (argument 2) (103) : error 020: invalid symbol name "" (103) : fatal error 107: too many error messages on one line Had er eerst 6, die hadden te maken met define enzo, ik was gewoon vergeten #define .... te doen ;p Reageren
Wanted Geplaatst: 23 maart 2010 Rapport Geplaatst: 23 maart 2010 Kun je de inhoud van regel 103 geven? Reageren
InfernusDrifter Geplaatst: 23 maart 2010 Auteur Rapport Geplaatst: 23 maart 2010 GetPlayerName(playerid, playername, sizeof(playername)); Reageren
Yannick(NL) Geplaatst: 23 maart 2010 Rapport Geplaatst: 23 maart 2010 (bewerkt) Edit: Oops, verkeerd gekeken. Bewerkt: 23 maart 2010 door Yannick(NL) Reageren
Shotyoudie Geplaatst: 23 maart 2010 Rapport Geplaatst: 23 maart 2010 GetPlayerName(playerid, playername, sizeof(playername)); Heb je wel new playername[MAX_PLAYER_NAME]; ? Reageren
Shotyoudie Geplaatst: 25 maart 2010 Rapport Geplaatst: 25 maart 2010 Jazeker. Mischien zet new playername[MAX_PLAYER_NAME]; in de public OnCommandText? Reageren
InfernusDrifter Geplaatst: 25 maart 2010 Auteur Rapport Geplaatst: 25 maart 2010 Bedankt allemaal, 't probleem heb ik samen opgelost met een goede vriend en ervaren scripter. 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.