Beiträge von Akino Kiritani

    O.o bloody ist es gibt ne viel schönere Möglichkeit und die nennt sich OnPlayerKeyStateChange
    Damit kannste (fast) alle Keys rausfinden.
    Musst es nur richtig einbauen/verwenden


    in etwa so


    new string [16]; // die Keys können bis zu 16 Zeichen lang sein
    format(string,sizeof(string),"%d",newkeys);
    SendClientMessage(playerid,0xFFFFFFFF,string);

    Das heißt eigentlich nur das die argumente die du in den Funktionen verwendest, entweder nicht vollständig oder zu wenige sind.
    Ich rate die mal dafür in die Wiki zu gucken.
    Dort sind alle Parameter für die jeweiligen Funktionen vorhanden, sie warten nur noch darauf von die aufgerufen zu werden

    Ich hab mir das Script nochmal genauer angesehen und mir ist eine Sache besonders ins Auge gefallen, die besonders schlecht umgesetzt wurde :S


    nämlich dieser Teil:
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new newcar = GetPlayerVehicleID(playerid);
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(LSPDCar(newcar))
    {
    if (pInfo[playerid][Fraktion] == 1)
    {}
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid, ROT, "Du bist kein Polizist");
    return 1;
    }
    }
    }
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(FBICar(newcar))
    {
    if (pInfo[playerid][Fraktion] == 4)
    {}
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,ROT,"Du bist kein Mietglied der FBI");
    return 1;
    }
    }
    }
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(SFPDCar(newcar))
    {
    if (pInfo[playerid][Fraktion] == 5)
    {}
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,ROT,"Du bist kein Mietglied des SFPD");
    return 1;
    }
    }
    }
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(MEDICCar(newcar))
    {
    if (pInfo[playerid][Fraktion] == 4)
    {}
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,ROT,"Du bist kein Mietglied der Medics");
    return 1;
    }
    }
    }
    return 1;
    }
    Was soll das werden ne Party?
    Alter grauenhaft, nicht ma als ich gecopiet und gepastet hab (damals :D) sah das so aus


    Ich nehm den Code ma kurz auseinander
    als erstes nehmen wir mal an der Spieler ist in der Fraktion Medic
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new newcar = GetPlayerVehicleID(playerid);
    if(newstate == PLAYER_STATE_DRIVER) // Du fragst hier ab ob der Spieler Fahrer ist
    {
    if(LSPDCar(newcar))
    {
    if (pInfo[playerid][Fraktion] == 1) { } // unnötige if else verschachtlung if(pInfo[playerid][Fraktion] != 1) reicht voll kommen aus
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid, ROT, "Du bist kein Polizist");
    return 1;
    }
    }
    }
    if(newstate == PLAYER_STATE_DRIVER) // Da wir ja annehmen das der Spieler in der Fraktion Medic ist läuft der Code weiter und du fragst wieder ab ob Fahrer ist -> du machst das 2 mal wozu?
    {
    if(FBICar(newcar))
    {
    if (pInfo[playerid][Fraktion] == 4) { } // Gleiche wie beim LSPD
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,ROT,"Du bist kein Mietglied der FBI");
    return 1;
    }
    }
    }
    if(newstate == PLAYER_STATE_DRIVER) // Hier schon wieder ne abfrage es reicht einmal vollkommen aus
    {
    if(SFPDCar(newcar))
    {
    if (pInfo[playerid][Fraktion] == 5) { } // Gleiche wie oben -.-'
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,ROT,"Du bist kein Mietglied des SFPD");
    return 1;
    }
    }
    }
    if(newstate == PLAYER_STATE_DRIVER) // Hier haben wir nummer 4 deiner Abfrage... Es wird langsam langweilig...
    {
    if(MEDICCar(newcar))
    {
    if (pInfo[playerid][Fraktion] == 4) // Gleiche wie vorher auch -.-'
    {}
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,ROT,"Du bist kein Mietglied der Medics");
    return 1;
    }
    }
    }
    return 1;
    }
    Du bist jetzt 4 Mal die Abfrage durchgegangen ob der Spieler Fahrer ist -.-'
    Der Server wird sich nachher bei größeren Script bedanken...
    Und Newbies lernen falsche Techniken


    Das mit den car Funktionen hab ich dir ja schon erklärt :D

    Eine frage was bringt CallLocalFunction ?!?


    Kein Problem :D


    Ich versuchs ma zu erklären :D
    Wenn du eine Include schreibst kannst du ja nicht auf die Funktionen des GMs zugreifen, aber mit der CallLocalFunction geht das.
    Du greifst sozusagen auf das aktive Script zu, in dem die Include eingebunden ist.

    ich finde es nicht so gut für anfänger da er nicht gerade Resourcensparend ist....


    Ehm ja ganz toller Kommentar, als ob Anfänger genau wüssten wie sie Resourcensparend/schonend scripten -.-'


    Wäre aber schön wenn du das ma updaten könntest, unteranderem sind publics total unnötig wenn du sie nicht per Timer oder CallLocalFunction oder CallRemoteFunction aufrufst ;)
    Du könntest auch noch den schnipsel einbauen den ich gepostet hab bzw die anderen daran anpassen

    PasteBin MUSS vorliegen sonst kein DownLoad bzw keine DownLoadlink


    //Edit: Hier nochma die Regel

    Zitat

    Bei sämtlichen Veröffentlichungen (egal ob Gamemode, Filterscriopt, Tools, Plugins ,..) MUSS der Quellcode beigelegt oder verlinkt werden, dies dient dem Schutz der User um keine Schadsoftware zu verbreiten. Über Ausnahmen lässt sich diskutieren. Falls der Code für Pastebin o.ä. zu lang ist besteht die Verpflichtung diesen als normale Textdatei darzulegen.

    Danke Jay_S für deinen doch so sinnvollen und hilfreichen Beitrag...


    Ansich find ich das script nicht schlecht, aber man kann es auch kürzer machen
    z.b.:
    stock FBICar(vehicleid)
    {
    for(new i = 0; i < sizeof(FBICars); i++)
    if(vehicleid== FBICars[i]) return 1;
    return 0;
    }
    funktioniert bei mir tadellos


    und warum hast du strget und sscanf drin?
    entscheid dich für eins...


    //Edit: falls wieder einer mekert
    stock FBICar(vehicleid)
    {
    for(new i = 0; i < sizeof(FBICars); i++) { if(vehicleid== FBICars[i]) return 1; }
    return 0;
    }
    alles das gleiche :thumbup:

    Also ich will nicht ausschließen das es geht, nur denk ich das es besser wäre wenn du eine bereits gebannt xbox nimmst oder eine xbox die nie mit xboxlive verbunden ist sonst wirst du definitiv gebannt.


    Ich wüsste jetzt auch keine möglichkeit wie es gehen soll, aber du solltest GTA IV nicht auch der Festplatte sichern sondern aufm USB-Stick kann man ja konfigurieren ;)
    Sonst bekommst du nachher Probleme damit an die Daten zu kommen.


    An die Daten zu kommen sollte kein Problem sein.
    Zum Öffnen des USB-Sticks musst du ein spezielles Programm nutzen mit Windows kommste da nicht weit :D
    Ich glaub das Programm heißt Xplorer360