Beiträge von Kaliber

    Das kannst du so machen:


    new string[12];
    getdate(string[0], string[1], string[2]);
    format(string, sizeof string, "%02d/%02d/%d", string[2], string[1], string[0]);


    mfg. :thumbup:

    Man muss erstmal sehen wir sich der Server entwickelt etc.
    Wenn ihr nicht mal den Server VOLL testen tut,
    dann habt ihr Pech. Langsam geht die Community hier echt den Berg ab.


    Selbst bei einer Open Beta...sollte das Script schon "ein wenig" spielbar sein...aber das war ja eine Katastrophe...


    Also so wie ich das sehe, sind einige Personen im Forum schon fast 2 Jahre registriert. Daraus schließt man doch, dass das Projekt selbst schon so fast 2 Jahre alt ist.
    Folglich wird an diesem Script schon fast 2 Jahre gearbeitet...und was da bis jetzt rauskam, war eine Katastrophe.
    Ich meine...allein dass der /starbonus Befehl nicht klappt, die Missionen ab der 2. Mission nicht mehr funktionieren oder das Tutorial hängt, die Spawn-Button buggen...etc
    Und das sind lediglich die Anfangs Bugs...man wird doch wohl in 2 Jahren mal in der Lage sein, ein vernünftiges Login-System zu schreiben und da gibt es auch eig keine Ausreden für!


    mfg.

    Schreib es so:


    COMMAND:ooc(playerid, params[])
    {
    if(!params[0]) return SendClientMessage(playerid,-1,"Verwendung: /ooc [Text]");
    new string[144];
    format(string, sizeof(string), "{00FFFF}[OOC]{ffffff} %s{ffffff} sagt: %s", playerInfo[playerid][CharName], params);
    return SendClientMessageToAll(COLOR_WHITE, string);
    }


    mfg. :thumbup:

    Also ich habe es mal getestet, hier so funktioniert es:


    stock ConvertCentMoney(Float:geld) {
    new str[32],i,tmp[16];valstr(str,floatround(geld)),i=(geld > 0) ? strlen(str)-3 : strlen(str)-4;
    for(; i>0; i-=3) strins(str,".",(geld > 0) ? i : i+1,24);
    format(tmp,sizeof tmp,"%.02f",geld),strmid(tmp,tmp,strfind(tmp,".")+1,strlen(tmp),sizeof tmp);
    return strcat(str,","),strcat(str,tmp),str;
    }


    //Beispiel wie ich es getestet habe:
    new Float:money = 39931.42;
    printf("%s$",ConvertCentMoney(money));
    //-> Output: 39.931,42$


    //Edit: Ich sag mal so wie es ist, wenn man zu große Float Variablen benutzt, dann kann Pawn das nicht mehr richtig verarbeiten! Also, nutze doch einfach 2 Variablen als int...


    mfg. :thumbup:

    Also wenn du irgendwelche Mods o.ä. hast, einfach mal deinstallieren.


    Und naja das kann an Objekten liegen, entweder die DrawDistance von den Objekten ist zu hoch, dann kann es zu einem Problem kommen (also stell die mal Testweise n bissl runter) oder du benutzt sehr oft sehr große Objekte, dass kann auch zu einem Fehler führen.


    mfg. :thumbup:

    Die Z Position die OnPlayerClickMap ausspruckt ist idR keine gültige Höhe auf der Map, so dass man mit dem Fahrzeug fallen würde.


    Das ist wohl richtig, allerdings hat der Ersteller der Include das ja selbst so gemacht, ich wollte lediglich aufzeigen, dass es ein wenig besser geht...ohne so viele Variablen..etc


    Nun, man könnte hier auch SetPlayerPosFindZ machen und dann die Position des Spielers nehmen und dann das Auto setzen. Richtig, dass wäre am Besten ;)


    Wenn das jemanden stört, kann er das ja so machen oder das MapSanAndreas Plugin nutzen :)


    mfg. :thumbup:

    Also, man kann das auch einfach so schreiben:


    #include <a_samp>
    static bool:active[MAX_PLAYERS char];
    public OnFilterScriptInit() return print("\tMap Teleporter Loaded. Edited by Kaliber");
    public OnPlayerConnect(playerid) return active{playerid}=false;
    public OnPlayerCommandText(playerid, cmdtext[]) {
    if(!strcmp(cmdtext, "/mapteleport", true)) {
    if(!active{playerid}) return SendClientMessage(playerid, -1, "Du hast den Map Teleporter {00FF40}aktiviert{FFFFFF}!"),active{playerid}=true,1;
    return SendClientMessage(playerid, -1, "Du hast den Map Teleporter {FF0000}deaktiviert{FFFFFF}!"),active{playerid}=false,1;
    }
    return 0;
    }
    public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ) {
    if(!active{playerid}) return 1;
    return (IsPlayerInAnyVehicle(playerid)) ? SetVehiclePos(GetPlayerVehicleID(playerid), fX, fY, fZ) : SetPlayerPosFindZ(playerid, fX, fY, fZ);
    }


    Das return 0; bei OnPlayerCommandText ist wichtig und strcmp gibt 0 zurück, wenn der Befehl übereinstimmt...und leere if-Abfragen sind sinnlos..logischerweise :D


    //Edit:
    Dome_:
    FaMezZz:
    Versucht mal diese Version ;)


    mfg. :thumbup:

    Schreibs mal so:


    ocmd:r(playerid,params[])
    {
    if(AFK[playerid]) return SendClientMessage(playerid,ROT,"Du kannst keine Befehle verwenden solange du AFK bist.");
    if(isPlayerInFrakt(playerid,0)) return SendClientMessage(playerid,ROT,"Du bist nicht befugt diesen Befehl zu benutzen.");
    if(!SpielerInfo[playerid][pFraktion] || SpielerInfo[playerid][pFraktion] > 3) return SendClientMessage(playerid,ROT,"Du bist nicht befugt diesen Befehl zu benutzen.");
    if(!params[0]) return SendClientMessage(playerid,DUNKELGRAU, "Benutzung: /r [Text]");
    new string[144];
    if(SpielerInfo[playerid][pRang] == 7) format(string,144,"** Leitung '%s': %s",SpielerName(playerid),params);
    else format(string,144,"** Rang %d '%s': %s",SpielerInfo[playerid][pRang],SpielerName(playerid),params);
    for(new i; i<MAX_PLAYERS; i++) {
    if(!isPlayerInFrakt(i, SpielerInfo[playerid][pFraktion])) continue;
    SendClientMessage(i, 0x7B89FFFF, string),Frakchatlog(string);
    }
    return 1;
    }


    Wenn das nicht klappt liegt der Fehler in der Funktion "Frakchatlog" ;)


    mfg. :thumbup:

    Habe es nur bis jetzt immer so gemacht.


    Ja...aber es ist dann halt anders sortiert :D


    for(new i; i<5; i++) {
    format(string,sizeof string,"Hallo ID: %d|%s",i,string);
    }


    /*
    Gibt aus:
    Hallo ID: 4|Hallo ID: 3|Hallo ID: 2|Hallo ID: 1|Hallo ID: 0|
    */


    //Und mein/unser Code gibt aus:


    for(new i; i<5; i++) {
    format(string,sizeof string,"%sHallo ID: %d|",string,i);
    }


    /*
    Gibt aus:
    Hallo ID: 0|Hallo ID: 1|Hallo ID: 2|Hallo ID: 3|Hallo ID: 4|
    */


    mfg. :rolleyes:

    Schreib es so, dass ist wesentlich besser und richtiger:


    dcmd_admins(playerid,params[])
    {
    #pragma unused params
    new string[128];
    for(new i; i < MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i) || !AccInfo[i][Level] || AccInfo[i][Hide]) continue;
    format(string, sizeof string, "%sAdmin %s (ID: %i)- Level %d - %s\n",string,PlayerName2(i),i, AccInfo[i][Level],(!AccInfo[i][OnDuty]) ? ("Busy") : ("Available"));
    }
    if(!string[0]) return ShowPlayerDialog(playerid,NO_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins","\n\n\n\nThere are no admins online.","Close","");
    return ShowPlayerDialog(playerid,DIALOG_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins",string,"Close","");
    }


    mfg. :thumbup:

    Fabi.StaR:


    Hier eine etwas kompaktere Funktion, die mehr deinen Wünschen entspricht:


    stock EditName(name[]) {
    static delimiter[][] = {"_",".",","},i,pos; //Du kannst das Array beliebig fortführen
    for(; i<sizeof delimiter; ++i) {
    pos = strfind(name,delimiter[i]);
    if(pos == -1) continue;
    name[pos] = ' ';
    }
    return name;
    }


    mfg. :thumbup: