Kommt drauf an, wo das dann steht...
Beiträge von Kleiner Opa
-
-
-
-
Mellnik: Naja gut, ist natürlich Ansichtssache, vielleicht etwas arrogant^^ aber was solls, das steht da schon seit v1, also hab ichs da gelassen.
-
ocmd 2.1.1
ocmd ist eine Include, mit der sich Commands um einiges einfacher scripten lassen. Statt sämtliche Commands unter OnPlayerCommandText auflisten zu müssen, kann einfach irgendwo im Script eine Funktion gescriptet werden.
ocmd funktioniert am besten zusammen mit sscanf.Mit ocmd können auch große Scripts mit hunderten Commands problemlos und schnell ausgeführt werden.
Anwendung
Zunächst musst du die ocmd-include downloaden, in deinen include-Ordner verschieben und dann auch in deinem Script auslesen:
#include <ocmd>Ein einfacher Command mit ocmd sieht in etwa so aus:
ocmd:test(playerid,params[])
{
SendClientMessage(playerid,0xffffffff,"Du hast /test eingegeben");
return 1;
}Mit sscanf können auch Parameter abgefragt werden:
ocmd:lotto(playerid,params[])
{
new lottoNummer;
if(sscanf(params,"d",lottoNummer))return SendClientMessage(playerid,0xff0000ff,"Nutze /lotto [zahl]");
printf("Spieler %d hat sich Lotto-Nummer %d gekauft",playerid,lottoNummer);
return 1;
}Profi-Funktionen
Spoiler anzeigen Profifunktionen können per #define vor dem #include <ocmd> aktiviert werden.Spoiler anzeigen Mit OCMD_BEFORE_CALLBACK kann ein zusätzliches Callback aktiviert werden, mit dem z.B. überprüft werden kann, ob ein Spieler gemuted wurde - returnt dieses Callback 0, wird kein Command ausgeführt:
#define OCMD_BEFORE_CALLBACK
#include <ocmd>Spoiler anzeigen //...Spoiler anzeigen public BeforePlayerCommandText(playerid,cmdtext[])
{
if(GetPVarInt(playerid,"muted"))
{
SendClientMessage(playerid,0xff0000ff,"Du bist gemuted");
return 0;
}
return 1;
}Spoiler anzeigen Mit OCMD_COMMAND_LOG kann dafür gesorgt werden, dass Commands wie der Chat in der server_log.txt auftauchen:
#define OCMD_COMMAND_LOG
#include <ocmd>Tipp: Mit z.B. #define OCMD_COMMAND_LOG_FORMAT "[Servername] ** %s: %s" kann das Format des Logs beliebig geändert werden. Hierbei wird das erste "%s" stets durch den Spielernamen und das zweite "%s" durch den eingegebenen Command ersetzt. #define OCMD_COMMAND_LOG_FORMAT muss dabei auch stets vor dem #include <ocmd> stehen.Spoiler anzeigen Mit ocmd@ können für einen Command mehrere Namen festgelegt werden. Hierbei muss hinter dem @ zunächst die Anzahl der Namen folgen, dann ein ":" und dann die durch ein Komma getrennten Namen:ocmd@2:help,hilfe(playerid,params[])
{
SendClientMessage(playerid,0xffffffff,"Du hast /help oder /hilfe eingegeben");
return 1;
}Spoiler anzeigen ocmd@3:hallo,servus,bonjour(playerid,params[])
{
SendClientMessage(playerid,0xffffffff,"Du hast /hallo, /servus oder /bonjour eingegeben");
return 1;
}Info: Diese Funktion ist aktuell auf maximal 4 Command-Namen begrenzt.Changelog
2.0.2 (8.1.2013)
- Offizielle Unterstützung von SA:MP 0.3x2.0.3 (28.5.2013)
- ALS-Hook (Verbesserte Kompatiblität zu anderen Includes)2.1.0 (24.7.2013)
- ocmd@-Syntax für mehrere Commands mit einer Funktion (siehe Profi-Funktionen)2.1.1 (3.11.2013)
- OCMD_COMMAND_LOG_FORMAT kann genutzt werden, um das Verhalten von OCMD_COMMAND_LOG anzupassen (siehe Profi-Funktionen)
- Verbesserte Kompatiblität zu anderen Includes und ScriptsDownload
Download der .inc
Pastebinmit freundlichen Grüßen, k.O.
-
Ne, das ist nicht das Problem, sieht aus, als wäre das ganze in einer Schleife -> "break;" nach "SendClientMessageToAll"!
-
Aktuellste:/*
OCMD 2.0.1
by Kleiner Opa
best command-solution for sa:mp
supports samp 0.2X, 0.3a, 0.3b, 0.3c, 0.3d, 0.3e
email: fisch70000@gmail.com
http://forum.sa-mp.de/index.php?page=User&userID=24998
*/#include <a_samp>
forward ocmdOnPlayerCommandText(playerid,cmdtext[]);
#if defined OCMD_BEFORE_CALLBACK
forward BeforePlayerCommandText(playerid,cmdtext[]);
new bool:ocmdBeforeCallback,bool:ocmdInit;
#endif#define ocmd:%1(%2) forward ocmd_%1(%2);\
public ocmd_%1(%2)public OnPlayerCommandText(playerid,cmdtext[])
{
#if defined OCMD_BEFORE_CALLBACK
if(!ocmdInit)
{
if(funcidx("BeforePlayerCommandText")!=-1)ocmdBeforeCallback=true;
ocmdInit=true;
}
#endif
new ocmdStr[32]="ocmd_",
i=1,
#if defined OCMD_COMMAND_LOG
ocmdName[MAX_PLAYER_NAME],
#endif
bool:ocmdNoParams;
#if defined OCMD_COMMAND_LOG
GetPlayerName(playerid,ocmdName,sizeof ocmdName);
printf("[cmd] [%s]: %s",ocmdName,cmdtext);
#endif
#if defined OCMD_BEFORE_CALLBACK
if(ocmdBeforeCallback&&!CallLocalFunction("BeforePlayerCommandText","ds",playerid,cmdtext))return 1;
#endif
for(;i<128;i++)
{
if(!cmdtext[i]||cmdtext[i]==' ')
{
if(!cmdtext[i]||!cmdtext[i+1])ocmdNoParams=true;
break;
}
ocmdStr[i+4]=tolower(cmdtext[i]);
}
if(!ocmdNoParams&&CallLocalFunction(ocmdStr,"ds",playerid,cmdtext[i+1]))return 1;
if(ocmdNoParams&&CallLocalFunction(ocmdStr,"ds",playerid," "))return 1;
return CallLocalFunction("ocmdOnPlayerCommandText","ds",playerid,cmdtext);
}#define OnPlayerCommandText ocmdOnPlayerCommandText
-
MySQL-Tabelle würde ich spontan sagen, ansonsten einfach beim Spieler die PVar "auto" (z.B.) auf das Kennzeichen setzen, und beim Auto im File o.ä. den Spielernamen mitspeichern...
-
Musst halt bei CreateVehicle das Ding in nem Array speichern und dann per if(...==GetPlayerVehicleID(playerid)) abfragen...
-
Im /buycar-Befehl einfach nach RemovePlayerFromVehicle(playerid); das einfügen: break;
Dann fehlt aber auch am Anfang der Schleife noch die Abfrage, ob der Spieler im richtigen Auto sitzt, sonst kauft er immer ID 0
-
Abundzu sende ich mir mal Notizen zu von daher...
Dann halt einfach als "Entwurf" speichern... war aber ja auch nur ne Idee^^ -
Schleife nach Verkauf mit break; abbrechen!
-
Spontan: Sperr deine eigene Email, du musst dir ja nichts selbst senden...
-
Das sind wohl keine Rechtecke (wäre zu aufwendig), sondern ein Textdraw mit dem Inhalt "~g~IIIIIIIII~l~I"
-
Ganz einfach: erst amx, dann zahlen, dann pwn, aber ist jetzt auch nicht mein Problem^^
-
Ich machs auch gerne, schreib mir ne PM. ( Symbol links)
-
Hast du BWL in der Schule??
-
Sieht so aus, als würdest du 3 Klammern aufmachen, aber 4 zu...
-
Antwort auf beide deine Fragen: Scripte dir doch selbst ein /carlock-System, dann entspricht es genau deinen Ansprüchen und du hast etwas, das du scripten kannst.
-
Kenne mich damit nicht 100%ig aus, aber es kann sein, dass er den Downgradepatch braucht...