Beiträge von Jack_O_Neill

    Danke, funktioniert nun super!

    public Krankenhaus(playerid)
    {
    TogglePlayerControllable(playerid,1);
    GivePlayerMoney(playerid, -250);
    SetPlayerPos(playerid,1603.6343,1823.4365,10.8203);
    SetCameraBehindPlayer(playerid);
    DeletePVar(playerid,"Dead");
    ShowPlayerDialog(playerid, DIALOG_ENTLASSEN, DIALOG_STYLE_MSGBOX, "Hinweis", "Du wurdest aus dem Krankenhaus entlassen.\nKosten der Behandlung:\n250$", "Schließen", "");
    SavePlayer(playerid);
    }
    public OnPlayerDeath(playerid, killerid, reason)
    {
    SpielerInfo[playerid][pTode]++;
    if (IsPlayerConnected(killerid)){SpielerInfo[killerid][pKills]++;}
    if(SpielerInfo[playerid][pFraktion]== 0){SetSpawnInfo(playerid, 0, SpielerInfo[playerid][pSkin],1609.6234,1768.4473,10.8203, 0, 0, 0, 0, 0, 0, 0);}
    else if(SpielerInfo[playerid][pFraktion]!= 0){SetSpawnInfo(playerid, 0,SetFSkin(playerid),1609.6234,1768.4473,10.8203, 0, 0, 0, 0, 0, 0, 0);}
    SendClientMessage(playerid,0xFFFFFFFF,"===> Krankenhaus <===");
    SendClientMessage(playerid,0xFFFFFFFF,"Du bist nun im Krankenhaus, und liegst im Koma.");
    SendClientMessage(playerid,0xFFFFFFFF,"====================");
    SetTimerEx("Krankenhaus",60000,0,"i",playerid);
    SetPVarInt(playerid,"Dead",1);
    return 1;
    }
    public OnPlayerSpawn(playerid)
    {
    if(GetPVarInt(playerid,"Dead") == 1)
    {
    SetPlayerCameraPos(playerid, 1630.0885,1856.6375, 33.809105);
    SetPlayerCameraLookAt(playerid, 1606.6144,1818.4008,10.8203);
    TogglePlayerControllable(playerid,0);
    }
    return 1;
    }

    Hallo, ich wende mich mal wieder an euch da ich nicht weiter komme,
    ich habe mich an einem Spawn/Death System versucht und auch etwas Erfolg gehabt, wie gesagt ETWAS.
    Also zu meinem Problem:
    Wenn ich den befehl /kill eingebe wird mein Leben auf 0 gesetzt.
    if(strcmp(cmdtext,"/kill",true)==0)
    {
    SetPlayerHealth(playerid,0);
    return 1;
    }
    Laut Console sterbe ich dann 4 mal.
    [20:36:37] [death] HansFranz died 255
    [20:42:57] [death] HansFranz died 255
    [20:42:57] [death] HansFranz died 255
    [20:42:57] [death] HansFranz died 255
    Ich Spawne nun unter dem Krankenhaus, und falle durch die Welt, werde anschliessend auf die Straße neben dem Krankenhaus teleportiert.
    Normalerweise sollte der Spieler unter dem Krankenhaus Spawnen, und die Kamera dann das Krankenhaus von vorn zeigen.
    public OnPlayerDeath(playerid, killerid, reason)
    {
    SpielerInfo[playerid][pTode]++;
    if (IsPlayerConnected(killerid)){SpielerInfo[killerid][pKills]++;}
    if(SpielerInfo[playerid][pFraktion]== 0){SetSpawnInfo(playerid, 0, SpielerInfo[playerid][pSkin],1609.6234,1768.4473,10.8203, 0, 0, 0, 0, 0, 0, 0);}
    else if(SpielerInfo[playerid][pFraktion]!= 0){SetSpawnInfo(playerid, 0,SetFSkin(playerid),1609.6234,1768.4473,10.8203, 0, 0, 0, 0, 0, 0, 0);}
    SetPlayerCameraPos(playerid, 1630.0885,1856.6375, 33.809105);
    SetPlayerCameraLookAt(playerid, 1606.6144,1818.4008,10.8203);
    SendClientMessage(playerid,0xFFFFFFFF,"===> Krankenhaus <===");
    SendClientMessage(playerid,0xFFFFFFFF,"Du bist nun im Krankenhaus, und liegst im Koma.");
    SendClientMessage(playerid,0xFFFFFFFF,"====================");
    SetTimerEx("Krankenhaus",60000,0,"i",playerid);
    return 1;
    }
    Nachdem ich auf die Straße teleportiert wurde, läuft der Timer immernoch.
    Nach einer Minute sehe ich den Dialog der mir mitteilt wie viel Geld ich zahlen musste, und mir wurde auch das Geld entnommen.
    Ebenso ist mein Leben bei 100%
    public Krankenhaus(playerid)
    {
    GivePlayerMoney(playerid, -250);
    SetPlayerPos(playerid,1603.6343,1823.4365,10.8203);
    SetCameraBehindPlayer(playerid);
    ShowPlayerDialog(playerid, DIALOG_ENTLASSEN, DIALOG_STYLE_MSGBOX, "Hinweis", "Du wurdest aus dem Krankenhaus entlassen.\nKosten der Behandlung:\n250$", "Schließen", "");
    }

    stock FrakSkin(playerid,skin[])
    {
    new score = GetPlayerScore(playerid),skin; //634
    switch(score)
    {
    case 3,4,5,6: skin = pskin1;
    case 7,8,9,10: skin = pskin2;
    case 10<: skin = pskin3;
    return skin;
    }
    }


    Code
    C:\Users\Sven Meyer\Desktop\SAMP-Server\gamemodes\script.pwn(167) : error 017: undefined symbol "skin"
    pwn(634) : warning 219: local variable "skin" shadows a variable at a preceding level
    pwn(637) : error 017: undefined symbol "pskin1"
    pwn(638) : error 017: undefined symbol "pskin2"
    pwn(639) : error 029: invalid expression, assumed zero
    pwn(639) : error 017: undefined symbol "pskin3"
    pwn(640) : error 002: only a single statement (or expression) can follow each "case"
    pwn(640) : warning 215: expression has no effect
    pwn(632) : warning 203: symbol is never used: "skin"
    pwn(632 -- 642) : error 054: unmatched closing brace ("}")


    SetPlayerSkin(playerid,TeamInfo[SpielerInfo[playerid][pFraktion]][FrakSkin(skin)]); //167


    Code
    (167) : error 017: undefined symbol "skin"

    Mit dem Stock FrakSkin möchte ich das Spielerlevel abfragen, anhand dessen möchte ich das dass Script anhand von switch bei bestimmten Leveln die Variable "pskin1" , "pskin2" oder "pskin3"
    zurückgibt, mit der Variable pskin1, 2 oder 3 möchte ich dann unter onplayerspawn den Skin zuweisen indem ich die Variable bei
    SetPlayerSkin(playerid,FraktSkin[skin]);
    Eintrage......



    //Edit:
    Soweit habe ich nicht gedacht, ich habe mir einen Fehler geleistet...
    SetPlayerSkin(playerid,TeamInfo[SpielerInfo[playerid][pFraktion]][FraktSkin(skin)]);
    Denn das Spiel kennt pskin1 ja nicht als Skin id ^^


    http://wiki.sa-mp.com/wiki/Limits


    Keinen, allerdings sollte diese nicht den Wertebereich einer Integervariable übersteigen, wäre allerdings, soweit ich weiß, im Millionenbereich.


    Danke, ich würde dann so den Skin und das Gehalt in der Fraktion zuweisen.
    z.B. alles zwischen Rang 3 und 5 bekommt Skin1 und Gehalt1


    Mittlerweile habe ich das Problem mit den Skins fast gelöst:
    stock FrakSkin(playerid,skin[])
    {
    new score = GetPlayerScore(playerid),skin;
    switch(score)
    {
    case 3,4,5,6: skin = pskin1;
    case 7,8,9,10: skin = pskin2;
    case 10<: skin = pskin3;
    return skin;
    }
    }


    public OnPlayerSpawn(playerid)
    {
    if(SpielerInfo[playerid][pFraktion]== 0)
    {
    SetPlayerSkin(playerid,SpielerInfo[playerid][pSkin]);
    SetPlayerPos(playerid,SpielerInfo[playerid][pposx],SpielerInfo[playerid][pposy],SpielerInfo[playerid][pposz]);
    }
    else
    {
    if(GetPVarInt(playerid,"Gestorben") == 1)
    {
    SetPlayerSkin(playerid,FrakSkin[skin]);
    SetPlayerPos(playerid,TeamInfo[SpielerInfo[playerid][pFraktion]][px],TeamInfo[SpielerInfo[playerid][pFraktion]][py],TeamInfo[SpielerInfo[playerid][pFraktion]][pz]);
    DeletePVar(playerid,"Gestorben");
    }
    else
    {
    SetPlayerPos(playerid,SpielerInfo[playerid][pposx],SpielerInfo[playerid][pposy],SpielerInfo[playerid][pposz]);
    }
    }
    return 1;
    }

    Ja, wenn du im Spielerenum einen Wert angibst, der die ID der Fraktion übermittelt. Danach kannst du dann diese ID benutzen um den Enum der selben anzusprechen.



    Ich habe da ein Problem:

    Code
    error 017: undefined symbol "MAX_FACTIONS"


    Wie definiere ich MAX_FACTIONS ?

    Moin moin, ich brauche für meine Fraktionen einen kleinen Denkanstoss...
    Ich versuche jetzt z.B. den Spieler an seinem Fraktionsort Spawnen zu lassen welchen ich in MySQL speichern werde, da er im Spiel erstellbar sein sollte.
    Ich habe nun damit begonnen eine enumtabelle zu tippen, welche so aussieht:
    enum TeamDaten
    {
    pKasse, //Das Geld in der Fraktionskasse
    pSpawn, //Die Spawncoordinaten 000.0000,000.000,000.000
    pLeader, // Hier soll einzig und alleine der Leader der Fraktion eingetragen sein
    pMember, // Hier sollen alle Member durch ein "," getrennt gespeichert werden.
    pGeld1, //Geld Rang 1
    pGeld2, // Geld Rang 2
    pGeld3, // Geld Rang 3
    pGeld4 // Geld Leader wird durch Admin festgelegt.
    }
    new TeamInfo[MAX_PLAYERS][TeamDaten];


    Die Frage ist jetzt, wie ordne ich die Fraktion dem Spieler zu bzw. wie durchsuche ich alle Fraktionen nach dem Spielernamen?
    public OnPlayerSpawn(playerid)
    {
    SetPlayerSkin(playerid,SpielerInfo[playerid][pSkin]);
    SetPlayerPos(playerid,SpielerInfo[playerid][pposx],SpielerInfo[playerid][pposy],SpielerInfo[playerid][pposz]);
    return 1;
    }


    Gibt es eine effizientere Abfrage als eine solche?
    if(SpielerInfo[playerid][Mitglied] == 1 ||SpielerInfo[playerid][Leader] == 1)



    Und wie soll ich die Fraktion bei OnGameModeExit speichern, denn ich habe ja keinen Spielernamen dem ich die Daten zuordnen kann ^^

    Ich schreibe es gerade um, wie du gesagt hast.... ich probiere es einfach mal....
    Mal sehen obs dann klappt, denn wenn er die Tneger dann nicht speichert, dann muss es am jeweiligen stock liegen...
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new query[200];
    format(query, sizeof(query), "UPDATE `accounts` SET `Skin` = '%d',`Level` = '%d',`Sex` = '%d',`Geld` = '%d',`Kills` = '%d',`Tode` = '%d',`Health` = '%f' WHERE `Name` = '%s'",
    GetPlayerSkin(playerid),SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pSex],GetPlayerMoney(playerid),SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pHealth],GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME));
    mysql_query(query);
    }
    }
    return 1;
    }
    Er speichert immernoch nicht die Integer bzw. Skin und Geschlecht, das Geschlecht wird beim printen noch angezeigt, jedoch wird dort schon der Skin als 0 dargestellt....
    [21:07:18] Skin:0,Sex:0,Level:0,Geld:98,Kills:0,Tode:0 //Der normale Print
    [21:07:18] UPDATE `accounts` SET `Skin` = '0',`Level` = '0',`Sex` = '0',`Geld` = '98',`Kills` = '0',`Tode` = '0',`Health` = '0.000000' WHERE `Name` = '
    b' //Query Print
    Auch die ehemalig 100$ die ich durch kaufen von Drinks auf 98$ gesenkt habe stehen nicht in der Tabelle, es ist alles wie vorher.....

    modelid kommt von hier:
    public OnPlayerModelSelection(playerid, response, listid, modelid)
    {
    if(listid == skinlist1)
    {
    if(response)
    {
    SendClientMessage(playerid, 0xFF0000FF, "Skin ausgewählt.");
    SetPlayerSkin(playerid, modelid);
    SpielerInfo[playerid][pSkin] = modelid;
    }
    else{ SendClientMessage(playerid, 0xFF0000FF, "Skinauswahl abgebrochen\n du erhälst den Standartskin."); SpielerInfo[playerid][pSkin] = 0;}
    return 1;
    }
    if(listid == skinlist2)
    {
    if(response)
    {
    SendClientMessage(playerid, 0xFF0000FF, "Skin ausgewählt.");
    SetPlayerSkin(playerid, modelid);
    SpielerInfo[playerid][pSkin] = modelid;
    }
    else {SendClientMessage(playerid, 0xFF0000FF, "Skinauswahl abgebrochen\n du erhälst den Standartskin.");SpielerInfo[playerid][pSkin] = 9;}
    return 1;
    }
    return 1;
    }

    Guten Tag, ich versuche mich schon seit ner weile an einem Skin/Sex System, und bin schon ganz enttäuscht...
    Ich versuche mit MySQL das Geschlecht und den Skin zu speichern, welches jedoch nicht recht funktionieren will, denn der Wert inner Tabelle bleibt bei 0 und wechselt nicht zu 1 oder 2 geschweige denn zur modelid. Ich habe bei saveplayer mal alles printen lassen was relevant ist:
    [18:30:19] [join] Klaus_Schmidt has joined the server (0:127.0.0.1)
    [18:30:30] Skin:22,Sex:1,Level:0,Geld:0,Kills:0,Tode:0
    [18:30:30] [part] Klaus_Schmidt has left the server (0:1)
    So speichere ich die Daten:
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    mysql_SetInt("accounts", "Skin", SpielerInfo[playerid][pSkin], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Sex", SpielerInfo[playerid][pSex], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", GetPlayerMoney(playerid), "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    new str[200];
    format(str, 256, "Skin:%i,Sex:%i,Level:%i,Geld:%i,Kills:%i,Tode:%i",SpielerInfo[playerid][pSkin],SpielerInfo[playerid][pSex],SpielerInfo[playerid][pLevel],GetPlayerMoney(playerid),SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode]);
    print(str);
    }
    }
    return 1;
    }
    So erstelle ich den Table, fals er noch nicht vorhanden ist:
    mysql_query("CREATE TABLE `accounts` (`id` INT(11) NOT NULL AUTO_INCREMENT,`Name` VARCHAR(24) NOT NULL,`Passwort` VARCHAR(128) NOT NULL,`Level` INT(11) NOT NULL DEFAULT '1',`Geld` INT(11) NOT NULL DEFAULT '0',`Sex` INT(11) NOT NULL DEFAULT '0',`Skin` INT(11) NOT NULL DEFAULT '0',`Kills` INT(11) NOT NULL DEFAULT '0',`Tode` INT(11) NOT NULL DEFAULT '0',`Health` FLOAT NOT NULL DEFAULT '100',PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;");
    Und so übergebe ich die Daten vom Dialog an enum:
    SpielerInfo[playerid][pSkin] = modelid;

    Wenn ich das nun so abändere:
    query = "UPDATE users SET lastname='" + event.getPlayer().getDisplayName() + "',playtime=' playtime+" + event.getPlayer().getTicksLived() + "'WHERE uuid='" + event.getPlayer().getUniqueId() + "'";
    Dann will MySQL nicht:
    MySQL Error: Incorrect integer value: ' playtime+66' for column 'playtime' at row 1

    Guten Tag,
    da ich nicht so wirklich weis was ich jetzt machen muss/kann/soll
    schreibe ich in der Hoffnung das es hier jemand weis...
    Jedesmal wenn ein Spieler meinen Server verlässt wird seine Spielzeit gespeichert, ich möchte es aber gern so haben das die Besuche alle zusammen gezählt werden.
    //Edit Also die Zeiten der Besuche.
    Bin noch relativ neu im Javabereich, wäre auch für Tutorials und Links zu Beispielen dankbar....
    @EventHandler
    public void onPlayerQuit(PlayerQuitEvent event) {
    try {
    String query = "SELECT * FROM `users` WHERE `uuid`='" + event.getPlayer().getUniqueId() + "'";
    ResultSet result = plugin.sqlLink.query(query);
    if (result.absolute(1)) {
    query = "UPDATE users SET lastname='" + event.getPlayer().getDisplayName() + "',playtime='" + event.getPlayer().getTicksLived() + "'WHERE uuid='" + event.getPlayer().getUniqueId() + "'";
    plugin.sqlLink.update(query);
    }
    } catch (SQLException ex) {
    System.err.println("MySQL Error: " + ex.getMessage());
    }
    }

    Jop Zap-Hosting verarscht die Kunden von vorn bis hinten..... die Server laggen wie sau, und wenn man MC Server auf seinem VServer hatt wird da drüber Werbung für die gestrahlt....