@EiSgAmEr @PuSchKiiNX @Logan_Adams
Herzlichen Dank für den Beweis, dass ich absolut und unübertroffen beklopt bin. Jetzt fühl ich mich gleich besser
Man kann sich doch mal verlesen O.o
Ne dein Coe würde auch so nicht funktionieren ![]()
MFG
@EiSgAmEr @PuSchKiiNX @Logan_Adams
Herzlichen Dank für den Beweis, dass ich absolut und unübertroffen beklopt bin. Jetzt fühl ich mich gleich besser
Man kann sich doch mal verlesen O.o
Ne dein Coe würde auch so nicht funktionieren ![]()
MFG
Alles anzeigenDu erstellst einen timer und lässt dem Spieler pro minute 5 HP weniger.
Also zb bei OnGameModeInit()
SetTimer("Health",1000*60,true);
dann iwo im script
forward Health();
public Health()
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
SetPlayerHealth(i,GetPlayerHealth(i)-5);
}
}
}
ungetestet müsste aber funktionieren
Desweiteren würde dads hier nicht mal funktionieren.
Such einfach im Script nach nem Timer und schau im entsprechenden Timer Callback nach unds machs einfach raus.
MFG
Das kannst du mit SetObjectMaterialText machen.
http://wiki.sa-mp.com/wiki/SetObjectMaterialText
Du weißt aber, dass kleinerOpa (der schreiber von OCMD) so ziemlich viel bei ZCMD abgeschaut hat und nur das "COMMAND" zu "ocmd" geändert hat
und ich finde ZCMD besser, da es zwei nützliche Callbacks anstelle von OnPlayerCommandText hat und man so nicht auf Gross-/Kleinschreibung achten muss !
mfg.
Es lebe hoch die Propaganda -.- .
Und zum teufel... bei OCMD ist auch nicht Case sensitive. Es war bloß case sensitive bei der 1.0 Version, die hier immer noch so viele haben.
Bei der 2.0 Ist es nicht mehr so.
Außerdem ich weiß , dass der "Begründer" von OCMD Kleiner_Opa heißt. Er war schließlich lange genug Scripter von WC -.-
Hier mal die 2.0 für alle die noch die 1.0 haben
/*---------------------------------------
/--------\ /--------\ /\
| | | | / \
| | | | / \ |-----
| | |--------/ / \ |
| | | |--------| \----\
| | | | | |
\--------/ | | | -----/
OBJECTSTREAMER & MAPEDITOR
VERSION 5.1.1
OCMD MODULE
---------------------------------------*/
/*
OCMD 2.0.0
by kleinerOpa
best command-solution for sa:mp
supports samp 0.2X, 0.3a without OCMD_CHECK_UPDATE function
supports samp 0.3b, 0.3c
WEB: www.kleiner-opa.de
ICQ: 611064955
*/
#include <a_samp>
#if defined OCMD_CHECK_UPDATE
#tryinclude <a_http>
#if !defined HTTP
#error OCMD_CHECK_UPDATE only works with a_http.inc
#undef OCMD_CHECK_UPDATE
#endif
#endif
forward ocmdOnPlayerCommandText(playerid,cmdtext[]);
#if defined OCMD_BEFORE_CALLBACK
forward BeforePlayerCommandText(playerid,cmdtext[]);
#endif
#if defined OCMD_CHECK_UPDATE
forward ocmdCheckUpdate();
forward ocmdCheckUpdate2(index,response_code,data[]);
#endif
#if defined OCMD_BEFORE_CALLBACK
new bool:ocmdBeforeCallback;
#endif
#if defined OCMD_BEFORE_CALLBACK || defined OCMD_CHECK_UPDATE
new bool:ocmdInit;
#endif
#define ocmd:%1(%2) forward ocmd_%1(%2);\
public ocmd_%1(%2)
#define OCMD_VERSION "2.0.0"
public OnPlayerCommandText(playerid,cmdtext[])
{
#if defined OCMD_BEFORE_CALLBACK || defined OCMD_CHECK_UPDATE
if(!ocmdInit)
{
#if defined OCMD_BEFORE_CALLBACK
if(funcidx("BeforePlayerCommandText")!=-1)ocmdBeforeCallback=true;
#endif
#if defined OCMD_CHECK_UPDATE
SetTimer("ocmdCheckUpdate",(60*1000),false);
SetTimer("ocmdCheckUpdate",(60*60*1000),true);
#endif
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);
}
#if defined OCMD_CHECK_UPDATE
public ocmdCheckUpdate()
{
HTTP(1,HTTP_GET,"www.kleiner-opa.de/sc/ocmd.txt","","ocmdCheckUpdate2");
}
public ocmdCheckUpdate2(index,response_code,data[])
{
if(strlen(data)&&strcmp(OCMD_VERSION,data)!=0)
{
new ocmdStr[128];
format(ocmdStr,sizeof ocmdStr,"An update for OCMD is available (version %s) - www.kleiner-opa.de",data);
print(ocmdStr);
for(new i;i<MAX_PLAYERS;i++)if(IsPlayerAdmin(i))SendClientMessage(i,0xD3D3FFFF,ocmdStr);
}
}
#endif
#define OnPlayerCommandText ocmdOnPlayerCommandText
Alles anzeigenstrcmp ist eine Standart Funktion die erstmal garnichts mit Befehlen zu tun hat, sie vergleicht nur 2 Strings miteinander und prüft ob diese gleich sind.
Aber was ocmd, zcmd, dcmd angeht, dann muss ich dir recht geben das das definitiv zu viele xcmds sind
Dennoch hat jedes seine Vorteile, bis auf ocmd, was definitiv das langsamste ist
dcmd = Ressourcen sparend
zcmd = schnell
und die anderen cmd Arten haben auch ihre Vorteile
mfg.
*hust*
Wieso zum Teufel ist OCMD das langsamste ?
Es ist schneller als DCMD und ZCMD keine Ahnung.
Jedoch ist es NICHT das langsamste und OCMD ist auch sehr übersichtlich ![]()
MFG
nein eine schleife machen
und abfragen ob sich die tore nicht bewegen
Wozu braucht er jetzt hier ne Schleife ?
Wenn er SetTimerEx benutzt hat er doch bereits den Parameter playerid zur Verfügung
Wozu auch noch die Abfrage ob sich die Tore "bewegen" ![]()
Du musst zur Übergabe von parametern SetTimerEx verwenden.
Ändere deinen SetTimer zu:
SetTimerEx("autotor",500,1,"i",playerid)
Ich denke mal schon, du nutzt Variablen als "Zwischenspeicher" und dann wenn der Spieler disconnectet lässt
du den SpielerSpeichern Stock ausführen und speicherst dann die Variable in deiner SPielerdatei.
MFG
Ja das geht aber ich will mehrere Textdraws in einer Box und so geht das dann nciht.
Ich kann z.B TextDraw Boxen Nur in der horizontalen "länger" machen jedoch nicht auf der Y Achse nach oben und unten.
MFG
Hey Leute,
hier wollte ich mal fragen ob es noch einen anderen TextDrawEditor neben der 1.0 und 0.6 von Zamarov gibt.
Der von ihm ist zwar ziemlich gut, jedoch ist die Box Funktion buggy, d.h. ich kann TextDrawBoxen nicht richtig erstellen,
und das benötige ich jetzt .
Danke im Voraus
MFG
Füge erstmal den .pwn Code gescheit ein.
Du fügst dein Code einfach ins Textfeld im Editor ein.
Dann switchst du auf Editor markierst den Code und drückst auf den Button oben pwn.
Dann abchicken!
Weil so koenen wir dir nicht helfen!
MFG
Alles anzeigenStimmt, lol.
Du würdest ja auch nicht den 100€ Schein nehmen, wenn du einen 200-er kriegen könntest, obwohl er dreckig ist. Diesen würdest du lieber reinigen lassen.
Könnte es ggf. auch am SpielerName liegen? Wie sieht die Funktion da aus? Nicht dass da irgendwo ein \n \0 oder so ist :p
Ansonsten einfach sscanf neu runterladen (inkl. include), in include ordner von pawn reinhauen und neu compilen.
ps: bei mir geht sscanf2 natürlich... @msk
Danke für die Nachfrage.
Aber: Das Problem wurde mittlerweile gelöst.
einfach [LAENGE] hinzugefügt.
//close
damit du keine probleme hast?...
Ich bin ja hier um das Problem zu lösen
und nicht um es zu umgehen ![]()
Außerdem denke ich, dass sscanf2 genauso gehen würde.
MFG
benutze einfach den sscanf stock und nicht plugin ;d
den stock findest du auf samp wiki
Wieso sollte ich ?
Immerhin ist sscanf2 stabiler.
MFG
Alles anzeigen@Antony_Morvai, hast du ein an der Waffel ?
Aus dem GF Kopiert und es ist nicht mal leichter.
Keine Ahnung aber mitreden wollen...
Versuch es so:
ocmd:o(playerid,params[])
{
new msg;
if(sscanf(params,"s[128]",msg))return SendClientMessage(playerid,ROT,"Benutzung: /o(oc) [Nachricht]");
if(ochat == true) {
format(msg,sizeof msg,"(( %s: %s ))",SpielerName(playerid),msg);
SendClientMessageToAll(WEISS,msg);
}
else {
if(IstSpielerAdmin(playerid,1)) {
format(msg,sizeof msg,"(( %s: %s ))",SpielerName(playerid),msg);
SendClientMessageToAll(WEISS,msg);
}
else {
SendClientMessage(playerid,ROT,"Der O-Chat ist derzeit geschlossen. Nur Leute aus dem Adminteam können ihn benutzen.");
}
}
return true;
}
//Edit:
Wie es aussieht liegt es an sscanf.
Hier bekommen wir ein Warning in der Server Konsole:
[09/08/2012 18:28:05] sscanf error: System not initialised.
Und ja: Plugins eingetragen und .inc drinne ![]()
OK hier z.B der O-Befehl.
Ist nichts außergewöhnliches , die String Länge stimmt ja.
ocmd:o(playerid,params[])
{
new msg[128];
if(sscanf(params,"s",msg))return SendClientMessage(playerid,ROT,"Benutzung: /o(oc) [Nachricht]");
if(ochat == true) {
format(msg,sizeof msg,"(( %s: %s ))",SpielerName(playerid),msg);
SendClientMessageToAll(WEISS,msg);
}
else {
if(IstSpielerAdmin(playerid,1)) {
format(msg,sizeof msg,"(( %s: %s ))",SpielerName(playerid),msg);
SendClientMessageToAll(WEISS,msg);
}
else {
SendClientMessage(playerid,ROT,"Der O-Chat ist derzeit geschlossen. Nur Leute aus dem Adminteam können ihn benutzen.");
}
}
return true;
}
Hey Leute,
wir arbeiten derzeit an einem Script.
Jedoch gibt es Probleme wenn man z.B Befehle mit Stringparametern macht.
Wenn ich z.B per /o [Text] Ingame schreibe werden nur ca. 14 Zeichen zugelassen, wenns länger ist wirds einfach weggelassen.
Die Stringlänge ist auch auf 128, so viel unterstützt ja nur die SAMP Chatbox, also weiß ich nicht wo das Problem sein könnte.
Bitte um Hilfe!
Danke im Voraus
MFG
Deutsch
Englisch
Latein ( Schreiben und LEsen , aber nicht sprechen)
Hm da sich der Server beendet wird höchstwarscheinlich iwas im Gamemode stehen, was ihn zum Absturz bringt.
Besorg dir mal das Plugin Crashdetect und lass es mal drüber laufen und schau was dort "gesagt" wird.
MFG