[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link

  • Dein Pawno bezieht die Includes aus dem falschen ordner. Daher starte Pawno von dem Ordner aus von mit den aktuellsten includes und öffne danach ein skript.
    Weil in der a_samp.inc ist der zusätzliche parameter enthalten

    Ok danke dir, hatte auch bereits eine Lösung im Englischen Forum gefunden.
    Falls es wen interessiert:
    Lastly, if you get the "error 025: function heading differs from
    prototype" error it means you have the 0.3x pawno compiler or an even
    older version, and need to get the new 0.3z package from
    sa-mp.com/downloads.

  • Ok danke dir, hatte auch bereits eine Lösung im Englischen Forum gefunden.
    Falls es wen interessiert:


    Nur das der Typ wohl das falsche meint
    0.3x pawno compiler Es gibt eine neuere Version von Pawno, dieser wird jedoch nicht genutzt es ist und bleibt die 1.0
    Version, ebenso die damit verbundenen anwendungen wie die pawncc.exe ist die selbe. Es ändert sich nur je nach Version falls neue
    funktionen hinzukommen die includes da neue natives, parameter, defines hinzugefügt werden.


  • forward OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart);


  • Müsste eigentlich so funktionieren.

  • forward OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart);

    Auch wenn das Problem bereits gelöst ist, stimmt dies nicht.
    Der Public wird durch die a_samp include bereits "geforwardet", somit wäre das nur
    eine Wiederholung des Codes, was für weitere Errors sorgt. (Hatte es bereits getestet)

  • Warum bekomme ich hier einen Error. Kann man ein String nicht einfach so returnen? :D


    Code
    C:\Users\Chris\Desktop\Scripting\PAWN\Selfmade\gamemodes\xyz.pwn(149) : error 047: array sizes do not match, or destination array is too small
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Error.


    stock funcx1(string[]){
    new ab[1024];
    return ab; // ZEILE
    }

  • Warum bekomme ich hier einen Error. Kann man ein String nicht einfach so returnen? :D


    Code
    C:\Users\Chris\Desktop\Scripting\PAWN\Selfmade\gamemodes\xyz.pwn(149) : error 047: array sizes do not match, or destination array is too small
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Error.


    stock funcx1(string[]){
    new ab[1024];
    return ab; // ZEILE
    }


    Also ich bekomme da keinen Error / Warning..

  • Naja, habe es nun hinbekommen indem ich einfach keinen String returne sondern überschreibe xd
    Habe nun aber eine andere Frage:


    Kann ich nach einem bestimmten Muster splitten? Zum Beispiel wenn ich jede 5 Zeichen splitten will.


    Wenn ich zB einen Text habe, der 150 Zeichen lang ist, soll es in 15 Teile gesplittet werden mit je der Größe 10.
    Gibt es da eine Möglichkeit mit einer Schleife oder so? ^^ Der normale Split funktioniert da glaube ich nicht so gut o:

  • Wie baue ich eine globale Nachricht ein, sobald ich /aduty gehe? Soll eben global angezeigt werden wenn ein Administrator in den Dienst geht.


    format(string,24,"["#SERVERTAG"]%s",Spieler[playerid][pName]);
    SetPlayerName(playerid,string);
    SetPlayerScore(playerid,GetPlayerLevel(playerid));
    SetPlayerHealth(playerid, 99999);
    SetPlayerArmour(playerid, 99999);
    SetPlayerColor(playerid, ROT);
    SendClientMessage(playerid,LEUCHTENDESROT,"Du bist nun im Admin Dienst!");
    TextDrawShowForPlayer(playerid,ADUTYdraw);
    Spieler[playerid][pAdminOnduty] = true;
    switch(Spieler[playerid][pAdmin])

  • Wieso wird bei diesem Befehl mein Supporter Fahrzeug nicht zersört?


    ocmd:delscar(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,AdmCmd,"AdmCmd: Sie besitzen nicht die nötigen Rechte um diesen Befehl zu nutzen!");
    new Adminfahrzeug;
    RemovePlayerFromVehicle(playerid);
    Adminfahrzeug = GetPlayerVehicleID(playerid);
    DestroyVehicle(Adminfahrzeug);
    Delete3DTextLabel(Support3DText[playerid]);
    SupportVeh[playerid] = 0;
    return 1;
    }


    Und wie mache ich das, das ein Admin nur maximal 1 Supporter Fahrzeug erstellen kann? Habe es bis jetzt nur so.


    ocmd:supcar(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,AdmCmd,"AdmCmd: Sie besitzen nicht die nötigen Rechte um diesen Befehl zu nutzen!");
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    SupportCar[playerid] = CreateVehicle(560,X,Y,Z,3,165,165,-1);
    SetVehicleNumberPlate(SupportCar[playerid],"Support");
    PutPlayerInVehicle(playerid, SupportCar[playerid], 0);
    Support3DText[playerid] = Create3DTextLabel("Supporter im Dienst", AdminCar,0.0,0.0,0.0,50.0,0,4);
    Attach3DTextLabelToVehicle(Support3DText[playerid],SupportVeh[playerid],0.0,0.0,0.2);
    SendClientMessage(playerid,Hellgelb,"Du hast ein Supporter Fahrzeug erstellt! Benutze /delscar um das Fahrzeug zu Entfernen.");
    return 1;
    }

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Eddy


    zur zweiten Frage:


    du kannst eine globale Variable machen.
    beim erstllen zum beispiel: supcar = 1 die Variable auf 1 stellen.


    dann beim Erstllen abfragen ob die Variable auf 1 ist, wenn ja kann er keins erstllen.
    und beim löschen des Cars die Variable wieder auf 0 stellen


    :)


  • So?


    new SupportVeh[MAX_PLAYERS];
    new SupportCar[MAX_PLAYERS];
    new Text3D:Support3DText[MAX_PLAYERS];


    ocmd:supcar(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,AdmCmd,"AdmCmd: Sie besitzen nicht die nötigen Rechte um diesen Befehl zu nutzen!");
    if(SupportVeh[playerid] == 1) return SendClientMessage(playerid,WACMD,"Du hast bereits ein Supporter Fahrzeug erstellt! Lösche es bevor du dir ein neues erstellen möchtest.");
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    SupportCar[playerid] = CreateVehicle(560,X,Y,Z,3,165,165,-1);
    SetVehicleNumberPlate(SupportCar[playerid],"Support");
    PutPlayerInVehicle(playerid, SupportCar[playerid], 0);
    Support3DText[playerid] = Create3DTextLabel("Supporter im Dienst", AdminCar,0.0,0.0,0.0,50.0,0,4);
    Attach3DTextLabelToVehicle(Support3DText[playerid],SupportVeh[playerid],0.0,0.0,0.2);
    SendClientMessage(playerid,Hellgelb,"Du hast ein Supporter Fahrzeug erstellt! Benutze /delscar um das Fahrzeug zu Entfernen.");
    return 1;
    }


    ocmd:delscar(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,AdmCmd,"AdmCmd: Sie besitzen nicht die nötigen Rechte um diesen Befehl zu nutzen!");
    if(SupportVeh[playerid] == 0) return SendClientMessage(playerid,WACMD,"Du bist nicht im Besitz eines Supporter Fahrzeugs! Mit /supcar kannst du dir ein neues erstellen.");
    new Adminfahrzeug;
    RemovePlayerFromVehicle(playerid);
    Adminfahrzeug = GetPlayerVehicleID(playerid);
    DestroyVehicle(Adminfahrzeug);
    Delete3DTextLabel(Support3DText[playerid]);
    SupportVeh[playerid] = 0;
    return 1;
    }


    Hab das Problem das mein Auto nicht zerstört wird :S


    //Edit


    Das mit dem 1 Max Fahrzeug funktioniert irgendwie nicht.

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • ocmd:supcar(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,AdmCmd,"AdmCmd: Sie besitzen nicht die nötigen Rechte um diesen Befehl zu nutzen!");
    if(SupportVeh[playerid] == 1) return SendClientMessage(playerid,WACMD,"Du hast bereits ein Supporter Fahrzeug erstellt! Lösche es bevor du dir ein neues erstellen möchtest.");
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    SupportCar[playerid] = CreateVehicle(560,X,Y,Z,3,165,165,-1);
    SetVehicleNumberPlate(SupportCar[playerid],"Support");
    PutPlayerInVehicle(playerid, SupportCar[playerid], 0);
    Support3DText[playerid] = Create3DTextLabel("Supporter im Dienst", AdminCar,0.0,0.0,0.0,50.0,0,4);
    Attach3DTextLabelToVehicle(Support3DText[playerid],SupportVeh[playerid],0.0,0.0,0.2);
    SendClientMessage(playerid,Hellgelb,"Du hast ein Supporter Fahrzeug erstellt! Benutze /delscar um das Fahrzeug zu Entfernen.");
    SupportVeh[playerid] = 1;
    return 1;
    }


    ocmd:delscar(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,AdmCmd,"AdmCmd: Sie besitzen nicht die nötigen Rechte um diesen Befehl zu nutzen!");
    if(SupportVeh[playerid] == 0) return SendClientMessage(playerid,WACMD,"Du bist nicht im Besitz eines Supporter Fahrzeugs! Mit /supcar kannst du dir ein neues erstellen.");
    RemovePlayerFromVehicle(playerid);
    DestroyVehicle(SupportCar[playerid]);
    Delete3DTextLabel(Support3DText[playerid]);
    SupportVeh[playerid] = 0;
    return 1;
    }


    So geht das :D Also sollte es zumindest