Beiträge von Jeffry
-
-
Du kannst es anstatt in einzelne Variablen in ein Array packen, und dann per Schleife entfernen.
-
Du musst jetzt dort danach mysql_pquery aufrufen, und dann wieder in ein weiteres Callback springen, in dem du den Cache ausließt.
Als Parameter gibst du dem mysql_pquery ein Integer (i) mit, und zwar den Index (wahrscheinlich auch i) für das Haus (kenne deinen Code nicht, daher kann ich dir das nicht genauer sagen). -
1)
Nein, nutze TextDrawSetString.2)
Mach das playerid in den Klammern weg. -
TextDrawHideForPlayer = Versteckt das Textdraw nur für den angegebenen Spieler und du kannst das Textdraw mit TextDrawShowForPlayer wieder anzeigen.
TextDrawDestroy = Löscht das Textdraw, sprich es wird für alle Spieler entfernt und du musst es mit TextDrawCreate erst wieder erstellen, falls du es wieder anzeigen willst. -
Am sinnvollsten machst du das mit einem JOIN im Query, mit dem du die Häuser aus der Datenbank lädst:
http://www.w3schools.com/sql/sql_join_left.aspDas wäre von der Performance her am sinnvollsten.
Alternativ, nachdem die db_id des Besitzers geladen ist ein zweites Query aufrufen, welches den Name aus der Tabelle liest, und dann gleich vorgehen, um den Cache auszulesen, in dem dann der Name steht.
-
Immer noch richtig oder doch die anderen Formate?
Passt so.
-
GetUserNameFromDB
Was hast du mit der Funktion vor?
-
Ich würde mal sagen mit dem "Classic- Export Mode" bist du richtig.
-
Hook_Hook_OnPlayerRequestClass war hoffentlich ein tippfehler
Oh ja, Copy-Paste.

