[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
  • Okay, danke doch es kommt ein Warning:


    public OnPlayerDeath(playerid, killerid, reason)
    {
    // Getöteten ausgeben
    new str[150], nname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,nname,sizeof nname);
    format(str,sizeof str,"~r~ Du hast %s gekillt! Du bekommst 1 Punkt!",nname);
    GameTextForPlayer(killerid,str,5000,5);
    return 1;
    }
    C:\Users\Patrick\Desktop\Samp server\gamemodes\gungame.pwn(202) : warning 219: local variable "str" shadows a variable at a preceding level
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.


    Und wie kann ich die Score erhöhen?


    Also:


    Spieler A killt Spieler B.


    Nun soll die Score von Spieler A um 1 erhöht werden. Wie mach ich das?

    LG cinema


  • Okay, danke. Dumm von mir, auf das hätt ich auch kommen können.


    Nun, wie mach ich das mit der Score?


    Also mit SetPlayerScore(killerid,1); Wird die Score auf 1 gestellt, wie lass ich sie nun automatisch pro Kill um 1 erhöhen?

    LG cinema


  • Ich habe jetzt eine Fahrprüfung erstellt und wenn man diese beginnt, wird ein Auto erstellt mit dem Namen "Fahrschulauto":

    Fahrschulauto = CreateVehicle(589,-209.4949,1132.0269,19.9318,269.7052,43,43,-1);
    SetPlayerPos(playerid,-203.2960,1132.6198,19.7422);
    SetPlayerInterior(playerid,0);
    SetPlayerFacingAngle(playerid,95.1);
    SetPlayerRaceCheckpoint(playerid,0,-198.1753,1119.9756,19.7893,-261.1150,1100.7848,19.7893,6);

    und dann nach Abschluss der "Tour" wird es wieder gelöscht:
    DestroyVehicle(Fahrschulauto);


    Das klappt auch alles.
    Doch wenn jetzt 2 Leute gleichzeitig die Fahrprüfung machen, werden zwar dann noch die Fahrzeuge erstellt.
    Aber sobald der erste die Fahrprüfung beendet, behält dieser sein Fahrzeug, und statt diesem wird das Auto des 2. Absolventen zerstört.
    Kann man das irgendwie beheben?
    eventuell mit ner switch funktion, also statt Fahrschulauto dann Fahrschulauto1 usw.?

    Einmal editiert, zuletzt von M_A_V ()

  • Hmm.... Du könntest doch nur immer 1ne Person die Fahrprüfung machen lassen? Also:


    Ganz oben:

    new pruefung = 0;

    Dann, dort wo er die Fahrprüfung startet:

    if (pruefung == 0)
    {
    Fahrschulauto = CreateVehicle(589,-209.4949,1132.0269,19.9318,269.7052,43,43,-1);
    SetPlayerPos(playerid,-203.2960,1132.6198,19.7422);
    SetPlayerInterior(playerid,0);
    SetPlayerFacingAngle(playerid,95.1);
    SetPlayerRaceCheckpoint(playerid,0,-198.1753,1119.9756,19.7893,-261.1150,1100.7848,19.7893,6);
    pruefung = 1;
    }
    else
    {
    GameTextForPlayer(killerid,"Es macht schon jemand die Fahrprügung! Du musst leider warten!,5000,5);
    }


    Und wenn er die Prüfung beendet:

    DestroyVehicle(Fahrschulauto);
    pruefung = 0;


    Das wäre mein Lösungsvorschlag.
    _____________________________________________________________________


    Nun habe ich aber auch eine Frage:


    Wie setze ich Objekte in eine Virtuelle World? Den die Parameter sind ja: CreateObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ);. Wie mach ich aber ein Object in eine Virtuelle Welt (zum Beispiel Virtuelle Welt 3)?


    Kann es mir jemand erklären?

    LG cinema


    Einmal editiert, zuletzt von cinema ()

  • Ich habe mal nach Tutorials einen Tankscript erstellt, und dann noch eine Tankanzeige. Doch i-was stimmt glaub nicht mit dem. Script:
    new Tanks[MAX_VEHICLES];
    new Tank[MAX_VEHICLES];


    forward TankCheck();
    forward Tankstelle(playerid);
    forward Tankstand(playerid);


    // unter ongamemodeinit
    for(new c=0;c<MAX_VEHICLES;c++)
    {
    Tanks[code=c] = 100;
    }


    if (strcmp("/tanken", cmdtext,true) ==0)
    {
    if(Tankstelle(playerid))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Autoid = GetPlayerVehicleID(playerid);
    SendClientMessage(playerid,GREEN,"Du hast getankt.");
    Tank[Autoid] = 100;
    return 1;
    }
    else
    {
    SendClientMessage(playerid,GREY,"Du bist in keinem Auto!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,GREY,"Du bist an keiner Tankstelle");
    return 1;
    }
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    Tankstand(playerid);
    }
    }


    public Tankstand(playerid)
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    new Auto = GetPlayerVehicleID(i);
    if(Tanks[Auto] == 100)
    {
    GameTextForPlayer(i,"~b~tank: ~w~100",12000,1);
    }
    if(Tanks[Auto] == 99)
    {
    GameTextForPlayer(i,"~b~tank: ~w~99",12000,1);
    }
    if(Tanks[Auto] == 98)
    {
    GameTextForPlayer(i,"~b~tank: ~w~98",12000,1);
    }
    ..........


    Dachte zuerst an sowas, dann habe ich sowas probiert:
    // Bei onplayerstatechange einfach das abgeändert:


    if(newstate == PLAYER_STATE_DRIVER)
    {
    TextDrawShowForPlayer(playerid, Speedo[playerid]);
    new m = GetVehicleModel(GetPlayerVehicleID(playerid));
    new Autoid = GetPlayerVehicleID(playerid);
    if(m == 509 || m == 581 || m == 510)
    {
    }
    else
    {
    new string[48];
    format(string,48,"~b~tank: ~w~%d",Tank[Autoid]);
    GameTextForPlayer(playerid,string,12000,1);
    }
    }
    Bitte hilft mir, der tankanzeige funzt nicht ganz, der zeigt nur die ersten 12s "tank: 100" an, dann verschwindet es, aber es steht nie dann "Tank: 99".

  • Hey...suche schon seit tagen wie man den befehl"/quitgang" einbauen kann :( leider nichts gefunden...könntet ihr mir pls weiterhelfen? Benutze einen selbst editierten godfather
    MFG NUVOXU

    MFG MrTadäus

    Einmal editiert, zuletzt von MrTadäus ()

  • Hier....


    if(strcmp(cmd, "/quitfraktion", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Du hast deine Fraktion verlassen und bist nun wieder ein Zivilist.");
    gTeam[playerid] = 1;
    PlayerInfo[playerid][pLeader] = 0;
    PlayerInfo[playerid][pTeam] = 1;
    PlayerInfo[playerid][pMember] = 0;
    PlayerInfo[playerid][pRank] = 0;
    PlayerInfo[playerid][pChar] = 0;
    new rand = random(sizeof(CIV));
    SetSpawnInfo(playerid, gTeam[playerid], CIV[rand],0.0,0.0,0.0,0,0,0,0,0,0,0);
    PlayerInfo[playerid][pModel] = CIV[rand];
    MedicBill[playerid] = 0;
    SpawnPlayer(playerid);
    return 1;
    }
    }


    Destiny - RealLife is coming SOON!
    Wir sind zurück besser als je zuvor! :*

  • Zitat

    Hey Leute.


    Ich möchte einen kleinen Chat für ein bestimmtes gTeam machen.


    So, das gTeam ist definiert:


    #define TEAM_chat 0


    So, Player sind nun auch dem Team zugewiesen, nun möchte ich, falls einer /chat [TEXT] macht, dass es nur Leute aus dem gTeam chat lesen können:

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(chat,8,cmdtext);
    return 0;
    }
    }
    dcmd_chat(playerid,params[])
    {
    if(gTeam[playerid] == TEAM_chat)
    {
    new text[128];
    if(sscanf(params, "s",text))
    {
    return SendClientMessage(playerid,COLOR_RED,"TIPP: /chat [text]");
    }
    SendClientMessage(playerid,COLOR_BLUE,text);
    }
    return 1;
    }



    Wie mache ich das, dass nur Leute des Teams chat den Text lesen können?


    Ach ja, und wie kan ich Objekte und Fahrzeuge in eine Virtuele Welt setzen?


    Hoffe auf eine baldige Antwort >.>

    LG cinema


    3 Mal editiert, zuletzt von cinema ()

  • dcmd_chat(playerid,params[])
    {
    if(gTeam[playerid] == TEAM_chat)
    {
    new text[256];
    if(sscanf(params,"s",text))
    {
    return SCM(playerid,GREY,"Benutzung: /chat [Text]");
    }
    else
    {
    for(new i = 0;i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(gTeam[i] == 0)
    {
    new format_me[256],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    format(format_me,sizeof format_me,"%s: %s",name,text);
    SendClientMessage(i, 0x33CCFFAA,format_me);
    }
    }
    }
    }
    return 1;
    }

  • besser
    dcmd_chat(playerid,params[])
    {
    if(gTeam[playerid]!=TEAM_chat)return 1;
    new txt[128];
    if(sscanf(params,"s",txt))return SendClientMessage(playerid,COLOR_RED,"TIPP: /chat [text]");
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    format(txt,sizeof txt,"%s: %s",name,txt);
    for(new i;i<MAX_PLAYERS;i++)if(gTeam[i]==TEAM_chat)SendClientMessage(playerid,COLOR_BLUE,text);
    return 1;
    }