Geplaatst: 29 augustus 200915 jaren comment_1466258 Ik gebruik door mijn hele filterscript heen deze methode om een actie te doen met een andere speler. In vele servers heb ik gezien dat ze een /[command][playerid][reason] hebben. Mij lukt het alleen maar met /[command][playerid] Kan iemand hier mijn code posten alleen dan met reason erachter? Code: if(strcmp(cmd, "/kick", true) == 0) { admin = dini_Int(userfile, "adminlevel"); if(admin == 3 || admin == 4 || admin == 5) { tmp = strtok(cmdtext, idx); giveplayerid = strval(tmp); GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); if(strlen(tmp) == 0) return SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /kick [playerid]"); giveplayerid = strval(tmp); if(!IsPlayerConnected(giveplayerid) || giveplayerid == INVALID_PLAYER_ID) { SendClientMessage(playerid,COLOR_YELLOW," Not a valid ID!"); } else { GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string,256," %s has been kicked by admin %s.",giveplayer,sendername); SendClientMessageToAll(COLOR_YELLOW,string); format(string,256,"kick %d",giveplayerid); SendRconCommand(string); } } return 1; } Alvast bedankt Bewerkt: 29 augustus 200915 jaren door mosweg
Geplaatst: 29 augustus 200915 jaren comment_1466267 Gebruik DCMD. Big Boss geeft in zijn tutorial een perfect voorbeeld van wat jij wilt.
Geplaatst: 29 augustus 200915 jaren Auteur comment_1466290 Die heb ik gezien, maar ik gebruik in mijn hele server cmd, Dus het is makkelijker als het ook met deze methode kan,
Geplaatst: 29 augustus 200915 jaren comment_1466293 Die heb ik gezien, maar ik gebruik in mijn hele server cmd, Dus het is makkelijker als het ook met deze methode kan, Dat gaat een probleem vormen, want als je strtok gebruikt wordt alles gesplitst bij een spatie. Dus kan je reason niet langer zijn als 1 woord, of je moet underscores '_' gebruiken ipv spaties. Óf zet alles nu om naar dcmd, voordat je nog veel meer commands hebt.
Geplaatst: 29 augustus 200915 jaren comment_1466295 Het is toch mogelijk om in cmd een reason te zetten maar inderdaad is het wel beter in dcmd Al gebruik ik het zelf niet erg veel.
Geplaatst: 29 augustus 200915 jaren comment_1466301 Ik heb net de hele PEN gamemode omgezet in dcmd/sscanf, dus jouw moet het toch ook zeker lukken. Multiparam commands met strtok is wel mogelijk, maar vind ik zelf veel lastiger dan sscanf. Zie hiervoor Sandra's tutorial. Voorbeeldje met sscanf: dcmd_kick(playerid, params[]) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "Not authorized!"); new targetid, reason[64]; if(sscanf(params, "us", targetid, reason)) { return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /kick [Playerid/PartOfName] [Reason]"); } format(string, sizeof(string), "You have been kicked for the following reason: %s", reason); SendClientMessage(targetid, COLOR_ORANGE, string); Kick(targetid); return 1; } Hier mist natuurlijk nog een hele hoop (zoals het checken of targetid wel online is), maar dit is gewoon het basis idee.
Geplaatst: 29 augustus 200915 jaren Auteur comment_1466319 Het is mijn grootste Filtersripts (3000) lines, Er staan ook heel veel commands in. Is het ook mogenlijk om een paar commands naar DCMD te veranderen?
Geplaatst: 30 augustus 200915 jaren comment_1466563 Het is mijn grootste Filtersripts (3000) lines, Er staan ook heel veel commands in.Is het ook mogenlijk om een paar commands naar DCMD te veranderen? Ja, je kan ook strcmp en dcmd naast elkaar draaien.
Geplaatst: 30 augustus 200915 jaren Auteur comment_1466813 Oke, ik zal he erin zetten. Ik heb de tutorial nog eens bekeken en het kan ook handig zijn voor de adere commands ( /jail [playerid] [time] [reason] /su [playeid] [reason]) Bij de tutorial staat een download link voor dcmd.inc maar die werkt niet bij mij. Staat die dcmd.inc ook ergens anders
Geplaatst: 30 augustus 200915 jaren comment_1466952 Je kan die dcmd.inc ook zelf maken. Zorg ervoor dat je de code van sscanf en de #define-regel van dcmd hebt. De sscanf code kun je hier vinden en de #define-regel van dcmd hier. Ga naar je SA-mp server-map, open 'pawno' -> 'include' en maak een nieuw bestand. Zorg ervoor dat het nieuwe bestand de .inc-extensie heeft, noem het bestand bijvoorbeeld 'sscanfdcmd.inc'. Open het .inc-bestand en plak de volgende code in het bestand: #if defined _sscanfdcmd_included #endinput #endif #define _sscanfdcmd_included #pragma library sscanfdcmd Verander sscanfdcmd naar de naam die jij gebruikt. Plak nu de #define regel en de sscanf code erin. Ga naar je filterscript en plak bovenaan bij de overige defines de regel: #include <sscanfdcmd> Hierna ben je klaar, de sscanf code en de dcmd-define zullen geladen worden. Edit: Op aanraden van Remi-X code-tag met code toegevoegd, als je dit niet doet schijnt de compiler te crashen.
Ik gebruik door mijn hele filterscript heen deze methode om een actie te doen met een andere speler.
In vele servers heb ik gezien dat ze een /[command][playerid][reason] hebben.
Mij lukt het alleen maar met /[command][playerid]
Kan iemand hier mijn code posten alleen dan met reason erachter?
Code:
Alvast bedankt
Bewerkt: door mosweg