Beiträge von IPrototypeI

    dazu kannst du wenn es nur 3 werte sind eine for-schleife dazu verwenden


    new TopTree[3 char];


    new i;
    for(; i < MAX_PLAYERS; ++i){
    if(!IsPlayerConnected(i))continue;
    if(Prozentwertvariabel[i] > Prozentwertvariabel[TopTree{0}]){
    TopTree{2}= TopTree{1};
    TopTree{1}= TopTree{0};
    TopTree{0}= i;
    }else if(Prozentwertvariabel[i] > Prozentwertvariabel[TopTree{1}]){
    TopTree{2}= TopTree{1};
    TopTree{1}= i;
    }else if(Prozentwertvariabel[i] > Prozentwertvariabel[TopTree{2}]){
    TopTree{2}= i;
    }
    }


    Prozentwertvariabel[i] ist jetzt ihrgend was willkürliches und sollte nur die jeweilige verwendete array ersetzen , welche du verwendest um die prozent werte zwischen zu speichern.


    new str[512],query[300];
    format(query,sizeof(query),"SELECT * FROM `accounts` WHERE `Name` = '%s' LIMIT 1",MeinName(playerid));
    mysql_query(query);
    mysql_store_result();
    sscanf(str,"e<p<|>{i}s[128]s[128]iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiiiiiiifffiiiiiiiiiiiiiiiiiiiiiiiiifiiis[128]iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii>",SpielerInfo[playerid]);
    mysql_free_result();


    Hier brauchst du keine while schleife als kleine Anmerkung, zu dem poste mal das passende enum und den string der ausgelesen wird , welchen du in der mysql log findest

    kann daran liegen das der spieler nicht online falls du keine id dahinter eingibst


    wenn du nur eine person damit spawnen willst also das sich der spieler selbst spawnt
    so musst du nix umkonvertieren

    if(!strcmp(cmd,"/spawnme",true)){
    if(GetPlayerMoney(playerid) < 10000))return SendClientMessage(playerid, COLOR_GREEN, "Du hast nicht genug Geld!");
    SpawnPlayer(playerid);
    SendClientMessage(playerid, COLOR_GREEN, "Du hast dich erfolgreich gespawnt!");
    SendClientMessage(playerid, COLOR_GREEN, "Du musstest 10000$ Zahlen damit du dich spawnen konntest!");
    GivePlayerMoney(playerid, -10000);
    return 1;
    }

    Hey, erstmal danke für die schnelle Antwort. Also ich habe es mal so versucht wie du meintest also GetFloat und SetFloat aber da kam direkt ein Error damit es nicht Definiert wurde. Ich habe alle Includes und Plugins also wird es die Funktion wohl nicht geben... wie soll ich es denn nun machen? Wäre lieb wenn du noch einmal antwortest.


    MfG


    Da du ja die grundlage von dem MySQL Tutorial von Maddin nutzt und seine funktionen welche er dazu geschrieben hatte bin ich mal ausgegeangen davon das du diese funktionen besitzt.
    Jedoch wäre es besser wenn du dich mal mit MySQL richtig auseinander setzt und selbst mit den SQL Befehlen arbeitest und den funktionen von den mysql plugins.

    stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE `%s` SET `%s` = '%f' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }

    stock mysql_GetFloat(Table[], Field[], Where[], Is[])
    {
    new query[128], Float:sqlfloat;
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_float(sqlfloat);
    mysql_free_result();
    return _:sqlfloat;
    }

    Wird es eben nicht,das ist das Problem


    In dem du ganz einfach due Abfrage umstellst weil der code wird nur ausgeführt wenn weapons[i][0] 1 oder höher ist daher muss eine waffe vorhanden sein.
    Also wie schon erwähnt einfach die Abfrage umstellen

    Achte auf folgende Dinge:


    1. Spalteneigenschaft auf Float gestellt bei den 3 Spalten
    2. Verwende GetPVarFloat anstatt GetPVarInt da es Floats sind und keine integer
    3. Es gibt soweit ich mir ihrgend wie erinnern kann auch mysql_SetFloat und mysql_GetFloat dies benutzt du dafür anstatt mysql_SetInt und mysql_GetInt
    4. SetPlayerPos(playerid, XPos, YPos, ZPos); ist falsch entweder


    SetPlayerPos(playerid, GetPVarFloat(playerid, "XPos"), GetPVarFloat(playerid, "YPos"), GetPVarFloat(playerid, "ZPos"));
    oder
    SetPlayerPos(playerid, mysql_GetFloat("spieler", "XPos", "Name", PlayerName[playerid]), mysql_GetFloat("spieler", "YPos", "Name", PlayerName[playerid]), mysql_GetFloat("spieler", "ZPos", "Name", PlayerName[playerid]));


    oder du benutzt das enum als index für ein array und machst es damit.


    5. Zu dem solltest du mit GetPlayerPos die position des spielers auslesen wenn er disconnectet sonst bleiben die werte 0.0

    Mann kann dir so nicht helfen wir wissen nicht was für ein skript du benutzt aber soviel mag gesagt sein du kannst die Zeit des timers verändern oder den wert abändern , welcher mit einer variabel verglichen wird die sich in einem timer befindet und wahrscheinlich jede sekunde hochgezählt wird.

    S


    Wie geht das aber, das nach dem einer den ersten Checkpoint eingesammelt hat, das der nächste kommt? i.wie mit Variabeln hochzählen oder so?


    dazu kannst du eine array benutzen oder du hast all deine checkpointdaten in einer array . OnPlayerEnterCheckpoint wird sowieso aufgerufen wnen einer rein läuft daher gehst du da die ganzen einträge in deinem array durch bis du einen gefunden hast der zur position passt die solltest du auch abprüfen mit IsPlayerInRangeOfPoint nun gut du hast die jeweilige id da rechnest du noch i dazu und somit erstellst du
    den nächsten checkpoint.


    Beispielcode:



    public OnPlayerEnterCheckpoint(playerid)
    {
    new i;
    for(; i < MAX_CHECKPOINTS; ++i){
    if(IsPlayerInRangeOfPoint(playerid,4.0,Checkpoint[i][X],Checkpoint[i][Y],Checkpoint[i][Z])){
    SetPlayerCheckpoint(playerid, Checkpoint[++i][X],Checkpoint[i][Y],Checkpoint[i][Z], 3.0);
    break;
    }
    }
    return 1;
    }


    durch die präfix-version der inkrementation ist es nicht nötig bei den anderen i`s 1 dazu zu rechnen so wird das i automatisch erst um 1 erhöht so ist der wert +1 wenn der die funktion ausgeführt wird.

    if (strcmp("/waffen", cmdtext, true, 10) == 0){
    new weapons[13][2],i,string[64];
    for (; i < 13; ++i){
    GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);
    weapons[i][0] && (GetWeaponName(weapons[i][0],string,24),format(string,64,"Slot: %d | Waffename: %s | Munition: %d",i,string, weapons[i][1]),SendClientMessage(playerid,-1,string));
    }
    if(string[0]==EOS)return SendClientMessage(playerid,-1,"Der Spieler hat keine Waffen");
    return 1;
    }


    ich hab dir mal ein beispiel code gemacht da sist eigentlich ganz einfach
    GetPlayerWeaponData benötigt eine spielerid als erstes argument das zweite ist der Slot und das dritte und vierte sind rückgabe werte. Daher wird die id der Waffe an weapons[i][0] und die Munition an
    weapons[i][1] zurück gegeben daher auch eine 2 dimensionale array um das ganze leichter handzuhaben. Mit den werten kannst du nun arbeiten.
    die for-schleife wird benötigt um durch die ganzen slots zu gehen es gibt insgesammt ja 13 slots( von 0 - 12).

    Normal sollte die Blume erstellt werden, wenn du nicht mehr als 1000 Objekte schon benutzt welche alle mit CreateObject erstellt werden, jedoch nicht direkt am boden dazu musst du die z-koordinate verringern.


    Daher sollte dies zutreffen so benutze einen streamer.
    Diese:
    http://forum.sa-mp.com/showthread.php?t=102865


    änderst CreateObject zu CreateDynamicObject nicht vergessen dazu kann man auch die replace funktion von pawno benutzen und bei OnGameModeInit um die vollle Power zu nutzen
    Streamer_VisibleItems(STREAMER_TYPE_OBJECT, 1000);

    Kannst du mir bitte den code geben fpr den Kanister? kann es nicht finden -.-


    Das liegt daran das es kein Sprite gibt mit diesem Symbol. Es gibt zwar einen als Objekt und in der gta3.img ist auch die .txd datei nur ist da nur die textur drinne, aber dies ist nur ein block element ohne umrisse. Daher denk ich das die entweder dieses tool benutzt haben http://forum.sa-mp.com/showthread.php?t=274064
    oder das der server hier mit einer eigenen .txd arbeitet die du womöglich runterladen kannst.
    Es wäre vllt auch mal interessant wenn du die ip posten könntest von dem Server.

    Objekte sind es, aber die werden dem Spieler nicht angehängt sondern das ganze geht über invalide Tunnigteile, dabei werden ganz einfach die Fahrzeuge damit getunt genauer beschrieben die Tunningsteile wechseln schnell durch,dass ist jedoch nur eine Methode von mehreren.

    Lokal. Die Include die man downloaden kann ist aber nicht die, mit der ich teste.
    Ich werde mal einen Freund bitten, ob er das bei sich testen kann. Falls es dort funktioniert, liegt es an etwas anderem.


    Also deine include mit dem code wo du hier gepostet hast funktioniert auch

    Da hast du das Problem schon benutz dazu OnPlayerStateChange

    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER) /
    {
    new vehicleid = GetPlayerVehicleID(playerid);


    dann sollte es gehen da wird das ganze dan aufgerufen wenn der spieler im auto ist. Bei dir ist das Problem das OnPlayerEnterVehicle schon aufgerufen wird wenn versucht wird einzusteigen
    das bedeutet das er durch RemovePlayerFromVehicle im Auto sitzen muss was er nicht tu du kannst den spieler jedoch freezen und danach wieder unfreezen so wird verhindert das auch einsteigen kann.

    Hmm..Das ist natürlich äußerst Mysteriös.



    Ja, seitdem ich dort das geändert habe. Ich habe dies gemacht, da der Blitzer sonst in die Falsche Richtung ausgerichtet ist, was eigentlich nicht so schlimm wäre, wenn ich nicht jetzt eingefügt hätte, dass der Blitzer erkennt, ob man vor oder hinter dem Blitzer ist. Wenn man dann von einem frontblitzenden Blitzer, der einen aber mit der hinterseite blitzt, geblitzt wird, ist das schon merkwürdig..


    Hm also ich habs nochmal mit deiner include probiert heir ist das selbe das es problem los funktioniert , mal so eine frage testest du das direkt auf deinem server oder erstmal local.

    ich denk mal du willst den "Oder" Operator benutzen


    if(GetVehicleModel(vehicleid) == 540 ||GetVehicleModel(vehicleid) == 462))


    mit case ist es auch möglich mehrere ids reinzupacken

    switch(GetVehicleModel(vehicleid)){
    case: 100..200:
    case: 100,101,102:
    }


    100..200 umfasst alle nummern von 100 - 200 und ist fortlaufend


    sollte dies immer noch nicht die erhoffte Lösung sein so beschreibe dein Problem erneut. Weil aus deinem Anfangssatz kann man keine vernünftige Informationen ziehen und kann somit nur darüber spekulieren.