Beiträge von tobialvarez

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


    Jetzt hab ich wieder das Problem, das der Server den Befehl ich sag mal "nicht anerkennt" ... er gibt mir die ganze Zeit aus das der Befehl angeblich nicht existieren soll... aber alle anderen gehen.

    Hab ich doch, mehr ist das nicht. :D
    Aber gut, ich kanns dir auch kurz ganz machen, wenn du mir den Befehl gibst, wie du ihn grade hast.



    COMMAND:createclan(playerid,params[])
    {
    new name[32],tag[8],rank[32][6],string[144];
    print("1");
    if(sscanf(params,"s[32]s[8]s[32]s[32]s[32]s[32]s[32]s[32]",name,tag,rank[0],rank[1],rank[2],rank[3],rank[4],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!");
    }
    print("2");
    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);
    print("3");
    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;
    }

    Ich blick mit dem strtok oder so nicht durch O.o xd

    So und jetzt hab ich ein Problem und zwar:

    stock CreateClan(name[],Tag[],CRank1[],CRank2[],CRank3[],CRank4[],CRank5[],CRank6[])
    {
    new string[515];
    print("create 1");
    for(new i=0;i<MAX_CLANS;i++)
    {
    print("create 2");
    if(sClanInfo[i][ciCreated])continue;
    format(sClanInfo[i][ClanName],32,name);
    print("create 2");
    printf("%s",name);
    format(sClanInfo[i][ClanTag],8,Tag);
    print("create 3");
    printf("%s",Tag);
    format(sClanInfo[i][ClanRank1],32,CRank1);
    print("create 4");
    format(sClanInfo[i][ClanRank2],32,CRank2);
    print("create 5");
    printf("%s",CRank2);
    format(sClanInfo[i][ClanRank3],32,CRank3);
    print("create 6");
    format(sClanInfo[i][ClanRank4],32,CRank4);
    print("create 7");
    format(sClanInfo[i][ClanRank5],32,CRank5);
    print("create 8");
    format(sClanInfo[i][ClanRank6],32,CRank6);
    print("create 9");
    sClanInfo[i][ciCreated] = true;
    print("create 10");
    format(string,515,"INSERT INTO `clans` (id,name,tag,ClanRank1,ClanRank2,ClanRank3,ClanRank4,ClanRank5,ClanRank6) VALUES (%i,'%s','%s','%s','%s','%s','%s','%s','%s')",
    i,escape(name),escape(Tag),escape(CRank1),escape(CRank2),escape(CRank3),escape(CRank4),escape(CRank5),escape(CRank6));
    printf("%s,%s,%s,%s,%s,%s,%s,%s",name,Tag,CRank1,CRank2,CRank3,CRank4,CRank5,CRank5);
    mysql_function_query(MySQLHandle, string, false, "", "");
    }
    return 1;
    }

    Habe es nun so und das printet / debuggt:

    [17:17:01] create 1
    [17:17:01] create 2
    [17:17:01] create 2
    [17:17:01] tobiboss
    [17:17:01] create 3
    [17:17:01] tb
    [17:17:01] create 4
    [17:17:01] create 5
    [17:17:01] killernonameamateuboss
    [17:17:01] create 6
    [17:17:01] create 7
    [17:17:01] create 8
    [17:17:01] create 9
    [17:17:01] create 10



    "/createclan tobiboss tb profi killer noname amateur boss coboss"


    Kann man das irgendwie "spitten" also Teilen oder so..?

    Ich hab alles weg bekommen, sprich es kommt kein Error in der Server-Log aber der Befehl sprich der Clan wird nicht in die Tabelle eingespeichert ... vielleicht kann mir dort jemand noch helfen...

    stock CreateClan(name[], Tag[], CRank1[], CRank2[], CRank3[], CRank4[], CRank5[], CRank6[])
    {
    new str[512];
    print("create 1");
    for(new i = 0; i < MAX_CLANS; i ++)
    {
    if(!sClanInfo[i][ciCreated])
    {
    print("create 2");
    format(sClanInfo[i][ClanName], 32, name);
    print("create 3");
    format(sClanInfo[i][ClanTag], 8, Tag);
    print("create 4");
    format(sClanInfo[i][ClanRank1], 32, CRank1);
    print("create 5");
    format(sClanInfo[i][ClanRank2], 32, CRank2);
    print("create 6");
    format(sClanInfo[i][ClanRank3], 32, CRank3);
    print("create 7");
    format(sClanInfo[i][ClanRank4], 32, CRank4);
    print("create 8");
    format(sClanInfo[i][ClanRank5], 32, CRank5);
    print("create 9");
    format(sClanInfo[i][ClanRank6], 32, CRank6);
    print("create 10");
    sClanInfo[i][ciCreated] = true;


    format(str, sizeof(str), "INSERT INTO `clans` ( \
    `id`, \
    `name`, \
    `tag`, \
    `ClanRank1`, \
    `ClanRank2`, \
    `ClanRank3`, \
    `ClanRank4`, \
    `ClanRank5`, \
    `ClanRank6` \
    ) VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", i, escape(name), escape(Tag), escape(CRank1), escape(CRank2), escape(CRank3), escape(CRank4), escape(CRank5), escape(CRank6));


    mysql_function_query(MySQLHandle, str, false, "", "");
    break;
    }
    }
    return 1;
    }

    bei jeden s fehlt die länge also s[32]s[8] etc. Dann ist deine Geld Abfrage falsch denn er bekommt die Nachricht das er 100000 braucht wenn er genau 100000 hat. == ändern in <. Dann sollteste die länger überprüfen (weiß gerade nicht ob das sscanf von sich aus macht).

    Also, hab alles geändert .. jetzt sieht es so aus:

    COMMAND:createclan(playerid, params[])
    {
    new name[32],tag[8],rank[32],rank1[32],rank2[32],rank3[32],rank4[32],rank5[32];
    SendClientMessage(playerid,-1,"Der Clan-Name sowie die Rank-Namen können 32 Zeichen enthalten! Der Clan-Tag allerdings nur 8!");
    if(sscanf(params,"s[32]s[8]s[32]s[32]s[32]s[32]s[32]s[32]",name,tag,rank,rank1,rank2,rank3,rank4,rank5))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 !");
    CreateClan(name, tag, rank,rank1,rank2,rank3,rank4,rank5);
    SaveClans();
    return 1;
    }

    Aber es passiert immer noch das gleiche und mit der Länge ist mir das grad egal da ich ja erstmal nur testen will ob er den Clan created ...

    Hallo ich hab mal wieder ein Problem und zwar ich habe ein Befehl /createclan .. dieser sieht so aus:

    COMMAND:createclan(playerid, params[])
    {
    new name[32],tag[8],rank[32],rank1[32],rank2[32],rank3[32],rank4[32],rank5[32];
    SendClientMessage(playerid,-1,"Der Clan-Name sowie die Rank-Namen können 32 Zeichen enthalten! Der Clan-Tag allerdings nur 8!");
    if(sscanf(params,"ssssssss",name,tag,rank,rank1,rank2,rank3,rank4,rank5))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 !");
    CreateClan(name, tag, rank,rank1,rank2,rank3,rank4,rank5);
    SaveClans();
    return 1;
    }

    Wenn ich InGame alles ausfülle also so "/createclan Bossige-Bosse BB eins zwei drei vier fuenf sechs" dann zeigt der mir an das mein Befehl NICHT existiert ..


    Autospawns[AHCarKauf[i][Autohaus]][AHP_x] und daraus dann

    new ra=random(3);
    Autospawns[AHCarKauf[i][Autohaus]][ra][AHP_x] oder?

    Hallo Leute,
    ich hab folgendes Problem und zwar ich hab ein Autohaus Spawns (es gibt 6 Autohäuser) und jedes davon soll 3 verschiedene Parkplätze kriegen... nur wie ...
    Zurzeit habe ich es so:
    new Autospawns[7][spawnAH] = {
    //{AutohausID,X,Y,Z,A}
    {-1641.0673,1211.3047,6.8848,225.4586}, //Autohaus0
    {-1987.9824,294.5190,34.4335,88.9083}, //Autohaus1
    {770.2649,-1326.5704,13.2527,268.4019}, //Autohaus2
    {2149.1555,-1138.3604,25.2178,269.2369},//Autohaus3
    {2070.8184,1874.4398,11.0399,230.2121},//Autohaus4
    {2813.2341,-1584.1982,10.6567,243.8739},//Autohaus5
    {-1296.5397,-53.3815,15.0675,132.6583}//Autohaus6


    };

    Naja, das sollst du ja auch ersetzen.
    Wie erstellst du denn die Autos nach denen du suchst?



    stock CreatePlayerCar(playerid,modelid, Float:X, Float:Y, Float:Z, Float:A, repPreis, kaufPreis){
    new id = getFreeSlot();
    //new veh = GetPlayerVehicleID(playerid);
    if(id == -1)return SendClientMessage(playerid,-1,"Du kannst dir kein Auto kaufen das Limit ist erreicht.");
    sCarInfo[id][CarModelID] = modelid;
    sCarInfo[id][pCarPos_X] = X;
    sCarInfo[id][pCarPos_Y] = Y;
    sCarInfo[id][pCarPos_Z] = Z;
    sCarInfo[id][pCarPos_A] = A;
    AHCarKauf[id][RepPreis] = repPreis;
    sCarInfo[id][VKPreis] = kaufPreis;
    sCarInfo[id][CarTank] = GetGasMax(GetVehicleModel(id));
    strcat(sCarInfo[id][scName],PlayerName(playerid),MAX_PLAYER_NAME);
    format(query,256,"INSERT INTO `autos` (`Name`,`ModelID`,`AutoX`,`AutoY`,`AutoZ`, `AutoA`,`ReparaturPreis`, `VKPreis`, `CarTank`, `CarKM`) VALUES ( '%s', %d, %f , %f, %f, %f, %d, %d, %f, %f);",PlayerName(playerid),sCarInfo[id][CarModelID],sCarInfo[id][pCarPos_X],sCarInfo[id][pCarPos_Y],sCarInfo[id][pCarPos_Z],sCarInfo[id][pCarPos_A],AHCarKauf[id][RepPreis],sCarInfo[id][VKPreis],sCarInfo[id][CarTank],sCarInfo[id][CarKM]);
    mysql_query(query);
    sCarInfo[id][CarID] = mysql_insert_id();
    sCarInfo[id][VehID] = CreateVehicle(sCarInfo[id][CarModelID],sCarInfo[id][pCarPos_X],sCarInfo[id][pCarPos_Y],sCarInfo[id][pCarPos_Z],sCarInfo[id][pCarPos_A],0,0,-1);
    PutPlayerInVehicle(playerid,sCarInfo[id][VehID],0);
    return 1;
    }



    Oder die letzte Parkplatz Position geht auch .. ich hab das so gemacht, zeigt mir aber auch ID 0 an ... irgendwas läuft schief.


    veh = sCarInfo[i][real_vehicle_ID];


    dieses real_vehicle_ID besitze ich nicht ... :<
    /E:
    Oder kannst du mir sagen, eine Funktion die ähnelt wie GetPlayerVehicleID ... ich will ja nur die CarID auslesen können

    Hallo,
    ich hab ein Problem und zwar, ich will das er automatisch die CarID's ausliest und wenn man auf eins drauf klickt (wird im Dialog angezeigt) dann wird das makiert.
    Der Code:

    ocmd:carfind(playerid, params[]){
    new str[1500],headline[64],count;
    for(new i; i != MAX_VEHICLES; ++i){
    if(!sCarInfo[i][scName][0])continue;
    if(strcmp(PlayerName(playerid),sCarInfo[i][scName],false) == 0){
    format(str,sizeof(str),"%s{FFFFFF}Name: %s | Suchen & Makieren\n",str,GetVehicleName(sCarInfo[i][CarModelID]));
    ++count;
    }
    }
    if(!count)return SendClientMessage(playerid,-1,"Du besitzt kein Fahrzeug");
    format(headline,sizeof(headline),"Du hast %d Fahrzeug(e).",count);
    return ShowPlayerDialog(playerid,AUTO_FIND,DIALOG_STYLE_LIST,headline,str,"Bestätigen","Schließen");
    }


    if(dialogid == AUTO_FIND){
    if(!response)return SendClientMessage(playerid,-1,"Suche wurde abgebrochen!");
    strdel(inputtext,0,strfind(inputtext,";")+2);
    new veh = strval(inputtext);
    new Float:Pos[3];
    GetVehiclePos(veh,Pos[0],Pos[1],Pos[2]);
    format(string,sizeof(string),"Dir wurde ein Checkpoint gesetzt! (CarID: %i) - Mache wieder /carfind um den Checkpoint zu löschen!",veh);
    SendClientMessage(playerid,-1,string);
    return SetPlayerCheckpoint(playerid, Pos[0],Pos[1],Pos[2], 6);
    }


    So, das dürfte klappen.

    createPlayerCar(playerid,ahCars[id][model],RandomSpawn[rand][0],RandomSpawn[rand][1],RandomSpawn[rand][2],RandomSpawn[rand][3]);