Beiträge von Pille

    new pid, geld;
    if(sscanf(params,"ud", pid, geld)) return SendClientMessage(playerid, gelb,"Verwendung : /contract [Playerid] [Preis]");
    if(sSpieler[playerid][Level] == 1) return SendClientMessage(playerid,rot,"Level 1er dürfen keine Contract abschliesen!");
    if(pid == INVALID_PLAYER_ID) return SendClientMessage(playerid,rot,"Ungültiger Spieler");
    GivePlayerMoney(playerid,-geld);
    SendClientMessage(playerid,grün,"Dein Auftrag wurde an die Hitman geschickt");
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(sSpieler[i][Fraktion] != HITMAN) continue;
    new string[128];
    SendClientMessage(i,hellblau,"====================================");
    SendClientMessage(i,hellblau,"Ihr habt einen neuen Auftrag!");
    format(string,sizeof(string),"Auftraggeber: %s",spielername(playerid));
    SendClientMessage(i,hellblau,string);
    format(string,sizeof(string),"Zielperson: %s",spielername(pid));
    SendClientMessage(i,hellblau,string);
    format(string,sizeof(string),"Preis: %d",geld);
    SendClientMessage(i,hellblau,string);
    SendClientMessage(i,hellblau,"====================================");
    }
    for(new i=1; i<MAX_CONTRACTS; i++)
    {
    new Auftrag[56];
    format(Auftrag,sizeof(Auftrag),"/MyGame/Hitman/%d.txt",i);
    if(dini_Exists(Auftrag)) continue;
    dini_Create(Auftrag);
    dini_Set(Auftrag,"Auftraggeber",spielername(playerid));
    dini_Set(Auftrag,"Zielperson",spielername(pid));
    dini_IntSet(Auftrag,"Preis",geld);
    break;
    }


    Ich hab dir das optimiert.
    Im allgemein war das 'return 1;' in der MAX_PLAYERS-Schleife das Problem.
    Sobald ein Hitman online ist, bekommt er eine Nachricht und da hört das ganze auf.


    Nun bekommt jeder Hitman die Nachricht und die Datei wird erstellt.


    //edit: Außerdem war in der MAX_PLAYERS_SCHLEIFE ein Denkfehler:
    if(sSpieler[playerid][Fraktion] != HITMAN)
    FALSCH!!


    Richtig:
    if(sSpieler[i][Fraktion] != HITMAN)

    #define TANKSTELLEN 20


    new Float:TankStellen[TANKSTELLEN][3];


    if(strcmp(cmdtext,"/fill",true)==0)
    {
    for(new i=0;i<TANKSTELLEN;i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,5.0,TankStellen[i][0],TankStellen[i][1],TankStellen[i][2])) continue;
    Tanken(playerid);
    break;
    }
    }


    Hoffe du kommst damit zurecht :)

    Erstell lieber eine globale Variable, die zu anfang (OnGameModeInit)
    alle Koordinanten herausliest aus der Tabelle und sie einspeichert.


    Dann kannst du das mittels einer forschleife ziemlich leicht überprüfen.

    format(printkonsole,sizeof(printkonsole),"%s hat /vehicle eingegeben",pname);
    printf(printkonsole);


    Ändern zu:


    printf("%s hat /vehicle eingegeben",pname);



    new vehicle = GetVehicleModelIDFromName(tmp);


    ändern zu:


    new vehicle=strval(tmp);




    Muss denn
    new PV1[MAX_PLAYERS] = 0,PV2[MAX_PLAYERS] = 0,PV3[MAX_PLAYERS] = 0,PV4[MAX_PLAYERS] = 0,PlayerVehicle[MAX_PLAYERS],PlayerVehicle2[MAX_PLAYERS],PlayerVehicle3[MAX_PLAYERS],PlayerVehicle4[MAX_PLAYERS];


    Nicht global definiert sein?

    Eine einfache Forschleife:


    for(new i=0;i<10;i++) SendClientMessage(playerid,rot,"");


    Oder du erstellst eine Funktion:

    stock ClearChatlines(playerid,lines);
    {
    for(new i=0;i<lines;i++) SendClientMessage(playerid,rot,"");
    return 1;
    }


    Verwende ClearChatlines(playerid,10);

    Der Ablauf ist eigentlich ganz einfach:


    • Bei OnPlayerDeath werden die Waffen des gestorbenen Spielers in einer Variable gespeichert.
    • Ein Pickup wird erstellt mit der Objektid einer Waffe die er dabei hatte.
    • Wenn ein Spieler in dieses Pickup geht (OnPlayerPickupPickup) werden ihm die Waffen gegeben.
    • Dann verschwindet das Pickup für alle Spieler.

    Dafür brauchst du die oben genannten Funktionen.
    Lies dir die Wikipediaeinträge sorgfältig und genau durch, probier ein bisschen rum,
    und im Handumdrehen funktioniert es :)

    Wahrscheinlich hast du die Variable 'string' schon global definiert.
    Deswegen meldet das Programm einen Error, da dia Variable schon erstellt wurde,
    wenn du sie lokal neu erstellst,

    Guten Abend,


    Ich möchte euch 2 hervorragende Bands vorstellen.
    Das sind Ensiferum und Wintersun.


    Ensiferum wurde 1995 gegründet, unter anderem mit dem Sänger Jari Mäenpää.
    Dieser verließ allerdings 2004 die Band und machte seine eigene auf: Wintersun


    Hier zwei Schlachthymnen von Ensiferum:
    http://www.myvideo.de/watch/4813457/Ensiferum_Victory_Song // leider auf myvideo... GEMA :cursing:


    http://www.youtube.com/watch?v=6xCBnJacfWE



    Und hier zwei geniale Songs von Wintersun:
    http://www.youtube.com/watch?v=HSiaJjqaFZE


    http://www.youtube.com/watch?v=lc4WFzl-6Xs




    Wie ich diese Bands vergöttere :love::love:

    Fehler gefunden.
    Ich hatte ein '\n' in die Tabelle übertragen, dann hat das Auslesen gestreikt.


    Das Thema zeigt wieder einmal, dass hier in diesem Forum nur bei kleineren Problemen geholfen wird.
    Sobald ein längerer Code gezeigt wird, kommt keine Antwort mehr....


    Schade.


    //Close.

    Sie ist in dem Include "morphinc.inc" enthalten.


    Hier die Include:

    Spoiler anzeigen
    new pdistance = 1;

    Spoiler anzeigen
    forward NameTimer();

    Spoiler anzeigen
    Float:GetPointDistanceToPointExMorph(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2)
    {
    new Float:x, Float:y, Float:z;
    x = x1-x2;
    y = y1-y2;
    z = z1-z2;
    return floatsqroot(x*x+y*y+z*z);
    }
    stock SetPDistance(dista)
    {
    pdistance = dista;
    }
    stock GetPDistance()
    {
    return pdistance;
    }
    stock EnableDistancedNameTag(delay)
    {
    SetTimer("NameTimer",delay,1);
    }

    Spoiler anzeigen
    forward NameTimer();
    public NameTimer()
    {
    for(new i = 0;i < MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    for(new q = 0;q < MAX_PLAYERS;q++)
    {
    if(IsPlayerConnected(q))
    {
    new Float:p1x;
    new Float:p1y;
    new Float:p1z;
    new Float:p2x;
    new Float:p2y;
    new Float:p2z;
    if(IsPlayerConnected(i) && IsPlayerConnected(q))
    {
    GetPlayerPos(i,p1x,p1y,p1z);
    GetPlayerPos(q,p2x,p2y,p2z);
    if(GetPointDistanceToPointExMorph(p1x,p1y,p1z,p2x,p2y,p2z) < pdistance)
    {
    ShowPlayerNameTagForPlayer(i,q,1);
    }
    else
    {
    ShowPlayerNameTagForPlayer(i,q,0);
    }
    }
    }
    }
    }
    }

    new dateipfad[35],string[256];
    format(dateipfad,sizeof(dateipfad),"%s.ini",Spieler[playerid][Name]);
    if(fexist(dateipfad))
    {
    new dateipfad2[50];
    format(dateipfad2,sizeof(dateipfad2),"Backups/%s.ini",Spieler[playerid][Name]);
    SendClientMessage(playerid,0xE3654DFF,"Dein Account wird nach MySQL umgeschrieben, bitte warten...");
    format(string,sizeof(string),"INSERT INTO Accounts (Name) VALUES ('%s')",Spieler[playerid][MySQL_Name]);
    mysql_query(string);
    new File:datei=fopen(dateipfad,io_read);
    new File:datei2=fopen(dateipfad2,io_write);
    for(new i=0;i<108;i++)
    {
    new wert[100],param[50];
    fread(datei,string);
    fwrite(datei2,string);
    strmid(param,string,0,strfind(string,"=",true));
    strmid(wert,string,strfind(string,"=",true)+1,strlen(string));
    switch(i)
    {
    case 0,3,92,106: format(string,sizeof(string),"UPDATE Accounts SET %s = '%s' WHERE Name = '%s'",param,wert,Spieler[playerid][MySQL_Name]); //String-Variablentyp
    case 50,51,59,60,61: format(string,sizeof(string),"UPDATE Accounts SET %s = '%f' WHERE Name = '%s'",param,floatstr(wert),Spieler[playerid][MySQL_Name]); //Flaot-Variablentyp
    default: format(string,sizeof(string),"UPDATE Accounts SET %s = '%i' WHERE Name = '%s'",param,strval(wert),Spieler[playerid][MySQL_Name]); //Integer-Variablentyp
    }
    mysql_query(string);
    }
    fclose(datei);
    fclose(datei2);
    fremove(dateipfad);
    SendClientMessage(playerid,0xE3654DFF,"Dein Account wurde erflogreich umgeschrieben!");
    }


    Erklärung zu:
    switch(i)
    {
    case 0,3,92,106: format(string,sizeof(string),"UPDATE Accounts SET %s = '%s' WHERE Name = '%s'",param,wert,Spieler[playerid][MySQL_Name]); //String-Variablentyp
    case 50,51,59,60,61: format(string,sizeof(string),"UPDATE Accounts SET %s = '%f' WHERE Name = '%s'",param,floatstr(wert),Spieler[playerid][MySQL_Name]); //Flaot-Variablentyp
    default: format(string,sizeof(string),"UPDATE Accounts SET %s = '%i' WHERE Name = '%s'",param,strval(wert),Spieler[playerid][MySQL_Name]); //Integer-Variablentyp
    }


    Die .ini hat 108 Zeilen, jede Zeile wird einzeln umformatiert.

    Nehmen wir an ich habe 2 .inis in die MySQL-Tabelle konvertiert, beide sind gebannt.
    Bei beiden steht auch etwas in dem Banngrund.


    Wenn ich jetzt aus den zwei Dateien den Banngrund herauslesen möchte, würde es nicht funktionieren, warum auch immer.


    Wenn ich jetzt aber die Tabelle bearbeite und statt dem Banngrund einen anderen hineinschreibe,
    funktioniert das Auslesen problemlos..

    "San Andreas Polizei" - das überschreitet die 16 Zeichen, die du zur Verfügung hast.
    Deswegen musst du mehr Zeichen erstellen, 29 dürften reichen.