Beiträge von Austrianer

    Es ist sinnlos die Variabel zu reseten, weil SA:MP die Variabel beim Disconnecten löscht.


    Er möchte aber das die Fraktion automatisch beim Verlassen des Servers auf 0 geht. Aber er muss es vorher noch speichern und das hat er vergessen.


    Ich glaube ihr redet beide am Problem von ihm vorbei :P


    public OnPlayerDisconnect(playerid, reason)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    format(Spielerdatei, sizeof(Spielerdatei), "/accounts/%s.txt", name);
    dini_IntSet(Spielerdatei, "Fraktion", 0);
    return 1;
    }


    Dann wird es immer auf 0 gesetzt ;)

    Du speicherst den Wert ja auch noch nicht in deine Datei. Da fehlt ja die SpielerSpeichern-Methode nach deiner Variable setzen oder wie du es halt speicherst ;)


    Klar das es nicht funktioniert. Mit der PVariable setzen funktioniert nur auf dem Server selber aber geht nicht automatisch auf deine Dini-Datei über ;)

    Du musst auch statt der 1 die i-Variable einsetzen.


    Du setzt nun für die Maximale Fahrzeug-Anzahl so oft für das Fahrzeug 1 den Motor auf aus.


    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(i,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    So gehört es hin


    ;)

    Bei OnPlayerUpdate würde ich es nicht machen weil es dann sogar mehr laggt als wie mit einem Timer, weil dies öfters aufgerufen wird.


    Was ich machen würde wäre überall wo es sich verändern kann also durch Payday, Bank, LevelUp usw. das Textdraw bearbeiten. So arbeitest du nicht mit einem Timer oder PlayerUpdate und es funktioniert einwandfrei.

    Machs einfach mit einer PVariable


    Also wenn er einmal Waffen nimmt dann ist die Variable auf 1. Also


    SetPVarInt(playerid, "Waffen", 1);


    Dazu machst du noch einen Timer damit das Waffennehmen wieder erlaubt wird, also die Variable wieder auf 0 setzt nach 5 Minuten.


    Wenn du also abfragst ob der Spieler in der Nähe von dem Pickup ist machst du es so.


    if(IsPlayerInRangeOfPoint(playerid,3.0,1277.6021,-786.3717,1089.9375))
    {
    if (GetPVarInt(playerid, "Waffen") == 1) return SendClientMessage(playerid, rot, "Du hast dir bereits Waffen genommen vor kurzer Zeit.");



    So in der Art, verstehst du meine Logik?

    Hab das mal für dich in strtok umgeschrieben. Denke das hast du sicherlich.


    new cmd[128], idx;
    cmd = strtok(cmdtext, idx);
    if (strcmp("/up", cmd, true) == 0) {
    new tmp[128], pID, hoehe, Float:x, Float:y, Float:z;
    tmp = strtok(cmdtext, idx);
    if(strlen(tmp) == 0) return SendClientMessage(playerid, rot, "/up [ID] [Höhe]");
    pID = strval(tmp);
    tmp = strtok(cmdtext, idx);
    hoehe = strval(tmp);
    GetPlayerPos(pID, x, y, z);
    SetPlayerPos(pID, x, y, z+hoehe);
    }


    Falls nicht kannst du hier die kleine Methode von strtok in dein Script übertragen


    Strtok - SA-MP Wiki

    Ja so ein Wantedsystem habe ich mir selbst gescriptet. Bei mir sind es halt alle 5 Wantedpunkte gibts einen Wantedstern.


    Das kannst du dir ganz leicht selbst scripten. Einfach immer nach einer Wantedvergabe abfragen wieviele WP der Spieler nun besitzt. Wenn er mehr als eine bestimmte Punkteanzahl besitzt bekommt er soviele Wanteds.


    Also immer die WP durch 10 dividieren und dann diese zahl als Wantedsterne benutzen.


    Also z.B.


    Ein Spieler hat nun 13 WP durch 10 hat er nun 1,3. Dann musst du halt immer abrunden und somit hat er 1. Hat somit einen Wanted.
    Hat ein Spieler unter 10 WP bekommt er 0 Wanteds. Hat er 58 WP bekommt er immernoch nur 5 Wanteds. Erst ab 60 WP bekommt er 6. Wanteds.


    Du kannst es aber auch so machen das du zahl immer aufrundest. Somit bekommt er wenn er mehr als 0 WP hat aber weniger als 10 immer gleich ein Wantedstern.

    ocmd:up(playerid, params[]) {
    new pID, hoehe, Float:x, Float:y, Float:z;
    if (sscanf(params, "ui", pID, hoehe)) return SendClientMessage(playerid, GRUEN, "/up [ID] [Höhe]");
    GetPlayerPos(pID, x, y, z); // Fragt die Position des Spielers ab
    SetPlayerPos(pID, x, y, z+hoehe); // Setzt den Spieler auf die Position mit der jeweiligen Höhe dazu die angegeben wurde
    return 1;
    }


    Hab den Befehl jetzt auf die schnelle gemacht. Sollte funktionieren. Brauchst dafür halt auch das sscanf-Plugin, hoffe das hast du.

    Du hast etwas peinliches gemacht, was jedem passieren kann.


    if(sscanf(params,"u",pID)) {


    Also wenn man /showperso schreibt aber den Befehl nicht mit einer ID angegeben hat dann wird der Befehl angezeigt.


    Du musst es so machen.


    if(sscanf(params,"u",pID)) return SendClientMessage(playerid, rot, "/showperso [ID]");
    if(GetPVarInt(playerid,"Perso") == 1) {


    Dann sollte es funktionieren. :)

    Ich hab keine Ahnung was du da gescriptet hast, aber es ist völliger Blödsinn ;) Warum du abfragst ob der Spieler Im Wasted-Modus ist :wacko:


    Ich habe dir was gescriptet, das fügst du unter OnPlayerDeath ein.


    public OnPlayerDeath(playerid, killerid, reason) {
    if(WantedLevel[playerid] > 1) {
    new price = WantedLevel[playerid] * 750;
    if(IsPlayerConnected(killerid)) {
    if(IsACop(killerid) {
    format(string, sizeof(string), "~w~Gesuchten umgebracht~n~Bonus: ~g~$%d", price);
    GameTextForPlayer(killerid, string, 5000, 1);
    ConsumingMoney = 1;
    GivePlayerMoney(killerid, price);
    PlayerPlaySound(killerid, 1058, 0.0, 0.0, 0.0);
    GivePlayerMoney(playerid, - price);
    PlayerInfo[playerid][pWantedDeaths] += 1;
    PlayerInfo[playerid][pJailed] = 1;
    PlayerInfo[playerid][pJailTime] = (WantedLevel[playerid] * 240);
    format(string, sizeof(string), "Du bist für %d Sekunden im Gefängnis und musst $%d bezahlen.", PlayerInfo[playerid][pJailTime], price);
    SendClientMessage(playerid, COLOR_LIGHTRED, string);
    WantedPoints[playerid] = 0;
    WantedLevel[playerid] = 0;
    }
    }
    }
    return 1;
    }

    SetTimer("motoran",1000,0);


    Hier liegt dein Problem ;)


    Die Function motoran hat einen Parameter, aber du übergibst keinen durch deinen Timer.
    Ist ja klar das es immer nur der ID 0 geschrieben wird ;)


    Benutze die Methode SetTimerEx so ;)


    SetTimerEx("motoran",1000,0, "i", playerid);


    Nun sollte es funktionieren.

    Du musst bei der Rangliste die ID auch noch ausgeben lassen und die dann beim Link hineinschreiben


    Und bei der Userprofil-Seite musst du dies mit der $_Get Abfrage abfragen und dann hast du es.

    Dann machst du einfach eine Verlinkung bei der Ausgabe


    PHP
    echo "<h4><a href="http://.....userprofile?id=$id">{$name}</a></h4>";


    So in der Art. Bei der Seite einfach den Link hinzufügen wohin du weiterleiten möchtest und bei ID halt das du weißt welches profil.

    Warum du testet ob er in einem Vehicle sitzt welches eine ID von größer als 0 hat ist eigentlich unnötig. Weil wenn er Fahrer ist dann sitzt er in einem Fahrzeug. Also alles was mit vehicle zu tun hat kannst du raus löschen. Aber ansonsten funktioniert der Code von DefQon1 ;)