Beiträge von robbi2304

    verwende es so



    new deathpickup[MAX_PLAYERS];
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    new vworld = GetPlayerVirtualWorld(playerid);
    new waffe, waffenname[32];
    waffe = GetWeaponModelIDFromName(waffenname);
    format(string,sizeof(string),"† %s †\nMörder: %s\n(%s)",SpielerName(playerid),SpielerName(killerid),aWeaponNames[waffe]);
    Create3DTextLabel(string,COLOR_WHITE,x,y,z,10,vworld,0);
    deathpickup[playerid] = CreatePickup(1254,1,x,y,z,vworld);
    SetTimerEx("deathpickuptimer",1000*60*2,0,"i",playerid);


    das erstellen des Pickups habe ich getestet und das geht auch

    Hallo, ich würde gerne meine Häuser Daten in bestimmten Minuten Takt Updaten lassen. Hierzu habe ich einen Timer in OnGameModeInitd erstellt.


    Und folgenden Code als Abruf geschrieben



    forward Hausupdate();
    public Hausupdate()
    {
    for(new i=0; i<sizeof(hInfo); i++)
    {
    OnHausesLoad();
    updateHaus(i);
    }
    return 1;
    }



    updateHaus(id)
    {
    new string[128];
    if(hInfo[id][h_pickup] != -1)
    {
    DestroyPickup(hInfo[id][h_pickup]);
    }
    if(hInfo[id][h_text] != Text3D:-1)
    {
    Delete3DTextLabel(hInfo[id][h_text]);
    }
    if(!strlen(hInfo[id][h_besitzer]))
    {
    hInfo[id][h_pickup]=CreatePickup(1273, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
    format(string,sizeof(string), "Zum Verkauf\nKosten: %i$\n/hauskaufen", hInfo[id][h_preis]);
    hInfo[id][h_text]=Create3DTextLabel(string, COLOR_RED, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10, 0, 1);
    }
    else
    {
    hInfo[id][h_pickup]=CreatePickup(1239, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
    format(string,sizeof(string), "Besitzer: %s\n/enter", hInfo[id][h_besitzer]);
    hInfo[id][h_text]=Create3DTextLabel(string, COLOR_BUSBLUE, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10, 0, 1);
    }
    return 1;
    }



    public OnHausesLoad()
    {
    new num_rows;
    cache_get_row_count(num_rows);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id=getFreeHausID();
    cache_get_value_name_float(i, "h_x", hInfo[id][h_x]); //Float
    cache_get_value_name_float(i, "h_y", hInfo[id][h_y]); //Float
    cache_get_value_name_float(i, "h_z", hInfo[id][h_z]); //Float
    cache_get_value_name_float(i, "ih_x", hInfo[id][ih_x]); //Float
    cache_get_value_name_float(i, "ih_y", hInfo[id][ih_y]); //Float
    cache_get_value_name_float(i, "ih_z", hInfo[id][ih_z]); //Float
    cache_get_value_name_int(i, "h_interior", hInfo[id][h_interior]); //Float
    new tmp_name[MAX_PLAYER_NAME];
    cache_get_value_name(i, "besitzer", hInfo[id][h_besitzer]); //Float
    strmid(hInfo[id][h_besitzer], tmp_name, 0, sizeof(tmp_name), sizeof(tmp_name));
    cache_get_value_name_int(i, "id",hInfo[id][h_id]); //Float
    cache_get_value_name_int(i, "h_preis",hInfo[id][h_preis]); //Float
    new string[128];
    if(!strlen(hInfo[id][h_besitzer]))
    {
    hInfo[id][h_pickup]=CreatePickup(1273, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
    format(string,sizeof(string), "Zum Verkauf\nKosten: %i$\n/hauskaufen", hInfo[id][h_preis]);
    hInfo[id][h_text]=Create3DTextLabel(string, COLOR_RED, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10, 0, 1);
    }
    else
    {
    hInfo[id][h_pickup]=CreatePickup(1239, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
    format(string,sizeof(string), "Besitzer: %s\n/enter", hInfo[id][h_besitzer]);
    hInfo[id][h_text]=Create3DTextLabel(string, COLOR_BUSBLUE, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10, 0, 1);
    }
    }
    return 1;
    }

    Die Häuser werden bei mir in jeder Sekunde kurz Destroyt und wieder hinzugefügt. Das ist aber nicht das Problem. Der Preis wird nicht geupdatet und das ist viel mehr das Problem.


    //push 18.11.2016

    Ich würde gerne meine Auto Anzahl abfragen und brauche dazu einmal wieder eure Unterstüztung.


    Code:



    hatPlayerAuto(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    for(new id=0; id<sizeof(cInfo); id++)
    {
    if(!cInfo[id][id_x])continue;
    if(!strlen(cInfo[id][besitzer]))continue;
    if(!strcmp(name, cInfo[id][besitzer], true))return 1;
    }
    return 0;
    }


    Diese Funktion ist erstellt um Abzufragen ob er ein Auto besitzt. Wenn ja kann kein neues gekauft werden.
    Ich will aber das der Spieler mehr als ein Auto kaufen kann. Also sagen wir mal 3 Stück

    Probiers mal so kann sein das es doch konflikte bei der Abfrage gibt



    ocmd:gangjail(playerid, params[])
    {
    new pID, Level, string[100], playername[64];
    if(sSpieler[playerid][Fraktion] >= 3)
    {
    if(IsPlayerInRangeOfPoint(playerid,4.0,204.48158, -235.56549, 0.56437)) return SendClientMessage(playerid,ROT,"Du bist nicht mein Gangjail!");
    if(sscanf(params, "ud", pID, Level)) return SendClientMessage(playerid,GELB, "Tippe: /gangjail [Spielername / ID]");
    GetPlayerName(playerid, playername, sizeof(playername));
    format(string, sizeof(string), "* %s hat dich ins Gangjail gesteckt!", playername);
    SendClientMessage(pID, ROT, string);
    GetPlayerName(pID, playername, sizeof(playername));
    format(string, sizeof(string), "* Du hast den Spieler %s ins Gangjail gesteckt!", playername);
    SendClientMessage(playerid, GELB, string);
    Gangjailticket[pID] = 1;
    }
    else
    {
    return SendClientMessage(playerid,ROT,"Du bist in keiner Gang/Mafia");
    }
    return 1;
    }


    Und es war nicht die Ansage gewesen das wenn der Spieler in einer Fraktion ist, das er dann keine neu gesetzt bekommt. Aber Gut auch das kriegen wir schnell hin



    dcmd_setfraktion(playerid,params[])
    {
    if(!IstSpielerAdmin(playerid, 5)) return SendClientMessage(playerid,ROT,"Du bist kein Administator!");
    new pid, frakid, string[145], name[MAX_PLAYER_NAME];
    if(sscanf(params,"ud",pid,frakid)) return SendClientMessage(playerid,GELB,"Verwendung : /setfraktion [ID][Fraktions ID]");
    if(!IsPlayerConnected(pid)) return SendClientMessage(playerid,ROT,"Ungültiger Spieler");
    if(IstSpielerInFraktion(pid,frakid)) return SendClientMessage(playerid,ROT,"Der Spieler ist bereits in der Fraktion");
    if(sSpieler[playerid][Fraktion]>=0) return SendClientMessage(playerid,ROT,"Dieser Spieler ist schon in der Fraktion");//2889
    sSpieler[pid][Fraktion] = frakid;
    GetPlayerName(pid, name, MAX_PLAYER_NAME);
    format(string, sizeof(string), "Du hast dem Spieler %s (ID: %d) die Fraktion %s zugewiesen.", name, playerid, fInfo[frakid][f_name]);
    SendClientMessage(playerid,HELLBLAU,string);
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(string, sizeof(string), "Du wurdest der Fraktion %s von %s zugewiesen!", fInfo[frakid][f_name], name);
    SendClientMessage(pid,HELLBLAU,string);
    return 1;
    }

    ich weiß nicht was du machst. Setfraktion die Zeile mit der Abfrage habe ich selber getestet die ist save.


    Gangjail fragt ab ob der Spieler über Fraktion 3 ist und unter Fraktion 6. Wenn ja soll er den Vode daunter ausführen. Wenn nicht dann den else.


    Also das sollte gehen

    Ah da war ich zu schnell und hab falsch gelesen.


    Nun aber



    dcmd_setfraktion(playerid,params[])
    {
    if(!IstSpielerAdmin(playerid, 5)) return SendClientMessage(playerid,ROT,"Du bist kein Administator!");
    new pid, frakid, string[145], name[MAX_PLAYER_NAME];
    if(sscanf(params,"ud",pid,frakid)) return SendClientMessage(playerid,GELB,"Verwendung : /setfraktion [ID][Fraktions ID]");
    if(!IsPlayerConnected(pid)) return SendClientMessage(playerid,ROT,"Ungültiger Spieler");
    if(IstSpielerInFraktion(pid,frakid)) return SendClientMessage(playerid,ROT,"Der Spieler ist bereits in der Fraktion");
    if(frakid == sSpieler[playerid][Fraktion]) return SendClientMessage(playerid,ROT,"Dieser Spieler ist schon in der Fraktion");//2889
    sSpieler[pid][Fraktion] = frakid;
    GetPlayerName(pid, name, MAX_PLAYER_NAME);
    format(string, sizeof(string), "Du hast dem Spieler %s (ID: %d) die Fraktion %s zugewiesen.", name, playerid, fInfo[frakid][f_name]);
    SendClientMessage(playerid,HELLBLAU,string);
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(string, sizeof(string), "Du wurdest der Fraktion %s von %s zugewiesen!", fInfo[frakid][f_name], name);
    SendClientMessage(pid,HELLBLAU,string);
    return 1;
    }

    Ich kann dir auch sagen warum das nicht Richtig geht, falsche Funktion in deinem Code.



    Hier bitte sehr



    dcmd_setfraktion(playerid,params[])
    {
    if(!IstSpielerAdmin(playerid, 5)) return SendClientMessage(playerid,ROT,"Du bist kein Administator!");
    new pid, frakid, string[145], name[MAX_PLAYER_NAME];
    if(sscanf(params,"ud",pid,frakid)) return SendClientMessage(playerid,GELB,"Verwendung : /setfraktion [ID][Fraktions ID]");
    if(!IsPlayerConnected(pid)) return SendClientMessage(playerid,ROT,"Ungültiger Spieler");
    if(IstSpielerInFraktion(pid,frakid)) return SendClientMessage(playerid,ROT,"Der Spieler ist bereits in der Fraktion");
    if(frakid == PlayerInfo[playerid][fInfo]) return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist schon in der Fraktion");
    sSpieler[pid][Fraktion] = frakid;
    GetPlayerName(pid, name, MAX_PLAYER_NAME);
    format(string, sizeof(string), "Du hast dem Spieler %s (ID: %d) die Fraktion %s zugewiesen.", name, playerid, fInfo[frakid][f_name]);
    SendClientMessage(playerid,HELLBLAU,string);
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(string, sizeof(string), "Du wurdest der Fraktion %s von %s zugewiesen!", fInfo[frakid][f_name], name);
    SendClientMessage(pid,HELLBLAU,string);
    return 1;
    }

    Brauchst du ja nicht mehr. Wir Fragen das ja nun anders ab. Also löschen.



    Ganz einfach mal etwas nachdenken.


    if(sSpieler[playerid][Fraktion] >= 3 || PlayerInfo[playerid][Fraktion] <= 6)


    ersetzen durch


    if(sSpieler[playerid][Fraktion] >= 3 || sSpieler[playerid][Fraktion] <= 6)


    100% achte ich auch nicht auf alles beim anpassen xD

    Vergiss den FrakJail. Wie doof von mir geht auch anders.




    ocmd:gangjail(playerid, params[])
    {
    new pID, Level, string[100], playername[64];
    if(sSpieler[playerid][Fraktion] >= 3 || PlayerInfo[playerid][Fraktion] <= 6)
    {
    if(IsPlayerInRangeOfPoint(playerid,4.0,204.48158, -235.56549, 0.56437)) return SendClientMessage(playerid,ROT,"Du bist nicht mein Gangjail!");
    if(sscanf(params, "ud", pID, Level)) return SendClientMessage(playerid,GELB, "Tippe: /gangjail [Spielername / ID]");
    GetPlayerName(playerid, playername); //2950
    format(string, sizeof(string), "* %s hat dich ins Gangjail gesteckt!", playername);
    SendClientMessage(pID, ROT, string);
    GetPlayerName(pID, playername); //2953
    format(string, sizeof(string), "* Du hast den Spieler %s ins Gangjail gesteckt!", playername);
    SendClientMessage(playerid, GELB, string);
    Gangjailticket[pID] = 1;
    }
    else
    {
    return SendClientMessage(playerid,COLOR_RED,"Diesen Befehl darfst du nicht verwenden da du nicht in einer Fraktion zwischen 3 und 7 bist");
    }
    return 1;
    }

    FrakJail(playerid, Fraktionsid)//3413
    {
    if(sSpieler[playerid][Fraktion]>3) return 1;
    return 0;
    }


    ändern zu


    FrakJail(playerid)//3413
    {
    if(sSpieler[playerid][Fraktion]>3) return 1;
    return 0;
    }



    ocmd:gangjail(playerid, params[])
    {
    new pID, Level, string[100], playername[64];
    if(FrakJail(playerid,3))
    {
    if(IsPlayerInRangeOfPoint(playerid,4.0,204.48158, -235.56549, 0.56437)) return SendClientMessage(playerid,ROT,"Du bist nicht mein Gangjail!");
    if(sscanf(params, "ud", pID, Level)) return SendClientMessage(playerid,GELB, "Tippe: /gangjail [Spielername / ID]");
    GetPlayerName(playerid, playername); //2950
    format(string, sizeof(string), "* %s hat dich ins Gangjail gesteckt!", playername);
    SendClientMessage(pID, ROT, string);
    GetPlayerName(pID, playername); //2953
    format(string, sizeof(string), "* Du hast den Spieler %s ins Gangjail gesteckt!", playername);
    SendClientMessage(playerid, GELB, string);
    Gangjailticket[pID] = 1;
    }
    else
    {
    return SendClientMessage(playerid,Rot,"Du bist in keiner Gang/Mafia);
    }
    return 1;
    }


    ändern zu



    ocmd:gangjail(playerid, params[])
    {
    new pID, Level, string[100], playername[64];
    if(!FrakJail(playerid,3))
    {
    if(IsPlayerInRangeOfPoint(playerid,4.0,204.48158, -235.56549, 0.56437)) return SendClientMessage(playerid,ROT,"Du bist nicht mein Gangjail!");
    if(sscanf(params, "ud", pID, Level)) return SendClientMessage(playerid,GELB, "Tippe: /gangjail [Spielername / ID]");
    GetPlayerName(playerid, playername); //2950
    format(string, sizeof(string), "* %s hat dich ins Gangjail gesteckt!", playername);
    SendClientMessage(pID, ROT, string);
    GetPlayerName(pID, playername); //2953
    format(string, sizeof(string), "* Du hast den Spieler %s ins Gangjail gesteckt!", playername);
    SendClientMessage(playerid, GELB, string);
    Gangjailticket[pID] = 1;
    }
    else
    {
    return SendClientMessage(playerid,Rot,"Du bist in keiner Gang/Mafia);
    }
    return 1;
    }

    Heißt das, dass der Mittelsmann genauso "schlechte" Bewertungen auch "löschen" bzw. "ablehnen" kann?

    Aus meiner Sicht sollte der Mittelsmann die Bewertungen nicht löschen können.
    Was ich damit einfach nur sagen will, ich kann nun einen Mittelsmann immer wieder schlechte Bewertungen geben mit verschiedenen Nutzernamen. Das schraubt die vertraulichkeit des Mittelmannes runter.


    // Edit


    Mit der Anfrage annehmen war folgendes gemeint,


    Interessent stellt Anfrage für eine Art Auftrag. Auftrag wird abgelehnt, also kann keine Bewertung abgegeben werden. Auftrag wird angenommen, Bewertung kann abgegeben werden

    Probier es mal so



    FrakJail(playerid, Fraktionsid)
    {
    if(sSpieler[playerid][Fraktion]>3) return 1;
    return 0;
    }



    ocmd:gangjail(playerid, params[])
    {
    new pID, Level, string[100], playername[64];
    if(FrakJail(playerid,3))
    {
    if(IsPlayerInRangeOfPoint(playerid,4.0,204.48158, -235.56549, 0.56437)) return SendClientMessage(playerid,ROT,"Du bist nicht mein Gangjail!");
    if(sscanf(params, "ud", pID, Level)) return SendClientMessage(playerid,GELB, "Tippe: /gangjail [Spielername / ID]");
    GetPlayerName(playerid, playername); //2950
    format(string, sizeof(string), "* %s hat dich ins Gangjail gesteckt!", playername);
    SendClientMessage(pID, ROT, string);
    GetPlayerName(pID, playername); //2953
    format(string, sizeof(string), "* Du hast den Spieler %s ins Gangjail gesteckt!", playername);
    SendClientMessage(playerid, GELB, string);
    Gangjailticket[pID] = 1;
    }
    else
    {
    return SendClientMessage(playerid,Rot,"Du bist in keiner Gang/Mafia);
    }
    return 1;
    }


    stock IstSpielerInFraktion(playerid, Fraktionsid)
    {
    if(sSpieler[playerid][Fraktion] == Fraktionsid) return 1;
    return 0;
    }


    ersetzen durch



    IstSpielerInFraktion(playerid, Fraktionsid)
    {
    if(sSpieler[playerid][Fraktion]>= Fraktionsid) return 1;
    return 0;
    }