Beiträge von Jeffry

    Hätte ich mal richtig gelesen. :pinch:


    Gut, aber da kann ich keinen Fehler sehen, abgesehen davon, dass die Funktion GetPlayerWeaponData an sich zig Bugs hat, die bewiesen und gemeldet worden sind, jedoch hat sich Kye/Kalcor nie darum gekümmert.
    Setz einfach mal einen debug unter die Funktion:


    printf("[Weapon] User: %s | PWaffe: %d | GWaffe: %d | Slot: %d",PlayerInfo[playerid][name],PlayerInfo[playerid][Weapon][i],Weap,i);


    Ich könnte mir vorstellen, dass der Grund für den ban der ist, dass du einen waffe leergeschossen hast. Dann würde ja Weap = 0 (?) sein, in deiner Variable steht aber noch die Waffen ID. Das könntest, und solltest du auch wenn es nicht der Fehler ist, berücksichtigen:
    GetPlayerWeaponData(playerid, i, Weap, Amm);
    if(Amm == 0) continue;
    Sprich er geht einen Slot weiter, wenn keine Ammo im Slot ist, entsprechend keiner Waffe.

    if(PlayerInfo[playerid][Ammo][i] > Amm){
    Das muss andersrum sein. Wenn die derzeitige Ammo die der Spieler hat größer ist, als die, die ihm gegeben wurde, dann wird er gebannt.


    if(PlayerInfo[playerid][Ammo][i] < Amm){
    Und somit auch:
    format(str,128,"Munition´s Cheat %d Schuss",Amm-PlayerInfo[playerid][Ammo][i]);



    Du bannst ihn, wenn er weniger ammo hat, als ihm gegeben wurde.

    Da wäre es vielleicht ganz sinnvoll einen neuen Thread aufzumachen, am besten mit dem dazugehörigen Code und ein paar Bildern, oder noch besser, einem Video. Ich denke nicht, dass es in diesem Topic angebracht ist, das würde dem "Kleine Scripting Fragen" nicht mehr entsprechen.

    Hätte noch eine Frage, weißt du vielleicht woran es liegt das man erst nach einer bestimmten Zeit oder so respawnt wenn man stirbt?
    Die HP Leiste blinkt und das dauert bis man ebend respawnt.... Woran könnt das liegen?


    Das ist doch normal, dass es 3-4 Sekunden dauert, bis man wieder spawnt, nachdem man gestorben ist. Wenn du das umgehen willst, also sofort spawnen, möglicherweise geht das mit SpawnPlayer bei OnPlayerDeath, müsstest ausprobieren.
    Oder meinst du den SA-MP Fehler, dass man manchmal nach dem Tod noch rumlaufen kann?

    Also sollte ich die erste Variable in eine Float umwandeln (float(variablenname)) durch float(100) teilen und dann den float runden? :S


    Kommt darauf an, was du machen willst. Mein code gibt dir auf jeden Fall den genauen Wert aus, als Float. das sieht dann so aus:

    Zitat

    [07/08/2013 14:53:28] 0.500000


    Da gibt es eigentlich nichts mehr zu runden.
    Wenn du die Nachkommastellen abschneiden willst:


    printf("%0.2f", float(50) / float(100));

    Zitat

    [07/08/2013 14:53:28] 0.50


    Bzw.
    printf("%0.1f", float(50) / float(100));

    Zitat

    [07/08/2013 14:53:28] 0.5


    Kannst du uns denn mal erklären, wieso das so ist?


    Gerne.


    GetPlayerName gibt den Name schon in dem zweiten definierten Parameter zurück, du brauchst also kein pName = davor setzen, das ist falsch, da GetPlayerName die Länge des Namens zurück gibt. (Siehe http://wiki.sa-mp.com/wiki/GetPlayerName)


    Warum benutzen wir strcmp und nicht ==?
    Strings können nur über strcmp verglichen werden. Siehe dazu: http://wiki.sa-mp.com/wiki/Strcmp


    Warum das Ausrufezeichen am Anfang?
    Das bedeutet das selbe wie ==0.


    Soweit alles verstanden?

    Geht immernoch net^^


    Auf PN Anfrage:
    Kannst du bitte mal den Code, und zwar so wie er jetzt bei dir/euch ist posten. Es ist ziemlich unmöglich in dem Wirrwarr an Posts noch zu sehen, was du tatsächlich wie verwendest.
    Also einfach mal den Code, mit allem was dafür benötigt wird nd in Verbindung steht, posten. Dann sollte ersichtlich werden, warum es nicht so tut, wie ihr euch das vorstellt.

    Ahh! Das hast du gemeint. Danke. Jetzt macht es Sinn. Deine Ausdrucksweise war etwas verwirrend, zumindest für mich.^^ Super, dass du es schon hinbekommen hast, das ist immer am besten.

    // Wie bekomme ich jetzt den Indexwert der Enumstruktur raus


    Ich hab leider dein Anliegen nicht verstanden, sorry. Kannst du das etwas genauer erklären, auch wofür die Variablen stehen, und kannst du ein Beispiel machen, in dem du zeigst, was du hast und was du bekommen willst, am besten mit Zahlen die den Variablen zugeordnet sind.

    format(inhalt,sizeof(inhalt),"Kosten:$%i~n~Bestätigen: ~gShift");
    Beim Grün fehlt ein ~


    format(inhalt,sizeof(inhalt),"Kosten:$%i~n~Bestätigen: ~g~Shift");


    EDIT: Der Platzhalter hat nichts mit dem Absturz zu tun, aber der fehlt auch, stimmt.

    Einfach mal frei Hand mit Handy geschrieben, ich gehe mal davon aus, dass es tut. Ich kanns morgen Mittag testen. Oder du probierst es kurz.
    stock str_replace(string[256], rep[256], with[256])
    {
    new i = strfind(string, rep);
    if(i != -1)
    {
    strdel(string, i, i+strlen(rep));
    strins(string, with, i);
    }
    return string;
    }
    string=ganzer Text
    rep=Teil der ersetzt wird
    with=eingefügter teil
    return = neuer string


    EDIT: Ersetzt halt nur den ersten Fund. Ich kanns dir auch für beliebig viele machen, wenn du das brauchst.

    Oder:
    http://wiki.sa-mp.com/wiki/Strlib/str_replace

    Jeffry
    4 Jahre und nicht alles können? Dann würde ich zum Arzt gehen, denn so ein Lernverhalten ist sehr schlecht.
    Man benötigt knapp 1 Jahr um ordentlich zu scripten, aber jeder lernt verschieden schnell.


    Also zu aller erst mal finde ich es sehr unschön von dir gleich beleidigend zu werden.
    Das man ein Jahr braucht um ordentlich scripten zu können stimmt. Aber das heißt nicht, dass du alles kannst! Du kannst dann vielleicht 1% der gesamten Vielfalt von PAWN. Du wirst mir mit ziemlicher Sicherheit nicht ALLE Character Konstanten aufzählen können., oder?
    Um zu meinem Vergleich des Laufens zurück zu kommen: Du kannst laufen, ja? Kannst du auch in 20cm hohen High-Heels, Holzschuhen und 15cm Plateau-Schuhen laufen? Ich denke nicht (ich zumindest kann es nicht). ;) [Und damit meine ich nicht 5 Meter.]
    Ich würde dich gerne mal fragen, ob du weißt, was der Code hier bewirkt:
    TextDraw[id][TD_BoxColor] |= (floatround(TextDraw[id][TD_SlideRGBAOffsetBox][0], floatround_round) & 0xFF) << 24;
    TextDraw[id][TD_BoxColor] |= (floatround(TextDraw[id][TD_SlideRGBAOffsetBox][1], floatround_round) & 0xFF) << 16;
    TextDraw[id][TD_BoxColor] |= (floatround(TextDraw[id][TD_SlideRGBAOffsetBox][2], floatround_round) & 0xFF) << 8;
    TextDraw[id][TD_BoxColor] |= (floatround(TextDraw[id][TD_SlideRGBAOffsetBox][3], floatround_round) & 0xFF);
    Ich werde auf eine PN mit der Erklärung warten.


    Ich weiß (ohne das zu behaupten, oder mich selbst zu loben) vielleicht mehr von PAWN als 95% der aktiven Nutzer hier, aber das heißt nicht, dass ich alles kann, noch jeder andere. Eine jede Skriptsprache ist so komplex, es gibt wohl keinen Menschen auf der Welt der eine Skriptsprache zu 100% kann, er wird immer wieder neue Tricks lernen.



    manche leute haben halt noch anderes zutun als nur pawn pawn und noch mehr pawn,


    Da hast du Recht. Obwohl ich seit 4 Jahren fast jeden Tag mit PAWN arbeite, aber zu behaupten ich wüsste nur annähernd alles wäre einfach nur falsch.


    Jeffry
    Dein Tipp ist gut gemeint, so hab ichs vor 6 Jahren auch gemacht aber der Befehl wird nicht funktionieren da playerid nicht deklariert ist ;)


    Bei OnPlayerCommandText ist playerid sehr wohl deklariert. Wenn du seit 6 Jahren mit PAWN arbeitest, solltest du das eigentlich wissen. ;)


    Jeffry
    man kann es auch so machen:


    Jo, das ist aber nichts anderes. Das 0.0 = 0 ist, dürfte wohl selbsterklärend sein.
    Sry4pwn: Eben.


    Und jetzt wollen wir unseren Neuanfänger nicht weiter verunsichern. Nicht alles können heißt nicht, dass du keinen Server machen kannst. Du kannst in einem Jahr alles was du brauchst, wenn du dran bleibst.
    Falls noch einer ein Problem mit einem meiner Statements hat, kann er oder sie sich gerne in PN bei mir melden, ich habe nichts gegen eine seriöse Diskussion die zu einem Ziel führt, da kann man nur lernen, die muss aber nicht in diesem Topic geführt werden.

    Aber bei mir besteht das problem wenn ich in soein Script reinschaue stehen bei mir große -???- . Wie meinst du das denn mit einem Filterscript nachmachen. Soll ich das runterladen und einfach abschreiben?


    Den script gar nicht öffnen. ;)
    Schau dir zuerst mal an, was der FilterScript denn machst (z.B. ein Auto-Menu, um Auto's zu spawnen). Dann überlegst du, was du denn alles dafür brauchst, suchst dir die Funktionen zusammen (Google, SAMP Wiki) und legst los so ein Menu zu erstellen. Wenn du irgendwo hängst, kannst du einen Blick in den Code werfen, und ein paar Zeilen, die du denkst zu verstehen abschreiben, dann siehst du ja was passiert.
    Am Besten ist es aber, wenn du es ganz ohne in den Code zu schauen hin bekommst, deshalb fang mit leichten Dingen an.
    Bis du erst mal richtig rein findest vergehen mit Sicherheit 1-3 Monate! Also nicht verzagen, du wirst am Anfang ziemlich oft stecken bleiben und auf die Nase fallen (ist wie laufen lernen). Ich weiß das von mir. Wenn du einmal drinne bist, dann gehts jeden Tag besser.


    PS: Ich hab es ganz alleine gelernt. Die einzige Hilfestellung die ich hatte war ein /kill command aus 6 Zeilen code, den mir jemand gemacht hat. Den bekommst du von mir auch:


    if(strcmp(cmdtext, "/kill", true) == 0)
    {
    SetPlayerHealth(playerid, 0.0);
    SendClientMessage(playerid, 0xFF0000FF, "Du hast dich selbst getötet.");
    return 1;
    }
    Das fügst du im callback OnPlayerCommandText ein. Dann auf den Compiler drücken, und Server neu starten.


    Viel Erfolg! Wenn du dran bleibst, wird das was!

    Such dir einen GameMode, öffne Pawno, ruf das Script auf, Lies dich rein. - So hab ich's gelernt.
    Kannst dir im Grunde jeden Codeschnipsel nehmen, und versuchen zu verstehen, was er bewirkt (Im Spiel, sowie im Script (bspw. ein Login u. Registersystem)).


    Kann ich nur bestätigen. Ich habe PAWN gelernt, indem ich mir den LAdmin4v2 (damals sehr neu) genommen habe, und versucht habe, die einzelnen Teile zu verstehen. Dann habe ich einfach losgelegt, und überlegt, welcher Teil das tut, was ich will. Den Code hab ich mir dann angeschaut, und so für den neuen Code verändert, dass er seinen Zweck erfüllt hat.


    Wichtig: Fang klein an, jeder tut das. Ich arbeite nun fast 4 Jahre mit PAWN und mein Wissen ist noch lange nicht komplett, im Gegenteil.
    Falls dir jemand sagt, du sollst dir die PAWN Doc durchlesen, lass es. Du wirst es nicht verstehen. Das kannst du in 3 Jahren machen, wenn du es verstehst, und selbst dann wirst du den Großteil nicht auf Anhieb verstehen.


    Noch was: Ausprobieren. Du kannst nichts kaputt machen. Das einzige was passieren kann, ist dass du Errors bekommst. Na und? Für was gibt es STRG+Z. Einfach probieren, wenn du nicht weiter kommst, lass es, oder frag nach Hilfe, sofern es im kleinen Bereich ist.


    Learning By Doing nennt sich das. Nicht aufgeben, einfach machen machen machen. Das muss nicht immer perfekt sein, und muss auch nicht immer Sinn ergeben, hauptsache du machst was. Zum Anfang kannst du dir z.B. vornehmen, einen FilterScript der hier im Forum veröffentlicht wurde (einen einfachen) nachzumachen. Musst ihn ja nicht auch veröffentlichen, aber nur zur Übung einfach nachmachen. Wenn du hängst, kannst du ja nachsehen, was falsch ist.


    Meiner Meinung nach besser als alles andere.