Beiträge von Tround

    du hast den public beendet weil du alle klammern geschlossen hast...
    und die adminabfragen find ich auch bisschen komisch-.-


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate==PLAYER_STATE_DRIVER)
    {
    for(new l=0; l<sizeof(LSPDcar); l++)
    {
    if(GetPlayerVehicleID(playerid)==LSPDcar[l])
    {
    if(GetPVarInt(playerid,"Fraktion")!=27)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,ROT,"Du gehörst nicht zu dieser Fraktion.");
    return 1;//returnen damit die schleife beendet wird und nicht so viel ressourcen frisst
    }
    }
    }
    for(new a=0; a<sizeof(Admincar); a++)
    {
    if(GetPlayerVehicleID(playerid)==Admincar[a])
    {
    if(!isPlayerAnAdmin(playerid,5))//adminabfrage hier hin
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,ROT,"Du bist kein Admin");
    return 1;
    }
    }
    }
    }
    return 1;
    }

    duch die returns wird die schleife abgebrochen..

    for(new i=0;i<GetMaxPlayers();i++)
    {
    if(IsPlayerConnected(i))//wichtig! sonst lagts gewaltig
    {
    if(IsPlayerInRangeOfPoint(i,50,vx,vy,vz))
    {
    SetPlayerHealth(i,-1999);
    SendClientMessage(i,LROT,"Du bist durch ein Flugzeuganschlag gestorben");
    CreateExplosion(vx,vy,vz,0,50);
    SetVehicleToRespawn(vehid);
    }
    }
    }

    fast richtig ^^
    die objekte sollten ja schon erstellt sein bevor du den befehl aufrufst. am besten direkt beim server start erstellen lassen.
    ongamemodeinit z.b wird aufgerufen wenn der server startet. einfach dort die objekte erstelllen.



    new gate,gate2;


    public OnGameModeInit()
    {
    gate = CreateObject(980, 317.20001220703, -1184, 74.099998474121, 0, 0, 38);
    gate2 = CreateObject(980, 316.79998779297, -1184.0999755859, 79.900001525879, 0, 0, 37.996215820313);
    return 1;
    }
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/auf", cmdtext, true, 10) == 0)
    {
    MoveObject(gate,317.20001220703,-1184,74.099998474121,5,0,0,38);
    SendClientMessage(playerid,0x9ACD32AA,"Tor wird geöffnet!");
    return 1;
    }
    if (strcmp("/zu", cmdtext, true, 10) == 0)
    {
    MoveObject(gate2, 316.79998779297, -1184.0999755859, 79.900001525879,5, 0, 0, 37.996215820313);
    SendClientMessage(playerid,0x9ACD32AA,"Tor wird geschlossen!");
    return 1;
    }
    return 0;
    }


    wenn du es aber als filterscript haben willst dann musste die objekte unter filterscriptinit erstellen da der public aufgerufen wird wenn ein filterscript geladen wird.


    public OnFilterScriptInit()
    {
    gate = CreateObject(980, 317.20001220703, -1184, 74.099998474121, 0, 0, 38);
    gate2 = CreateObject(980, 316.79998779297, -1184.0999755859, 79.900001525879, 0, 0, 37.996215820313);
    return 1;
    }


    was mir jetzt noch nicht so ganz klar ist.. willst du 1 oder 2 tore machen?
    denn bei /auf bewegst du tor1 aber bei /zu bewegst du tor2 -.-

    joa wie gesagt kommen die 26 fehler vermutlich von einer fehlenden klammer irgendwo.
    musst mal schauen was du als letztes gemacht hast bevor die errors aufgetaucht sind und dort die fehlende klammer suchen.
    und dein code war ja schon fast richtig. nur bisschen ausbessern mit dem was ich geschrieben habe.


    ps: wenn du ein filterscript daraus machen willst musste einfach nur die erstellten objekte unter onfilterscriptinit erstellen anstatt ongamemodeinit

    paar fehler gibts.


    variable erstellen:


    new gate;


    objekt in variable einspeichern:


    gate = CreateObject(980, 317.20001220703, -1184, 74.099998474121, 0, 0, 38);


    objekt bewegen:


    MoveObject(gate,317.20001220703,-1184,74.099998474121,5,0,0,38);


    wenn du ein zweites gate hast brauchste natürlich auch eine zweite variable:



    new gate2;
    gate2=CreateObject(980, 316.79998779297, -1184.0999755859, 79.900001525879, 0, 0, 37.996215820313);
    MoveObject(gate2, 316.79998779297, -1184.0999755859, 79.900001525879,5, 0, 0, 37.996215820313);

    1. die fehler kommen vermutlich von einem klammerfehler und kann nicht durch ein fehlendes argument ausgelöst werden. dann würde sowas wie "number of arguments does not match definition" stehen.
    2. der code den du geschrieben hast ist in ordnung davon kommen die fehler vermutlich nicht.
    3. das objekt sollte eingespeichert werden damit das script erkennen kann welches objekt gemeint ist.
    wenn du MoveObjekt(980.. schreibst kann das script das objekt nicht finden. 980 ist die objektid und nicht das objekt selber.

    MoveObject(Gate,3000,316.70001220703,-1183.3000488281,80.099998474121,0,0,0);


    die 3000 hinter "Gate" ist falsch..
    ich nehme mal an das du das tor unter "Gate" eingespeichert hast. (new gate=creatobject(...)
    bedeutet das du mit "Gate" das objekt aufrufen kannst. dann brauchste keine objekt id dahinter.

    moin.
    habe mal versucht durch GetPlayerCameraPos die mausbewegungen auszulesen doch leider klappt das nicht so gut wie ich gedacht habe.
    habe erst einen timer erstellt der jede 0,1 sek die position abfrag doch leider bekomm ich 10x hintereinander die gleiche position raus auch wenn ich die maus bewege.
    danach habe ich es unter onplayerupdate probiert aber dort ist es das gleiche spiel. GetPlayerCameraFrontVector klappt auch nicht richtig.
    wird die position von samp nur jede sekunde einmal aufgerufen ? und kann man das vielleicht ändern ?
    oder hat jemand eine idee wie man jede 0,1 sek die richtige mausposition herausfinden kann?



    new stringbert[128];
    new Float:vectorxyz[3];


    public OnPlayerUpdate(playerid)
    {
    GetPlayerCameraPos(playerid,vectorxyz[0],vectorxyz[1],vectorxyz[2]);
    format(stringbert,sizeof(stringbert),"%f %f %f",vectorxyz[0],vectorxyz[1],vectorxyz[2]);
    SendClientMessage(playerid,BLAU,stringbert);
    return 1;
    }

    da wird der fehler liegen. in deinem public haste playerid verwendet aber playerid ist immer 0 da du es nirgens definierst.
    mach in deinem public eine schleife für alle spieler damit es auch für alle aktualisiert wird und nicht nur für id 0


    public copupdate()
    {
    for(new i=0;i<SLOTS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(gTeam[i] == TEAM_COP)
    {
    if(siegcop > 0)
    {
    siegcop -= 1;
    }
    new string[100];
    format(string,sizeof(string),"Zeit bis zum Sieg: %i",siegcop);
    TextDrawSetString(zieltext[i],string);
    TextDrawShowForPlayer(i,zieltext[i]);
    }
    }
    }
    return 1;
    }


    edit:
    for(new playerid=0;playerid<SLOTS;playerid++)
    das würde denke ich auch klappen und spart zeit.

    könntest uns noch den timer zeigen?
    und TextDrawShowForPlayer(playerid,zieltext[playerid]); musste eigentlich nicht in den public machen da er ja schon unter onplayerconnect angezeigt wird.

    new bsnenter;
    ConnectNPC("TutorialBot","tutorialbot");
    if(Fraktion(i,GetPVarInt(playerid,"Fraktion")))
    ShowPlayerDialog(playerid,DIALOG_TUTORIAL,DIALOG_STYLE_MSGBOX,"BSN","Möchten sie wirklich zum BSN?","JA","NEIN");
    stock SpielerName(playerid)
    stock Register(playerid,key[])
    stock Login(playerid,key[])
    stock LoadAccount(playerid)
    stock SpielerSpeichern(playerid)
    stock isPlayerAnAdmin(playerid,rang)
    das ist alles von mr monat 1/1
    ich will dir ja nicht auf den fuß treten aber so siehts nunmal aus