Beiträge von AnonymusFanailus

    Ich sehe auf Anhieb viele Fehler.
    SendClientMessage(playerid,COLOR_WHITE,"%s, Herzlich Willkommen auf unserem Server!",name);
    Das muss mit einem Format gemacht werden, bevor du es per
    SendClientMessage(playerid,COLOR_WHITE,textVariable);
    an den User schickst.


    public OnRconCommand(cmd[])
    ^
    |
    da kommt kein Befehl hin, niemals^^



    Der Befehl muss unter
    public OnPlayerCommandText(playerid, cmdtext[])



    Hier fehlt wieder das Format und damit würdest du dich selbst kicken ;)
    if(strcmp(strget(cmdtext, 0), "/kick") == 0)
    {
    Kick(playerid);
    SendClientMessageToAll(COLOR_DARKRED,"Der Spieler %i wurde von %s gekickt!");

    Hmm, was wäre wenn ich zb. 4 coordinaten nun habe, punkt 1, punkt 2, punkt 3 und punkt 4, und möchte diese für die boundary verwenden - welche der Zahlen muss ich denn verwenden? :o
    SetPlayerWorldBounds(playerid, ???, ???, ???, ???);
    coords:
    AddPlayerClass(0,2948.3159,603.2296,-1.0508,264.5344,0,0,0,0,0,0); // 1
    AddStaticVehicle(595,2955.8154,2997.7161,0.2753,8.0405,112,20); // 2
    AddPlayerClass(0,-538.4899,2932.2285,53.9419,358.6035,0,0,0,0,0,0); // 3
    AddPlayerClass(0,-518.4542,589.4000,16.6361,277.6985,0,0,0,0,0,0); // 4
    Bitte auch erklären, danke. :)



    /edit:
    Herp, dann halt noch eine weitere Frage >:3


    Wenn ich zb. eine Auto ID in eine Variable speichern will, die dann wiederum in einer Datei gespeichert wird, kann ich diese dann benutzen um playerid dieses auto dann mit /buy kaufen und erscheinen lassen?
    Soll ja nicht das original sein, soll eine Art "Finde es und du kannst es für immer haben bis du was neues willst" werden.



    /edit²:
    Japp, sollte eigentlich funktionieren.
    Ich habe nur ein problem: Wie checkt man die ID des Wagens in der sich der Player befindet?! xD
    Habe in der Wiki gesucht und habe nichts gefunden ... hat jemand davon Ahnung? :o

    Godfather ist meiner Meinung nach gut zum übersetzen, dadurch wird einem das Programm und die Scripting-Sprache näher ans Herz gelegt, somit bekommt man mehr Überblick um das eigentliche Lernen zu beginnen: Learning by Doing, oder wie ich es gerne mache: Erst logisch nachdenken

    Zitat

    Wie würde das in Echt funktionieren? If auto == offen dann auto != fahren

    soll heißen, wenn das Auto offen ist, kann es nicht losfahren, dann denke ich in der Scripting-space, also:
    If(CarDoor == 0)
    {
    SendClientMessage(playerid, COLOR_GREEN,"You can drive now!");
    CarEngine(playerid) == 1;
    }else{
    SendClientMessage(playerid, COLOR_RED,"Woops! You forgot to close the doors!");
    CarEngine(playerid) == 0;
    }

    Falls das nicht ganz hinhaut schaue ich in der englischen Wiki nach, da leider nicht alles im deutschen wiki ist wie im englischen.
    ( Wiki benutze ich oft, wenn ich die Syntax nicht mehr weiß, oder ich vorher damit nicht gearbeitet habe. )



    Jetzt zu meiner Meinung:
    Ja, es gibt viel zu viele Reallife Projekte, Stunt-Server können nach ein paar Stunden langweilig werden, aber nur, wenn der scripter nichts
    dynamisches eingebaut hat und nicht weiter scriptet. Das ist doch der Punkt am scripten, dass man das Script immer erweitert!
    Einen eingebauten Streamer gibt es sogar schon, was gibt es dann also zu bemängeln? :huh:

    Kommt erstmal darauf an, über was du hochlädst, welches Programm du verwendest usw.
    Hast du alle FTP daten die du brauchst?
    Benutzt du überhaupt ein FTP Programm, oder hast du gar keins?
    Diese ganzen Fragen spielen einen hohen Faktor. *trollface.jpg*


    /edit:
    hab jetzt auch meins herrausgefunden:
    es waren 3 klammern zuviel bei BloodyEric's code. ^^
    Trotzdem danke Eric, wäre alleine nicht auf die Idee gekommen das Ganze auf diese Weiße zu speichern. :)

    Herp, wie gesagt, so einfach geht das scheinbar nicht :/


    public OnPlayerDisconnect(playerid, reason)
    {
    new iPlayer[MAX_PLAYER_NAME];
    new String[100];
    GetPlayerName(playerid, iPlayer, sizeof(iPlayer));
    format(String, sizeof(String), "[SERVER] %s left the Server!", iPlayer);
    SendClientMessageToAll(COLOR_RED, String);

    new pName[SLOTS],accFormat[128];
    GetPlayerName(playerid,pName,sizeof pName);
    format(accFormat,sizeof accFormat,"%s.p",pName);
    if(fexist(accFormat) && Player[playerid][logged_in])
    {
    dini_IntSet(accFormat,"rank",GetPlayerWantedLevel(playerid));
    dini_IntSet(accFormat,"score",GetPlayerScore(playerid));
    dini_IntSet(accFormat,"money",GetPlayerMoney(playerid));
    dini_IntSet(accFormat,"skin",GetPlayerSkin(playerid));
    dini_FloatSet(accFormat,"lastx",lastx)); // <---------------------- Zeile 97
    dini_FloatSet(accFormat,"lasty",lasty));
    dini_FloatSet(accFormat,"lastz",lastz));
    }else{
    Player[playerid][logged_in] = 0;
    Player[playerid][rank] = 0;
    Player[playerid][score] = 0;
    Player[playerid][money] = 0;
    Player[playerid][skin] = 0;
    Player[playerid][lastx] = (0.0);
    Player[playerid][lasty] = (0.0);
    Player[playerid][lastz] = (0.0);
    }
    return 1;
    }


    /edit:
    Natürlich noch enum;
    enum pData
    {
    rank,
    score,
    money,
    skin,
    Float:lastx,Float:lasty,Float:lastz,
    logged_in
    }

    Humm,
    'tschuldige wenn ich dich einmal unterbrechen darf, apoolecu, aber ich komm einfach nicht weiter.
    in BlackFoX' Tutorial , diesem hier, erwähnt erselbst, wie man Variablen wie Geld o.ä speichert.


    Ich wollte die Spieler positionen speichern und aufrufen, jedoch wurde mir etwas klar: Geht nicht so ich es mir vorgestellt hatte.
    Im Grunde müssen die coord's einzeln gespeichert werden, x, y und z.
    Mit GetPlayerPos würde das einfach gehen, wenn man nicht immer sowohl x wie auch y und z angeben müsste
    Im Grunde wäre es dann so;
    dini_FloatSet(accFormat,"lastx",GetPlayerPos(playerid, lastx));
    dini_FloatSet(accFormat,"lasty",GetPlayerPos(playerid, lasty));
    dini_FloatSet(accFormat,"lastz",GetPlayerPos(playerid, lastz));
    Geht ja leider nicht.
    Meine Frage nun; wie sonst? :o

    Huch, Maddin hat ja richtig Gas gegeben :D
    Argh, ich wusste das es "switch" auch in PAWN gibt!
    Aber mir viel das ganze erst ein, als ich fertig mit dem Ganzen war ... aber das mit dem ".." war mir neu, kewl. :3
    Vielen dank, funktioniert jetzt. :)



    /edit ( Um doppelpost zu vermeiden, w00t )
    Wie sieht es eigendlich nochmal mit boundary ... walls (?) aus?
    Wie hieß das nochmal, mensch ... eh, denn ich brauche eine, um die Spieler in einer Zone zu halten.
    Klar, positionen braucht man, mal angenommen ich hätte diese schon, was muss ich danach machen?

    Heya,
    habe mir vor ca. einer Stunde einen kleinen /ammo CMD erstellt, der die momentan ausgewählte Waffe mit so oder so viel Patronen füllen soll, wobei der Spieler aber 500$ abdrücken muss.
    Alles klappt, kein Error, jedoch ist es ingame nur Schrott - es zeigt mir bei JEDER Waffe den Text für die Melee-Waffen an. :/
    if (strcmp("/ammo", cmdtext, true, 10) == 0)
    {
    new pMoney, pWeapon;
    pMoney = GetPlayerMoney(playerid);
    pWeapon = GetPlayerWeapon(playerid);

    if(pMoney == 500 || pMoney > 500){
    if (GetPlayerWeapon(playerid) == 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10 || 11 || 12 || 13 || 14 || 15){
    SendClientMessage(playerid,COLOR_RED,"You can't buy ammo for a melee weapon!");
    }else if(GetPlayerWeapon(playerid) == 16 || 17 || 18){
    GivePlayerWeapon(playerid,pWeapon,5);
    SendClientMessage(playerid,COLOR_GREEN,"You successfully bought 5 peaces of your current weapon!");
    }else if(GetPlayerWeapon(playerid) == 22 || 23){
    GivePlayerWeapon(playerid,pWeapon,75);
    SendClientMessage(playerid,COLOR_GREEN,"You successfully bought 75 cartridges for your pistol!");
    }else if(GetPlayerWeapon(playerid) == 24){
    GivePlayerWeapon(playerid,pWeapon,20);
    SendClientMessage(playerid,COLOR_GREEN,"You successfully bought 20 cartridges for your deagle!");
    }else if(GetPlayerWeapon(playerid) == 25 || 26 || 27){
    GivePlayerWeapon(playerid,pWeapon,20);
    SendClientMessage(playerid,COLOR_GREEN,"You successfully bought 20 cartridges for your shotgun!");
    }else if(GetPlayerWeapon(playerid) == 28 || 29 || 32){
    GivePlayerWeapon(playerid,pWeapon,85);
    SendClientMessage(playerid,COLOR_GREEN,"You successfully bought 285 cartridges for your SMG!");
    }else if(GetPlayerWeapon(playerid) == 30 || 31){
    GivePlayerWeapon(playerid,pWeapon,65);
    SendClientMessage(playerid,COLOR_GREEN,"You successfully bought 65 cartridges for your AK-47 / M4!");
    }else{
    SendClientMessage(playerid,COLOR_RED,"The Administrator disabled /ammo for this weapon!");
    }
    }
    return 1;
    }


    Ich habe mal stark die Vermutung, dass das ganze nicht funktioniert, da pWeapon nicht richtig geupdated wird.(Ja, ich weiß, dass man die new's direkt zuweißen kann, jedoch habe ich etwas ausprobiert. )

    Oder ich müsste damit leben. Ich werd mal schauen was ich darauß mache, bin ja nicht gerade lange dabei zu scripten, hehe.
    Na gut, denke das wars erstmal. Bist du dir sicher, dass ich den anderen command in einem extra-Thread machen soll?
    Ich habe schon einige gesehen die deswegen eine Verwarnung bekamen ...
    ( zur Info: war zwar schon lange als zuschauer da, habe mich aber erst heute registriert. :D )

    ( Das Thema wäre ein weiterer Command, ein /ammo command mit dem man seiner momentan-ausgerrüstete Waffe Munition für bestimmtes Geld erwerben kann, aber ein simpler /ammo cmd ;) )
    Hier der Code vom /kill Command:
    if (strcmp("/kill", cmdtext, true, 10) == 0)
    {
    if(GetPlayerState(playerid)==PLAYER_STATE_WASTED)
    {
    SetPlayerHealth(playerid,0);
    SendClientMessage(playerid,COLOR_RED,"You committed suicide!");
    }else{
    SendClientMessage(playerid,COLOR_YELLOW,"You cannot suicide while you're dead!"); }
    return 1;
    }

    In der Zeit bin ich doch zur GetPlayerState gewechselt :D
    Selbe if-Abfrage, sieht bisjetzt so aus:
    new pState = GetPlayerState(playerid);
    if (pState == PLAYER_STATE_WASTED )


    Möchte aber noch abfragen, ob der Spieler überhaupt gespawnt ist, sodass man auch im Char-select-screen sich nicht töten kann.
    Habe schon auf der englischen Wiki nachgeschaut, finde nichts darüber. Denke wenn du mir damit nochmal kurz helfen kannst sollte es klappen, danke. :)

    Du wirst lachen, ich habe schon nach GetPlayerState gesucht, ( http://wiki.sa-mp.com/wiki/GetPlayerState ) wusste aber nicht, ob es damit auch geht ...
    Denke ich werde die Variabel-Version benutzen, Ich mag Variabeln. :3 Danke für den Tipp, werd's direkt mal ausprobieren :)


    /edit:
    Mmmmm...
    Wird aber nicht funktionieren, da die Variable ( "alive" in dem Fall ) bei JEDEM Spieler geändert wird. Kann man für jeden Spieler eine eigene "alive" Variable erstellen, ohne "alive1, alive2[...]" zu erstellen?

    Ahh, okay, also wie bei jeder Programmiersprache ist auch PAWN eine Rechtschreib-Whore ...
    Danke für die Hilfe, funktioniert jetzt endlich. :)


    /edit:
    Achja, ja, es stimmt dass ich nicht abfragen muss ob der Spieler schon tot ist, aber dann wäre es
    1. nur halb so viel spaßig,
    2. nicht so viel code. :P


    Außerdem mag ich es, wenn man eine Meldung bei einem CMD Fehler bekommt. :)


    /edit²:
    !!!
    Mir fiel gerade etwas auf - wenn ich /kill eingebe, nachdem ich /kill verwendet habe und ich dannach immernoch tot bin, dann kommt trotzdem noch der "You commited suicide!" Text.
    Ich habe sogar noch etwas zu der if abfrage hinzugefügt, hat aber nichts gebracht. Woran liegt das? Es ergibt keinen Sinn, warum der Text auch bei "Health ist gleich 0" noch aufpoppt.
    if (strcmp("/kill", cmdtext, true, 10) == 0)
    {
    new Float:health;
    GetPlayerHealth(playerid,health);

    if (health > 0 && health != 0)
    {
    SetPlayerHealth(playerid,0);
    SendClientMessage(playerid,COLOR_RED,"You committed suicide!");
    }
    else
    { SendClientMessage(playerid,COLOR_YELLOW,"You cannot suicide while you're dead!"); }
    return 1;
    }





    /edit³:
    Wow, soviele edits... eh, egal, also:
    Ich habe herrausgefunden woran es iegt, trotzdem noch nicht gelöst:
    Ich habe per Abfrage gefragt, wieviel HP der Spieler nach dem Tod hat, wärend er am Boden liegt.
    Überraschenderweiße 100, obwohl die HP anzeige auf 0 stehen zu scheint.


    Wie kann ich checken, ob der Spieler tot ist?
    Oder gibt es noch eine simplere Lösung auf die ich gerade nicht komme?


    Hier der Abfrage-Code, falls selbst DARAN etwas falsch sein sollte;
    [...]if (health > 0)
    {
    SetPlayerHealth(playerid,0);
    SendClientMessage(playerid,COLOR_RED,"You committed suicide!");
    // Hier der Abfrage Code
    new string[100];
    GetPlayerHealth(playerid,health);
    format(string, sizeof(string), "[SERVER] You have %f healthpoints after you died.", health);
    SendClientMessage(playerid,COLOR_YELLOW,string);
    }[...]