Beiträge von InternetInk aka Benjamin

    Von was willst du die VehicleID denn hohlen?
    Wenn der User z.B. Schlüssel hat dann musst du in den Schlüsseln die vehicleid reinschreiben.
    Also beim erstellen des Fahrzeugs z.B.
    new carid = CreateVehicle(...)
    CarKey[0][playerid] = carid;
    0 Steht dann für den ersten schlüssel, und bei /carlist kannst du die dann ausgeben:
    format(...,"Auto 1:%d Auto 2:%d",CarKey[0][playerid],CarKey[1][playerid]);
    Dann kannst du im /findcar auch einfach nach 0 und 1 suchen:
    GetVehiclePos(CarKey[vehid][playerid],x,y,z);
    Wobei vehid hier halt der sscanf Parameter ist.

    ttext ist ein String, du versuchst aber soweit ich das sehe einen anderen string zuzuweisen, das funktioniert nicht weil einer der beiden wohl größer ist.

    if(leader != 0) strmid(ttext,Fracs[leader-1],0,strlen(Fracs[leader-1]));
    if(member != 0) strmid(ttext,Fracs[member-1],0,strlen(Fracs[member-1]));

    Sollte so gehen, das kopiert den Text dann anständig von der einen Variable nach ttext, sollte strlen nicht gehen nimm sizeof, bin mir da jetzt nicht sicher.


    ocmd:findcar(playerid,params[])
    {
    new Float: x, Float: y, Float: z, vehid;
    if(sscanf(params,"i",vehid))return SendClientMessage(playerid,farbe,"/findcar ID");
    GetVehiclePos(vehid,x,y,z);
    SetPlayerCheckpoint(playerid, x, y, z,4.0);
    return 1;
    }

    Der dritte Parameter bei sscanf sind immer die Variabel in denen etwas gespeichert werden soll, in diesem fall nutzt du i also einen Integer zahlen wert, habe in der zeile noch vehid erstellt.
    Was ja ein Integer ist. Die Syntax von GetVehiclePos war nicht Richtig, die Funktion hat 4 Parameter und nicht nur einen, wenn du die Parameter nicht weißt kannst du die Funktion immer in der Wiki suchen. http://wiki.sa-mp.com/
    Achja und CreatePlayerCheckpoint gibt es nicht ;)

    Schreib es dir auf und dann machste die Abfragen einfach

    if(GetPVarInt(playerid,"Beruf") == 1) //Wenn er bauer ist
    //oder z.B.
    if(GetPVarInt(playerid,"Beruf") == 2)//Wenn er Cop ist etc.
    //Denn die Funktion würde lauten
    stock isPlayerAnBauer(playerid,rang)
    {
    if(GetPVarInt(playerid,"Beruf") == 1) return 1;
    return 0;
    }
    //Statt 1 halt die Nummer die du willst, und dann kannste es auch direkt mit einer Abfrage machen...


    public OnPlayerDeath(playerid, killerid, reason)
    {
    SendDeathMessage(killerid, playerid, reason);
    IsPlayerDeath[playerid] = 1;
    if(killerid != INVALID_PLAYER_ID)//Wenn es keinen killer gibt bleibt es auf invalid_player_id
    {
    SendClientMessage(killerid,0xFFFF00FF,"du hast für den Kill 2500$ bekommen!");
    GivePlayerMoney(killerid,2500);
    DeathID[playerid] = killerid;
    return 1;
    }
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    PlayerPlaySound(playerid, 1186, 1326.1104,-877.1648, 10.0 );
    SetPlayerTeam(playerid,gTeam[playerid]);
    if(IsPlayerDeath[playerid] == 1)
    {
    if(DeathID[playerid] != INVALID_PLAYER_ID)
    {
    SetTimerEx("DeathWait", 10000, 0, "%i", playerid);
    TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid, DeathID[playerid]);
    }
    else
    {
    SetTimerEx("DeathWait", 10000, 0, "%i", playerid);
    //hier müsstest du ihn freezen oder sowas
    }
    }
    return 1;
    }

    Nein, das kommt dadurch das du viele große Arrays benutzt. Es gibt aber auch kleine Tricks wie du die amx kleiner pushen kannst, ein sehr wirkungsvoller ist:



    //Direkt unter der a_samp include
    #undef MAX_PLAYERS
    #define MAX_PLAYERS 100


    //Edit
    So laufen schleifen mit MAX_PLAYERS nicht 500 sondern nur 100 mal durch, auch MAX_PLAYER Variabeln werden auf 100 reduziert, das ist ein enormer Speicher Vorteil und macht später mehrere mb aus.
    //Edit
    Undef und nicht Undefine :D

    Lerne direkt den Code einzurücken, so wie ich jetzt, dann siehst du solche fehler (Klammerfehler) sofort.

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new spieler[MAX_PLAYER_NAME];
    if(strcmp(strget(cmdtext,0),"/register",true) == 0)
    {
    new save[40];
    GetPlayerName(playerid,spieler,sizeof(spieler));
    format(save,sizeof(save),"Spieler/%s.ini",spieler);
    if(!dini_Exists(save))
    {
    dini_Create(save))
    dini_IntSet(save,"passwort",udb_hash(strget/cmdtext,1)));
    SendClientMessage(playerid,HELLBLAU,"Dein Account wurde erfolgreich registriert");
    SendClientMessage(playerid,HELLBLAU,"Benutze /login [PASSWORT] um dich einzuloggen");
    }
    else
    {
    if(dini_Exists(save))
    {
    SendClientMessage(playerid,HELLBLAU,"Dein Account wurde schon registriert");
    }
    }
    return 1;
    }//Fehlte
    if(strcmp(strget(cmdtext,0),"/login",true)== 0)
    {
    new save[40], s2[256];
    GetPlayerName(playerid,spieler,sizeof(spieler));
    format(save,sizeof(save,"Spieler/%s.ini",spieler);
    if(dini_Exists(save))
    {
    s2=dini_Get(save,"passwort");
    if(strval(s2==udb_hash(strget(cmdtext,1)))
    {
    loggedin[playerid] = true;
    SendClientMessage(playerid,HELLBLAU,"Du hast dich erfolgreich eingeloggt");
    SpawnPlayer(playerid);
    }
    else
    {
    SendClientMessage(playerid,HELLBLAU,"Passwort falsch eingegeben");
    }
    }
    return 1;
    }
    return 0;//Fehlte
    }//Fehlte