Freaksken Geplaatst: 3 januari 2010 Rapport Geplaatst: 3 januari 2010 (bewerkt) Ik heb een reportcommand. Ik zou graag willen dat de report in een file wordt opgeslaan. Ik denk dat dat met hulp van dini is, maar ik zou niet weten hoe eraan te beginnen. Het command ziet er zo uit: /report [reportname] [reason] De naam een de reden moeten worden opgeslaan. Bewerkt: 3 januari 2010 door Freaksken Reageren
mosweg Geplaatst: 3 januari 2010 Rapport Geplaatst: 3 januari 2010 (bewerkt) Omdat je met Naam en Reden werkt is het niet zo handig om met Dini te werken omdat het dan ook word overscheven als diegene weer word gereport En de tijd+datum is ook wel handig zodat je precies weet waneer het gebeurt is. Alles klopt niet helemaal, Je moet otherplayer en Reason vervangen door jouwn manier om die te vinden in jouwn command Code: GetPlayerName(playerid,name,sizeof(name)); new File:SaveFile, ip[50], year,month,day, hour,minute,second; GetPlayerIp(playerid,ip,sizeof(ip) ); getdate(year,month,day); gettime(hour,minute,second); GetPlayerName(otherplayer, otherplayer, sizeof(otherplayer)); SaveFile = fopen("Report.txt",io_append); format(string,sizeof(string),"[Report:] [%d.%d.%d %d:%d] By:%s,%s For:%s Reason: %s\r\n",day,month,year,hour,minute, name,ip,otherplayer,reason); fwrite(SaveFile,string); fclose(SaveFile); Als het niet lukt post je eigen command dan even dan kan ik zorgen dat alles klopt. Bewerkt: 3 januari 2010 door mosweg Reageren
Freaksken Geplaatst: 4 januari 2010 Auteur Rapport Geplaatst: 4 januari 2010 (bewerkt) //Report if(strcmp(cmd, "/report", true)==0) { new sendername[MAX_PLAYER_NAME]; new reportname[MAX_PLAYER_NAME]; new reportid; new reason[256]; new string[256]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_BLUE, "Use: /report [reportname] [reason]"); return 1; //Stopt het commando } playerid = strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_BLUE, "Use: /report [reportname] [reason]"); return 1; //Stopt het commando } reason = tmp; GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "Reportmessage from %s(%d): %s: %s!", sendername, playerid, reportname, cmdtext[8]); SendClientMessageToAdmins(COLOR_RED, string); format(string, sizeof(string), "Message send to currently online admins!"); SendClientMessage(playerid, COLOR_WHITE, string); new File:SaveFile, ip[50], year,month,day, hour,minute,second; GetPlayerIp(playerid,ip,sizeof(ip) ); getdate(year,month,day); gettime(hour,minute,second); GetPlayerName(reportid, reportname, sizeof(reportname)); SaveFile = fopen("Report.txt",io_append); format(string,sizeof(string),"[Report:] [%d/%d/%d, %d:%d] By:%s,%s For:%s Reason: %s\r\n",day,month,year,hour,minute, sendername,ip,reportname,reason); fwrite(SaveFile,string); fclose(SaveFile); return 1; } Ik typ: /report N00b daarom Nu krijg ik in de chat: Reportmessage from TrainDriverLS(0): : N00b daarom! Dit moet zijn: Reportmessage from Freaksken(7): N00b: daarom! Dit in Report.txt: [Report:] [4/1/2010, 18:12] By:TrainDriverLS,127.0.0.1 For:TrainDriverLS Reason: daarom Dit moet zijn: [Report:] [4/1/2010, 18:12] By:Freaksken,127.0.0.1 For:N00b Reason: daarom Het ligt denkik hieraan: tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_BLUE, "Use: /report [reportname] [reason]"); return 1; //Stopt het commando } playerid = strval(tmp); PS: TrainDriverLS is een bot met ID 0 PS2: Kijk ook naar de dubbele punten die verkeerd staan in de chat Bewerkt: 4 januari 2010 door Freaksken Reageren
mosweg Geplaatst: 4 januari 2010 Rapport Geplaatst: 4 januari 2010 (bewerkt) Ik krijg het niet eens aan het werk in mijn server. Het lijkt me ook lastig om 2 dingen achter het command te zetten (playerid, reason) Meestal word dat gedaan met dcmd. Tutorial> Tutorial Het command word dan: dcmd_report(playerid, params[]) { GetPlayerName(playerid, playername, sizeof(playername)); format(userfile, sizeof(userfile), "/Account/%s.txt", playername); admin = dini_Int(userfile, "adminlevel"); new string[256]; new otherplayer; // Hierin gaan we het id van de speler opslaan new reason[64]; // Hierin gaan we de reden opslaan if(sscanf(params, "uz", otherplayer, reason)) // Haal de gegevens uit params. u = playerid, z = Reden (optioneel) { // Als er iets ontbreekt ... SendClientMessage(playerid, 0xFF0000FF, "USE: /report <Playerid/PartOfName> <Reason>"); return 1; } if(!IsPlayerConnected(otherplayer)) // Als de ingevoerde speler niet online is ... { SendClientMessage(playerid, 0xFF0000FF, "Player is not online"); return 1; } // Op dit punt is het id van de speler opgeslagen in 'otherplayer' en de reden in 'reason' new PlayerName[MAX_PLAYER_NAME], OtherName[MAX_PLAYER_NAME]; // Variabelen voor de namen GetPlayerName(playerid, PlayerName, sizeof(PlayerName)); // Verkrijg de naam van de admin GetPlayerName(otherplayer, OtherName, sizeof(OtherName)); // Verkrijg de naam van de speler die gekicked wordt); format(string, sizeof(string), "[REPORT:] by: %s(%d) for: %s(%d) Reason: %s.", PlayerName, playerid, OtherName, otherplayer, reason); SendAdminMessage(COLOR_RED, string); print(string); new File:SaveFile, ip[50], year,month,day, hour,minute,second; GetPlayerIp(playerid,ip,sizeof(ip) ); getdate(year,month,day); gettime(hour,minute,second); SaveFile = fopen("Report.txt",io_append); format(string,sizeof(string),"[Report:] [%d/%d/%d, %d:%d] By: %s,%s For: %s Reason: %s\r\n",day,month,year,hour,minute, PlayerName,ip,otherplayer,reason); fwrite(SaveFile,string); fclose(SaveFile); return 1; } Bewerkt: 4 januari 2010 door mosweg Reageren
Freaksken Geplaatst: 5 januari 2010 Auteur Rapport Geplaatst: 5 januari 2010 Neenee, geen dcmd, kben strtok nu gewoon. Ik zal nog eens proberen dan gebaseerd op het jouwe. Reageren
GTAguillaume Geplaatst: 5 januari 2010 Rapport Geplaatst: 5 januari 2010 (bewerkt) Je bent vergeten te checken of de playerid wel online is en strtok slaat maar 1 woord op. EDIT: en waarom probeer je een naam in te vullen als je "playerid = strval(tmp);" gebruikt? Bewerkt: 5 januari 2010 door GTAguillaume 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.