Beiträge von Kaliber

    Ups ja das habe ich gerade selber gemerkt, jedoch steht ja der Name in DB und diesen möchte ich löschen lassen.


    MFG


    Ja dann musst du das auch machen ^^


    Sähe dann so aus:


    new query[128], name[24];
    GetPlayerName(playerid, name, 24); //playerid = der spieler der gelöscht werden soll
    format(query,128,"DELETE * FROM whitelist WHERE Name = '%s'",name);
    db_query(wDatabase,query);
    SendClientMessage(playerid,RED,"Erfolgreich.");


    mfg. :thumbup:


    Also, GetPlayerID(inputtext), gibt das einen Integer oder einen String wieder :huh:


    Ich befürchte nämlich einen Integer und deshalb müsste das so aussehen:


    format(query,128,"DELETE * FROM whitelist WHERE Name = '%i'",GetPlayerID(inputtext));


    mfg. :thumbup:

    Schreibe das mal einfach so:


    if(playerid == killerid) return 1;
    if(duell[killerid] == 1 || duell1[killerid] == 1) return 1;// <- Wenn das 1 ist soll diese Funktion für den Spieler ausgeschlossen werden und zur nächsten gehen
    if(sSpieler[playerid][gTeam] == sSpieler[killerid][gTeam])
    {
    if(teamdmg[killerid] == 0)
    {
    SCM(killerid,FARBE_ROT,"|- Du darfst deine Teammitglieder nicht angreifen! Warnung 1/3.");
    teamdmg[killerid] ++;
    }
    else if(teamdmg[killerid] == 1)
    {
    SCM(killerid,FARBE_ROT,"|- Du darfst deine Teammitglieder nicht angreifen! Warnung 2/3.");
    teamdmg[killerid] ++;
    }
    else if(teamdmg[killerid] == 2)
    {
    SCM(killerid,FARBE_ROT,"|- Du darfst deine Teammitglieder nicht angreifen! Warnung 3/3.");
    teamdmg[killerid]++;
    }
    else if(teamdmg[killerid] == 3)
    {
    Kick(killerid);
    return 1;
    }
    }
    //am Ende von dem Callback
    return 1;


    mfg. :thumbup:

    Wie kann ich denn die Vehicleid definieren von den Trucks weil wenn dan ein Truck respawnt ist es bei allen speilern auf 0?


    Sehr gut mitgedacht, du brauchst eine extra variable hier mal ein bsp:


    //oben in dein script
    new var[MAX_PLAYERS];


    //Bei OnPlayerStateChange
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(IsATruck(playerid))
    {
    var[playerid] = GetPlayerVehicleID(playerid);
    }
    }


    public OnVehicleSpawn(vehicleid)
    {
    for(new i; i<100; i++)
    {
    if(var[i] != vehicleid) continue;
    var[i] = 0;
    PlayerInfo[i][pTank] = 0;//oder was auch immer = 0;
    break;
    }
    return 1;
    }
    Und was die Funktion IsATruck angeht musst du halt deklarieren, zum Beispiel so:


    stock IsATruck(playerid)
    {
    new m = GetVehicleModel(GetPlayerVehicleID(playerid));
    if(m == 455 || m == 514) return 1;//musst halt die model ids von den Trucks suchen und da einfügen ;)
    return 0;
    }


    mfg. :thumbup:

    Du hast eine { vergessen, schreibe es so:


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate==PLAYER_STATE_DRIVER)
    {
    if(GetPVarInt(playerid,"Carlienzs")==0)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_RED,"Du hast kein Führerschein.");
    }
    else if(GetPVarInt(playerid,"Carlienzs")==1)
    {
    SendClientMessage(playerid,COLOR_RED,"/motor um den Motor zustarten!");
    }
    }
    return 1;
    }


    mfg. :thumbup:

    Naja, sehr simpel und paar kleine Verbesserungen hätte ich:


    1. Lösche mal alle überflüssigen Callbacks und oben nimm das mit dem #if defined Filterscript raus, das ist sinnlos, denn es ist ein Filterscript also scripte es auch einfach so ^^


    2. Bei deinen #defines fängt man bei 0 an ;)


    3. Die 5 news da hättest du in eine Zeile packen können :)


    4. Nimm mal das OnGameModeInit, OnGameModeExit und OnPlayerRequest raus (das braucht man nur für ein Gamemode nicht für ein FS !)


    5. Deine Commands anpassen z.B. so:
    if (strcmp("/cvote", cmdtext, true, 10) == 0)
    in
    if (strcmp("/cvote", cmdtext, true, 6) == 0)


    Sind nur ein paar Tipps, nicht böse gemeint :)


    mfg. :thumbup:

    Das musst du auch so schreiben ^^


    ocmd:freeze(playerid,params[])
    {
    new pID,string[128],string2[128];
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,ROT,"Benutzung: /freeze [ID]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Der angegebene Spieler ist nicht connected!");
    if(GetPVarInt(playerid,"AdminLevel")==0) return SendClientMessage(playerid,ROT,"Du bist kein Admin !");
    TogglePlayerControllable(pID,0);
    format(string,sizeof(string),"Du hast den Spieler %s gefreezed.",SpielerName(pID));
    format(string2,sizeof(string2),"Du wurdest vom Spieler %s gefreezed!",SpielerName(playerid));
    SendClientMessage(playerid,GRÜN,string);
    SendClientMessage(pID,ROT2,string2);
    return 1;
    }


    mfg. :thumbup:

    1. Hab nicht drauf geachtet.
    2. Wieso ist es überflüssig?
    3. Es ist ja ein String. Ich dachte string darf nur 64, 128 .... bis 1024 gehen. So hats mir mal jemand gesagt :)


    Lg Sonderzeichen


    2. Weil er sich dann wundert warum er Errors bekommt :rolleyes:


    3. Nein, ein String kann von 0 bis unendlich gehen ^^


    Meistens verwendet man aber diese Reihe:
    2,4,8,16,32,64,128,256/255,1024,2048,4096 //höher braucht man es eig nicht


    mfg. :thumbup:

    Du musst das so schreiben, und bitte verschiebe nicht die if-Abfragen und die Zeilen wo die Variablen deklariert werden, sonst funktioniert das nicht ! :pinch:


    if(strcmp(cmd, "/buyfuel", true) == 0)
    {
    if(PlayerInfo[playerid][pJob] != 22) return SendClientMessage(playerid,WHITE,"Du bist kein Trucker");
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 453) return SendClientMessage(playerid, COLOR_GRAD1, "Du kannst nur mit einem Roadtrain Benzin kaufen!");
    if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid))) return SendClientMessage(playerid,WHITE,"Dieser Truck hat keinen Anhänger !");
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GOLD, "Benutzung: /buyfuel [Anzahl]");
    new Anzahl = strval(tmp), sum = (PlayerInfo[playerid][pTrucker] + Anzahl);
    if(GetPlayerMoney(playerid) < (Anzahl*100)) return SendClientMessage(playerid,WHITE,"Du besitzt zu wenig Geld für so viel Benzin !");
    if(sum >= 2500) return SendClientMessage(playerid,WHITE,"Du hast schon 2500 Liter Benzin!");
    PlayerInfo[playerid][pTrucker] += Anzahl;
    new stringtrucker[128];
    format(stringtrucker,sizeof(stringtrucker),"Du hast %d Liter Benzin gekauft! Du kannst dir nun eine Tankstelle aussuchen die Benzin benötigt!",Anzahl);
    SendClientMessage(playerid,WHITE,stringtrucker);
    GivePlayerMoney(playerid, -(Anzahl*100));
    return 1;
    }


    mfg. :thumbup:

    Kaliber
    Es hätte auch so funktioniert wenn er das S bei der sscanf abfrage entfernt hätte, oder?


    Nein, da er playerid verwendet hatte bei SetPVarInt und nicht pID ;)



    2 Sachen dazu:
    1. Dein C&P da drinnen ist überflüssig :rolleyes:
    2.
    playername[128] //128 ?! dieser Array ist viel zu groß, 24 reicht vollkommen
    Also schreibe für die Variable der Namen playername[24] und pidname[24] ;)


    mfg. :thumbup:

    COMMAND:givecarlienzs(playerid,params[])
    {
    new pID;
    if(Spieler[playerid][Member] != 8) return SendClientMessage(playerid,COLOR_RED,"Du bist kein Fahrlehrer !");
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_RED,"Benutzung: /givelicense [ID]");
    if(GetPlayerMoney(pID) < 8000) return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler besitzt keine 8.000$ !");
    SetPVarInt(pID,"Carlienzs",1);
    GivePlayerMoney(pID, -8000);
    return 1;
    }


    Das musst du so machen ;)


    mfg. :thumbup: