Geplaatst: 3 januari 201015 jaren comment_1563943 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 201015 jaren door Freaksken
Geplaatst: 3 januari 201015 jaren comment_1564027 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 201015 jaren door mosweg
Geplaatst: 4 januari 201015 jaren Auteur comment_1564503 //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 201015 jaren door Freaksken
Geplaatst: 4 januari 201015 jaren comment_1564708 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 201015 jaren door mosweg
Geplaatst: 5 januari 201015 jaren Auteur comment_1565300 Neenee, geen dcmd, kben strtok nu gewoon. Ik zal nog eens proberen dan gebaseerd op het jouwe.
Geplaatst: 5 januari 201015 jaren comment_1565322 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 201015 jaren door GTAguillaume
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:
De naam een de reden moeten worden opgeslaan.
Bewerkt: door Freaksken