Beiträge von Bubelbub

    Wenn du AddStaticPickup(1239,1,217.5414,78.1651,1005.0391); verwendest, brauchst du kein waffenscheinsybol=CreatePickup(1239,1,217.5414,78.1651,1005.0391);


    Das ist unnötig.


    new waffenscheinsybol = CreatePickup(1239, 1, 217.5414, 78.1651, 1005.0391);

    Arbeitest du mit sscanf?
    Hast du das included?


    Dann wäre das nämlich viel einfacherer :D


    Sag mir mal bei diesem Code, was passiert wenn du /uninvite eingibst.


    if(strcmp(cmd, "/uninvite", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    return SendClientMessage(playerid, COLOR_GRAD1, "FEHLER: /uninvite [playerid] [Grund]");
    new grund;
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    return SendClientMessage(playerid, COLOR_GRAD1, "FEHLER: /uninvite [playerid] [Grund]");
    grund = strval(tmp);
    new para1;
    para1 = ReturnUser(tmp);
    if(SpielerInfo[playerid][sLeader] >= 1)
    {
    if(IsPlayerConnected(para1))
    {
    if(para1 != INVALID_PLAYER_ID)
    {
    if (SpielerInfo[para1][sMember] > 0)
    {
    if(SpielerInfo[playerid][sLeader] == SpielerInfo[para1][sMember])
    {
    GetPlayerName(para1, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    printf("AdmCmd: %s hat %s rausgeschmissen.", sendername, giveplayer);
    format(string, sizeof(string), "LeaderCmd: %s hat dich aus deiner Fraktion geworfen. Grund: %s", sendername, grund);
    SendClientMessage(para1, COLOR_LIGHTBLUE, string);
    SendClientMessage(para1, COLOR_LIGHTBLUE, "* Nun bist du wieder Zivilist.");
    gTeam[para1] = 3;
    SpielerInfo[para1][pTeam] = 3;
    SpielerInfo[para1][sMember] = 0;
    SpielerInfo[para1][pRank] = 0;
    SpielerInfo[para1][pChar] = 0;
    new rand = random(sizeof(CIV));
    SetSpawnInfo(para1, gTeam[para1], CIV[rand],0.0,0.0,0.0,0,0,0,0,0,0,0);
    SpielerInfo[para1][pModel] = CIV[rand];
    MedicBill[para1] = 0;
    SpawnPlayer(para1);
    format(string, sizeof(string), " Du hast %s mit Grund: %s aus seiner Fraktion geworfen.", giveplayer, grund);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Der Spieler ist nicht in deiner Fraktion!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Der Spieler ist bereits ein Mitglied einer Fraktion!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Der Spieler ist unbekannt!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Der Spieler ist nicht connected!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du bist kein Leader!");
    }
    }
    return 1;
    }


    Versuche auch /uninvite SpielerID

    Sorry.
    Hatte ich überlesen.


    if(!strcmp(cmd, "/zoneeinnehmen", true))
    {
    new pgang = GetPlayerFrac(playerid),
    pzone = GetPlayerCurrentZone(playerid),
    Counter = 0;
    if(!IsPlayerInAnyGang(playerid))
    return SendClientMessage(playerid, COLOR_RED, "Du bist in keiner Gang, die Gangzonen einnehmen darf!");
    if(pzone == -1)
    return SendClientMessage(playerid, COLOR_RED, "Du bist in keiner einnehmbaren Gangzone!");
    if(Zonen[pzone][Angreifer] != -1)
    return SendClientMessage(playerid, COLOR_RED, "Die Gangzone wird bereits angegriffen!");
    if(Zonen[pzone][CurrentOwner] == pgang)
    return SendClientMessage(playerid, COLOR_RED, "Diese Gangzone gehört bereits deine Gang!");
    if(GangZonesFight[pzone] >= gettime())
    return SendClientMessage(playerid, COLOR_RED, "Diese Gangzone wurde in den letzten 2 Stunden bereits angegriffen!");
    for(new x, x < MAX_PLAYERS; x++)
    if(GetPlayerFrac(x) == Zonen[pzone][CurrentOwner])
    Counter++;
    if(Counter < 1)
    return SendClientMessage(playerid, COLOR_RED, "Mindestens ein Gegner muss online sein!");
    Zonen[pzone][Angreifer] = pgang;
    Zonen[pzone][AngriffsTimer] = SetTimerEx("OnAttackSuccess", 320000, 0, "d", pzone);
    GangZonesFight[pzone] = gettime() + (60 * 60 * 2);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    if(GetPlayerFrac(i) == Zonen[pzone][CurrentOwner])
    {
    SendClientMessage(i,COLOR_YELLOW,"-------------------------------------------------------------------------------------------------");
    SendClientMessage(i,COLOR_YELLOW," Eine Gangzone wird angegriffen. Begib dich schnell zur Zone und benutze /zoneverteidigen!");
    SendClientMessage(i,COLOR_YELLOW,"-------------------------------------------------------------------------------------------------");
    }
    if(GetPlayerFrac(i) == Zonen[pzone][Angreifer])
    {
    SendClientMessage(i,COLOR_YELLOW,"-------------------------------------------------------------------------------------------------");
    SendClientMessage(i,COLOR_YELLOW," Deine Gang nimmt gerade eine Gangzone ein. Helf ihnen dabei die Verteidiger auszuschalten!");
    SendClientMessage(i,COLOR_YELLOW,"-------------------------------------------------------------------------------------------------");
    }
    }
    }
    SaveZones();
    UpdateZones();
    return 1;
    }

    Ganz am Anfang des Scriptes fügst du folgendes ein:
    new GangZonesFight[99];
    Also nicht Zeile 1, sondern eben dann Zeile 20 oder 30 ^^


    if(!strcmp(cmd, "/zoneeinnehmen", true))
    {
    new pgang = GetPlayerFrac(playerid),
    pzone = GetPlayerCurrentZone(playerid);
    if(!IsPlayerInAnyGang(playerid))
    return SendClientMessage(playerid, COLOR_RED, "Du bist in keiner Gang, die Gangzonen einnehmen darf!");
    if(pzone == -1)
    return SendClientMessage(playerid, COLOR_RED, "Du bist in keiner einnehmbaren Gangzone!");
    if(Zonen[pzone][Angreifer] != -1)
    return SendClientMessage(playerid, COLOR_RED, "Die Gangzone wird bereits angegriffen!");
    if(Zonen[pzone][CurrentOwner] == pgang)
    return SendClientMessage(playerid, COLOR_RED, "Diese Gangzone gehört bereits deine Gang!");
    if(GangZonesFight[pzone] >= gettime())
    return SendClientMessage(playerid, COLOR_RED, "Diese Gangzone wurde in den letzten 2 Stunden bereits angegriffen!");
    Zonen[pzone][Angreifer] = pgang;
    Zonen[pzone][AngriffsTimer] = SetTimerEx("OnAttackSuccess", 320000, 0, "d", pzone);
    GangZonesFight[pzone] = gettime() + (60 * 60 * 2);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    if(GetPlayerFrac(i) == Zonen[pzone][CurrentOwner])
    {
    SendClientMessage(i,COLOR_YELLOW,"-------------------------------------------------------------------------------------------------");
    SendClientMessage(i,COLOR_YELLOW," Eine Gangzone wird angegriffen. Begib dich schnell zur Zone und benutze /zoneverteidigen!");
    SendClientMessage(i,COLOR_YELLOW,"-------------------------------------------------------------------------------------------------");
    }
    if(GetPlayerFrac(i) == Zonen[pzone][Angreifer])
    {
    SendClientMessage(i,COLOR_YELLOW,"-------------------------------------------------------------------------------------------------");
    SendClientMessage(i,COLOR_YELLOW," Deine Gang nimmt gerade eine Gangzone ein. Helf ihnen dabei die Verteidiger auszuschalten!");
    SendClientMessage(i,COLOR_YELLOW,"-------------------------------------------------------------------------------------------------");
    }
    }
    }
    SaveZones();
    UpdateZones();
    return 1;
    }

    Also Nummer 1 machst du so.
    Die Funktion oben da musste eben einfügen, wie du deine Newbie Roller definierst.


    Bei Nummer 2 kann ich nur sagen:
    Mach ne Teamabfrage rein und lass die einfach für Teamler immer offen.
    Ist doch besser!?


    stock isNewbieRoller(vehicleid)
    {
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (!strcmp(cmdtext, "/zu", true) || !strcmp(cmdtext, "/lock", true))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Status = GetPlayerState(playerid),
    vehicleid = GetPlayerVehicleID(playerid);
    if(isNewbieRoller(vehicleid))
    return SendClientMessage(playerid, COLOR_GREY, "Du kannst keinen Newbie Roller abschließen!");
    if(Status != PLAYER_STATE_DRIVER)
    return SendClientMessage(playerid, COLOR_GREY, "Nur der Fahrer kann abschliessen!");
    for(new i = 0; i < MAX_PLAYERS; i++)
    if(i != playerid)
    SetVehicleParamsForPlayer(vehicleid, i, 0, 1);
    new Float:Pos[3];
    SendClientMessage(playerid, COLOR_GREEN, "Fahrzeug abgeschlossen");
    GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
    PlayerPlaySound(playerid, 1056, Pos[0], Pos[1], Pos[2]);
    }
    else
    SendClientMessage(playerid, COLOR_RED, "Du kannst nur in einem Auto ein Fahrzeug abschliessen!");
    return 1;
    }


    if (!strcmp(cmdtext, "/auf", true) || !strcmp(cmdtext, "/unlock", true))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Status = GetPlayerState(playerid),
    vehicleid = GetPlayerVehicleID(playerid);
    if(isNewbieRoller(vehicleid))
    return SendClientMessage(playerid, COLOR_GREY, "Du kannst keinen Newbie Roller abschließen!");
    if(Status != PLAYER_STATE_DRIVER)
    return SendClientMessage(playerid,COLOR_RED,"Nur der Fahrer hat den Schluessel zum aufschliessen!");
    for(new i = 0; i < MAX_PLAYERS; i++)
    SetVehicleParamsForPlayer(vehicleid,i, 0, 0);
    SendClientMessage(playerid, COLOR_GREEN, "Fahrzeug aufgeschlossen");
    new Float:Pos[3];
    GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
    PlayerPlaySound(playerid, 1057, Pos[0], Pos[1], Pos[2]);
    }
    else
    SendClientMessage(playerid, COLOR_GREY, "Du bist in keinem Fahrzeug!");
    return 1;
    }
    //} // Ende des OnPlayerCommandText()

    du machst dir arrays für die maps.


    Maps[3][100];


    Dann hast du 3 Maps.


    die definierst du so:


    Maps[0][0] = CreateObject(...);
    Maps[0][1] = CreateObject(...);
    Maps[0][2] = CreateObject(...);
    Das wäre Map 1.
    Für Map 2 ersetzt du Maps[0] durch Maps[1];


    Für das wechseln machst du dann die Löschung der einen Objekte.
    for(new x; x < 100; x++)
    {
    DestroyObject(Maps[0][x]);
    }


    mit filterscripts das zu machen is doof.
    Dann mach du lieber deine 3 Maps und schick mir das Script, dann bau ich dir das ein ^^
    Haste mehr von als wenn du für jedes ein Filterscript lädst.


    Wenn du es trotzdem machen willst, machst du beim Filterscript einfach oben ein Array:


    new Map[100];


    Dann bei OnFilterscriptInit:


    Map[0] = CreateObject(...);
    Map[1] = CreateObject(...);
    Map[2] = CreateObject(...);
    bis 99, ggf. die 100 anpassen ^^


    Bei OnFilterscriptExit machst du dann:


    for(new x; sizeof Map; x++)
    {
    DestroyObject(Map[x]);
    }


    Und schon haste deine Filterscripte.

    Fehler war, dass keine einzige AddPlayerClass eingebaut war/ist.


    AddPlayerClass(0,0,0,0,0,0,0,0,0,0,0); // :) [Fix] By Bubelbub


    das wurde jetzt bei OnGameModeInit eingefügt.
    Und schon gehts.

    Ja wenn keine Filtersripts o.ä. ´benötigt werden dann kannste mir/uns das gerne mal schicken.
    Dann schmeißen wir unsere localen Sevrer an und checken das.

    Lösung 1:


    Zeile 351
    //forward split(const strsrc[],strdest[][],delimiter);



    Zeile 2261
    // nicht verändert
    public split(const strsrc[],strdest[][],delimiter)
    {
    new aNum, len, i, li;
    while(i <= strlen(strsrc))
    {
    if(strsrc[i] == delimiter || i == strlen(strsrc))
    {
    len = strmid(strdest[aNum],strsrc,li,i,128);
    strdest[aNum][len] = false;
    li = i+1;
    aNum++;
    }
    i++;
    }
    return 1;
    }


    Lösung 2:


    Zeile 351
    forward split(const strsrc[],strdest[][],delimiter); // nicht verändert



    Zeile 2261
    /*public split(const strsrc[],strdest[][],delimiter)
    {
    new aNum, len, i, li;
    while(i <= strlen(strsrc))
    {
    if(strsrc[i] == delimiter || i == strlen(strsrc))
    {
    len = strmid(strdest[aNum],strsrc,li,i,128);
    strdest[aNum][len] = false;
    li = i+1;
    aNum++;
    }
    i++;
    }
    return 1;
    }*/


    Lösung 3:


    Zeile 351
    //forward split(const strsrc[],strdest[][],delimiter);



    Zeile 2261
    /*public split(const strsrc[],strdest[][],delimiter)
    {
    new aNum, len, i, li;
    while(i <= strlen(strsrc))
    {
    if(strsrc[i] == delimiter || i == strlen(strsrc))
    {
    len = strmid(strdest[aNum],strsrc,li,i,128);
    strdest[aNum][len] = false;
    li = i+1;
    aNum++;
    }
    i++;
    }
    return 1;
    }*/

    new MyCarArray[MAX_VEHICLES];


    OnPlayerText(playerid, text[])
    {
    if(!strcmp(text, "spawnmyvehicle"))
    {
    new Car,
    Float:Pos[4];
    GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
    GetPlayerFacingAngle(playerid, Pos[3]);
    Car = CreateVehicle(411, Pos[0], Pos[1], Pos[2], Pos[3], 0, 0, -1);
    MyCarArray[Car] = 1;
    PutPlayerInVehicle(playerid, Car, 0);
    return 1;
    }
    return 0;
    }


    OnVehicleDeath(vehicleid, killerid)
    {
    if(MyCarArray[vehicleid] == 1)
    {
    DestroyVehicle(vehicleid);
    MyCarArray[vehicleid] = 0;
    return 1;
    }
    }


    1.) Fahrzeug wird erstellt
    2.) Fahrzeug wird beim Verschrotten gelöscht

    Dann schick mal bitte den Fehlerlog, nachdem du folgendes bearbeitet hast.


    fdduty = CreatePickup(1275,23,1359.8162,-1661.1141,13.5651); //Fire Department Pickup


    Spieler[playerid][pFD] = false;


    if(gMenu[playerid] == 1)
    return 1;
    ShowMenuForPlayer(bar, playerid);
    gMenu[playerid] = 1;
    return 1;
    }
    if(pickupid == fdduty)
    {
    if(Spieler[playerid][pDuty] == 0 && Spieler[playerid][pFD] > 0)
    {
    format(string,sizeof(string),"%s beginnt den Dienst als Feuerwehrmann beim SA-FD", ThePlayer);
    SendClientMessageToAll(COLOR_YELLOW, string);
    SetPlayerColor(playerid, COLOR_WHITE);
    SetPlayerSkin(playerid, 277);
    Spieler[playerid][pDuty] = 4;
    }
    else if(Spieler[playerid][pDuty] == 4 && Spieler[playerid][pFD] > 0)
    {
    format(string,sizeof(string),"%s beendet den Dienst als Feuerwehrmann beim SA-FD", ThePlayer);
    SendClientMessageToAll(COLOR_YELLOW, string);
    SetPlayerColor(playerid, COLOR_GREY);
    SetPlayerSkin(playerid, Spieler[playerid][pSkin]);
    Spieler[playerid][pDuty] = 0;
    }
    return 1;
    }
    return 0;
    }



    public OnPlayerSelectedMenuRow(playerid, row)
    {


    new Float:A_XYZA;
    if(!dini_Isset("cars.cfg", INFO)) { return 1; }
    A_XYZA = dini_Float("cars.cfg", INFO);
    Vehicle[v][vZ] = A_XYZA;


    format(INFO, sizeof(INFO), "A[%d]",v);
    if(!dini_Isset("cars.cfg", INFO)) { return 1; }
    A_XYZA = dini_Float("cars.cfg", INFO);
    Vehicle[v][vA] = A_XYZA;

    Och menno.


    public GetStreamerObjectPos(stream_id,&Float:x,&Float:y,&Float:z)
    {
    if(stream_id > MAX_STREAM || stream_id < 0)return 0;
    if(!bfxobject[stream_id][exist])return 0;
    new foundno = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i))continue;
    if(ERSTELLT[i][stream_id])
    {
    GetPlayerObjectPos(i,OBJ_ID[i][stream_id],x,y,z);
    foundno = 1;
    break;
    }
    }
    /*x = bfxobject[stream_id][ox];
    y = bfxobject[stream_id][oy];
    z = bfxobject[stream_id][oz];*/
    return 1;
    }


    Wenn das auch nicht geht empfehle ich dir auf den Streamer V4 umzusteigen:
    http://pastebin.com/mBqnTUgi

    Ja aber da haben wir es doch!


    Alle Bedingungen müssen FALSCH sein.
    Also NICHT WAHR.


    Das bedeutet die ersten beiden sind nicht wahr.
    Die Dritte aber!


    Das bedeutet hier, wo die Position ausgegeben werden soll, hört er auf.
    if(!foundno)
    {
    x = bfxobject[stream_id][ox];
    y = bfxobject[stream_id][oy];
    z = bfxobject[stream_id][oz];
    }
    Das bedeutet es stimmt hiermit etwas nicht:
    new foundno = 0;
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i))continue;
    if(ERSTELLT[i][stream_id])
    {
    GetPlayerObjectPos(i,OBJ_ID[i][stream_id],x,y,z);
    foundno = 1;
    break;
    }
    }



    Probiere mal bitte folgendes Script aus.
    public GetStreamerObjectPos(stream_id,&Float:x,&Float:y,&Float:z)
    {
    if(stream_id > MAX_STREAM || stream_id < 0)return 0;
    if(!bfxobject[stream_id][exist])return 0;
    new foundno = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i))continue;
    if(ERSTELLT[i][stream_id])
    {
    GetPlayerObjectPos(i,OBJ_ID[i][stream_id],x,y,z);
    foundno = 1;
    break;
    }
    }
    x = bfxobject[stream_id][ox];
    y = bfxobject[stream_id][oy];
    z = bfxobject[stream_id][oz];
    return 1;
    }