AddySnow Geplaatst: 2 augustus 2009 Rapport Geplaatst: 2 augustus 2009 sorry maar ik kan dit echt nergens goed uitgelegd vinden op google. op dit moment heb ik /register, dat werkt perfect, maar het is met money en adminranks, admin ranks kan blijven, maar ik wil money weg en kills, dus dat hij het aantal kills opslaat en dat dat elke keer in als score komt te staan in de spelerlijst dit is mijn script nu public OnPlayerCommandText(playerid, cmdtext[]) { new idx; GetPlayerName(playerid, playername, sizeof(playername)); new sendername[MAX_PLAYER_NAME]; new giveplayer[MAX_PLAYER_NAME]; new giveplayerid; new cmd[256],tmp[256], tmp2[256]; new string[256]; cmd = strtok(cmdtext, idx); GetPlayerName(playerid, playername, sizeof(playername)); //De speler typt /register in... if(strcmp(cmd, "/register", true) == 0) { //de tekst die achter '/register' wordt getypt, wordt opgeslagen in 'tmp' tmp = strtok(cmdtext, idx); //check of er überhaupt wat ingevuld word achter /register if(!strlen(tmp)) { //Als dat niet zo is, (!), dan moet er een berichtje worden verzonden: SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /register (password)"); } //Als er wel wat ingevuld wordt.... else { //....dan moet er worden gekeken of het bestand met de naam van de speler nog niet bestaat: if (!dini_Exists(udb_encode(playername))) { //Bestaat die nog niet, dan moet die worden aangemaakt: dini_Create(udb_encode(playername)); //Vervolgens moet het wachtwoord worden opgeslagen: dini_IntSet(udb_encode(playername), "password", udb_hash(tmp)); //Dan de variabelen 'adminlevel' en 'money', beiden met de waarde '0': dini_IntSet(udb_encode(playername), "adminlevel", 0); dini_IntSet(udb_encode(playername), "money", 0); //Er moet een bericht gemaakt worden die wat info naar de speler gaat sturen: format(string, sizeof(string), "Account %s Created! You can now login with password: %s.", playername, tmp); //Zend dat bericht naar de speler: SendClientMessage(playerid, COLOR_YELLOW, string); } //Dit was alles wat er moet gebeuren als er idd geregisteerd moet worden. //Als blijkt dat de naam als geregisteerd is, dan moet er een bericht naar de speler verzonden worden: else { format(string, sizeof(string), "%s already registered.", playername,tmp); SendClientMessage(playerid, COLOR_RED, string); }} return 1; } // Als de speler het commando /login typt: if(strcmp(cmd, "/login", true) == 0) { // Verkrijg de naam van de speler: GetPlayerName(playerid, playername, sizeof(playername)); // Kijk of de speler al ingelogd is: if(logged[playerid] == 1) //Zo ja, dan moet er een bericht worden verzonden met de melding dat hij al ingelogd is. { SendClientMessage(playerid, COLOR_RED, "Already logged in"); return 1; } // Sla de tekst (wachtwoord in dit geval) op in de variabele 'tmp' die achter /login getypt wordt: tmp = strtok(cmdtext, idx); // Als er niks word ingetypt achter /login, dan moet er een bericht verzonden worden: if(!strlen(tmp)){ SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /login (password)"); } // Als er wel wat in wordt getypt.... else { //...dan word er gekeken of het bestand met de spelersnaam wel bestaat (Met andere woorden: heeft diegene zich wel geregistreerd? if (dini_Exists(udb_encode(playername))) { // Zo ja, dan word uit zijn bestand de waarde achter "password" gehaald (zijn wachtwoord waarmee hij/zij zich geregisteerd heeft dus): tmp2 = dini_Get(udb_encode(playername), "password"); // Als het wachtwoord dat de speler ingevoerd heeft niet overeenkomt met het wachtwoord in zijn bestand. (Let op het !=-teken), dan moet er een bericht worden verzonden met de melding dat hij/zij het verkeerde wachtwoord heeft getypt: if (udb_hash(tmp) != strval(tmp2)) { SendClientMessage(playerid, COLOR_RED, "Wrong Password, 3 tries left before IPban!."); } // Komt het wachtwoord wel overeen.... else { // Zet de loginwaarde van de speler op '1' logged[playerid] = 1; // Haal uit het bestand de waarde die achter "money" staat en sla die op in de variabele 'money[playerid]' money[playerid] = dini_Int(udb_encode(playername), "money"); // Haal uit het bestand de waarde die achter "adminlevel" staat en sla die op in de variabele adminlevel[playerid] adminlevel[playerid] = dini_Int(udb_encode(playername), "adminlevel"); // Stel een zin samen die aangeeft hoeveel geld en welke adminlevel de speler heeft: format(string, sizeof(string), "%s, Succesfully logged in, choose a team, use /commands to view the commands!", playername, adminlevel[playerid], money[playerid]); // Stuur het bericht: SendClientMessage(playerid, COLOR_ORANGE, string); // Geef de speler het bedrag dat zojuist in de money[playerid]-variabele is gezet: GivePlayerMoney(playerid, money[playerid]); } // Dit was alles dat er moest gebeuren als de speler zich inlogt. } // Als het account met de spelersnaam nog niet bestaat (dus de speler heeft zich nog niet geregistreerd....: else { // ...Dan moet er een zin samengesteld worden die zegt dat het account met die spelers naam nog niet bestaat en dus nog geregistreerd moet worden format(string, sizeof(string), "Account doesn't exist %s, Typ /register [wachtwoord] To create an account.CreateObject. ", playername); // Het bericht verzenden: SendClientMessage(playerid, COLOR_RED, string); }} return 1; } if(strcmp(cmd, "/createadmin", true) == 0) { // Heeft de speler zich met rcon ingelogd? (met /rcon login [rcon-pass]: if(IsPlayerAdmin(playerid)) { // Heeft de speler zich wel eerst ingelogd? (met /login [wachtwoord]: if(logged[playerid] == 1) { // Heeft de speler nog niet level 3? (let op het != teken) if(adminlevel[playerid] != 3) { // Voldoet de speler aan de voorwaarden, dan word de adminlevel[playerid] op '3' gezet: adminlevel[playerid] = 3; // Stuur nu een berichtje: SendClientMessage(playerid, COLOR_GREEN, "You've become admin rank 3!"); } // Als de speler al level 3 is, dan moet er een berichtje worden verzonden: else { SendClientMessage(playerid, COLOR_RED, "You already are admin!"); }} // Als de speler zich nog niet heeft ingelogd met /login [wachtwoord]: else { SendClientMessage(playerid, COLOR_RED, "You have to login for this command /login [wachtwoord]"); }} // Als de speler zich nog niet heeft ingelogd met /rcon login [rcon-pass]: else { SendClientMessage(playerid, COLOR_RED, "You are not logged in on rcon! (/rcon login [rcon-pass])"); } wat moet ik verandere?? thanks Reageren
Crusher!! Geplaatst: 3 augustus 2009 Rapport Geplaatst: 3 augustus 2009 (bewerkt) simpel |btw: check post time public OnPlayerCommandText(playerid, cmdtext[]) { new idx; GetPlayerName(playerid, playername, sizeof(playername)); new sendername[MAX_PLAYER_NAME]; new giveplayer[MAX_PLAYER_NAME]; new giveplayerid; new cmd[256],tmp[256], tmp2[256]; 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); format(string, sizeof(string), "Account %s Created! You can now login with password: %s.", playername, tmp); SendClientMessage(playerid, COLOR_YELLOW, string); } else { format(string, sizeof(string), "%s already registered.", playername,tmp); SendClientMessage(playerid, COLOR_RED, string); } } return 1; } if(strcmp(cmd, "/login", true) == 0) { GetPlayerName(playerid, playername, sizeof(playername)); if(logged[playerid] == 1) { SendClientMessage(playerid, COLOR_RED, "Already logged in"); return 1; } tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /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, 3 tries left before IPban!."); } else { logged[playerid] = 1; adminlevel[playerid] = dini_Int(udb_encode(playername), "adminlevel"); format(string, sizeof(string), "%s, Succesfully logged in, choose a team, use /commands to view the commands!", playername, adminlevel[playerid], money[playerid]); SendClientMessage(playerid, COLOR_ORANGE, string); } } else { format(string, sizeof(string), "Account doesn't exist %s, Typ /register [wachtwoord] To create an account", playername); SendClientMessage(playerid, COLOR_RED, string); } } return 1; } en bove aan ff new money[playerid]; weghale!!!! Bewerkt: 3 augustus 2009 door Crusher!! Reageren
AddySnow Geplaatst: 3 augustus 2009 Auteur Rapport Geplaatst: 3 augustus 2009 en jah hoor , ik heb weer een vraagje, heeft iemand het script of een link voor, spelers op de map, zodat de rode speler een rood driehoekje zijn en de groene een groen XD thanks Reageren
Big Boss Geplaatst: 3 augustus 2009 Rapport Geplaatst: 3 augustus 2009 http://wiki.sa-mp.com/wiki/SetPlayerColor 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.