Beiträge von Jeffry

    Echt. Du fragst in deiner Version alevel ab, da hast du die Zuweisung im sscanf (also vor dem switch). Ich habe es so gelassen wie er es hatte, also muss die Zuweisung der Spieler Variable vor das switch, da diese Variable abgefragt wird:
    Spieler[pID][pAdminlevel]
    Sonst fragst du den alten Wert ab.



    EDIT: Syno: Gar nicht gesehen, natürlich. :thumbup:

    ocmd:setadmin(playerid,params[])
    {
    new pID,alevel,string[144],adminrank[16];
    if(sscanf(params,"ui",pID,alevel)) return SendClientMessage(playerid,0xFFFFFF,"Info: /makeadmin [Spieler ID] [Level]");
    if(alevel > 5 ) return SendClientMessage(playerid,0xFF3C3CFF,"Achtung!: Das maximale Adminlevel beträgt 5.");
    Spieler[pID][pAdminlevel] = alevel;
    switch(Spieler[pID][pAdminlevel])
    {
    case 0:{adminrank="Spieler";}
    case 1:{adminrank="Supporter";}
    case 2:{adminrank="Moderator";}
    case 3:{adminrank="Administrator";}
    case 4:{adminrank="Management";}
    case 5:{adminrank="Projektleiter";}
    }
    format(string,sizeof(string),"{FF1111}Admin Info: {E5E5E5}Der Spieler {23A7F5}%s {E5E5E5}wurde von {23A7F5}%s {E5E5E5}zum {23A7F5}%s {E5E5E5}Befördert!",Spielername(pID),Spielername(playerid),adminrank);
    SendClientMessageToAll(0xE5E5E5FF,string);
    SavePlayerData(pID);
    return 1;
    }


    Zuweisung nach Abfrage. :)
    Übrigens ist 144 das Maximum für SendClientMessage.

    new Float:cPos[10][3]; //10 CPs
    new File:rFile = fopen("Checkpoints.txt", io_read), i, string[128];
    if(rFile)
    {
    while(fread(rFile, string))
    {
    new idx;
    cPos[i][0] = floatstr(strtok(string, idx));
    cPos[i][1] = floatstr(strtok(string, idx));
    cPos[i][2] = floatstr(strtok(string, idx));
    i++;
    }
    }
    fclose(rFile);


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

    Hast du CreateClan auch noch so debuggt wie vorhin?
    Kommt das
    print("create 1");
    ?
    Wenn nein, mach das wieder dazu.


    Wie hast du es zuvor behoben?



    Bekommst du diese stack-header Meldung im Compiler?

    Jeffry: Danke, jetzt geht es soweit, aber nach dem letzten schritt, also 1/3 kommt nochmal der Standard Login Dialog und nach dem wird man Gekickt. :wacko:


    Was ist der Standard - Login Dialog? Unter welchem Callback lässt du den anzeigen?
    Zur Not könntest du vor ShowPlayerDialog von dem Standard - Dialog Abfragen, ob Login_Status[playerid] auch -1 ist.


    Cal44:
    Veruch mal:
    new cmd[6];
    Es gibt einen sogenannten 0-Terminator, der belegt die letzte Zelle.



    Eddy: (Post Unten) Kommt vor! :thumbup:

    Wie gesagt, es muss vor der ersten Verwendung definiert werden.


    -----------


    Eddy:
    1.)
    Login_Status[playerid]++;
    das musst du aus den case's raus nehmen, es steht ja schon vor dem switch.


    2.)
    Bei case 3 in deinem LoadPlayerDataSequence lädst du den Skin gar nicht, daher bleibt er bei 0.

    Ich kann es ganz normal kompilieren. Da musst du was falsch eingefügt haben. :rolleyes:
    //Edit: Hast's hinbekommen.


    Wegen den anderen Fehlern:
    Du musst die Funktion vor der ersten Benutzung definieren, wegen dem "Tag" (Float:) vor der Funktion. Also entweder du packst die Funktion in eine Include und dann die Include oben hin schreiben, oder du definierst den stock direkt unter den Includes, eben bevor du die Funktion im Code verwendest.

    So sieht's aus.
    Entweder mit sscanf (*hust*), oder strtok:


    COMMAND:createclan(playerid,params[])
    {
    new name[32],tag[32],rank[6][32],string[144], idx;
    name = strtok(params, idx);
    tag = strtok(params, idx);
    rank[0] = strtok(params, idx);
    rank[1] = strtok(params, idx);
    rank[2] = strtok(params, idx);
    rank[3] = strtok(params, idx);
    rank[4] = strtok(params, idx);
    rank[5] = strtok(params, idx);
    if(!strlen(rank[5])return SendClientMessage(playerid,COLOR_RED,"Benutze: /createclan [Clan-Name] [Clan-Tag] [Rank-Name1] [Rank-Name2] [Rank-Name3] [Rank-Name4] [Rank-Name5] [Rank-Name6]");
    if(PlayerInfo[playerid][pGeld] < 100000)return SendClientMessage(playerid,COLOR_RED,"Du brauchst $100.000");
    for(new i=0;i<6;i++)
    {
    if(strlen(name) > 32 || strlen(tag) > 8 || strlen(rank[i]) > 32)return SendClientMessage(playerid,-1,"Der Clan-Name sowie die Rank-Name können 32 Zeichen enthalten! Der Clan-Tag allerdings nur 8!");
    }
    CreateClan(name,tag,rank[0],rank[1],rank[2],rank[3],rank[4],rank[5]);
    format(string,144,"Du hast ein Clan names '%s' [Tag: %s] erstellt! Viel Glück!",name,tag);
    SendClientMessage(playerid,COLOR_YELLOW,string);
    printf("Name: %s | Tag: %s | Rank0: %s | Rank1: %s | Rank2: %s | Rank3: %s | Rank4: %s | Rank5: %s | Rank6: %s",name,tag,rank[0],rank[1],rank[2],rank[3],rank[4],rank[5]);
    SaveClans();
    return 1;
    }


    stock CreateClan(name[32],Tag[32],CRank1[32],CRank2[32],CRank3[32],CRank4[32],CRank5[32],CRank6[32])


    Irgendwo ganz unten im Code:
    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[32];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }

    1.)
    //if(!GetDistanceBetweenPlayers(playerid, player, 3.0)) return SCM(playerid, 0xFFFFFFFF, "[INFO]: Du bist nicht in der Nähe des Geldempfaengers.");
    Nimm meins:
    stock PlayerNearPlayer(p1,p2,Float:dist)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(p2,x,y,z);
    return IsPlayerInRangeOfPoint(p1, dist, x, y, z);
    }
    if(!PlayerNearPlayer(playerid, player, 3.0)) return SCM(playerid, 0xFFFFFFFF, "[INFO]: Du bist nicht in der Nähe des Geldempfaengers.");


    2.)
    stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])