außerdem was kann ich gegen diese beiden warnings machen?
Zu 1: Da wird OnPlayerRequestClass doppelt definiert. Kommt auf den Code drauf an, was man da machen muss, poste den gegebenenfalls mal.
Zu 2: Den hook von main nutzt du nie, da hast du wohl was falsch gemacht. Mache es besser mit OnGameModeInit, da main kein public ist. -
Ja, das kannst du splitten.
Entweder du machst 3 Eingaben hintereinander, oder du fügst in den Text den du eingibst einen Platzhalter ein (z.B. |), nach dem dann die Strings gesplittet werden.
Das kannst du dann mit sscanf zum Beispiel machen. -
Ich habe den Text auf 2-3 "Textdraws" verteilt da der Text zu groß ist,
Warum machst du keinen Zeilenumbruch?
-
das gamemode- OnPlayerRequestClass heißt ja eh schon hook_OnPlayerRequestClass
Ja, aber in deinem Gamemode-Code steht ja OnPlayerRequestClass, das wird durch das Hook_OnPlayerRequestClass in der Include aufgerufen.
Ich wollte nur deutlich machen, dass du in CallLocalFunction nicht einfach "OnPlayerRequestClass" schreiben kannst.außerdem heißt es ja CallLocalFunction, obwohl wir doch vom include her das gamemode-OnPlayerRequestClass aufrufen?
Da die Include in den Gamemode eingebettet ist, ist es ein lokaler Aufruf.
Ein CallRemoteFunction wäre es aus einer anderen .pwn Datei. -
in der abrage ob _ALS_OnPlayerRequestClass als "irgendetwas" also in deinem beispiel als "" definiert ist, "speichert" man also quasi improvisiert ab, ob schon das gamemode-OnPlayerRequestClass als hook_OnPlayerRequestClass defined wurde?
Ja, du speicherst eben, dass du das Callback bereits gehookt hast.
also was in der funktion steht kannst du mir da auch nochmal erklären was also passiert ist?
Das ruft die Funktion Hook_OnPlayerRequestClass auf, also das OnPlayerRequestClass aus dem Gamemode, was der Compiler ja zu Hook_OnPlayerRequestClass umbenannt hat. Da es hier aber zwischen " " steht, müssen wir das "Hook_" mit angeben, da der Compiler in Strings nichts ersetzt.
-
Bei beiden Color-Pickern stehen diese RGB Werte (0-255) dabei.
-
-
Nein, das bleibt dran.
-
-
Also so?
C
Alles anzeigenCMD:ejoin(playerid,params[]) { new name[MAX_PLAYER_NAME], string[100]; GetPlayerSkin(playerid); GetPlayerName(playerid, name, sizeof(name)); if(inEvent[playerid] != false)return SendClientMessage(playerid, WHITE, "{FF1717}ERROR:{FFFFFF} You're already in the event. Use {FF1717}/eleave{FFFFFF} to leave it."); ResetPlayerWeapons(playerid); SetPlayerHealth(playerid,99999); new Float:HP, Float:Pos[4], Float:Armour; GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]); GetPlayerFacingAngle(playerid, Pos[3]); GetPlayerHealth(playerid, HP); GetPlayerArmour(playerid, Armour); for (new i = 0; i <= 12; i++) GetPlayerWeaponData(playerid, i, PlayerInfo[playerid][weapons][i], PlayerInfo[playerid][ammo][i]); PlayerInfo[playerid][p_Health] = HP; PlayerInfo[playerid][p_Armour] = Armour; PlayerInfo[playerid][p_X] = Pos[0]; PlayerInfo[playerid][p_Y] = Pos[1]; PlayerInfo[playerid][p_Z] = Pos[2]; PlayerInfo[playerid][p_A] = Pos[3]; PlayerInfo[playerid][p_Interior] = GetPlayerInterior(playerid); PlayerInfo[playerid][p_VirtualWorld] = GetPlayerVirtualWorld(playerid); PlayerInfo[playerid][p_Playerskin] = GetPlayerSkin(playerid); if(zaehler >= sizeof(RandomSpawns)) zaehler = 0; SetPlayerPos(playerid, RandomSpawns[zaehler][0], RandomSpawns[zaehler][1], RandomSpawns[zaehler][2]); format(string, sizeof(string), "{FF1717}[EVENT]:{FFFFFF}{%06x} %s{FFFFFF} joined the Event - {FF1717}/ejoin", GetPlayerColor(playerid) >>> 8,name); SendClientMessageToAll(0xC4C4C4FF, string); zaehler++; inEvent[playerid] = true; if(!IsPlayerAdmin(playerid)) { for(new i=0; i < MAX_PLAYERS; i++) { ShowPlayerNameTagForPlayer(playerid,i,0); } } return 1; }So werden die Nametags von allen Spieler entfernt, für den Spieler der in das Event geht, außer er ist Admin, dann sieht er die Nametags weiterhin.
-
Was wird dir so im Server Log ausgegeben?
C
Alles anzeigenHausIDspawn[playerid] = cache_get_field_content_int(0,"spawnpunkt",dbhandle); printf("* %s Spawnt im Haus mit der ID (%d)",getPlayerName(playerid),HausIDspawn[playerid]); if(HausIDspawn[playerid]>0) { for(new i=0; i<sizeof(hInfo); i++) { printf("h_id: %d / Spawn: %d", hInfo[i][h_id], HausIDspawn[playerid]); if(hInfo[i][h_id]==HausIDspawn[playerid]) { if(!hInfo[i][h_id])continue; printf("Besitzer: %s / %s", hInfo[i][h_besitzer], getPlayerName(playerid)); if(!strlen(hInfo[i][h_besitzer]))continue; if(strcmp(hInfo[i][h_besitzer], getPlayerName(playerid), true))continue; printf("x: %f", hInfo[i][ih_x]); if(hInfo[i][ih_x] != 0.0) { printf("Spawne im Haus"); //Im Haus spawnen SetPlayerPos(playerid, hInfo[i][ih_x], hInfo[i][ih_y], hInfo[i][ih_SetPlayerInterior(playerid, hInfo[i][h_interior]); SetPlayerVirtualWorld(playerid, hInfo[i][h_id]); SetPlayerFacingAngle(playerid,182.9345); SetCameraBehindPlayer(playerid); } else { printf("Spawne vor dem Haus"); //Vorm Haus Spawnen SetPlayerPos(playerid, hInfo[i][h_x], hInfo[i][h_y], hInfo[i][h_z]); SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0); SetPlayerFacingAngle(playerid,182.9345); SetCameraBehindPlayer(playerid); } return 1; } } } else if(HausIDspawn[playerid]==0) { SetSpawnInfo(playerid,0,sInfo[playerid][skin],ZiviSpawn,270.9820,0,0,0,0,0,0); SpawnPlayer(playerid); }