Beiträge von Kaliber

    Jaaa, mir ist bewusst, dass dies manuell möglich ist. Aber dafür müsste ja jetzt jedes Tutorial der letzten 13 Jahre geupgraded werden...


    Wäre irgendwie schöner, wenn Woltlab iwi in der Lage wäre den [PWN] Tag direkt zu interpretieren, damit die Seiten wieder schön angezeigt werden.

    Früher im Forum gab es den [PWN] BBCode, der sofort den Code in der Pawn (oder C) Syntax angezeigt hat.


    Viele Tutorials etc (z.B. SQLite | Die alternative zu MySQL) sind immer noch so geschrieben, sehen aber heute scheiße aus deshalb.


    Meine Frage wäre nun, kann man das wieder einführen, dass der existiert uuund dann eben als C-Code interpretiert wird?


    Mit freundlichen Grüßen

    Euer Kalle

    Ja, kann gut sein, dass das dini gar nicht kann, da das = ein key Zeichen ist für dini ^^


    0PfMfYb.gif


    Ist wohl am Einfachsten, wenn du SQLite nutzt, da gibts die Probleme nicht und musst nicht erst eine MySQL Datenbank aufsetzen.

    Musst oben

    if( strcmp( key , "Teamspeak" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pTeamspeak] = strval( val ); }

    Das musst du so schreiben:


    C
    if( strcmp( key , "Teamspeak" , true ) == 0 ) { format(PlayerInfo[playerid][pTeamspeak],128,ini_GetValue( Data )); }

    und oben musst du:


    C
    format(var, 32, "Teamspeak=%s\n",PlayerInfo[playerid][pTeamspeak]);fwrite(hFile, var);

    schreiben.

    Das ist merkwürdig...mach den Server nochmal aus...schau dass das File 1:1 so aussieht, wie du es hier gepostet hattest und mach ihn nochmal an...


    Alsoo bei mir geht es, da liest er das genauso aus...


    Falls es nicht geht (was sein kann), das was ich damals geschrieben hatte ist nicht sonderlich Robust, musst du wohl auf deine dini Speichermethode zurückgreifen.

    Pack mal unter das Load ein:


    C
    printf("%s|%d|%d|%d",TeamSpeakInfo[playerid][playerUID],TeamSpeakInfo[playerid][accepted],TeamSpeakInfo[playerid][acceptcode],TeamSpeakInfo[playerid][playerClientid]);

    Wird das richtig ausgegeben?


    //Edit:


    Ahhh weil du vermutlich das Filterscript erst später lädst? Oder schon auf dem Server warst?


    C
    //Pack das mal zustäzlich unter OnFilterscriptInit
    for(new i=GetPlayerPoolSize(); i!=-1; i--) if(IsPlayerConnected(i)) Load(i,TeamSpeak,TeamSpeakInfo[i]);

    Hmm komisch, damals ging das noch.


    Naja, schreib es so:


    C
    //Dann unter OnPlayerDisconnect
    Save(playerid,_:TeamSpeak,TeamSpeakInfo[playerid]);
    
    //Unter OnPlayerConnect
    Load(playerid,_:TeamSpeak,TeamSpeakInfo[playerid]);

    Hier bietet sich evtl mein Easy-Save Include an: Easy Saving


    C
    //Oben in deinem Filterskript:
    //Halt den Pfad wo die Accounts gespeichert werden sollen angeben: (wichtig den Ordner ts_info in dem Beispiel erst in den scriptfiles erstellen!!!)
    #define PATH "ts_info/%s.ini"
    #include <k_save>
    
    //Dann unter OnPlayerDisconnect
    Save(playerid,TeamSpeak,TeamSpeakInfo[playerid]);
    
    //Unter OnPlayerConnect
    Load(playerid,TeamSpeak,TeamSpeakInfo[playerid]);


    Kannst doch ruhig while nutzen, da bedarf es doch kein for :)

    So zum Beispiel:


    PS: Die richtige Angel Animation ist ApplyAnimation(playerid,!"SAMP",!"FishingIdle",4.1,0,0,0,1,-1,1); Musst den Spieler dafür auch nicht freezen! Das wird über die Animation gemacht (so kann er sich nicht bewegen, aber die Kamera noch bewegen!).

    Ahoi, ich wollte fragen wie man den Befehl so schreibt dass man wenn man z.B. /kick eingibt dass man als Parameter auch den Namen des Spielers angeben kann.

    Einfach sscanf(params,"u",pID) verwenden, also das "u" sorgt dafür, dass sowohl Spielername, als auch playerid verwendet werden kann.


    sscanf sucht dann direkt, ob es einen Spieler mit diesem Namen gibt und übergibt die playerid von dem Spieler an pID (in diesem Beispiel).

    Kaliber Weißt du eventuell weiter?

    Na klar, sry, war den ganzen Tag unterwegs. Schaue nur ab und an am Handy vorbei, das darüber zu erklären ist aber nur mäßig spaßig.


    Also das kannst du einfach so machen:

    C
    new Float:x,Float:y,Float:a,veh=GetPlayerVehicleID(playerid);
    GetVehicleZAngle(veh,a);
    x = floatsin(-a,degrees)/2.0;
    y = floatcos(-a,degrees)/2.0;
    SetVehicleVelocity(veh,x,y,0);

    Je nachdem wie stark der Boost sein soll, kannst natürlich auch die /2.0 entfernen und *2.0 o.ä. machen ^^

    Jetzt habe die abfrage so allerdings funktioniert es nicht er führt die anmiation nicht aus,

    Lösche mal die Zeile aus der Funktion:


    if(!GetPlayerVehicleID(playerid))return 0;


    Musst lernen, was ein print-Debug ist. printe dir jeweils, was die Funktionen zurückgeben und schau, wo der Code hängen bleibt, dann weißt du was passiert.