[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
  • Mache gerade die Fraktionsspawns, irgendwie funktioniert das SetPlayerFacingAngle nicht..
    SetPlayerPos(playerid,fInfo[fID][f_x],fInfo[fID][f_y],fInfo[fID][f_z]);
    SetPlayerFacingAngle(playerid,fInfo[fID][f_r]);
    Er spawnt an der richtigen Stelle, aber sieht um ca.160 Grad in eine andere Richtung als abgespeichert..
    Weiss jmd an was das liegen könnte?

  • die speicher ich in einer Globalen Variable im enum
    enum fraktenum
    {
    f_name[128],
    Float:f_x,
    Float:f_y,
    Float:f_z,
    Float:f_r,
    f_inter,
    f_world
    }

    new fInfo[][fraktenum] =
    {
    {"Zivilist",0.0,0.0,0.0,0.0,0,0},
    {"LSPD",2108.3289,1386.0986,10.8203,182.4039,0,0},
    {"Medic",0.0,0.0,0.0,0.0,0,0}
    };

  • Hi, habe hier eine Funktion von Jeffry die aber nicht richtig funktioniert.
    Es geht um Rangnamen definieren mit einem Stock, der Fraktionsname Funktioniert nur die Ränge nicht.


    Es kommt immer Du bist "Polizei" mit dem Rang "Polizei" obwohl ja dann der Rangname kommen sollte.


    stock GetRangName(team, rang)
    {
    new name[32];
    switch(team)
    {
    case 0:
    {
    switch(rang)
    {
    case 0: name = "Unbekannt";
    case 1: name = "Unbekannt";
    default: name = "Unbekannt";
    }
    }
    case 1:
    {
    switch(rang)
    {
    case 0: name = "Praktikant";
    case 1: name = "Polizeimeister";
    case 2: name = "Polizeiobermeister";
    case 3: name = "Polizeihauptmeister";
    case 4: name = "Polizeiratsanwärter";
    case 5: name = "Polizeirat";
    case 6: name = "Polizeidirektor";
    default: name = "Unbekannt";
    }
    }
    case 2:
    {
    switch(rang)
    {
    case 0: name = "Anfänger";
    case 1: name = "Pro";
    default: name = "Unbekannt";
    }
    }
    case 3:
    {
    switch(rang)
    {
    case 0: name = "Streife";
    case 1: name = "Officer";
    default: name = "Unbekannt";
    }
    }
    case 4:
    {
    switch(rang)
    {
    case 0: name = "Anfänger";
    case 1: name = "Pro";
    default: name = "Unbekannt";
    }
    }
    case 5:
    {
    switch(rang)
    {
    case 0: name = "Streife";
    case 1: name = "Officer";
    default: name = "Unbekannt";
    }
    }
    case 6:
    {
    switch(rang)
    {
    case 0: name = "Streife";
    case 1: name = "Officer";
    default: name = "Unbekannt";
    }
    }
    default: name = "Unbekannt";
    }
    return 1;
    }


    format(string, sizeof(string), "Ich bin in Fraktion %s und habe den Rang %s.", GetFraktionsName(SpielerInfo[playerid][pTeam]), GetRangName(SpielerInfo[playerid][pTeam],SpielerInfo[playerid][pRank]));
    SendClientMessage(playerid, 0xFF0000FF, string);



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Ugh, tatsächlich. Habe den Fehler in dem Thread wo du es her hast ausgebessert. :whistling:


    return 1;
    zu:
    return name;



    @FerienFreak: Das geht leider nicht. Man müsste immer wieder die Position setzen, aber das funktioniert nicht richtig, sobald man eine kleine Steigung hat.

  • Hallo,


    Wie macht man ein Skript z.B. Wenn man /auf macht geht das Auto auf und bei /zu Das Auto zu.
    -----------------------------
    Wie macht man, wenn ein Spieler die Taste '' N'' Drückt geht das Motor an und wenn man Wieder auf die Taste '' N'' drückt geht das Motor wieder aus.


    Danke schonmal im Vorraus.


    MFg
    SST

  • Wie macht man ein Skript z.B. Wenn man /auf macht geht das Auto auf und bei /zu Das Auto zu.


    Wie macht man, wenn ein Spieler die Taste '' N'' Drückt geht das Motor an und wenn man Wieder auf die Taste '' N'' drückt geht das Motor wieder aus.


    http://wiki.sa-mp.com/wiki/SetVehicleParamsEx_DE


    Unten ist ein Beispiel anhand des Alarms, kannst du aber auch auf deine Probleme anwenden. Ist im Prinzip das Selbe.
    Das Ganze dann mit einem Command Prozessor (bspw. ocmd) oder unter OnPlayerCommandText() und unter OnPlayerKeyStateChange (zum Abfragen der Taste N).


    http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange


    Einen Befehl würdest du z.B. so erstellen.


    mit ocmd:
    ocmd:auf(playerid, params[]){
    //Code, der bei /auf ausgeführt werden soll
    }


    mit dem Callback OnPlayerCommandText():
    if(!strcmp(cmd, "/auf")){ //Prüft, ob der in der Chat eingegebene Befehl /auf ist
    //Code, der bei /auf ausgeführt werden soll
    }


    Abfragen der Taste N (Code unter OnPlayerKeyStateChange()):
    if(newkeys & KEY_NO){
    //Code, der bei Tastendruck "N" ausgeführt werden soll
    }

  • Hallo, dafür gibt es eigentlich eine menge Tutorials, aber hier schau mal:


    Ganz oben im Script:
    new bool:Motor[MAX_VEHICLES]=false;


    OnGameModeInit:
    ManualVehicleEngineAndLights();
    for (new i=0; i< MAX_VEHICLES; i++)
    {
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(i,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[i] = false;
    }


    OnPlayerKeyStateChange:


    Spoiler anzeigen
    if(newkeys & 131072)
    {
    if(GetPlayerVehicleSeat(playerid) == 0)
    {
    new v = GetVehicleModel(car);
    if(GetVehicleModel(car) == 509 || GetVehicleModel(car) == 481 || GetVehicleModel(car) == 510)
    {
    SendClientMessage(playerid, error, "Du sitzt auf einem Fahrrad. Das hat keinen Motor!");
    }

    Spoiler anzeigen
    else if (Motor[car] == false )
    {
    GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(car,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    Motor[car] = true; // Setzt den Bool Motor auf true
    }

    Spoiler anzeigen
    else
    {
    GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(car,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[car] = false; // Setzt den Bool wieder auf falsch zurück.
    }
    }
    return 1;
    }


    OnVehicleSpawn:
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[vehicleid] = false;


    Ist jetzt aus meinem Script, habs dir aber kurz angepasst.
    Sollten Errors/Warnings kommen, so melde dich bei mir per PN!
    WICHTIG: Vergiss nicht die Farben anzupassen(SendClientMessage)



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Dann so:
    ocmd:smokeweed2(playerid, params[])
    {
    if(PlayerInfo[playerid][sWeed] > 0)
    {
    new Float:pArmour;
    GetPlayerArmour(playerid, pArmour);
    if(pArmour == 100.0) return SendClientMessage(playerid, COLOR_WHITE, "* Du brauchst kein Weed mehr.");
    if(pArmour > 100.0) return SendClientMessage(playerid, COLOR_WHITE, "* Du bist ein Cheater.");
    if(pArmour + 25.0 <= 100) SetPlayerArmour(playerid, pArmour+25.0);
    else SetPlayerArmour(playerid, 100.0);
    PlayerInfo[playerid][sWeed] -= 2;
    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GiveNameSpace(sendername);
    SaveDrugs(playerid);
    }
    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "* Du hast kein Weed mehr.");
    }
    return 1;
    }

  • Beitrag von MarlboroMann ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Hi, ich hänge gerade bei den Fraktionsspawns.


    Ich frage bei OnPlayerSpawn ab ob der Spieler in einer Frak ist und dann lasse ich ihn da spawnen.


    Bei OnPlayerRequestClass habe ich SetSpawnInfo gemacht, dort werden die Zivis gespawnt.



    Jedoch wird man jetzt jedes mal wenn man an einer Fraktion gespawnt wird ganz kurz davor am Zivispawn gespawnt,
    kann man das umgehen?

  • Hast du bei SetSpawnInfo auch die Informationen (außer halt die Spawnposition) für die Fraktionsmember oder nur die, der Zivis? Wenn zweiteres, mach einfach eine Abfrage:


    if(playerInfo[playerid][pMember] == 0) { SetSpawnInfo..

    20€ geschenkt - bei Fragen gerne PN an mich


    Mehr über reCyclix
    reCyclix - more than recycling
    reyCyclix ist ein polnisches Recyclingunternehmen, welches jedem die Möglichkeit bietet, sich an ihrem Geschäftsmodell gewinnbringend zu beteiligen. Normalerweise passiert das, in dem man eine beliebige Summe in Kunststoffmüll investiert, allerdings schenkt reCyclix zur Zeit noch jedem neuem Nutzer 20€, die zur Investition genutzt werden können.

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