Waschstraße

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
  • Hi,


    ich würde gerne eine Waschstraße scripten.


    Vorstellung: In der Waschstraße befindet sich ein icon. Man fährt mit einem Auto hin und gibt ,,/carwash,, ein. Da soll dann mit GameTextForPlayer stehen ,,Bitte warten!,,. Der spieler sollte dann für einige sekunden gefreezt sein, also sich nicht bewegen können. Dann soll dort für c.a. 5 sekunden wasser spritzen. Dabei wird das Auto wieder repariert wenn es kaput ist wie beim paynspray. Danach soll es aufhören wasser zu spritzen. Dem spieler wird dann 100$ abgezogen. Der Spieler kann dann wieder wegfahren.


    Wichtig: Man sollte im Auto/Motorrad sein um die Waschstraße nutzen zu können. Ich hab zwar bisschen was gemacht aber das ist scheiße :D .


    Ich hoffe Ihr könnt mir helfen.


    #include <a_samp>


    main()
    {
    print("\n----------------------------------");
    print(" Carwash by samed");
    print("----------------------------------\n");
    }
    new CarwashPickup;


    public OnGameModeInit()
    {
    CarwashPickup = CreatePickup(1239,2,1911.2797,-1776.2843,13.3828,-1);
    return 1;
    }
    public OnGameModeExit()
    {
    return 1;
    }
    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }
    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }
    public OnPlayerText(playerid, text[])
    {
    return 1;
    }
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/mycommand", cmdtext, true, 10) == 0)
    {
    // Do something here
    return 1;
    }
    return 0;
    }
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    return 1;
    }
    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    return 1;
    }
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(playerid == CarwashPickup)
    IsPlayerInAnyVehicle(playerid);
    GameTextForPlayer(playerid,"Bitte warten!",3000,0);
    return 1;
    }

    ----- [Streets-of-Germany] Reallifeserver -----
    ----- ServerIP: 94.249.157.199:6564 -----
    ----- Forum: www.sog-rl.de -----
    ----- TeamSpeak³ IP: Zur Zeit Off -----

  • Gibt es beim scripten eine gewisse reihenfolge oder ist die reihenfolge egal?


    Könnt ihr mir weiter helfen bei dem script?


    #include <a_samp>


    main()
    {
    print("\n----------------------------------");
    print(" Carwash by samed");
    print("----------------------------------\n");
    }
    new CarwashPickup;
    new Carwashwasser;
    public OnGameModeInit()
    {
    CarwashPickup = CreatePickup(1239,2,1911.2797,-1776.2843,13.3828,-1);
    Carwashwasser = CreateObject(9833, 1910.8001708984, -1776.3387451172, 2.9853558540344, 0, 0, 0);
    return 1;
    }
    public OnGameModeExit()
    {
    return 1;
    }
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/carwash", cmdtext, true, 10) == 0)
    {
    MoveObject(Carwashwasser,1910.8001708984, -1776.3387451172, 7.9853558540344, 0, 0, 0);
    GameTextForPlayer(playerid,"Bitte warten!",3000,0);

    return 1;
    }
    return 0;
    }
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(playerid == CarwashPickup) IsPlayerInAnyVehicle(playerid);
    GameTextForPlayer(playerid,"Tippe /carwash!",3000,0);
    return 1;
    }



    Ich erhalte eine Fehlermeldung:


    C:\Users\Iljaz\Desktop\samp-Server\filterscripts\carwash.pwn(30) : warning 202: number of arguments does not match definition
    C:\Users\Iljaz\Desktop\samp-Server\filterscripts\carwash.pwn(30) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    2 Warnings.


    Was nun? ;(

    ----- [Streets-of-Germany] Reallifeserver -----
    ----- ServerIP: 94.249.157.199:6564 -----
    ----- Forum: www.sog-rl.de -----
    ----- TeamSpeak³ IP: Zur Zeit Off -----

    2 Mal editiert, zuletzt von samed93 ()

  • Was meinst du mit ,,welches ist zeile 30?,, :D ?!?!


    Bis jetzt:


    #include <a_samp>
    new CarwashPickup;
    new Carwashwasser;
    main()
    {
    print("\n----------------------------------");
    print(" Carwash by samed");
    print("----------------------------------\n");
    }

    public OnGameModeInit()
    {
    CarwashPickup = CreatePickup(1239,2,1911.2797,-1776.2843,13.3828,-1);
    Carwashwasser = CreateObject(9833, 1910.8001708984, -1776.3387451172, 2.9853558540344, 0, 0, 0);
    return 1;
    }
    public OnGameModeExit()
    {
    return 1;
    }
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/carwash", cmdtext, true, 10) == 0)
    {
    MoveObject(Carwashwasser,1910.8001708984, -1776.3387451172, 7.9853558540344, 0, 0, 0);
    GameTextForPlayer(playerid,"Bitte warten!",3000,0);

    return 1;
    }
    return 0;
    }
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(playerid == CarwashPickup) IsPlayerInAnyVehicle(playerid);
    GameTextForPlayer(playerid,"Tippe /carwash!",3000,0);
    return 1;
    }

    ----- [Streets-of-Germany] Reallifeserver -----
    ----- ServerIP: 94.249.157.199:6564 -----
    ----- Forum: www.sog-rl.de -----
    ----- TeamSpeak³ IP: Zur Zeit Off -----

  • #include <a_samp>


    main()
    {
    print("\n----------------------------------");
    print(" Carwash by samed");
    print("----------------------------------\n");
    }
    new CarwashPickup;
    new Carwashwasser;
    public OnGameModeInit()
    {
    CarwashPickup = CreatePickup(1239,2,1911.2797,-1776.2843,13.3828,-1);
    Carwashwasser = CreateObject(9833, 1910.8001708984, -1776.3387451172, 2.9853558540344, 0, 0, 0);
    return 1;
    }
    public OnGameModeExit()
    {
    return 1;
    }
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/carwash", cmdtext, true, 10) == 0)
    {
    MoveObject(Carwashwasser,1910.8001708984, -1776.3387451172, 7.9853558540344, 3); // Hier war der Fehler :D
    GameTextForPlayer(playerid,"Bitte warten!",3000,0);

    return 1;
    }
    return 0;
    }
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(playerid == CarwashPickup) IsPlayerInAnyVehicle(playerid);
    GameTextForPlayer(playerid,"Tippe /carwash!",3000,0);
    return 1;
    }


    würde sagen das das so muss ;) weil MoveObject hast nur 5 parameter:
    Object
    X
    Y
    Z
    Speed ;)


    und btw das move object wenn du das machst das wasser bewegt sich 0 pixel du musst mit X Y Z schon rumspieln damits geht

  • OK vielen dank.


    ich will jetzt noch dass man im auto sein muss dass ,,/washcar,, funktioniert. Wie mach ich das?


    Und man sollte solange gefreezt sein bis das auto repariert wird. Wie mach ich dass das dann das wasser nach einpaar sekunden aufhört zu spritzen, also dass es sich wieder in die alte position zurück moven soll?

    ----- [Streets-of-Germany] Reallifeserver -----
    ----- ServerIP: 94.249.157.199:6564 -----
    ----- Forum: www.sog-rl.de -----
    ----- TeamSpeak³ IP: Zur Zeit Off -----

  • Einfach nur:
    if (strcmp("/carwash", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    MoveObject(Carwashwasser,1910.8001708984, -1776.3387451172, 7.9853558540344, 3); // Hier war der Fehler :D
    GameTextForPlayer(playerid,"Bitte warten!",3000,0);
    }
    return 1;
    }

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • OK.


    Ich hab da noch ein problem:
    Wenn der Spieler zu fuß ist und den pickup berührt steht dort ,,tippe /carwash,,.
    Aber wenn er im Auto sitzt und zum pickup fährt steht dort nichts. Wie mach ich das?


    Was ich will: Also wenn er im Auto sitzt und den pickup berührt soll da stehen ,,tippe /carwash,,. Aber wenn er zu fuß ist und den Pickup berührt soll da stehen ,,du musst in einem Auto sein,,.


    Ich bedanke mich bisjetzt für eure hilfe :thumbup:


    #include <a_samp>
    new CarwashPickup;
    new Carwashwasser;
    main()
    {
    print("\n----------------------------------");
    print(" Carwash by samed");
    print("----------------------------------\n");
    }


    public OnGameModeInit()
    {
    CarwashPickup = CreatePickup(1239,2,1911.2797,-1776.2843,13.3828,-1);
    Carwashwasser = CreateObject(9833, 1910.8001708984, -1776.3387451172, 2.9853558540344, 0, 0, 0);
    return 1;
    }
    public OnGameModeExit()
    {
    return 1;
    }
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/carwash", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    MoveObject(Carwashwasser,1910.8001708984, -1776.3387451172, 7.9853558540344, 3);
    GameTextForPlayer(playerid,"Bitte warten!",2000,0);
    }
    return 1;
    }
    return 0;
    }
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(playerid == CarwashPickup)
    GameTextForPlayer(playerid,"Tippe /carwash!",2000,0);
    return 1;
    }




    weis jemand weiter ?(???

    ----- [Streets-of-Germany] Reallifeserver -----
    ----- ServerIP: 94.249.157.199:6564 -----
    ----- Forum: www.sog-rl.de -----
    ----- TeamSpeak³ IP: Zur Zeit Off -----

    4 Mal editiert, zuletzt von samed93 ()

  • Du kannst OnPlayerPickUpPickUp nicht im Fahrzeug benutzen... dann musst du einen Timer durchlaufen lassen ob der Spieler an der Position ist falls ja Nachricht senden dann eine Var. auf 1 setzten und nur Senden falls die Var. auf 1 ist und sonst nicht und wenn er nicht mehr in der Range ist wieder die Var auf 0 setzten das dient damit er nicht vollgepammt wird aber einmal die Nachricht bekommt!

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • wie mach ich das mit dem timer und dass es auch erkennt ob der spieler (im fahrzeug) an der position ist? ich wil auch dass er sich dann für einige sekunden nicht bewegen/wegfahren kann.

    ----- [Streets-of-Germany] Reallifeserver -----
    ----- ServerIP: 94.249.157.199:6564 -----
    ----- Forum: www.sog-rl.de -----
    ----- TeamSpeak³ IP: Zur Zeit Off -----

  • Ganz oben unter #include <a_samp>
    forward WaschstraßenTimer();


    Unter OnGameModeInit oder OnFilterScriptInit:
    SetTimer("WaschstraßenTimer", 1000, 1);//Timer 1000Millisekunden Interval (1sek) und wiederholend


    Eigenes Public am besten GANZ unten:
    public WaschstraßenTimer()//Timer Public
    {//Falls ja..
    for(new i=0; i<MAX_PLAYERS; i++)//Gibt alle 500Spieler ab..
    {//Falls ja..
    if(IsPlayerInAnyVehicle(i))//Ist Spieler i in einem Fahrzeug
    { //Falls ja..
    if(IsPlayerInRangeOfPoint(i,5.0,1911.2797,-1776.2843,13.3828))//Ist er beim Pickup
    {//Falls ja..
    GameTextForPlayer(i,"Tippe /carwash!",2000,0); //Sendet im die Nachricht
    }
    }
    }
    return 1;
    }

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • OK ich hab da noch eine frage, wieso kommt da immer ein i hin und nicht playerid?


    public WaschstraßenTimer()//Timer Public
    {//Falls ja..
    for(new i=0; i<MAX_PLAYERS; i++)//Gibt alle 500Spieler ab..
    {//Falls ja..
    if(IsPlayerInAnyVehicle(i))//Ist Spieler i in einem Fahrzeug
    { //Falls ja..
    if(IsPlayerInRangeOfPoint(i,5.0,1911.2797,-1776.2843,13.3828))//Ist er beim Pickup
    {//Falls ja..
    GameTextForPlayer(i,"Tippe /carwash!",2000,0); //Sendet im die Nachricht
    }
    }
    }
    return 1;
    }


    Was mir noch fehlt: Wenn ein spieler den Command ,,/carwash,, schreibt dass er sich nicht bewegen/wegfahren kann, und dass sein auto repariert wird also auch optisch wenn z.b. eine tür weg ist, dass die tür wieder da ist. Macht man das mit RepairVehicle?

    ----- [Streets-of-Germany] Reallifeserver -----
    ----- ServerIP: 94.249.157.199:6564 -----
    ----- Forum: www.sog-rl.de -----
    ----- TeamSpeak³ IP: Zur Zeit Off -----

  • for(new i=0; i<MAX_PLAYERS; i++)

    des wegen kommt i das bedeutet nämlich wenn irgend einer der online players da lang fährt ;)


    wegen das was dir fehlt
    SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0); // dashier
    RepairVehicle(GetPlayerVehicleID(playerid)); // dashier
    // ist zum reppen hab ich jedenfalls in meinem /fixveh
    TogglePlayerControllable(playerid, 1); // ist zum nicht bewegen
    // 0 = Nicht bewegen / 1 = Bewegen

  • OK danke, das mit dem auto reparieren geht jetzt :D .


    Also bei


    TogglePlayerControllable(playerid, 0); // ist zum nicht bewegen
    // 0 = Nicht bewegen / 1 = Bewegen


    will ich dass der spieler sich für einige sekunden nicht bewegen kann. Wie mach ich das? ?(
    Und das gemovte objekt soll wieder nach einpaar sekunden in seine alte position moven, wie das?
    Bis jetzt beim Command hab ich:


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/carwash", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    MoveObject(Carwashwasser,1910.8001708984, -1776.3387451172, 7.9853558540344, 3); //gemapptes wasser spritzt
    GameTextForPlayer(playerid,"Bitte warten!",2000,0);
    SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0);
    RepairVehicle(GetPlayerVehicleID(playerid));
    TogglePlayerControllable(playerid, 0);
    }
    return 1;
    }
    return 0;
    }


    Bitte helfen! Ist fast fertig :D

    ----- [Streets-of-Germany] Reallifeserver -----
    ----- ServerIP: 94.249.157.199:6564 -----
    ----- Forum: www.sog-rl.de -----
    ----- TeamSpeak³ IP: Zur Zeit Off -----

    4 Mal editiert, zuletzt von samed93 ()

  • Also diese beiden sachen, sind ja die einfachsten!
    Sicherlich kennse ja den /taz(ern) befehl!?
    Bau diesen dort ein ... so, dann ist schoneinmal der player gefreezet!
    So und das der aufhört sich zu bewegen, das Wasser ..:
    ebenfalls einfach!:
    Bau einen Timer ein, der das MoveObject zum stillstand bringt ....
    So wie ein Tor, das wieder von selbst sich schliesst!
    So und nu streng deinen Kopf an xD


    Mfg


    ___________________________________________________________
    RolePlay - Selfmade:
    [ ||||||||||||||||||||||||||||||||||||| 00,10%]
    ___________________________________________________________

  • OK es ist schon fast fertig dank proffessioneller hilfe von einpaar Leuten. :thumbup:


    Das das object nach einpaar sekunden zur seiner alten possition zurück moven soll hab ich schon gescriptet.


    Was mir fehlt:


    Ich will dass der Spieler sich für EINIGE SEKUNDEN nicht bewegen kann, aber mit


    TogglePlayerControllable(playerid, 0);


    ist der Spieler die ganze zeit gefreezt. Wie setze ich da einen Timer?

    ----- [Streets-of-Germany] Reallifeserver -----
    ----- ServerIP: 94.249.157.199:6564 -----
    ----- Forum: www.sog-rl.de -----
    ----- TeamSpeak³ IP: Zur Zeit Off -----

    Einmal editiert, zuletzt von samed93 ()

  • forward SetPlayerUnfreeze(playerid);
    public SetPlayerUnfreeze(playerid)
    {
    TogglePlayerControllable(playerid,true);
    SendClientMessage(playerid,COLOR_BLUBB,"Du bist nun fertig"); //oder sonstwas
    return 1;
    }


    SetTimerEx("SetPlayerUnfreeze",5000,false,"i",playerid); //In deinen Befehl mit einbauen

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