Beiträge von Jeffry

    Der Code ist ja auch nicht richtig.


    stock SetPlayerSpeed(playerid, Float:_speed, Float:_isspeed){
    if(playerid == INVALID_PLAYER_ID)return INVALID_PLAYER_ID;
    else if(IsPlayerNPC(playerid))return 1;
    else if(IsPlayerInAnyVehicle(playerid))return 1;
    else if(!Sprinted[playerid])return 1;
    new Float:x1, Float:y1, Float:z1, Float:a;
    GetPlayerVelocity(playerid, x1, y1, z1);
    GetPlayerFacingAngle(playerid, a);
    return SetPlayerVelocity(playerid, x1*(1+(1/(1+(_speed/_isspeed)))), y1*(1+(1/(1+(_speed/_isspeed)))), z1);
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & KEY_SPRINT)Sprinted[playerid] = true;
    else Sprinted[playerid] = false;
    return 1;
    }


    public OnPlayerUpdate(playerid)
    {
    if(!IsPlayerInAnyVehicle(playerid) && Sprinted[playerid])
    {
    new Float:speed;
    GetPlayerSpeed(playerid, speed);
    if(speed > 20 && speed < 40)SetPlayerSpeed(playerid, 40.0, speed);
    }
    return 1;
    }


    Ich hab's jetzt mal so gemacht. Besser hab ich es auf die Schnelle nicht hinbekommen, kannst ja noch dran rumspielen.

    Ich wollte eigentlich die Geschwindigkeit des Spielers erhöhen (wenn er läuft)..
    Ich würde davor einfach deinen Code bearbeiten und es testen..
    Aber ist es denn moeglich, sie zu erhöhen?


    Ja, erhöhen kannst du die Geschwindigkeit. Wie das dann aussieht ist die andere Frage.
    http://wiki.sa-mp.com/wiki/SetPlayerVelocity


    Dürfte aber machbar sein, wenn du den Code von mir abänderst. Wenn du Fehler bekommst, poste einfach nochmal.

    while(mysql_fetch_row_format(string) == 1)
    {
    print(string);
    sscanf(string,"p<|>s[32]s[32]d",besitzer,text,id);
    format(str,sizeof str,"%sSpieler: %s (ID: %d) | Text: %s\n",str,besitzer,id,text);
    print(str);
    }


    Was wird geprintet wenn du das so laufen lässt?



    Edit:
    DJ Deagle: Gut, dass du den Fehler selbst gefunden hast als du es debuggt hast!

    sscanf(string,"p<|>s[32]ds[32]",besitzer,id,text);


    Das meint er. Das muss so sein:
    sscanf(string,"p<|>s[32]s[32]d",besitzer,text,id);



    Und
    if(strlen(str) < 1)


    Zu
    if(strlen(str) > 0)

    Sorry, habe vergessen zu erwähnen, bzw deutlichzuschreiben (wie auch immer das geschrieben wird), dass ich die Geschwindigkeit eines Spielers erhöhen will.. Deswegen auch "SetPLAYERSpeed", aber anscheinend sollte ich mich besser ausdrücken..


    Also dann nochmal von neu, ist das auch möglich?


    Willst du ihn schneller laufen lassen, oder soll es im Auto funktionieren?
    Den Code, so wie ich ihn dir gegeben habe, erhöht die Geschwindigkeit des Spielers im Auto, wenn eine bestimmte Geschwindigkeit erreicht wurde, und hält sie, solange du das Gas drückst.
    Die Funktion von Prototypel wird dir nur einen kurzen boost geben.

    new Float:a1, Float:a2;
    GetPlayerFacingAngle(playerid, a1);
    GetPlayerFacingAngle(player1, a2);
    if(floatabs(a1 - a2) < 170 || floatabs(a1 - a2) > 190)
    {
    //playerid schaut player1 nicht direkt an.
    }


    Du musst eben noch abfragen, ob der Spieler in der Nähe des anderen Spielers ist, und wenn ja, ob er auch vor dem Spieler steht.
    Vor dem Spieler fragst du so ab: if IsPlayerInRangeOfPoint und zwar von der PosVorSpieler (http://forum.sa-mp.de/gta-mult…eschnipsel-56#post1890617)
    Solltest du hinbekommen.

    Gibt es eine FERTIGE Funktion, mit der man die Geschwindigkeit des Spielers erhöhen kann?


    Ich denke nicht.
    Ich hab aber vor geraumer Zeit mal was gemacht, das ist zwar nicht perfekt, da ich nur probieren wollte ob es überhaupt machbar ist, aber es funktioniert: http://forum.sa-mp.de/gta-mult…hnelligkeit-2#post1694731 Eigentlich wollte ich daran weiterarbeiten, aber ich habe nie wirklich die Zeit dazu gefunden, aber so weit funktioniert es. Du musst es vielleicht in Teilen abändern, aber das dürfte nicht all zu schwer werden.

    Auf Anfrage in PN:


    Er soll mal seinen Anti-Virus ausschalten, das hat mir auf meinem Win8 Tablet Probleme gemacht, weil es einfach Dateien gelöscht hat, danach ging es bei mir wieder.
    Falls das nicht hilft, poste mal was im server_log steht, und mache am besten das crashdetect Plugin an, das gibt zusätzliche Infos.

    Nimm den "root" Benutzer ohne Passwort:


    #define MYSQL_HOST "127.0.0.1"
    #define MYSQL_USER "root"
    #define MYSQL_PASS ""
    #define MYSQL_DATA "DATENBANKNAME"


    Das ist in 99% aller Fälle standardmäßig so eingestellt.
    Dein user "samp" wird nicht die richtigen Berechtigungen haben, dass ist auf localhost (dein Rechner) so eingestellt, standardmäßig zumindest.
    Deshalb benutze, wie ich oben geschrieben habe, den root - User ohne Passwort, der hat ALLE Berechtigungen. Dem kannst du später auch, je nach Client, ein Passwort geben.

    Warum geht das nicht?


    public OnPlayerText(playerid, text[])
    {
    if(realchat)
    {
    new str[144],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    new pos = strfind(name, "."), pos1 = strfind(name, "_");
    if(pos != -1) name[pos] = ' ';
    else if(pos1 != -1) name[pos1] = ' ';
    format(str, sizeof(str),"%s sagt: %s",name,text);
    ProxDetector(20.0, playerid, str,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
    return 0;
    }
    return 1;
    }


    Du hast strfind vor GetPlayerName benutzt.

    Wie sieht es damit aus?
    mysql_format(DBHandle, query, sizeof(query),"UPDATE `Accounts` SET `pAlter` = '%d', `pBargeld` = '%d', `pKontoguthaben` = '%d', `pLastLogin` = '%s', `pRegDatum` = '%s', `pVersuche` = '%d', `pLeben` = '%.1f' WHERE `pName` = '%e'",Spieler[playerid][pAlter],Spieler[playerid][pBargeld],Spieler[playerid][pKontoguthaben],query,Spieler[playerid][pRegDatum],Spieler[playerid][pWrongPass], Spieler[playerid][pLeben],Spieler[playerid][pName]);

    Dann brauchst du diese Funktion nicht :)


    Ach ja, so ist's natürlich wesentlich eleganter, Danke dir. :thumbup:


    IPrototypeI: Ich weiß, ich weiß. Ich hab in dem Moment nicht daran gedacht es direkt über den HEX-Wert zu machen. Manchmal denkt man eben viel zu umständlich. Warum einfach, wenn's auch kompliziert geht. :D


    *Jeffry geht in die Ecke und schämt sich...

    Wie kann man bei OnPlayerText machen das der Name nicht wie z.b. Fabi.StaR angezeigt wird sondern Fabi StaR angezeigt wird?


    public OnPlayerText(playerid, text[])
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    new pos = strfind(name, ".");
    if(pos != -1) name[pos] = ' ';
    new str[144];
    format(str, sizeof(str),"{%06x}%s{FFFFFF}: %s",GetPlayerColor(playerid) >>> 8,name,text); //Thx @ Kaliber.
    SendClientMessageToAll(-1, str);
    return 0;
    }


    Getestet und funktioniert.

    @Fuldara:


    dcmd_pm(playerid,params[])
    {
    new tmp[20], idx, PMplayer1, PmReceiver[MAX_PLAYER_NAME];
    tmp = strtok(params, idx);
    if(!strlen(cmdtext[strlen(tmp)+1])) return SendClientMessage(playerid, COLOR_WHITE, "** Usage: /pm (PlayerID) (Text)");
    PMplayer1 = strval(tmp);

    if(PMplayer1 == playerid) return SendClientMessage(playerid, COLOR_MAUVE, "* You can not send yourself a PM.");

    if(!IsPlayerConnected(PMplayer1) || PMplayer1 == INVALID_PLAYER_ID) return SendClientMessage(playerid, red, "** Invalid Player.");

    new string[144];
    GetPlayerName(PMplayer1, PmReceiver, sizeof(PmReceiver));
    format(string,sizeof(string),"* PM to %s (ID: %d): %s ", PmReceiver, PMplayer1, params[strlen(tmp)+1]); // Was kommt denn hier rein um den Text zu sehen?
    SendClientMessage(playerid,grey,string);
    return 1;
    }


    http://wiki.sa-mp.com/wiki/Strtok