[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
  • C:\Users\tobi\Desktop\Happy edit\gamemodes\reallife.pwn(11213) : error 059: function argument may not have a default value (variable "reset")
    C:\Users\tobi\Desktop\Happy edit\gamemodes\reallife.pwn(11214) : error 059: function argument may not have a default value (variable "reset")


    forward ext_CreateVehicleEx(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay, bool:reset=false);
    public ext_CreateVehicleEx(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay, bool:reset=false) return CreateVehicleEx(vehicletype, x, y, z, rotation, color1, color2, respawn_delay, reset);

  • So, diesmal will ich abfragen ob ein Spieler in der Nähe ist mit einer bestimmten Variable.
    Sprich if(IsPlayerInRangeOfPoint....
    und dann wenn dieser Spieler sagen wir die Variable pInfo[playerid][pBöse] == 1 hat


    Nur eben ohne das die Playerid dafür was machen muss (Taste drücken/Befehl eingeben etc).
    Weiß jemand ob das machbar ist?

  • Beitrag von Fernando_Jizuya ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Ich wollte eine Abfrage erstellen aber leider spinnt es.


    Da habe ich einmal:
    forward SpielerinnaeheTextZwei(Float:radi, Float:x, Float:y, Float:z, string[],col1,col2,col3,col4,col5);
    und dann:
    SpielerinnaeheTextZwei(20.0, 2217.448242,-1146.404785,1025.796875, string2, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    Beim Compilen kommt dann folgende Meldung:
    error 004: function "SpielerinnaeheTextZwei" is not implemented

  • @Jorska: Hast du auch das Public im Script ?


    public SpielerinnaeheTextZwei(Float:radi, Float:x, Float:y, Float:z, string[],col1,col2,col3,col4,col5)
    {
    return 1;
    }


    //edit bzw. wenn es eine Abfrage werden soll brauchst du kein forward sondern einen 'stock'
    Wie soll die Funktion den Funktionieren, bzw. was soll Sie machen ?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • Was soll die Funktion genau können?

  • Hi,
    ich wollte Sonderzeichen aus einem String Entfernen lassen, klappt leider nicht ganz.


    Code:
    RemoveSpecialCharacter(text[])
    {
    print(text);
    for (new i = 0; i < strlen(text); i++)
    {
    if (strfind(text[i], "/", true) != -1) strdel(text[i], strfind(text, "/"), strfind(text[i], "/")+1);
    else if (strfind(text[i], "\", true) != -1) strdel(text[i], strfind(text, "\"), strfind(text[i], "\")+1);
    else if (strfind(text[i], """, true) != 1) strdel(text[i], strfind(text, """), strfind(text[i], """)+1);
    else if (strfind(text[i], "|", true) != -1) strdel(text[i], strfind(text, "|"), strfind(text[i], "|")+1);
    else if (strfind(text[i], "<", true) != -1) strdel(text[i], strfind(text, "<"), strfind(text[i], "<")+1);
    else if (strfind(text[i], ">", true) != -1) strdel(text[i], strfind(text, ">"), strfind(text[i], ">")+1);
    else if (strfind(text[i], "*", true) != -1) strdel(text[i], strfind(text, "*"), strfind(text[i], "*")+1);
    else if (strfind(text[i], ":", true) != -1) strdel(text[i], strfind(text, ":"), strfind(text[i], ":")+1);
    else if (strfind(text[i], "?", true) != -1) strdel(text[i], strfind(text, "?"), strfind(text[i], "?")+1);
    }
    print(text);
    return strlen(text);
    }


    Debug code:

    Code
    [22:00:45] AmiabLe v8 - | Levitate | // Das ist der richtige text
    [22:00:45] ibev   eiae|  // Das kommt am ende raus
  • RemoveSpecialCharacter(text[])
    {
    print(text);
    for (new i = 0; i < strlen(text); i++)
    {
    switch(text[i])
    {
    case '/', '?', '>':
    {
    strdel(text, i, i+1);
    i--;
    }
    }
    }
    print(text);
    return strlen(text);
    }


    Zum Case kannst du dann alle Zeichen hinzufügen, die entfernt werden sollen.



    @xCurry: Versuche es in einem leeren Filterscript, das sollte schon gehen.

  • Wenn es im leeren Filterscript geht, dann hast du in deinem anderen Code etwas falsch gemacht. Vergleiche beide Varianten mal und suche gegebenenfalls nach CallRemoteFunction, wo das überall steht, wo es im leeren Filterscript nicht steht.
    Nicht, dass du es irgendwo nochmals definiert hast.

  • Wenn es im leeren Filterscript geht, dann hast du in deinem anderen Code etwas falsch gemacht. Vergleiche beide Varianten mal und suche gegebenenfalls nach CallRemoteFunction, wo das überall steht, wo es im leeren Filterscript nicht steht.
    Nicht, dass du es irgendwo nochmals definiert hast.


    da benutze ich die Funktion schonmal


    stock GetCurrentStat(id,playerid)
    {
    return CallRemoteFunction("CurrentStat","dd",id,playerid);
    }

  • Mit der Funktion "LoadRandomMap" soll eine Zufällige Map geladen werden.
    Problem ist das der loadstr abgekürzt wird aber der Ordner Name länger ist.
    Der Ordner hat ca 50 Zeichen aber es werden höchstens 40 Zeichen nur ausgegeben.
    Den Ordner Name kann ich nicht ändern, ansonsten ist mein Converter umsonst.
    Jemand eine Idee?


    stock LoadRandomMap(Float:offZ = 5.0)
    {
    new rand;
    do {
    rand = random(LoadData[lMaxMaps]-10000000)+10000000;
    }
    while(LoadData[lLastMap] == rand);
    LoadData[lLastMap] = rand;
    new loadstr[256];
    if(!existproperty(0, "", rand))return print("Es konnte keine Map geladen werden!"),0;
    getproperty(0, "", rand, loadstr);
    strunpack(loadstr, loadstr, 256);
    strins(loadstr,"/Racemaps/",0);
    strcat(loadstr,"/objects.map");
    print(loadstr);
    return LoadMap(loadstr,offZ);
    }


    Debug code:

    Code
    /Racemaps/(DM) Drift Project - The Hard Loop By A/objects.map


    Jeffry: Kannst du mir eventuell hierbei Helfen?

  • Ich wollte meinen Actor wie einen Spieler draufgehen lassen. Beim Setzen des Actors bekommt er 100 Lebenspunkte und in der Abfrage ziehe ich ihn so viel ab wie einen normalen Spieler auch. Ich habe den Schaden anzeigen lassen und selbst wenn ich nur einmal 20 HP abziehe ist der Actor sofort tot.


    public OnPlayerGiveDamageActor(playerid, damaged_actorid, Float: amount, weaponid, bodypart)
    {
    new string[128], attacker[MAX_PLAYER_NAME];
    new weaponname[24];
    GetPlayerName(playerid, attacker, sizeof (attacker));
    GetWeaponName(weaponid, weaponname, sizeof (weaponname));


    format(string, sizeof(string), "%s has made %.0f damage to actor id %d, weapon: %s", attacker, amount, RezepLady, weaponname);
    SendClientMessageToAll(0xFFFFFFFF, string);
    SetActorHealth(RezepLady, -amount);
    return 1;
    }

  • Du musst zuvor GetActorHealth nutzen, außerdem musst du abfragen, welcher Actor den Damage bekommen hat.
    Erst dann kannst du, falls so gewollt, den amount abziehen.


    public OnPlayerGiveDamageActor(playerid, damaged_actorid, Float: amount, weaponid, bodypart)
    {
    new string[128], attacker[MAX_PLAYER_NAME], Float:health;
    new weaponname[24];
    GetPlayerName(playerid, attacker, sizeof (attacker));
    GetWeaponName(weaponid, weaponname, sizeof (weaponname));
    if(damaged_actorid == RezepLady)
    {
    format(string, sizeof(string), "%s has made %.0f damage to actor id %d, weapon: %s", attacker, -amount, RezepLady, weaponname);
    SendClientMessageToAll(0xFFFFFFFF, string);
    GetActorHealth(RezepLady, health);
    SetActorHealth(RezepLady, health-amount);
    }
    return 1;
    }