[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
  • 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;
    }

  • Ich setzte meinen Acor an eine neue Position und nutze dann auch SetActorFacingAngle(RezepLady,323.076721); Die Float habe ich einfach aus der neuen Position rauskopiert. Die Blickrichtung war fast um 180° geändert. Doch leider dreht sich der Actor dann nicht und wird nur geportet.

  • Jeffry:
    also so dann ?
    stock CreateVehicleEx(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay, bool:reset=false)
    {
    return CallRemoteFunction("ext_CreateVehicleEx", "");
    }


    C:\Users\tobi\Desktop\edit\filterscripts\bus.pwn(70) : warning 203: symbol is never used: "reset"
    C:\Users\tobi\Desktop\edit\filterscripts\bus.pwn(70) : warning 203: symbol is never used: "respawn_delay"
    C:\Users\tobi\Desktop\edit\filterscripts\bus.pwn(70) : warning 203: symbol is never used: "color2"
    C:\Users\tobi\Desktop\edit\filterscripts\bus.pwn(70) : warning 203: symbol is never used: "color1"
    C:\Users\tobi\Desktop\edit\filterscripts\bus.pwn(70) : warning 203: symbol is never used: "rotation"
    C:\Users\tobi\Desktop\edit\filterscripts\bus.pwn(70) : warning 203: symbol is never used: "z"
    C:\Users\tobi\Desktop\edit\filterscripts\bus.pwn(70) : warning 203: symbol is never used: "y"
    C:\Users\tobi\Desktop\edit\filterscripts\bus.pwn(70) : warning 203: symbol is never used: "x"
    C:\Users\tobi\Desktop\edit\filterscripts\bus.pwn(70) : warning 203: symbol is never used: "vehicletype"

  • Du musst die Parameter in CallRemoteFunction auch nutzen.
    stock CreateVehicleEx(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay, bool:reset=false)
    {
    return CallRemoteFunction("ext_CreateVehicleEx", "dffffdddd",vehicletype, x, y, z, rotation, color1, color2, respawn_delay, reset);
    }

  • Ich will abfragen ob der Spieler eine Schusswaffe trägt, doch leider klappt es nicht wirklich.


    Einmal nutze ich den hier:
    public IsSchusswaffe(playerid)
    {
    if(GetPlayerWeapon(playerid) >= 21 && GetPlayerWeapon(playerid) <= 35)
    {
    return 1;
    }
    return 0;
    }
    und dann noch den hier:
    IsSchusswaffe(playerid);
    Weiß jemand wieso das nicht geht? (Jeffry xD?)

  • Hab ich in einer If Abfrage. Das Ganze sieht dann so aus:
    if(newkeys == KEY_FIRE)
    {
    if(ImMotel[playerid] == 1 && IsSchusswaffe(playerid))
    {
    if(MotelRuhig == 0)
    {
    MotelRuhig = 1;
    pInfo[playerid][pMotelSchuetze] = 1;
    }
    SendClientMessage(playerid,COLOR_WHITE,"Ready to Rumble");
    ActorZiehenWaffen();
    }
    }

  • public IsSchusswaffe(playerid)
    {
    printf("Waffe von %d ist: %d", GetPlayerWeapon(playerid));
    if(GetPlayerWeapon(playerid) >= 21 && GetPlayerWeapon(playerid) <= 35)
    {
    return 1;
    }
    return 0;
    }


    Lass es dir mal so printen, und schaue ob das auch 31 raus kommt, wenn es eigentlich klappen sollte.

  • Hay,


    ich möchte in mein Register/Login System eine Alterabfrage reinhauen. Aber wie mache ich das, dass in denn Inputttext nur Zahlen eingegeben werden darf? Und warum kriege ich diesen Error:


    //error 006: must be assigned to an array
    SpielerInfo[playerid][pAlter] = inputtext;

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

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