Beiträge von Templer

    Mafu, zeig doch halt mal die Zeile wo du die FloatVariablen erstellst und nebenbei dein bringtnix bringt uns auch nicht viel, denn vielleicht kamen andere Fehler? ^^ Dennoch habe ich deinen Code getestet und es kann nur an den Float´s oder an den Farben liegen, wobei die Farben nicht in dieser Zeile sind.


    //Edit:


    @ PSF schau dir mal das an: http://wiki.sa-mp.com/wiki/CreateVehicle


    und sag mir, wofür der 0er am Ende eigentlich steht..

    Hallo 8D, wie gehts dir denn so? ^^ Ka warum ich schwelgen muss aber naja...


    Zu deinem Problem, ich nütze den Datentyp Int bzw. Integer und kann damit auch Ganzzahlen im negativen Bereich abspeichern lassen, außer du den Datentyp Integer in der Spalte vorzeichenlose erstellt hast. (Unsigned)



    Bedeutet hier ein Beispiel wenn du den Integer normal erstellt hast, ohne den Parameter (Unsigned):



    new farbe=HexToInt("0xFFFFFFFF"); //Farbe Schwarz, wie einfallsreich


    format(query,sizeof(query),"UPDATE <TableName> SET Farbe = '%d' WHERE <Irgendwas> = '<IrgendeinenWert>'",farbe);
    mysql_query(query);



    //Und natürlich kann SetPlayerColor auch mit Dezimalwerten umgehen und kannst einfach den Wert 'farbe' von oben so hernehmen....
    SetPlayerColor(playerid,farbe);



    Info: Hab kein [pwn] Format, da sonst GoogleChrome damit bissl spackt...

    Also, dieser Fehler kam mir auch sehr oft in die Quere und es kann nur damit sein, wie es dein Editor abspeichert. Manche Editoren speisen anscheinend zusätzliche Informationen mit ein und dein Script kann es nicht mehr erkennen. Ich weis leider auch nicht wie man diese Informationen rauslöscht. Ich nütze für sowas den Notepad ++ oder den normalen Windows Notepad, da er nichts mitspeichert, sofern du nix eingestellt hast. Also öffne deine Datei erneut mit dem Notepad, ändere dein Passwort in "lqn", was für "lol" steht (Ohne Anführungszeichen) und speichere es mal mit Speichern Untern.., dann gehst du auf den Pfad wo du die Datei geöffnet hast, wählst unten bei Kodierung den ANSI - Zeichenblock und überspeicherst die vorhandene Datei. Danach einfach hochladen und probieren obs geht. Wobei solltest du nicht die Verschlüsselung vom Godfather besitzen, so müsstest du deine vorhandene Datei am Server umbennenen, dann dich neu registrieren (Passwort und Co) und nach dem runter gehen, ersetzt du in deiner neuen Spielerdatei alles mit dem alten, natürlich nicht das Passwort, genauso so abspeichern wie ich es oben erklärt habe, hochladen und probieren ^^.

    Ich erklärs mal für dich. Es ist ganz einfach. Wenn du so nen Code Wurscht siehst, dann musst du es einfach nur für dich Gliedern und das Ergebnis sieht dann so aus:
    #define SCM(%0,%1,%2)
    do
    {
    new _str[128];
    format(_str,128,%2);
    SendClientMessage(%0,%1,_str);
    }
    while(FALSE)


    Wie man sieht, macht er eine Schleife und währenddessen das Eingegebene den Wert "false" zurückgibt (Also von den Parametern her), dann übernimmt er den Code oberbei im do-Codeblock. Dort wird extra ein string erstellt mit der angegebenen Formatierung (_str = kleiner ZwischenSpeicher, 128 = string Länge, %2 = der Text mit Parameter am Ende). Bedeutet das was du in den String/Parameter %2 eingibst, fügt er bei format ein. Beispiele hier:
    Wenn %2 = "Hallo ich bin Hans" dann sieht es so aus:
    format(_str,128,"Hallo ich bin Hans");
    Wenn %2 = HansText und es oben irgendwo so definiert wurde wie new HansText[] = "Hallo ich bin Hans"; dann sieht es so aus:
    format(_str,128,"Hallo ich bin Hans");
    Aber wenn %2 = "Hallo ich bin Hans %s", "Hans" dann fügt er es natürlich genau so ein:
    format(_str,128,"Hallo ich bin %s", "Hans");
    und zum Schluss wird mithilfe der Variablen %0 (In dem Fall die 'playerid') und %1 (In dem Fall die Farbe) das SendClientMessage für den Spieler erstellt. Wenn dir das mit der Schleife unklar ist, dann bist nicht der einzige ^^. Grob gesagt filtert eigentlich die Schleife nur die Parameter heraus. Aber wie er auf den Betrag false kommt ist mir unklar..

    Am besten lasst du den Include aus deinem GM aus und kopierst dir vom Include die Funktion in dein GameMode ^^.
    Wenn du es nicht kannst, hier die Funktion:
    stock GetPlayerSpeed(playerid, bool:kmh)
    {
    new Float:Vx,Float:Vy,Float:Vz,Float:rtn;
    if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz);
    else GetPlayerVelocity(playerid,Vx,Vy,Vz);
    rtn = floatsqroot(floatabs(floatpower(Vx + Vy + Vz,2)));
    return kmh?floatround(rtn * 100 * 1.61):floatround(rtn * 100);
    }
    //MPH: GetPlayerSpeed(playerid, false);
    //KMH: GetPlayerspeed(playerid, true);

    Ich hab dir den Befehl dich umgeschrieben, sondern kommentiert und ausgebesserst, damit du deine Fehler siehst...
    dcmd_kick(playerid,params[])
    {
    new pname; //Ohne [MAX_PLAYERS] Array...
    new sGrund[50];
    if(sscanf(params, "uz",pname,sGrund)) //Bitte statt dem Charakter 'd', 'u' nützen, da er dann den SpielerNamen auch erkennt damit...
    {
    return SendClientMessage(playerid,Blau,"Benutze /kick [playerid] ([grund],optional)");
    }
    if(!IsPlayerConnected(pname))
    {
    return SendClientMessage(playerid,KRot,"Kein Spieler mit angegebener ID Online");
    }
    new string[128];
    new playername[MAX_PLAYER_NAME]; //Ein Array für den Spielernamen machen...
    GetPlayerName(pname,playername,sizeof(playername)); //'playername' ersetzt durch 'pname' und 'playerid' durch 'pname'
    format(string,sizeof(string),"%s wurde vom Server gekickt,Grund: %s",playername,sGrund[0] ? sGrund : "Grund wird nicht genannt!"); //Statt 'pname' wird 'playername' verwendet
    SendClientMessageToAll(Rot,string);
    Kick(pname);
    return 1;
    }

    Auch wenn es nicht besonders schön geschrieben wurde, ganz sicher das du nicht Server Lags mit Clienten Lags verwechselst? Ich meine, wenn dein GTA ruckelt, bedeutet es nur, dass deine Explosionen zuviel sind...

    Also es ist ganz einfach, hab den Befehl kommentiert...
    1. Variante ... Klassik Version
    new SpielerBaum[MAX_PLAYERS];


    public OnPlayerCommandText(playerid,cmdtext[])
    {
    if(!strcmp(cmdtext,"/createobject",false))
    {
    if(SpielerBaum[playerid]) DestroyObject(SpielerBaum[playerid]); //Wenn Baum schon vorhanden, zerstöre vorheriges...
    new Float:PlayerPos[3]; //Erstelle Pos-Array´s
    GetPlayerPos(playerid,PlayerPos[0],PlayerPos[1],PlayerPos[2]); //Fange SpielerPos ab
    CreateObjekt(700,PlayerPos[0],PlayerPos[1],PlayerPos[2],0.0,0.0,0.0); //Erstellt einen kleinen Baum (ObjectID: 700) auf der SpielerPosition...
    return SendClientMessage(playerid,0xFFFFFF00,"Baum erstellt!");
    }
    }


    2. Variante ... Nutzung von "ressourcensparenden" PVar´s
    public OnPlayerCommandText(playerid,cmdtext[])
    {
    if(!strcmp(cmdtext,"/createobject",false))
    {
    if(GetPVarInt(playerid,"SpielerBaum")) DestroyObject(GetPVarInt(playerid,"SpielerBaum")); //Wenn Baum schon vorhanden, zerstöre vorheriges...
    new Float:PlayerPos[3]; //Erstelle Pos-Array´s
    GetPlayerPos(playerid,PlayerPos[0],PlayerPos[1],PlayerPos[2]); //Fange SpielerPos ab
    SetPVarInt(playerid,"SpielerBaum",CreateObjekt(700,PlayerPos[0],PlayerPos[1],PlayerPos[2],0.0,0.0,0.0)); //Erstellt einen kleinen Baum (ObjectID: 700) auf der SpielerPosition...
    return SendClientMessage(playerid,0xFFFFFF00,"Baum erstellt!");
    }
    }

    new PizzaLieferant[MAX_PLAYERS][2];
    public OnPlayerConnect(playerid)
    {
    PizzaLieferant[playerid][0] = -999;
    PizzaLieferant[playerid][1] = 0;
    }
    {
    new string[128];
    new pKunde[MAX_PLAYER_NAME];
    GetPlayerName(ziel, pKunde, sizeof(pKunde));
    format(string, sizeof string,"Du hast %s ein Pizza für %d$ angeboten.",pKunde,pPreis);
    SendClientMessage(playerid,KERFOLG,string);
    new pVerkaufer[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pVerkaufer, sizeof(pVerkaufer));
    format(string, sizeof string,"Der Pizzalieferant %s hat dir eine Pizza für %d$ angeboten.",pVerkaufer,pPreis);
    SendClientMessage(ziel,KERFOLG,string);
    SendClientMessage(ziel,WEIS,"Gib /PizzaKaufen ein, um die Pizza zu kaufen.");
    PizzaLieferant[ziel][0] = playerid; PizzaLieferant[ziel][1] = pPreis;
    return 1;
    }
    if(!strcmp(cmdtext, "/pizzakaufen", false))
    {
    if(PizzaLieferant[playerid][0] == -999) return SendClientMessage(playerid, WEIS, "Keiner bietet dir eine Pizza an...");
    new pizzytyp=PizzaLieferant[playerid][0],Float:PlayerPos[3];
    GetPlayerPos(pizzytyp, PlayerPos[0], PlayerPos[1], PlayerPos[2]);
    if(!IsPlayerInRangeOfPoint(playerid, 3.0, PlayerPos[0], PlayerPos[1], PlayerPos[2])) SendClientMessage(playerid, WEIS, "Der Pizzalieferant ist nicht in deiner Nähe.. Auftrag storniert!");
    else if(GetPlayerMoney(playerid) < PizzaLieferant[playerid][1]) SendClientMessage(playerid, WEIS, "Du kannst dir die Pizza nicht leisten.. Auftrag storniert!");
    else
    {
    new string[128],PlayerNames[2][MAX_PLAYER_NAME];
    GetPlayerName(playerid, PlayerNames[0], MAX_PLAYER_NAME); GetPlayerName(pizzytyp, PlayerNames[1], MAX_PLAYER_NAME);
    GivePlayerMoney(pizzytyp, PizzaLieferant[playerid][1]); GivePlayerMoney(playerid, -PizzaLieferant[playerid][1]);
    format(string, sizeof(string), "Du hast die Pizza von %s um %d$ angenommen...", PlayerNames[1], PizzaLieferant[playerid][1]);
    SendClientMessage(playerid, KERFOLG, string);
    format(string, sizeof(string), "Pizza an %s um %d$ verkauft...", PlayerNames[0], PizzaLieferant[playerid][1]);
    SendClientMessage(pizzytyp, KERFOLG, string);
    //Variable, dass playerid eine Pizza erhält...
    }
    PizzaLieferant[playerid][0] = -999;
    PizzaLieferant[playerid][1] = 0;
    return 1;
    }

    if(strcmp(cmd, "/suspect", true) == 0 || strcmp(cmd, "/su", true) == 0)
    {
    if(!IsPlayerConnected(playerid)) return 1;
    if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 1) return SendClientMessage(playerid, COLOR_GREY, " Du bist nicht im Dienst!");
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "Benutze: (/su)spect [spielerid/name] [beschreibungdesverbrechens]");
    giveplayerid = ReturnUser(tmp);

    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "Benutze: (/su)spect [spielerid/name] [beschreibungdesverbrechens]");
    new anzahl = ReturnUser(tmp);

    if (gTeam[playerid] != 2 && !IsACop(playerid)) return SendClientMessage(playerid, COLOR_GRAD2, " Du bist kein Polizist!");
    if(!IsPlayerConnected(giveplayerid) || giveplayerid == INVALID_PLAYER_ID)
    {
    format(string, sizeof(string), " %d ist kein aktiver Spieler.", giveplayerid);
    return SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    if (gTeam[giveplayerid] == 2) return SendClientMessage(playerid, COLOR_GRAD2, " Du kannst keine Cops verdächtigen !");
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' ')) idx++;
    new offset = idx,result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result)) return SendClientMessage(playerid, COLOR_GRAD2, "Benutze: (/su)spect [spielerid/name] [beschreibungdesverbrechens]");
    if(WantedPoints[giveplayerid] == 0) WantedPoints[giveplayerid]=3+2*anzahl;
    else WantedPoints[giveplayerid]+=2*anzahl;
    WantedLevel[giveplayerid]+=anzahl;
    SetPlayerCriminal(giveplayerid,playerid, result);
    return 1;
    }