Beiträge von [pL]Makaveli

    Hallo Breadfish,
    ich hab ein kleines Problem.
    Mir wird diese Benachrichtigung durchgehen gespammt (vlt auch anderen, kanns im moment nicht testen da keiner meiner Kollegen on ist)


    public beantragt(playerid)
    {
    SendClientMessage(playerid,BLAU,"Stadthalle: {FEFEFE}Ihr Personalausweis ist nun fertig, bitte holen sie Ihn ab.");
    SpielerInfo[playerid][Persofertig]=1;
    return 1;
    }


    Der Timer:
    SetTimerEx("beantragt",1500,1,"i",playerid); // 1500 als Test


    Die Funktion:


    if(listitem == 0)
    {
    if(SpielerInfo[playerid][Perso] == 1)
    {
    SendClientMessage(playerid, ROT,"Sekräterin: {FEFEFE}Entschuldigung, da liegt ein Missverständnis vor.");
    SendClientMessage(playerid, ROT,"Sekräterin: {FEFEFE}Laut Computer, besitzen Sie bereits einen Personalausweis.");
    }
    else
    {
    SendClientMessage(playerid, ROT,"Sekräterin: {FEFEFE}Ich werde für Sie einen Personalausweis anfertigen.");
    SendClientMessage(playerid, ROT,"Sekräterin: {FEFEFE}Dies dauert ca. 15 Minuten. Sie werden von mir kontaktiert sobald er fertig ist.");
    SpielerInfo[playerid][Persobeantragt]=1;
    SetTimerEx("beantragt",1500,1,"i",playerid);


    Du kannst im Endeffekt alles in einen Query packen, das würde die Sache ein wenig verbessern.


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new AllInOne[1000],Query[400];
    strcat(AllInOne, "UPDATE `accounts` SET ");
    format(Query, sizeof(Query),"Adminlevel = '%i', Kills = '%i', Tode = '%i', Banned = '%i', Skin = '%i', Level = '%i', Geld = '%i',", SpielerInfo[playerid][pAdminlevel], SpielerInfo[playerid][pKills], SpielerInfo[playerid][pTode], SpielerInfo[playerid][pBanned], GetPlayerSkin(playerid), GetPlayerScore(playerid), GetPlayerMoney(playerid));
    strcat(AllInOne,Query);
    format(Query, sizeof(Query),"Perso = '%i', Autoschein = '%i', Waffenschein = '%i', Motorradschein = '%i', Angelschein = '%i'", SpielerInfo[playerid][Perso], SpielerInfo[playerid][Autoschein], SpielerInfo[playerid][Waffenschein], SpielerInfo[playerid][Motorradschein], SpielerInfo[playerid][Angelschein]);
    strcat(AllInOne,Query);
    format(Query, sizeof(Query),"WHERE Name = '%s'", SpielerInfo[playerid][pName]);
    strcat(AllInOne,Query);
    mysql_query(AllInOne);
    }
    }
    return 1;
    }


    So ca. `?

    Hallo Freunde,
    ich hätte ne Frage und zwar wie könnte man meinen stock zum laden vom Spieler Ressourcenschonender machen ?
    Zurzeit sieht das so aus und ich glaube nicht das dass gut ist.


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    GivePlayerMoney(playerid,mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]));
    SetPlayerScore(playerid,mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]));
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdminlevel] = mysql_GetInt("accounts", "Adminlevel", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Perso] = mysql_GetInt("accounts", "Perso", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Autoschein] = mysql_GetInt("accounts", "Autoschein", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Waffenschein] = mysql_GetInt("accounts", "Waffenschein", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Motorradschein] = mysql_GetInt("accounts", "Motorradschein", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Angelschein] = mysql_GetInt("accounts", "Angelschein", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Reisepass] = mysql_GetInt("accounts", "Reisepass", "Name", SpielerInfo[playerid][pName]);
    // SpielerInfo[playerid][pSkin] = mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]);
    SetPlayerSkin(playerid,mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]));
    if(SpielerInfo[playerid][pBanned] == 1)
    {
    Kick(playerid);
    }
    }
    return 1;
    }

    Hallo Leute,
    ich habe ein Problem mit meinem Waffen Anti.
    Er tritt nur für die ID 0 in Kraft aber für keine andere.


    Liegt es vielleicht am Timer ?
    SetTimer("AntiCheat",1000,1);


    Oder am Public ?
    public AntiCheat(playerid)
    {
    new weapon, ammo;
    for(new i = 0; i <= 12; i++)
    {
    GetPlayerWeaponData(playerid,i,weapon,ammo);
    if(sWaffen[playerid][weapon] == 0 && ammo > 0)
    {
    new busted[128];
    format(busted, sizeof(busted),"Info: %s wurde vom System gekickt. Grund: Waffencheat (ID: %i)",sName(playerid), weapon);
    SendClientMessageToAll(SERVERFARBE,busted);
    new bustednachricht[300];
    format(bustednachricht,sizeof(bustednachricht),"{FEFEFE}Hallo {A50000}%s,\n{FEFEFE}Du wurdest soeben vom System wegen einem Waffencheat vom Server gekickt.\nDie Waffe die du gecheatet hast war die ID: %i.\nSollte dies ein Fehler gewesen sein, gib einem Admin im Teamspeak oder im Forum bescheid.\n\n {A50000}"#SERVERNAME, sName(playerid), weapon);
    ShowPlayerDialog(playerid, DIALOG_ALLESANDERE, DIALOG_STYLE_MSGBOX,"{A50000}"#SERVERNAME" Systemkick",bustednachricht,"Schließen","");
    Kick(playerid);
    }
    }
    return 1;
    }

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Weiß einer wie das geht ?
    Seh ich zum ersten mal

    Leute erstmal muss ich euch wirklich danken dass Ihr soviel Geduld habt und mir helft
    Echt klasse von euch.


    So habe es nun mit nem Timer gemacht.
    forward AntiCheat(playerid);
    public AntiCheat(playerid)
    {
    new weapon, ammo;
    for(new i = 0; i <= 12; i++)
    {
    GetPlayerWeaponData(playerid,i,weapon,ammo);
    if(sWaffen[weapon][46] == 0 && ammo > 0) Kick(playerid);
    }
    return 1;
    }


    Habe es nun zum testen mit einem Kick gemacht.


    SetTimer("AntiCheat",1000,1);


    Jedoch wird man auch gekickt, wenn man sich im Ammu eine Deagle kauft.


    if(dialogid == DIALOG_AMMUNATION)
    {
    if(response)
    {
    if(listitem == 0)
    {
    if(GetPlayerMoney(playerid) < 1500)
    {
    return SendClientMessage(playerid, WHITE, "So viel Geld hast du nicht bei dir.");
    }
    else
    {
    GivePlayerMoney(playerid, -1500);
    GivePlayerWeapon(playerid, 24, 100);
    SpielerInfo[playerid][pGeld]-=1500;
    SendClientMessage(playerid, WHITE, "Du hast eine Desert Eagle gekauft.");
    sWaffen[playerid][24]=1;


    Was ist da falsch gelaufen ?


    //push
    Verstehe es einfach nicht :-/

    Gleich unter dem Befehl.
    Also


    ocmd:createcar(playerid, params[])
    {
    ......
    .....


    new id = CreateVehicle(model, X, Y, Z, A, -1, -1, -1);
    .....
    return 1;


    }

    Also bei deinem stock SpielerSpeichern oder wie du ihn genannt hast Gettest du die letzten posX, posY, posZ von dem Spieler.
    Ggf. auch die FacingAngle, weiß aber nicht ob das nötig ist.
    Beim stock Laden, ließt du diese Koordinaten aus und setzt sie mit SetPlayerPos.
    Nur nicht vergessen das Postionen als Float gelten ^^.


    Kann dir im mom keinen Beispielcode machen da ich am Handy bin