Beiträge von Akino Kiritani

    Das ist ja alles schön und gut, wenn dem so wäre wäre das gut und ich könnte das problemlos lösen, nur hab ich die andere Gangzone daneben genauso gemacht und die buggt/spinnt halt nicht rum

    Hallo Community,


    ich hab ein eher merkwürdiges Problem, nämlich einige Gangzonen buggen einfach rum.
    Z.B.: Ich fahre oder gehe an der Gangzone vorbei und die Gangzone breitet sich über die komplette Minimap aus.


    Nun meine Frage:
    Ist das ein GTA: SA oder ein SA:MP Bug?
    Oder liegt es dadran, das die Gangzone einmal die gleiche Kordinate hat wie die Gangzone daneben?


    Hier einmal Screens dazu, damit ihr euch das vorstellen könnt

    Wow unglaublich nützlich :O


    Ne ma im ernst, schön das du dich versuchst, aber du hast es wirklich selbst für einen Anfänger grauenhaft umgesetzt
    zum einen das hier


    new pname[200];
    new string[200];
    SA:MP unterstützt nur 128 Zeichen im chat also string[200] in string[128] ändern, niedriger geht auch bei dir würd ich auf 75 tippen
    beim Namen machst du das am besten mit MAX_PLAYER_NAME, denn samp unterstützt keine Namen mit 200 Zeichen sondern nur mit 20


    SetTimer("banntimer",2000,0);
    aus diesem Teil kannst du getrost SetTimerEx machen
    SetTimerEx("banntimer",2000,false,"i",i); // damit überträgst du die ID des spielers gleich mit sieht eigentlich so aus -> banntimer(i); nur halt mit timer


    Dafür musst du natürlich noch deine Funktion anpassen public banntimer(playerid) und dann brauchst du auch keine schleife mehr sondern kannst einfach mit playerid arbeiten


    //Edit Fischer guck dir den code mal genau an, dann wirste sehen das nicht alle gebannt werden

    Wie hieß die anwendung die du gestartet hattest
    ???
    die musst du dann in task manager finden und beenden


    Wenn das wirkloch ein Virus ist, dann läuft das mit Sicherheit nicht als Programm -.-'
    Die Viren sind praktisch für den Taskmanagar/Windows unsichtbar, sofern sie nicht total behämmert gecodet sind...


    Bei nem Virus entweder Partition C formatiern + neu installation oder du findest ne andere Lösung deine Programme nicht mehr mit dem Editor zu starten :D
    Jemandanderem hab ich ne Systemwiederherstellung geraten, bin mir aber nicht sicher ob das bei dir klappen könnte, obwphl mir eingentlich kein Virus bekannt ist der son Blödsinn macht

    Pack das ma in OnPlayerKeyStateChange


    new string [16];
    format(string,sizeof(string),"%d",newkeys);
    SendClientMessage(playerid,0xFFFFFFFF,string);


    Und drück dann die Numped 2 Taste vllt gehts ja


    PS: es ist nicht direkt das gleiche Wie GetPlayerKeys

    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