Beiträge von Domme7600


    if (strcmp("/pizza", cmdtext, true, 6) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, Float:range, Float:x, Float:y, Float:z) // Hier kommen die Koordinaten von dem Stacked Well Pizza hin.
    {
    SetPlayerHealth(playerid, 100);
    SendClientMessage(playerid, 0x00E1FFFF, "Verkäufer: Bitte sehr, frisch aus dem Ofen!");
    SendClientMessage(playerid, 0x00E1FFFF, "Das macht $30.");
    GivePlayerMoney(playerid, -30);
    }
    else
    {
    if(GetPlayerMoney(playerid) >= 30)
    {
    SendClientMessage(playerid, 0x00E1FFFF, "Verkäufer: Tut mir leid, Sie haben nicht genügend Geld!");
    SendClientMessage(playerid, 0x00E1FFFF, "Verkäufer: Eine Ofenfrische Pizza kostet $30.");
    }
    }
    }


    Ungetestet, aber müsste klappen.


    Mit freundlichen Grüßen
    Dominik

    COMMAND:spawnveh(playerid,params[])
    {
    new carid,color1,color2;
    new Float:CarX;
    new Float:CarY;
    new Float:CarZ;
    if(IsPlayerAdmin(playerid))
    {
    if(sscanf(params,"iii",carid,color1,color2)) return SendClientMessage(playerid,0x6E6E6EFF,"[aDM Veh] Benutzung: /veh [ID des Autos] [Farbe 1] [Farbe 2]");
    {
    if(IsPlayerConnected(playerid))
    {
    GetPlayerPos(playerid,CarX,CarY,CarZ);
    CreateVehicle(carid,CarX,CarY+4,CarZ+4, 82.2873, color1,color2, 0);
    }
    }
    }
    else return SendClientMessage(playerid,0xFFFFFFFF,"SERVER: Unknown Command");
    return 1;
    }


    Du brauchst halt nur die zcmd und sscanf plugins.


    EDIT//: Habe net gesehen, dass du nur strcmp möchtest, sorry :(

    Hallo,


    ich bin dabei das ganze Adminsystem auf OnPlayerClickPlayer zu verschieben. Freeze und Unfreeze funktionen, nur bei Kick gibt es Probleme. Ich möchte, dass wenn man auf den Spieler klickt, einen Grund eingeben muss, bevor er gekickt wird (und der Grund soll halt in einen string eingebunden werden). Nur es will einfach nicht.


    if (dialogid == GUI_KICK)
    {
    if (response)
    {
    if(listitem == 0)
    {
    new string[125], name[24], name2[24];
    GetPlayerName(ClickedPlayerID, name, sizeof(name));
    GetPlayerName(playerid, name2, sizeof(name2));
    format(string, sizeof(string), "[aDM UnFreeze] Administrator %s hat %s vom Server gekickt.", name2, name);
    SendClientMessageToAll(0xFF6E00CD, string);
    Kick(ClickedPlayerID);
    }
    if(listitem == 1)
    {
    new string[125], name[24], name2[24];
    ShowPlayerDialog(playerid,GUI_CKICK,DIALOG_STYLE_INPUT,string,"Tippe einen Grund für den Kick ein:","OK","Abbrechen");
    GetPlayerName(ClickedPlayerID, name, sizeof(name));
    GetPlayerName(playerid, name2, sizeof(name2));
    format(string, sizeof(string), "[aDM UnFreeze] Administrator %s hat %s vom Server gekickt.", name2, name);
    SendClientMessageToAll(0xFF6E00CD, string);
    }
    }
    }


    Das 1. ist die Möglichkeit jemanden ohne Grund zu kicken, und bei der 2. muss man einen Grund angeben. Wäre nett wenn mit jemand helfen würde.


    Mit freundlichen Grüßen
    Dominik


    P.S.: Ohne Grund zu kicken klappt auch, ich scheitere halt nur an diesem Grund X(

    Hallo liebe Community,



    ich weiß, dass es unzählige von diesen Befehlen gibt aber leider nur mit strget. Zur Zeit arbeite ich an einem Selfmade TDM Script und benutze zcmd. Es wäre nett, wenn mir jemand ein kleines Tutorial schreiben könnte, denn ich habe keinen blassen schimmer wie es gehen soll.



    Mit freundlichen Grüßen


    Dominik

    C:\Users\Dominik\Desktop\...\gamemodes\aDMBeta.pwn(331) : warning 217: loose indentation
    C:\Users\Dominik\Desktop\...\gamemodes\aDMBeta.pwn(331) : error 029: invalid expression, assumed zero
    C:\Users\Dominik\Desktop\...\gamemodes\aDMBeta.pwn(331) : error 017: undefined symbol "cmd_slay"
    C:\Users\Dominik\Desktop\...\gamemodes\aDMBeta.pwn(331) : error 029: invalid expression, assumed zero
    C:\Users\Dominik\Desktop\...\gamemodes\aDMBeta.pwn(331) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.

    Guten Abend liebe Community,



    ich habe ein kleines Problem mit einem Befehl mitdem man Autos reparieren kann. Der Befehl heißt /repveh, und er soll nur von Admins ausgeführt werden können. User die diesen Befehl eingeben sollen die Meldung "SERVER: Unknown Command" bekommen.



    COMMAND:vehrep(playerid, params [])
    {
    #pragma unused params
    new vID = GetPlayerVehicleID(playerid);
    if(IsPlayerAdmin(playerid))
    {
    if(!IsPlayerInAnyVehicle)
    {
    RepairVehicle(playerid);
    SetVehicleHealth(vID, 1000);
    SendClientMessage(playerid, 0x6E6E6EFF, "** Du hast dein Fahrzeug erfolgreich repariert.");
    }
    else
    {
    SendClientMessage(playerid, 0x6E6E6EFF, "** Du musst in einem Fahrzeug sitzen.");
    }
    }
    else return SendClientMessage(playerid, 0xFFFFFFFF,"SERVER: Unknown Command");
    return 1;
    }



    Wäre nett wenn mir jemand helfen könnte.



    Mit freundlichen Grüßen


    Dominik

    Hallo liebe Community,


    ich habe ein Problem, und zwar mit dem Homeserver. Wenn ich einen Doppelklick auf ' samp-server ' mache startet der Server aber es erscheint folgende Meldung:



    #include <sscanf2>


    steht im Script, sscanf befindet sich im Plugin Ordner und in der server.cfg stimmt soweit auch alles.


    Wäre nett wenn mir jemand helfen könnte.


    Mit freundlichen Grüßen
    Dominik

    if(pickupid==cluckinbellLSenter)
    {
    SetPlayerPos(playerid,365.8784,-8.7374,1001.8516);
    SetPlayerFacingAngle(playerid,355.4061);
    SetCameraBehindPlayer(playerid);
    SetPlayerInterior(playerid,9);
    SetPlayerVirtualWorld(playerid, 2);// Hier wird der Spieler in VWorld 2 gebracht, also muss der Kegel auch in VWorld 2 sein.
    }


    cluckinbellLSexit=CreatePickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld);


    Hier gibt es mehr zu SetPlayerVirtualWorld

    So weiter mit Teil 2.

    Der Exit-Befel funktioniert genauso wie der enter Befehl, zerlegen muss ich es glaube ich nicht mehr weil es genau wie oben ist, hier ein Beispiel.


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp,"/exit", cmdtext, true, 4) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,Float:range,Float:x Float:y Float:z)) //Hier wieder die Position vom Ausgang und die Reichweite
    {
    SetPlayerPos(playerid, Float:x Float:y Float:z); // hier kommen jetzt die koordinaten hin, wo der spieler hinkommt wenn er /exit eingibt
    SetPlayerFacingAngle(playerid,Float:angle); // Wieder die Blickrichtung
    SetPlayerInterior(playerid,interiorid; // Hier müsst ihr 0 eingeben, da Interior 0 die "normale Welt" ist
    }
    else
    {
    SendClientMessage(playerid, 0x00D7FFFF,"** Du befindest dich an keinem Ausgang!");
    }
    return 1;
    }
    return 0;
    }


    Probiert es, es ist total simpel. Auch wenn es altmodisch seinen mag aber ich finde es immernoch am besten. Falls ihr fragen habt, bitte hier posten!


    Mit freundlichen Grüßen
    Dominik

    Hallo liebe Community,


    Vorwort:
    heute möchte ich euch mein erstes Tutorial vorstellen. Es ist für die neuen User gedacht, da das betreten von Räumen eigentlich für jede Art von Gamemode wichtig ist. Es ist nicht besonders schwer aber könnte für den ein oder anderen Hilfreich sein und da ich bis jetzt noch nicht so viele Tutorials darüber gesehen habe, werde ich nun eins machen.


    Was wird benötigt?
    Wir benötigen das Programm Pawn, dass kann man auf der sa-mp.com Homepage runterladen, oder auch ganz schnell hier. Dann eventuell einen Colorpicker um ein paar Farben zu ermitteln. Den gibt es zum Beispiel hier. Zudem sollte ein bisschen Grunderfahrung vorhanden sein.


    Einleitung:
    Es ist eigentlich ganz simpel. Jemand der es noch nicht so gut kann, wird wahrscheinlich denken, dass er sowas niemals lernen könnte. Aber wenn man sich den Code mal genauer anguckt und ins deutsche übersetzt, ist die hälfte der Arbeit so gut wie erledigt. Ich werde jetzt mal einen Beispielbefehl schreiben und Ihn dann Stück für Stück zerlegen und erklären.


    Tutorial:


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp,"/enter", cmdtext, true, 5) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 1.2,1199.2666,-918.3735,43.1214))
    {
    SetPlayerPos(playerid,365.8046,-73.9349,1001.5078);
    SetPlayerFacingAngle(playerid,269.9556);
    SetPlayerInterior(playerid,10);
    GameTextForPlayer(playerid,"Willkommen im Burger Shot North.", 5000, 5);
    }
    else
    {
    SendClientMessage(playerid, 0x00D7FFFF,"** Du befindest dich an keinem {}Eingang{}!");
    }
    return 1;
    }
    return 0;
    }


    Das ist zum Beispiel ein /enter-Befehl für das BSN. Sieht vieleicht schwierig aus, ist es aber nicht.


    if(IsPlayerInRangeOfPoint(playerid, 1.2,1199.2666,-918.3735,43.1214))


    So sieht es leer aus:


    if(IsPlayerInRangeOfPoint(playerid, Float:range, Float:x, Float:y, Float:z)


    Wörtlich übersetz heißt es "IstSpielerInReichtweiterVomPunkt", d.h. hier wird bestimmt, wie nah der Spieler an diesem Punkt seinen muss, damit er in dem Fall /enter eingeben kann. Natürlich kann man diesen Punkt nicht sehen, aber dafür gibt es Pickups (mehr dazu später). Float:range bedeutet, dass hier der Radius bestimmt wird, indem unser Befehl eingegeben werden kann. Float:x, Float:y, Float:z , da kommen unsere Koorinaten rein. Ausführliche Informationen gibt's hier.


    Natürlich kann kein Mensch sich jede Koordinate von ganz San Andreas merken, aber dafür gibt es den SA-MP DeBug. Den findet Ihr in eurem GTA San Andreas Ordner. Einfach doppelklick draufmachen und "Launch Debug" auswählen. Dann geht Ihr zu einer bestimmen stelle und gibt "/save [Name]" ein. Bei dem Namen einfach ein Stichwort, damit Ihr später auch noch wisst, was es für eine Koordinate war. Die Koordinaten findet Ihr in den GTA San Andreas User Files, dann auf SAMP und danach auf savedpositions.txt . Das sieht dann so aus:


    AddPlayerClass(0,2522.0071,-1678.7562,15.4970,88.2046,0,0,0,0,0,0); // Spawn


    Wir benötigen aber nur die ersten 3 Koordinaten. Die 4. ist der Blickwinkel, auch FacingAngle genannt (ebensfalls mehr dazu später).


    SetPlayerPos(playerid,Float:x,Float:y,Float:z);


    Das ist die Position, wo der Spieler hinkommt wenn er /enter eingegeben hat. Die könnte ihr genauso wie oben beschrieben einfach mit dem SA-MP DeBug bestimmen.


    SetPlayerFacingAngle(playerid,Float:ang);


    So, das ist der Blickwinkel, übersetz bedeutet es sowas wie "bestimme den Blickwinkel des Spielers". Er bestimmt (wie der Name schon sagt) die Blickrichtung der Figur. Mehr dazu hier.


    SetPlayerInterior(playerid,interiorid);


    hier wird der Innenraum bestimmt, in den der Spieler kommen soll. Die Liste aller Innenräume gibt es hier.


    GameTextForPlayer(playerid,"Willkommen im Burger Shot North.", 5000, 5);


    Das ist ein einfacher Text der dem Spieler angezeigt wird, wenn er teleportiert wurden ist.


    else
    {
    SendClientMessage(playerid, 0x00D7FFFF,"** Du befindest dich an keinem Eingang!");
    }


    Das bedeutet, wenn der Spieler nicht in der nähe des bestimmten Punktes ist, bekommt er eine Meldung, dass er sich an keinem Eingang befindet.


    Wie ihr sehen könnt, eigentlich total simpel. Theoretisch könnte man es auch in einem Text beschreiben. Wenn der Spieler /enter eingibt, dann wird geprüft ob er sich im Radius befindet, wenn ja dann wird er zum geschünschten Punkt Teleportier, guckt in die Gewählte Richtung und ist ihm gewählten Innenraum. Wenn er sich nicht im Radius befindet, dann bekommt er eine Meldung, dass er sich an keinem Eingang befindet.


    Ich hoffe euch hat mein Tutorial gefallen und auch ein Stück weitergebracht. Über Kritik würde ich mich sehr freuen.


    Mit freundlichen Grüßen
    Dominik


    Teil 2 wird gleich folgen....

    Hallo liebe Community,


    ich habe ein paar Probleme, und zwar habe ich einen Befehl (/enter) mit Dcmd erstellt, danach getestet und alles hat geklappt. Aber jetzt habe ich mehrere Interiors hinzugefügt und jetzt bekomme ich Errors. Hier mein Code.


    public OnPlayerCommandText(playerid, cmdtext[])
    {


    dcmd(enter, 5, cmdtext);
    dcmd(exit, 4, cmdtext);
    return 0;
    }


    dcmd_enter(playerid, params [])
    {
    #pragma unused params
    if(IsPlayerInRangeOfPoint(playerid, 1.2,2424.2473,-1742.7511,13.5460))//-----24/7 an der GrooveStreet
    {
    SetPlayerPos(playerid,-27.2520,-55.6264,1003.5469);
    SetPlayerFacingAngle(playerid,0);
    SetPlayerInterior(playerid,6);
    GameTextForPlayer(playerid, "Willkommen im 24/7 Supermarkt!", 5000, 5);
    }
    else
    {
    SendClientMessage(playerid, 0x00D7FFFF,"** Du befindest dich an keinem Eingang!");
    }
    else if(IsPlayerInRangeOfPoint(playerid, 1.2,1368.4913,-1279.7889,13.5469))//-----Großes AmmuNation-----
    {
    SetPlayerPos(playerid,286.1481,-38.7994,1001.5156);
    SetPlayerFacingAngle(playerid,0.3387);
    SetPlayerInterior(playerid,1);
    GameTextForPlayer(playerid,"Willkommen bei AmmuNation.", 5000, 5);
    }
    else
    {
    SendClientMessage(playerid, 0x00D7FFFF,"** Du befindest dich an keinem Eingang!");
    }
    else if(IsPlayerInRangeOfPoint(playerid, 1.2,1368.4913,-1279.7889,13.5469))//-----Ten Green Bottels Bar-----
    {
    SetPlayerPos(playerid,501.9810,-69.1502,998.7578);
    SetPlayerFacingAngle(playerid,180.0000);
    SetPlayerInterior(playerid,11);
    GameTextForPlayer(playerid,"Willkommen in der Ten Green Bottles Bar.", 5000, 5);
    }
    else
    {
    SendClientMessage(playerid, 0x00D7FFFF,"** Du befindest dich an keinem Eingang!");
    }
    else if(IsPlayerInRangeOfPoint(playerid, 1.2,1199.2666,-918.3735,43.1214))//-----Burger Shot North (BSN)-----
    {
    SetPlayerPos(playerid,365.8046,-73.9349,1001.5078);
    SetPlayerFacingAngle(playerid,269.9556);
    SetPlayerInterior(playerid,11);
    GameTextForPlayer(playerid,"Willkommen im Burger Shot North.", 5000, 5);
    }
    else
    {
    SendClientMessage(playerid, 0x00D7FFFF,"** Du befindest dich an keinem Eingang!");
    }
    return 1;
    }



    dcmd_exit(playerid, params [])
    {
    #pragma unused params
    if (IsPlayerInRangeOfPoint(playerid, 1.2,-27.3434,-58.2487,1003.5469))
    {
    SetPlayerPos(playerid,2422.8091,-1741.5935,13.5469);
    SetPlayerFacingAngle( playerid, 48.2855);
    SetPlayerInterior(playerid,0);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, 0x00D7FFFF,"** Du befindest dich an keinem Ausgang!");
    }
    else if(IsPlayerInRangeOfPoint(playerid, 1.2,1368.4913,-1279.7889,13.5469))//-----Großes AmmuNation-----
    {
    SetPlayerPos(playerid,286.1481,-38.7994,1001.5156);
    SetPlayerFacingAngle(playerid,0.3387);
    SetPlayerInterior(playerid,1);
    GameTextForPlayer(playerid,"Willkommen bei AmmuNation.", 5000, 5);
    }
    else
    {
    SendClientMessage(playerid, 0x00D7FFFF,"** Du befindest dich an keinem Ausgang!");
    }
    else if(IsPlayerInRangeOfPoint(playerid, 1.2,1368.4913,-1279.7889,13.5469))//-----Ten Green Bottels Bar-----
    {
    SetPlayerPos(playerid,501.9810,-69.1502,998.7578);
    SetPlayerFacingAngle(playerid,180.0000);
    SetPlayerInterior(playerid,11);
    GameTextForPlayer(playerid,"Willkommen in der Ten Green Bottles Bar.", 5000, 5);
    }
    else
    {
    SendClientMessage(playerid, 0x00D7FFFF,"** Du befindest dich an keinem Ausgang!");
    }
    else if(IsPlayerInRangeOfPoint(playerid, 1.2,1199.2666,-918.3735,43.1214))//-----Burger Shot North (BSN)-----
    {
    SetPlayerPos(playerid,365.8046,-73.9349,1001.5078);
    SetPlayerFacingAngle(playerid,269.9556);
    SetPlayerInterior(playerid,11);
    GameTextForPlayer(playerid,"Willkommen im Burger Shot North.", 5000, 5);
    }
    else
    {
    SendClientMessage(playerid, 0x00D7FFFF,"** Du befindest dich an keinem Ausgang!");
    }
    return 1;
    }


    Wäre nett wenn Ihr mir helfen könntet.

    Bitte klärt mich auf falls es zu früh ist zu pushen und wenn ja tut es mir leid, aber es ist sehr wichtig. Ich bin nochmal die SUFU durchgegangen, habe im wiki geguckt google benutzt und bin nicht draus schlau geworden. Habe auch mal versucht die Listitems zu ändern, dann wechseln zwar die waffen nicht mehr aber man kann sie auch nicht kaufen :S .

    Klappt irgendwie nicht, bekommse diese Errors:


    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\aDMTest01.pwn(126) : error 017: undefined symbol "cmd"
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\aDMTest01.pwn(12 : error 017: undefined symbol "PlayerToPoint"
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\aDMTest01.pwn(137) : error 017: undefined symbol "rot"
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\aDMTest01.pwn(142) : warning 217: loose indentation
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\aDMTest01.pwn(142) : error 017: undefined symbol "cmd"
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\aDMTest01.pwn(144) : error 017: undefined symbol "PlayerToPoint"
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\aDMTest01.pwn(150) : warning 217: loose indentation
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\aDMTest01.pwn(153) : warning 217: loose indentation
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    5 Errors.