Beiträge von Kaliber

    Nette Funktion. Könntest du evtl noch die restlichen Formatierungen einbauen?


    Mhm, ganz ehrlich so wirklich die Nutzung davon würde ich nicht empfehlen :D


    Es funktioniert zwar, jedoch ist eine das simple Makro besser:


    new str2[128];
    #define formatEx(%0,%1,%2,%3) format(str2,128,%2,%3) && SendClientMessage(%0,%1,str2)
    Weil Pre-Prozessor und so ;)


    Ich habe auch gerade einen sscanf Code aus langeweile geschrieben:


    stock sscanf(msg[],alt[],{Float,_}:...) {
    new len=strlen(msg),i,count=1,len2 = (strlen(alt)+2);
    for(; i<len; i++) {
    if(msg[i] == '\0') return 0;
    if(msg[i] != ' ') continue;
    count++;
    if(count > len2) return 0;
    switch(alt[count-2]) {
    case 's': {
    new tmp[32],var;
    for(new l=(i+1); l<32; l++) {
    if(msg[l] == ' ' || msg[l] == '\0') break;
    tmp[var] = msg[l],setarg(count,var,tmp[var]),var++;
    }
    }
    case 'd','i': {
    new tmp[32],var;
    for(new l=(i+1); l<32; l++) {
    if(msg[l] == ' ' || msg[l] == '\0') { setarg(count,0,strval(tmp)); break; }
    tmp[var] = msg[l],var++;
    }
    }
    case 'f': {
    new tmp[32],var;
    for(new l=(i+1); l<32; l++) {
    if(msg[l] == ' ' || msg[l] == '\0') { setarg(count,0,_:floatstr(tmp)); break; }
    tmp[var] = msg[l],var++;
    }
    }
    }
    }
    return true;
    }


    Der Code ist auch um einiges kürzer als der sscanf Code jedoch langsamer, deshalb rate ich auch dazu das Plugin zu benutzen :D
    Das sind von mir hier nur Beispiele wie man es machen könnte, zur kleinen und übersichtlicheren Veranschaulichung der Codes!


    Kaliber hab dafür nen kürtzeren Code den findest du wenn du aufs Profil von "Double-O-Sven" gehst, der hatte das mal irgentwo gepostet.


    Kürzer als 1ne Zeile ist nicht wirklich möglich :wacko:


    mfg. :thumbup:

    Hallo Brotfische,
    Wen man sich einloggt steht Da BYE in der mitte rot und dan Server Closed. ...
    Ich hab es bei M_Bot.inc entfernt geht jedoch immer noch nicht.


    Genial :D


    Drück mal in deinem Skript STRG+F und suche nach BYE und dann lösche da einfach alles ;)


    mfg. :thumbup:

    Aus Langeweile habe ich mal eine Funktion geschrieben, nämlich SendClientMessageEx, sieht so aus:


    stock SendClientMessageEx(playerid,color,msg[],{Float,_}:...) {
    new len=strlen(msg)+32,arg[10][32],args=3;
    for(new i=0; i<len; i++) {
    if(msg[i] == '\0') break;
    switch(msg[i]) {
    case '%': {
    switch(msg[i+1]) {
    case 's': {
    for(new y; y<32; y++) {
    if(getarg(args,y) == '\0') break;
    arg[args][y] = getarg(args,y);
    }
    strdel(msg,i,i+2),strins(msg,arg[args],i,len),args++;
    }
    case 'd','i': format(arg[args],32,"%d",getarg(args,0)),strdel(msg,i,i+2),strins(msg,arg[args],i,len),args++;
    case 'f': format(arg[args],32,"%.1f",getarg(args,0)),strdel(msg,i,i+2),strins(msg,arg[args],i,len),args++;
    default: continue;
    }
    }
    default: continue;
    }
    }
    return SendClientMessage(playerid,color,msg);
    }


    Verwendet man z.B. so:


    SendClientMessageEx(0,0xFF4800FF,"Hallo lieber %s. Test %d %d %d","Kaliber",1,2,3);
    //Output-> Hallo lieber Kaliber. Test 1 2 3


    Nun, in einem Test von mir ist diese Funktion, solange die Wiederholung unter 100 liegt schneller als dieses Makro:
    new str2[128];
    #define formatEx(%0,%1,%2,%3) format(str2,128,%2,%3) && SendClientMessage(%0,%1,str2)


    Wollte nur mal den Code zeigen :)


    mfg. :thumbup:

    Dann sähe das so aus:


    //Unter OnGameModeInit
    SetTimer("Wantedablauf",1000*60*10,1);


    //Der Callback
    forward Wantedablauf();
    public Wantedablauf() {
    for(new i; i<MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i) || !GetPlayerWantedLevel(i)) continue;
    SetPlayerWantedLevel(i, GetPlayerWantedLevel(i)-1);
    SendClientMessage(i,0xFF4800FF,"Dein Wantedlevel ist um 1 zurück gegangen !");
    }
    return 1;
    }


    mfg. :thumbup:

    Bei mir funktioniert es Einwandfrei.


    Dann hast du nicht alles getestet ;)


    Du hast das geschrieben:


    || strfind(RPName, "_", true) == -1)


    und das ist falsch, da es != -1 heißen müsste, damit auch danach gesucht wird ;)


    und meine Version ist kürzer, zu dem hast du 2x GetPlayerName bei dir drinnen ;)


    mfg. :thumbup:

    Naja, nichts wirklich tolles und du hast ein paar Fehler gemacht ^^


    Ich würde dir empfehlen den Callback so zu schreiben:


    public OnPlayerConnect(playerid)
    {
    new RPName[MAX_PLAYER_NAME+1], String[128], bool:count;
    GetPlayerName(playerid, RPName, MAX_PLAYER_NAME+1);
    for(new i; i<10; i++) if(strfind(RPName,i,true) != -1 || strfind(RPName,".",true) != -1 || strfind(RPName,"_",true) != -1) { count = true; break; }
    if(count == true) {
    ShowPlayerDialog(playerid,FEHLER1,DIALOG_STYLE_MSGBOX,"RP Name nicht genehmigt!","{009BFF}Dein RP Name wurde nicht genehmigt, da der '{FFFA00}_{009BFF}' fehlt oder {FEFEFE}Zahlen{009BFF} und {FEFEFE}Sonderzeichen{009BFF} behinhaltet!\n\n{FF3C00}Hinweis:{009BFF} Dein RP Name muss so aussehen: {FEFEFE}Vorname_Nachname","Ok","");
    format(String, sizeof(String), "%s wurde vom Server gekickt. Grund: {FF3C00}RP Name wurde nicht genehmigt!", RPName);
    SendClientMessageToAll(Farbe, String);
    Kick(playerid);
    }
    return 1;
    }


    mfg. :thumbup:

    Müsste er nicht einmal, wenn er den richtigen algorithmus dafür gefunden/genommen hätte :D


    Haha ^^


    Ja der richtige Algorithmus ist dieser hier:


    new days=getdate();
    while(days==days)
    {
    if(days>7) days-=7;
    else break;
    }
    new wochentag[20];
    switch(days)
    {
    case 1: wochentag="Sonntag";
    case 2: wochentag="Montag";
    case 3: wochentag="Dienstag";
    case 4: wochentag="Mittwoch";
    case 5: wochentag="Donnerstag";
    case 6: wochentag="Freitag";
    case 7: wochentag="Samstag";
    }
    Naja, wieder mal was gelernt :)


    mfg. :thumbup:

    Ihr solltet ihm nicht direkt alle auf einmal zeigen wie reif sich die Breadfish Community verhält :whistling:


    To Topic:


    Möge die Macht von Goku mit dir sein ;)


    Herzlich Willkommen :)


    mfg. :thumbup:


    Spoiler anzeigen
    Rechtschreibung

    Dieser Warning kommt immer dann, wenn du in einer Funktion etwas anderes returnst als einen integerwert


    Nein, man kann auch strings returnen ohne das dieser Warning kommt ;)


    Es geht hier um Tags, wie Float: oder bool: ;)


    mfg. :thumbup:

    du kannst erstens kein - returnen (glaube ich) und zweitens kein float


    So ein Quatsch !


    Du kannst ein - returnen und auch einen Float ! :wacko:


    Ich glaub du darfst hinter dem stock kein ":" oder Float machen


    Quatsch ! :wacko:


    Schreibe einfach diesen stock direkt unter deine Includes :)


    mfg. :thumbup: