Beiträge von Kayer

    naja aber dazwischen fehlt doch noch was ;)


    das wenn er zu schnell fährt den punkt kassiert ..
    und dass er den schein abgenommen bekommt wenn er 5 oder so hat..

    Eben! Wie Shocker schon erwähnt hat:" Kommt auf dein Script an !".
    Zudem waren das,wie erwähnt Anregungen,da ich ja noch immer nicht weiß, wie dein Script aussieht
    :P , und wie viel du eig. verlangst ;) .
    Ein Blitz-FS existiert bereits....da eben meinen Teil einfügen :thumbdown: .
    Und, wie schon oft erwähnt :rolleyes: ,kann ich den "Führerscheinentzug" nur vollführen,sobald ich weiß : Gibt es einen Führerschein? Wie wird er vergeben bzw. benannt? Usw. !


    8)


    public OnPlayerRequestClass(playerid, classid)


    {


    if (classid == 0) // steht für 1. Skin
    {
    gTeam[playerid] = TEAM_PILOT
    }
    else if (classid == 1) // .. für 2.
    {
    gTeam[playerid] = TEAM_COP
    }
    else if (classid == 2)//3.
    {
    // usw.
    }
    else if (classid == 3)//usw.
    {
    // usw.
    }
    else if (classid == 4)
    {
    // usw.
    }
    else if (classid == 5)
    {
    // usw.
    }


    return 1;


    }

    Ich denke, dass du so etwas ähnliches in deinem Script hast.Du musst bei jeder Auswahl dem Spieler ein Team zuordnen,ggf. es vorher erstellen ( mit gTeam o. Ä. ).
    Hoffe,dass es stimmt und bei Fragen melden !




    // Ganz Oben
    static gTeam[MAX_PLAYERS];
    #define TEAM_PILOT 0
    #define TEAM_COP 1
    #define TEAM_BALLAS 2
    // usw.



    // ==== Ganz Oben im Script ====


    forward Check();


    // ==== I-wo außerhalb eines Callbacks ====


    public Check()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsACop(i))
    {
    if(IsPlayerToPoint(4.0,1004.0070,-939.3102,42.1797)
    {
    DisablePlayerCheckpoint(playerid);
    }
    }
    }
    return 1;
    }



    // ==== In Deinem Befehl, ====
    // Unter :
    SetPlayerCheckpoint(i, 1004.0070,-939.3102,42.1797,3.0)


    SetTimer("Check",1000,1);
    // ...


    Zunächst hoffe ich,dass es stimmt :S .

    Ich denke mal so:

    public Areacheck()
    {
    for(new i = 0; i<GetMaxPlayers(); i++)
    {
    if( IsPlayerConnected(i) && IsPlayerInArea(playerid, 1.Speichern-X , 1.Speichern-Y , 2.Speichern-X , 2.Speichern-Y ) )
    {
    new Float:phealth;
    GetPlayerHealth(playerid,phealth);
    SetPlayerHealth(playerid,health-3);
    }
    else
    {
    new Float:h;
    GetPlayerHealth(playerid, h);
    SetPlayerHealth(playerid, h-5);
    }
    }
    }

    ;( 1. Ich bezweifle stark,dass dir jemand solch ein Script ohne eine Gegenleistung zu verlangen erstellen wird :huh:


    :rolleyes: 2. Es gibt genügend einfache und ausbaufähige Scripts, die inetwa dies enthalten: :whistling:
    z.B.: Manhunt , LV-DM , SF-TDM, C´n´g , [G]od [F]ather
    (Schick mir eine PM und ich sende sie dir oder lade sie im "Server-Packet" im SA:MP Forum runter)



    3. Willst du Scripten lernen oder einfach spielen ?


    :P 4. Wenn du jedoch trotzdem ein selbstgemachtes Script möchtest, ist das hier der falsche Thread. 8)
    ( ggf. schick mir eine PM ;) )






    Mit freundlichen Grüßen,
    Kayer.

    Ich denke,dass es so ginge



    forward IsPlayerInArea(playerid,Float:X,Float:Y,Float:Z);
    //....


    public IsPlayerInArea(playerid,Float:X,Float:Y,Float:Z)
    {
    new Float:X;
    new Float:Y;
    New Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    if(X >= ... && X <= ... && Y >= .... && Y <= ...); {
    //... Hier könntest du beispielsweise mit einem Timer fortsetzen


    Da ich nicht genau weiß, wie dein Script heißt bzw. der gewisse Teil deines Scripts aussieht, erschwert es dich Sache beträchtlich.


    Eine Möglichkeit wäre dies ("Grundzüge bzw. Anregung"):

    //oben bei den Definitionen
    new Punkte[MAX_PLAYERS]; //Punkteigenschaft für die (oder den) User


    //...


    //Beim Blitzen, WENN er zuschnell fährt
    if(Punkte[playerid] <= 3 ) // "3" nach belieben verändern
    {
    SendClientMessage(playerid,0x8D8DFF00,"Wegen zu schnellem Fahren hast du einen Punkt");
    SendClientMessage(playerid,0x8D8DFF00,"in Flensburg kassiert");
    Punkte[playerid] += 1;
    return 1;
    }
    else
    {
    SendClientMessage(playerid,0x8D8DFF00,"Dir wurde der Führerschein entzogen wegen zu schnellem Fahren");
    //Führerschein entziehen
    return 1;
    }



    Hoffe ,dass es geht !
    [ ungetestet ]

    1.

    ich hab das jetz so gemacht wie ich das bei gates gemacht nur anstadt so schräg hoch fährt das wie ein gate hoch lol?


    und ich hab jetzt wieder was geändert kann mal kurz einer auf mein server dann zeig ich es euch was jetzt nicht geht oder so:


    wenn ich /pdsauf machen dann verschiebt die schranke sich aber fährt nicht hoch

    :?: :huh: :?:
    Wenn du bei MoveObject(Gate,X,Y,Z); nur die Z-Achse veränderst, ist es selbstverständlich,dass sich das Gate NUR nach oben bewegen wird !
    Du müsstest ein zweites Gate erstellen/mappen,und nur dessen Koordianten verwenden.


    Bei MoveObject(Gate,Koords); ( Beim Öffnen des Tores, sei es durch einen Timer oder einen Befehl,wie /auf )die Koords von der hochgestellten Schranke und nicht von der "tiefgelegten" Schranke.
    Und beim Schließen ( durch /zu oder einen Timer ) die Koordinaten der ursprünglichen,tieferen Schranke.


    2.

    Zunächst muss man vergewissert sein,dass er mit gTeam arbeitet, und er dies nicht im GF oder anderen Scripts, in denen es bereits anders definiert ist, verwendet.


    Das IsPlayerToPoint(Radius,Koords) ist eine Sache der Definition. Beispielsweise in meinem Script oder im [G]od[F]ather ist es so festgehalten:

    forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
    // also PlayerToPoint(Radius,playerid,X,Y,Z);



    Hinzu kommt,dass offen steht,wie das Tor geschlossen werden soll ;) :P :rolleyes:.
    Es ist,wie oben schön beschrieben, durch einen Befehl, wie /zu möglich, doch eine wahrscheinlich elegantere Variante ist einen Timer zu benutzen.

    //>>>In dem Befehl "/auf"<<<
    //...
    SetTimer("Close",5000,0); //Erklärung: SetTimer("Timername",Wann Er ausgeführt wird in Milisekunden, Wiederholung Ja = 1 und Nein = 0);
    //....




    // >>>ganz oben bei den Definitionen<<<
    //...
    forward Close();
    //....


    //>>>Auerßhalb eines CallBacks<<<
    public Close()
    {
    MoveObject(Gate,Koords); // !!!WICHTIG!!! Diese Koordianten sind jene beim geschlossenen Zustand (!) !!!WICHTIG!!! ,da das Tor ja geschlossen wird
    /* Möglich: */ SendCientMessageToAll(0xE3E3E3FF, "PD-Tor wurde wieder geschlossen");


    return 1;
    }




    3.

    und was füge ich ein damit das nur in einem bestimmten Radius möglich ist :?: :?: :?:

    Schau dir dies mal näher an :P: PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);



    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



    Ich hoffe, dass alles richtig ist, ich helfen konnte und es nun geklärt ist.


    // ganz oben
    new aduty[MAX_PLAYERS];
    new xname[MAX_PLAYER_NAME];
    // Unter public OnPlayerCommandText(playerid, cmdtext[])
    dcmd(aduty,5,cmdtext);
    // Außerhalb eines CallBacks ( public... )
    dcmd_aduty(playerid,params[])
    {
    #pragma unused params
    if(IsPlayerAdmin(playerid))
    {
    if(aduty[playerid] == 0 )
    {
    new string[64];
    GetPlayerName(playerid, xname, sizeof(xname));
    format(string,sizeof(string), "%s ist nun OnDutyAdmin!",xname);
    SendClientMessageToAll(COLOR_RED,string);


    }
    else if(aduty[playerid] == 1 )
    {
    new lol[64];
    GetPlayerName(playerid, xname, sizeof(xname));
    format(lol,sizeof(lol),"%s ist nun OfflineDutyAdmin !", xname);
    SendClientMessageToAll(COLOR_RED,sstring);
    }
    }
    return 1;


    }


    Schreib mir eine PM wenn´s nicht geht .... oder du´s nicht verstehts :pinch: .

    du machst nen timer der jede stunden dem player geld gibt und die datei +1 macht(stunden)

    Wenn ich das so verstehe, dass ein Timer bei OnPlayerConnect jede Stunde einem z.B. 1.000 $ gibt und in der Datei +1 macht, ist es falsch !
    Überleg mal: Was passiert, wenn ein User nach 50 Minuten Crasht ... => er kriegt keinen Payday, da es nicht erfüllt wird und der Timer beim Einloggen wieder anfängt...
    Man müsste jede Minute +1 machen,dies saven in der Datei und gleichzeitig checken, ob jemand 60 hat.... dies dann auf 0 setzten usw. !



    Hoffe, dass es so stimmt !!!

    filterscripts\gangs.pwn(71) : warning 217: loose indentation = nur eine Warnung
    filterscripts\gangs.pwn(114) : warning 209: function "OnPlayerCommandText" should return a value = unten fehlt das "return 0;" bei OnPlayerCommandText ganz unten
    filterscripts\gangs.pwn(292) : error 017: undefined symbol "COLOR_RED" = das COLOR_RED definieren ( #define RED 0xFF0000AA )
    filterscripts\gangs.pwn(297) : error 017: undefined symbol "xname" = definieren ( new xname[MAX_PLAYER_NAME] )
    filterscripts\gangs.pwn(297) : error 017: undefined symbol "xname" = -"-
    filterscripts\gangs.pwn(302) : error 017: undefined symbol "xname" = -"-
    filterscripts\gangs.pwn(310) : error 017: undefined symbol "xname" = -"-
    gangs.pwn(310) : error 017: undefined symbol "xname" = -"-
    gangs.pwn(314) : error 017: undefined symbol "xname" = -"-
    gangs.pwn(315) : error 017: undefined symbol "COLOR_RED" = das COLOR_RED definieren ( #define RED 0xFF0000AA )


    //bei OnPlayerCommandText
    dcmd(teleport,8,cmdtext);


    // Aßerhalb eines CallBacks
    dcmd_teleport(playerid,params[])
    {
    #pragma unused params
    if(IsPlayerAdmin(playerid))
    {
    SetPlayerPos(playerid,4003.744,-2244.143,1.250);
    SendClientMessage(playerid, 0x0000BBAA , " Du hast dich teleportiert! ");
    new admin[MAX_PLAYER_NAME];
    new formato[64];
    GetPlayerName(playerid, admin, sizeof admin);
    format(formato, sizeof formato,"%s hat sich teleportiert",admin);
    SendClientMessageToAll(0x0000BBAA,formato);
    SetPlayerFacingAngle( playerid, 0 );
    return 1;
    }
    else
    {
    SendClientMessage(playerid,0x0000BBAA,"Du bist kein Admin");
    return 1;
    }
    }


    //EDIT: Ich gehe davon aus, dass du den dcmd Cod hast , wenn nicht gucke in das Tutorial von Goldkiller ( das übrigens sehr gut gemacht ist !)

    Hi... es war bisschen Arbeit, aber hier:



    //Bei OnPlayerConnect
    gTeam[playerid] = TEAM_ZIVI;


    //Bei den Defines, ganz oben
    #define TEAM_GROVE 2
    #define TEAM_BALLAS 3
    #define TEAM_GROVELEADER 0
    #define TEAM_BALLASLEADER 1
    #define TEAM_ZIVI 4


    static gTeam[MAX_PLAYERS];



    // bei OnPlayerCommandText


    dcmd(makeleader,10,cmdtext);
    dcmd(invite,6,cmdtext);
    dcmd(tc,2,cmdtext);


    // außerhalb i-eines CallBacks


    dcmd_invite(playerid,params[])
    {
    new target = strval(params);
    new leader[MAX_PLAYER_NAME];
    new invites[64];
    new invites2[64];
    new targets[MAX_PLAYER_NAME];
    if(!strlen(params))
    {
    return SendClientMessage(playerid,0x0000BBAA,"Verwende: /invite [ID]");
    }
    if(!IsPlayerConnected(target))
    {
    SendClientMessage(playerid,0x0000BBAA," Der angegebene User ist nicht online" );
    return 1;
    }
    if(gTeam[playerid] == TEAM_GROVELEADER)
    {
    gTeam[target] = 2;
    GetPlayerName(target, targets, sizeof targets );
    format(invites, sizeof invites, "Du hast %s in deine Fraktion eingeladen",targets);
    SendClientMessage(playerid,0x0000BBAA,invites);
    GetPlayerName(playerid, leader, sizeof leader);
    format(invites2, sizeof invites2 , "Du wurdest von %s in die GroveGang eingeladen!", leader);
    SendClientMessage(target,0x0000BBAA,invites2);
    return 1;
    }
    if(gTeam[playerid] == TEAM_BALLASLEADER)
    {
    gTeam[target] = 3;
    GetPlayerName(target, targets, sizeof targets );
    format(invites, sizeof invites, "Du hast %s in deine Fraktion eingeladen",targets);
    SendClientMessage(playerid,0x0000BBAA,invites);
    GetPlayerName(playerid, leader, sizeof leader);
    format(invites2, sizeof invites2 , "Du wurdest von %s in die Ballas eingeladen!", leader);
    SendClientMessage(target,0x0000BBAA,invites2);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,0x0000BBAA,"Du bist kein Leader !");
    return 1;
    }
    }


    dcmd_makeleader(playerid,params[])
    {
    new admin[MAX_PLAYER_NAME];
    new zielname[MAX_PLAYER_NAME];
    new leaderstring[64];
    new leaders2[64];
    new leaderzahl;
    new target;
    if(sscanf(params,"dd",target,leaderzahl))
    {
    SendClientMessage(playerid,0x0000BBAA," USAGE : /makeleader [ID] [Zahl ( 1 - 2 )");
    return 1;
    }
    if(!IsPlayerAdmin(playerid))
    {
    SendClientMessage(playerid,0x0000BBAA," Du bist kein RCON-Admin, ");
    SendClientMessage(playerid,0x0000BBAA," und bist daher nicht befugt dies zu benutzen ");
    return 1;
    }
    if(!IsPlayerConnected(target))
    {
    SendClientMessage(playerid,0x0000BBAA,"> Der angegebene User ist nicht online <");
    return 1;
    }
    if(leaderzahl == 0)
    {
    gTeam[target] = 0;
    GetPlayerName(playerid, admin, sizeof admin);
    GetPlayerName(target, zielname, sizeof zielname);
    format(leaderstring, sizeof leaderstring,"Du wurdest zum Leader der %d . Fraktion gemacht",leaderzahl);
    SendClientMessage(target,0x0000BBAA,leaderstring);
    format(leaders2, sizeof leaders2,"Du hast %s zum Leader der %d . Fraktion gemacht",zielname,leaderzahl);
    SendClientMessage(playerid,0x0000BBAA,leaders2);
    return 1;
    }
    else if(leaderzahl == 1)
    {
    gTeam[target] = 1;
    GetPlayerName(playerid, admin, sizeof admin);
    GetPlayerName(target, zielname, sizeof zielname);
    format(leaderstring, sizeof leaderstring,"Du wurdest zum Leader der %d . Fraktion gemacht",leaderzahl);
    SendClientMessage(target,0x0000BBAA,leaderstring);
    format(leaders2, sizeof leaders2,"Du hast %s zum Leader der %d . Fraktion gemacht",zielname,leaderzahl);
    SendClientMessage(playerid,0x0000BBAA,leaders2);
    return 1;
    }
    else if(leaderzahl >= 2 )
    {
    SendClientMessage(playerid,0x0000BBAA, " Leaderzahlen: 1 und 2.");
    return 1;
    }
    return 1;
    }


    dcmd_tc(playerid,params[])
    {
    new tc[90];
    new UZ[100];
    if(sscanf(params,"s",tc))
    {
    SendClientMessage(playerid,COLOR_RED, "Verwende: /tc ");
    return 1;
    }
    if(gTeam[playerid] == TEAM_GROVELEADER || gTeam[playerid] == TEAM_GROVE) //roflmato
    {
    GetPlayerName(playerid, xname, sizeof xname );
    for( new i = 0; i < MAX_PLAYERS; i++)
    {
    if(gTeam[playerid] == TEAM_GROVELEADER || gTeam[playerid] == TEAM_GROVE)
    {
    format(UZ, sizeof UZ, "%s : %s ", xname , tc);
    SendClientMessage(playerid, 0x0000BBAA, UZ);
    return 1;
    }
    }
    }
    if(gTeam[playerid] == TEAM_BALLASLEADER || gTeam[playerid] == TEAM_BALLAS)
    {
    GetPlayerName(playerid, xname, sizeof xname );
    for( new i = 0; i < MAX_PLAYERS; i++)
    {
    if(gTeam[playerid] == TEAM_BALLASLEADER || gTeam[playerid] == TEAM_BALLAS)
    format(UZ, sizeof UZ, "%s : %s ", xname , tc);
    SendClientMessage(playerid, COLOR_RED, UZ);
    return 1;
    }
    }
    return 1;
    }



    ! WICHTIG ! :
    -Da ich dein Register & Login System kenne, wird nicht gespeichert, in welcher Fraktion man ist ( auf Wunsch kann ich das natürlich nachtragen ), damit nicht jeder jeden "inviten" kann
    => Daher auch bei "OnPlayerConnect" : gTeam[playerid] = TEAM_ZIVI;
    -Bugs bitte berichten... werde es nach Möglichkeit ändern
    -Hab einen Teamchat ( /tc ) eingebaut
    -Ich gehe davon aus, dass du die dcmd & sscanf Cods im Script hast ( Wenn nicht: [ SCRIPTING ][/b] Commands mit Parametern '] [ SCRIPTING ] Commands mit Parametern )
    -Teams kann man beliebig erweitern bzw. ändern

    Viel Spaß ...


    //Edit: Credits etc. brauch ich nicht ;)

    Es kommt drauf an,welches GM du benutzt. Wäre nützlich und sinnvoll,wenn du das hier erläutern würdest. ( Eigenbau oder GF-Edit )
    Hotel: Ja, es ist möglich daraus ein Hotel zu machen ( quasi als "Business" ),bei dem ein User eine Wohnung/Raum mieten kann. Bräuchte dafür aber genauere Angaben...


    Casino: Dies ist leider nicht machbar, aber du kannst einen Eintritt für das Casino verlangen.