Beiträge von Jeffry

    Brianski12:
    Das geht ganz einfach, man behilft sich eines Tricks, nämlich dem, dass \n nur einen Character darstellt.
    In deiner dini File sieht das ganze so aus:


    Zitat

    Text=Dieser Zeilenumbruch~wird nun beachtet.


    Im code:
    format(string,sizeof(string),"%s",dini_Get(pfad,"Text"));
    for(new i=0; i<strlen(string); i++) if(string[i] == '~') string[i] = '\n';
    ShowPlayerDialog(playerid,DIALOG_INFO,DIALOG_STYLE_MSGBOX,dini_Get(pfad,"Titel"),string,"Schließen","");


    Somit wäre ~ dein Zeilenumbruch.

    Jetzt ist mir das auch klar, das kann nicht tun. Ich mach es dir mal vor in der Hoffnung du verstehst es.

    #define MAX_ZONES 10
    enum Gangzone
    {
    Float:MinX,
    Float:MinY,
    Float:MaxX,
    Float:MaxY,
    Besitzer
    }
    new Zone[MAX_ZONES][Gangzone];


    stock GetBesitzerName(zID)
    {
    switch(Zone[zID][Besitzer])
    {
    case 0: return "Grove Street";
    case 1: return "Ballas Family";
    case 2: return "Los Vagos";
    case 3: return "Atzecas";
    }
    return "INVALID";
    }


    Zu verwenden:
    GetBesitzerName(ID der Zone);


    EDIT:
    IPrototypeI: Danke für die Verbesserung (Posts darunter). Ich hatte mein Hirn wohl wo anders. :wacko:

    Dann poste zum einen mal den Code wie du ihn jetzt verändert hast, da hast du bestimmt was falsch gemacht und zum anderen etwas mehr vom Code damit ersichtlich wird, was du überhaupt machen willst.

    case 0: {"Grove Street"}
    Das da macht den error, ebenso.die Zeilen darunter. Du musst den Wert entweder zurückgeben oder in einer variable speichern.


    case 0: return "Grove Street";
    oder
    case 0: Name = "Grove Street";
    Dabei nicht vergessen die variable zu deklarieren.

    Jeffry:
    if(GetPlayerVehicleID(playerid) == sultan[0] || sultan[1])
    das funktioniert auch :)


    Nein.


    Beweis:
    new a = 1, b = 2, c = 1;
    if(a == b || c) print("true");
    else print("false");

    a = 1, b = 2, c = 3;
    if(a == b || c) print("true");
    else print("false");

    Zitat

    [04/08/2013 19:31:15] true
    [04/08/2013 19:31:15] true


    Es gibt beides mal true aus, dabei ist beim 2. mal a weder gleich b noch gleich c.


    Warum ist das so?
    Der Code bedeutet: true wenn: a == b ODER c != 0


    Folge: Der Code wird bei jedem Vehicle aufgerufen, da sultan[1] wohl nicht 0 ist, sondern einen Wert hat. ;)

    Das hier:
    if(GetPlayerVehicleID(playerid) == sultan[0] || sultan[1])


    muss auch so sein:
    if(GetPlayerVehicleID(playerid) == sultan[0] || GetPlayerVehicleID(playerid) == sultan[1])


    Hatte ich übersehen.
    Ich hab noch einen kleinen Fehler bei meinem stock ausgebessert, sollte jetzt tun.

    stock Sirene(playerid)
    {
    static siren[MAX_VEHICLES], sirene[MAX_PLAYERS],vehicleid = GetPlayerVehicleID(playerid); //Das da muss static sein, da du es ja speichern willst.
    if(sirene[playerid] == 0)
    {
    siren[vehicleid] = CreateObject(18646,0.0,0.0,0.0,0.0,0.0,0.0);
    AttachObjectToVehicle(siren[vehicleid],vehicleid,0.0,0.100,0.750,0.0,0.1,0.0);
    siren[vehicleid] = 1;
    sirene[playerid] = 1; //Vergessen
    return 1;
    }
    if(sirene[playerid] == 1)
    {
    DestroyObject(siren[vehicleid]);
    siren[vehicleid] = 0;
    sirene[playerid] = 0; //Vergessen
    return 1;
    }
    return 1;
    }


    So sollte es tun.

    Jetzt muss ich auch mal mein Lob los werden, sowie eine Empfehlung an alle die aussprechen, die noch am Überlegen sind. Das dieses Lob nicht in drei Zeilen zu schaffen ist versteht sich von selbst.


    Ich bin seit Januar 2010 bei GTA-Servers.de Kunde und bin sehr zufrieden. Schon zu Anfang war der Support, wie auch heute noch, einfach Klasse. Die Preise sind seit über 3 Jahren stabil und unverändert, die Leistung hingegen wurde und wird ständig verbessert. Ich habe einen Server mit 150 Slots, einen Server mit 20 Slots, sowie eine .de Domain und auch mit 150 Spielern auf dem Server läuft alles lagg-frei.


    Der Controlpanel ist sehr übersichtich und benutzerfreundlich aufgebaut, mit zwei drei Klicks findet man so ziemlich alles recht schnell. Man kann den Server ohne Probleme im Controlpanel beliebig verlängern. Sehr gut finde ich auch die kürzliche Neuerung PaySafeCards zu akzeptieren, für mich macht das zwar zur Zeit keinen Unterschied, da ich mit PayPal zahle, allerdings wird es bestimmt viele (minderjährige) zukünftige Kunden anlocken, da diese Art der Bezahlung sicher und schnell geht. Ansonsten kann man auch noch mit anderen Methoden wie z.B. Überweisung zahlen, da ist eigentlich für jeden was dabei.
    Das Controlpanel ist vollständig in Deutsch, Englisch und Spanisch vorhanden.


    Downtime der Server gibt es so gut wie nie. Die Server sind wirklich zu 99.9% online. Bei vorhandenen Problem kümmert man sich sehr schnell und professionell um das oder die Probleme. Ich finde es sehr wichtig und gut, dass man nicht nur eine Nummer ist, sondern wirklich ein Kunde und als solcher gesehen wird.


    Der Controlpanel zur Webseite ist ebenfalls sehr übersichtlich und freundlich zu handhaben und lässt keine Wünsche offen. Sollte doch mal ein Wunsch offen bleiben, dann wird auch der, zumindest bei mir bis jetzt, immer schnell erfüllt. Die Webseite läuft sehr zuverlässig und ist extrem schnell. 100GB Webtraffic und 3GB Webspace reichen für den normalen Gebrauch vollkommen aus.


    Zugriff zu allen Serverfiles hat man entweder üder den Controlpanel oder über ein FTP Programm, wie zum Beispiel FileZilla, was sehr zu empfehlen ist. Hierbei und am Gameserver hat man unbegrenzten Traffic.


    Zusammenfassend kann und muss ich sagen, dass GTA-Servers.de bei mir die erste Wahl ist und hoffentlich (auf jeden Fall!) auch bleibt. Man geht kein Risiko ein, die Preise sind Top, die Leistung noch besser und der Support sowie alles drum herum ist einfach nur perfekt. Wer sich das entgehen lässt, ist selber schuld. Am Besten heute noch einen Server bestellen und sofort loslegen!


    Daher gibt es von mir ein dickes fettes Dankeschön! Weiter so! :thumbup:

    public OnRconLoginAttempt(ip[], password[], success)
    {
    new playerid = GetIDFromIP(ip);
    new string[128];
    if(success!=0) return SendClientMessage(playerid,COLOR_RED, "SERVER: Eingeloggt"); //Wenn Der Spieler das richtige Passwort eingibt, dann bekommt er die Nachricht "SERVER: Eingeloggt"
    //Wenn nicht, dann führt er den Code hier unten aus:
    format(string, sizeof(string), "Ein Spieler mit der IP %s wollte sich mit dem Passwort: %s in die RCON Konsole einloggen",ip, password);
    SendAdminMessage(COLOR_RED, string); //nachricht an alle admins senden
    SendClientMessage(playerid,COLOR_RED, "ERROR: Falsches Passwort"); //nachricht am spieler senden, dass er das passwort falsch eingegeben hat
    return 1;
    }


    stock GetIDFromIP(ip[])
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    new tmp[16];
    GetPlayerIP(i, tmp, sizeof(tmp))
    if(!strcmp(ip, tmp)) return i;
    }
    }
    return INVALID_PLAYER_ID;
    }


    Das funktioniert allerdings nur, wenn nur einer pro IP im Server ist, sonst bekommt eben der die Nachricht, der die kleinere ID hat.
    Die stock Funktion gibt die playerid anhand der IP zurück.

    Nein, zumindest nicht mit einen PAWN Script.
    Du kannst F10 drücken, aber das macht bei deinem Vorhaben wenig Sinn.


    Möglicherweise kannst du ein Textdraw als Box drüber machen, das wäre eine Variante, wenn es geht.

    So... Und jetz schaust du dir mal im wiki an, was strfind zurückgibt.


    Er würde nicht fragen wenn er dies verstanden hätte! :thumbdown:


    case DIALOG_ACP_TSIP:
    {
    if(strfind(inputtext, ".", false) == -1)return ERROR(playerid, "Die TeamspeakIp muss Punkte und einen Doppelpunkt enthalten, Beispiel: 123.123.123:9987 (1)");
    if(strfind(inputtext, ":", false) == -1)return ERROR(playerid, "Die TeamspeakIp muss Punkte und einen Doppelpunkt enthalten, Beispiel: 123.123.123:9987 (2)");
    if(strlen(inputtext) < 6)return ERROR(playerid, "Die TeamspeakIP muss mindestens 6 Zeichen haben");
    dini_Set(CONFIGPFAD, "TeamspeakIP", inputtext);
    SendClientMessage(playerid, ROT, "Du hast die TeamspeakIP geändert");
    }
    ^ So. :)

    Hast du meinen Code überhaupt ausprobiert?


    Hatte mich falsch ausgedrückt, du gibst dem Taxi MAX_TAXI Labels, also einem Taxi alle Labels. Deutsche Sprache, schwere Sprache. :huh:
    for(new a; a<MAX_TAXIS; a++)

    enum e_Autoschein {
    Float:A_fX,
    Float:A_fY,
    Float:A_fZ,
    Float:A_fRad
    }


    new Autoschein_Checkpoints[60][e_Autoschein] = {
    {1224.0995,-1723.6080,13.3783, 5.0},
    {1264.3315,-1714.7965,13.2015, 5.0},
    {1292.1256,-1717.4576,13.2005, 5.0},
    {1295.2122,-1784.0356,13.2015, 5.0},
    {1299.9169,-1828.9512,13.2016, 5.0},
    {1316.1694,-1854.9110,13.2021, 5.0},
    {1360.2355,-1870.5231,13.2016, 5.0},
    {1391.7363,-1855.9540,13.1995, 5.0},
    {1391.7952,-1794.1774,13.2016, 5.0},
    {1391.4045,-1747.7776,13.2015, 5.0},
    {1423.9390,-1734.8301,13.2011, 5.0},
    {1462.6326,-1734.4598,13.2015, 5.0},
    {1521.1196,-1734.8503,13.2015, 5.0},
    {1589.0848,-1735.0978,13.2015, 5.0},
    {1707.0221,-1735.1870,13.1954, 5.0},
    {1812.1865,-1735.0768,13.2028, 5.0},
    {1824.2877,-1685.9050,13.2016, 5.0},
    {1824.4231,-1594.4014,13.1760, 5.0},
    {1845.8900,-1555.5001,13.1516, 5.0},
    {1909.0603,-1523.7371,3.0426, 5.0},
    {1997.3373,-1518.3497,3.2143, 5.0},
    {2203.5037,-1575.5431,1.9908, 5.0},
    {2371.3428,-1622.7546,8.2355, 5.0},
    {2486.3733,-1621.2240,16.2725, 5.0},
    {2557.4814,-1621.4124,18.1392, 5.0},
    {2687.8723,-1626.8490,14.6095, 5.0},
    {2720.2480,-1641.4592,12.7771, 5.0},
    {2667.6147,-1655.0603,10.5130, 5.0},
    {2640.1433,-1689.4843,10.5524, 5.0},
    {2617.8232,-1728.4006,11.4645, 5.0},
    {2509.0862,-1730.2357,13.2015, 5.0},
    {2402.7004,-1729.6598,13.2105, 5.0},
    {2353.7307,-1729.3462,13.2016, 5.0},
    {2220.2180,-1710.1880,13.2332, 5.0},
    {2204.5925,-1623.6284,15.9171, 5.0},
    {2213.8584,-1408.1057,23.6453, 5.0},
    {2099.8787,-1382.2291,23.6472, 5.0},
    {2073.4839,-1188.3220,23.4746, 5.0},
    {1933.9102,-1134.8809,24.9815, 5.0},
    {1863.9489,-1164.7848,23.4883, 5.0},
    {1670.1603,-1158.9175,23.4748, 5.0},
    {1370.7549,-1138.8022,23.4705, 5.0},
    {1310.3424,-1141.2019,23.4751, 5.0},
    {1236.0497,-1141.7054,23.3771, 5.0},
    {1177.9259,-1141.5649,23.4976, 5.0},
    {1107.7113,-1141.5142,23.4751, 5.0},
    {989.8795,-1141.2837,23.7042, 5.0},
    {939.5322,-1169.3381,21.4041, 5.0},
    {938.9604,-1312.6456,13.2023, 5.0},
    {978.3796,-1328.5612,13.1928, 5.0},
    {1049.0702,-1333.1193,13.2039, 5.0},
    {1056.1733,-1369.2217,13.2015, 5.0},
    {1060.2046,-1426.4500,13.1872, 5.0},
    {1040.4641,-1521.3274,13.1934, 5.0},
    {1035.0269,-1637.9032,13.2014, 5.0},
    {1035.2085,-1693.0558,13.2017, 5.0},
    {1096.7278,-1714.9509,13.2015, 5.0},
    {1167.4116,-1714.2544,13.5244, 5.0},
    {1200.3242,-1715.5459,13.2016, 5.0},
    {1210.1814,-1718.1713,13.3336, 5.0}
    };


    public OnFilterScriptInit()
    {
    printf("%f", Autoschein_Checkpoints[0][A_fX]);
    return 1;
    }


    Kompiliert bei mir, genau so.

    Naja, das macht ja auch irgendwie keinen Sinn. Du gibts jedem Taxi ein Label...


    new Taxis[MAX_TAXIS] = {-1,...};
    for(new a; a<MAX_TAXIS; a++)
    {
    if(Taxis[a] != -1) continue;
    Taxis[a] = GetPlayerVehicleID(playerid);
    GetPlayerPos(playerid,x,y,z);
    format(string,sizeof(string),"Fahrer: %s\nStatus: %s",SpielerName(playerid),status);
    Taxiveh3Dtext[a] = Create3DTextLabel(string,Gelb,x,y,z,25.0,GetPlayerVirtualWorld(playerid),1);
    Attach3DTextLabelToVehicle(Taxiveh3Dtext[a],Taxis[a],0.0,0.0,0.0);
    SetPVarInt(playerid,"Taxiid",a);
    printf("Taxiid: %d",a);
    break;
    }


    if(Spieler[playerid][ImJob] == 0)return SendClientMessage(playerid,Orange,"Du bist nicht am Arbeiten!");
    if(!IsPlayerInRangeOfPoint(playerid,20.0,2059.8940,-1913.2603,13.3262))return SendClientMessage(playerid,Orange,"Du bist nicht an der Taxi Gmbh!");
    if(!IstTaxi(GetPlayerVehicleID(playerid)))return SendClientMessage(playerid,Orange,"Du sitzt in keinem Taxi!");
    RemovePlayerFromVehicle(playerid);
    new a = GetPVarInt(playerid,"Taxiid");
    Delete3DTextLabel(Taxiveh3Dtext[a]);
    Taxis[a] = -1;
    SendClientMessage(playerid,Gelb,"Du hast die Fahrt beendet.");
    Spieler[playerid][ImJob] = 0;
    Spieler[playerid][TStatus] = 0;