also ich möchte meine eigenen STROK befehle machen, aber wie geht STROK? hab STROK schon im script, aber ich weiß net wie man ein befehl mach zb: /sayhello [ID] also das er zu "ID" dann hallo sagt!
bitte NICHT den code posten, ich wills ja verstehen! danke
wie funtzt STROK?
- SUCK_MY_DICK
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
-
aaaaaaaja ... ich guck mal rein danke schonmal!
EDIT: totaler müll, da versteht doch keiner was wenn man damit noch nie zutun hatte
PLS HELP
-
Les es dir doch einmal genau durch. Am Anfang erscheint alles schwer. Aber sobald es *Klick* gemacht hat kann man Commands mit 3 Parametern mit Leichtigkeit in nichtmal 2 Minuten schreiben.
-
habs mal 10 min angeguckt: *hust* NIX klick kannsu es mir biiiiiiiiiiitte, ich biiiiiiiitte dich(!!) zusammenfassend erklären? ;(;(;(;(;(
MfG
Kitarou!
-
new cmd[256],tmp[128],idx;
cmd = strtok(cmdtext, idx); // cmdtext + den Index also z.b. /meinwert ist der cmd und der index ist die Leerstelle und dein Wert dahinter
if (strcmp(cmd, "/meinwert", true) ==0 )
{
tmp = strtok(cmdtext,idx); // tmp gibt den Index wieder
if(!strlen(tmp)){ return 1} // Entspricht der wert also einem Leerem also nix beendet er die Funktion
new wert[64];
format(wert,sizeof(wert),"Dein Wert %s",tmp);
GameTextForPlayer(playerid,wert,2000,1);
return 1;
}mehr kann ich eig. nicht sagen ausser das du wenn du mehrere Index haben willst
den wert zwischen Speichern musst da er Später verwendet werden soll und danach nochmal tmp = strtok(cmdtext,idx); hin muss
aber ich empfehle dir die von Klinsen vorgeschlagene Methode -
Also:
Als allererstes brauchst du das dcmd Makro. Das fügst du einfach ganz oben ins Script ein, und vergisst es.
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1Dann schreibst du unter das Callback "OnPlayerCommandText(playerid, cmdtext[])" deinen Command in dieser Form:
dcmd(mycommand, 9, cmdtext);
"mycommand" ist dein Command. Die 9 signalisiert die Länge des Commands ohne Parameter. cmdtext zeigt nur an wo der Command erstellt wird.So, dann fügst du, außerhalb eines jeden Callbacks das hier in dein Script ein:
dcmd_mycommand(playerid,params[])Der erste Parameter, "playerid", ist der User der den Command ausführt. Der zweite Parameter enthält das was der Spieler eingibt wenn er den Command ausführt. Z.B. /mycommand 123. Dann enthält "params" 123.
Dann erstellen wir einfach einmal einen simplen Kick Command.
Als erstes erstellen wir das Grundgerüst des Commands: In diesem Fall: dcmd(kick,4,cmdtext);.
Als nächstes erstellen wir den eigentlichen Command.
Der würde so aussehen:
dcmd_kick(playerid, params[]) {
new target = strval(params); // Zeigt an dass "target" ein Wert ist
if(!strlen(params)) {// Was passiert wenn wir nichts eingeben nach dem /kick, also "params" leer lassen:
return SendClientMessage(playerid, 0xFF0000FF, "Benutze /kick [PlayerID].");
}
if(!IsPlayerConnected(target)) { // Wenn "target" nicht online ist.
return SendClientMessage(playerid, 0xFF0000FF, "Angegebener User ist nicht online!");
}
Kick(target); // Hier kicken wir "target".
SendClientMessage(playerid, 0xFF0000FF, "Ziel wurde gekickt.");
return 1;
}So, jetzt haben wir einen simplen, aber effektiven Kick-Command.
sscanf erkläre ich dir entweder morgen oder du schaust dir Goldkillers Tutorial nochmal an.
-
breadfish.de
Hat das Thema geschlossen.