Beiträge von Jeffry

    Merk dir das mit dem Verschwinden für später, jetzt machen wir erst mal das eine.


    Schreibe den /createzone2 Befehl mal so:
    ocmd:createzone2(playerid, params[])
    {
    new Float:x, Float:y, Float:z, i,string[64];
    if(SpielerInfo[playerid][sEingeloggt] == 0) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du musst dich erst einloggen, um den Befehl zu benutzen!");
    if(SpielerInfo[playerid][sAdminlevel] < 3) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du bist nicht berechtigt diesen Befehl zu benutzen!");
    if(SpielerInfo[playerid][sAdminduty] == 0) return SendClientMessage(playerid, COLOR_LIGHTGREY, "[Warnung]: Du befindest dich nicht im Administrator Dienst!");
    if(CZ[playerid][create] != 1) return SendClientMessage(playerid, COLOR_WHITE, "Um eine Gangzone zu erstellen, benutze '/createzone'!");
    GetPlayerPos(playerid, x, y, z);
    CZ[playerid][max_x] = x, CZ[playerid][max_y] = y;
    for(; i<MAX_GZ; i++)
    {
    if(GZ[i][erstellt] == 1) continue;
    GZ[i][min_x] = CZ[playerid][min_x], GZ[i][min_y] = CZ[playerid][min_y], GZ[i][max_x] = CZ[playerid][max_x], GZ[i][max_y] = CZ[playerid][max_y];
    GZ[i][erstellt] = 1, GZ[i][owner] = 0;
    format(string, sizeof(string), "%i| Besitzer: '%s'", GZ[i][zid], FrakName(GZ[i][owner]));
    M_CreateZone(GZ[i][min_x], GZ[i][min_y], GZ[i][max_x], GZ[i][max_y], FrakColor(GZ[i][owner]), string, FrakColor(GZ[i][owner]));
    printf("Zone: %d Min: %f / %f Max: %f / %f", i, GZ[i][min_x], GZ[i][min_y], GZ[i][max_x], GZ[i][max_y]);
    GZ[i][zid] = i, CZ[playerid][zid] = i;
    break;
    }
    return SendClientMessage(playerid, COLOR_WHITE, "Nun gehe zum Angriffspunkt hin und tippe '/createflag'.");
    }


    Klappt es dann? Wenn nicht, was steht im Server Log?

    EXTERN:CreateVehicle <iffffiii>(vehicletype, Float:x, Float: y, Float: z, Float: rotation, color1, color2, respawn_delay);
    EXTERN:AddStaticVehicle <iffffii>(modelid, Float: spawn_x, Float: spawn_y, Float: spawn_z, Float: z_angle, color1, color2);
    EXTERN:AddStaticVehicleEx <iffffiii>(modelid, Float: spawn_x, Float: spawn_y, Float: spawn_z, Float: z_angle, color1, color2, respawn_delay);
    zu:
    EXTERN:CreateVehicle <iffffiiii>(vehicletype, Float:x, Float: y, Float: z, Float: rotation, color1, color2, respawn_delay, addsiren=0);
    EXTERN:AddStaticVehicle <iffffii>(modelid, Float: spawn_x, Float: spawn_y, Float: spawn_z, Float: z_angle, color1, color2);
    EXTERN:AddStaticVehicleEx <iffffiiii>(modelid, Float: spawn_x, Float: spawn_y, Float: spawn_z, Float: z_angle, color1, color2, respawn_delay, addsiren=0);


    Die Include musst du dann nur speichern, nicht kompilieren. Den Gamemode musst du dann kompilieren.

    Poste bitte mal die Befehle in der Reihenfolge, in der du sie verwendet hast hier, nachdem du alle Zonen entfernt hast.


    Beispiel:
    1.) Server an gemacht
    2.) /createzone 1
    3.) /createzone 2
    4.) /flaggesetzen 1
    5.) ...


    Und dann zu allen Command die du verwendet hast den aktuellen Code.

    Falls es jemanden interessiert
    ocmd:spawn(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,Rot,"Diesen Befehl kannst du nicht nutzen.");
    new pID;
    if(sscanf(params, "u", pID)) return SendClientMessage(playerid,Rot,"/spawn [Spieler ID]");
    new name[MAX_PLAYER_NAME],nametwo[MAX_PLAYER_NAME],string[145];
    GetPlayerName(pID,nametwo,sizeof nametwo);
    GetPlayerName(playerid,name,sizeof name);
    SpawnPlayer(pID);
    format(string,sizeof(string),"Du hast den Spieler %s erfolgreich gespawnt!",nametwo);
    SendClientMessage(playerid,Blau,string);
    format(string,sizeof(string),"Du wurdest von %s gespawnt!",name);
    SendClientMessage(pID,Blau,string);
    return 1;
    }



    Zur Frage:
    Du setzt einfach die Health mit SetPlayerHealth auf 100000.0.

    ocmd:delveh(playerid,verhicleid,params[])
    {
    if(IsPlayerAnAdmin(playerid,4))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    DestroyVehicle(vehicleid);
    }
    }
    return 1;
    }


    ocmd:repveh(playerid,verhicleid,params[])
    {
    if(IsPlayerAnAdmin(playerid,4))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    RepairVehicle(vehicleid);
    }
    }
    return 1;
    }


    Und beim Spawn Befehl:
    new pID;
    zu:
    new pID = strval(params);
    Oder eben strtok bzw. sscanf verwenden, je nach dem was du verwendest?

    Ausserdem möchte ich eben das man /versetzen LS, SF, LV oder BS machen kann.. So ist es ja mehr oder weniger nur LS..


    ocmd:versetzen(playerid,params[])
    {
    if(SpielerInfo[playerid][pFraktion] == 1 && SpielerInfo[playerid][pRang] >= 7)
    {
    if(Duty[playerid] == 0){ SCM(playerid,GRAU,"Sie sind nicht im Dienst."); return 1; }
    new giveplayerid,string[256],where[5];
    if(sscanf(params,"us",giveplayerid,where)) return SCM(playerid,GRAU,"Nutzen Sie: /versetzen [Spieler] [Stadt]");
    if(SpielerInfo[giveplayerid][pFraktion] != 1) return SCM(playerid,GRAU,"Sie können nur Polizisten versetzen!");
    if(!strcmp(where, "LS", true))
    {
    SpielerInfo[playerid][pLSDienst] = 1;
    SCM(playerid,GRAU,"Sie haben den Spieler erfolgreich nach Los Santos versetzt!");
    format(string,sizeof(string),"{F00000}Funk: {FFFFFF}Beamter:{FF7800} %s {FFFFFF}wurde nach{FF7800} Los Santos {FFFFFF}versetzt!",pn(giveplayerid));
    SendeFraktion(1,WEIS,string);
    SCM(giveplayerid,WEIS,"{F00000}Sie wurden nach Los Santos versetzt!");
    }
    else if(!strcmp(where, "SF", true))
    {
    //...
    }
    }
    return 1;
    }


    Falls du das Plugin verwendest: In sscanf "us" zu "us[5]".

    Naja, 0 ist es nicht mehr. Und wenn du dir die Koordinaten anschaust, dann bist du nicht in der Nähe der Flagge, sondern ca. 50 Meter davon entfernt.
    Geh mal zu den Koordinaten die da stehen, du kannst dich ja näher hinbewegen, kannst ja immer im Log schauen, wo du bist.

    if(listitem == 0) //Blau//hier wenn man Blau anklickt im Dialog wird der Befehl weiter ausgeührt
    {
    SetPVarInt(playerid, "neon", CreateObject(18648,0,0,0,0,0,0,283));
    SetPVarInt(playerid, "neon1", CreateObject(18648,0,0,0,0,0,0,283));
    AttachObjectToVehicle(GetPVarInt(playerid, "neon"), GetPlayerVehicleID(playerid),-0.8, 0.0, -0.70, 0.0, 0.0, 0.0);//Hier werden die Neonröhren unter das Auto gemacht also ans auto gehängt das machen wir auch mit den anderen sachen...
    AttachObjectToVehicle(GetPVarInt(playerid, "neon1"), GetPlayerVehicleID(playerid), 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
    HatSchonNeon[playerid] = 1;
    }


    Ändere das mal zu:
    if(listitem == 0) //Blau//hier wenn man Blau anklickt im Dialog wird der Befehl weiter ausgeührt
    {
    new o1 = CreateObject(18648,0,0,0,0,0,0,283);
    printf("o1: %d", o1);
    SetPVarInt(playerid, "neon", o1);
    new o2 = CreateObject(18648,0,0,0,0,0,0,283);
    printf("o2: %d", o2);
    SetPVarInt(playerid, "neon1", o2);
    AttachObjectToVehicle(o1, GetPlayerVehicleID(playerid),-0.8, 0.0, -0.70, 0.0, 0.0, 0.0);//Hier werden die Neonröhren unter das Auto gemacht also ans auto gehängt das machen wir auch mit den anderen sachen...
    AttachObjectToVehicle(o2, GetPlayerVehicleID(playerid), 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
    HatSchonNeon[playerid] = 1;
    }


    Geht es dann? (Teste es mit dem blauen Neon).
    Wenn nicht, was steht denn im Server Log?

    ocmd:createcode(playerid, params[])
    {
    new typ[40], typid, wert;
    if(!PlayerInfo[playerid][pAdmin] >= 5)return SendClientMessage(playerid, ROT, "Du hast kein Adminlevel 5");
    if(!sscanf(params,"ii",typid,wert))return SendClientMessage(playerid, 0xFF0000FF, "/createcode [Typ] [Wert]");
    SendClientMessage(playerid, 0xFF0000FF, "1 = Geld | 2 = Respektpunkte | 3 = Premium | 4 = UBB Fahrzeug");
    new code[40], str[145];
    format(code, sizeof(code), "%04d-%04d-%04d-%04d", random(10000), random(10000), random(10000), random(10000));
    format(str, sizeof(str), "Gutscheincode : %s",code);
    SendClientMessage(playerid,ROT,str);
    format(code, sizeof(code), "/codes/%s.txt", code);
    format(typ, sizeof(code), "%s", typid);
    dini_Create(code);
    dini_IntSet(code, typ, wert);
    return 1;
    }


    Der Wert muss ein Integer bleiben, und das mit dem Typ machst du besser so.

    return SaveGZ_(zoneid), LoadGZ_(zoneid);
    Das kannst du so nicht machen. Der Cache existiert zu diesem Zeitpunkt wahrscheinlich gar nicht mehr, daher wird alles auf 0 gesetzt.


    Mach es zu:
    return SaveGZ_(zoneid);


    Dann lösche mal alle Zonen, und erstelle zwei neue, und versuche dann ob das mit der Flagge geht.

    Also das ist die gleiche Funktion jeweils, daher dürfte das keine Probleme machen.
    Entweder die Koordinaten der Flagge werden nicht geladen, oder sie werden irgendwo wieder entfernt, nachdem du sie gesetzt hast.
    Schau da mal nach, warum die alle auf 0 sind. Poste gegebenenfalls den Code, mit dem du die Flaggen aus der Datenbank lädst.

    Ohja, natürlich. Wenn man den Fehler sieht fällt es gleich auf, dass das natürlich nicht übernommen werden soll.
    ocmd:pm(playerid,params[])
    {
    new pID,text[145],string[145],sender[MAX_PLAYER_NAME];
    if(sscanf(params,"us[145]",pID,text))return SendClientMessage(playerid,GRUEN,"Benutzung: /pm [SpielerID] [Text]");
    GetPlayerName(playerid,sender,sizeof(sender));
    format(string,sizeof(string),"%s flüstert dir: %s",sender,text);
    SendClientMessage(pID,GELB,string);
    format(string,sizeof(string),"Du flüstert zu %s: %s",SpielerName(playerid),text);
    SendClientMessage(playerid,GELB,string);
    return 1;
    }