Der Command-Prozessor heißt ZCMD.
http://forum.sa-mp.com/showthread.php?t=91354
Beiträge von malE
-
-
Ok alles klar, ich gebe dir trotzdem eine Version als Befehl.
Befehl:
Unter den IncludesC
Alles anzeigenCMD:nametag(playerid, params[]) { for(new i=0; i < MAX_PLAYERS; i++) { if(!IsPlayerConnected(i))continue; if(IsPlayerAdmin(i))continue; if(NametagStatus == true) { ShowPlayerNameTagForPlayer(i, i, 0); NametagStatus = false; SendClientMessageToAll(COLOR_RED, "Die Nametags wurden soeben ausgeblendet."); } else { ShowPlayerNameTagForPlayer(i, i, 1); NametagStatus = true; SendClientMessageToAll(COLOR_RED, "Die Nametags sind wieder eingeblendet."); } } }
--
C
Alles anzeigenCMD:ejoin(playerid,params[]) { new name[MAX_PLAYER_NAME], string[100]; 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."); if(!IsPlayerAdmin(playerid)) { for(new i=0; i < MAX_PLAYERS; i++) { if(!IsPlayerConnected(i) || IsPlayerAdmin(i))continue; ShowPlayerNameTagForPlayer(playerid, i, 0), SendClientMessageToAll(COLOR_RED, "Die Nametags wurden soeben ausgeblendet. ( Admin sind aber sichtbar )"); } } 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); 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; return 1; }
C
Alles anzeigenCMD:eleave(playerid,params[]) { new name[MAX_PLAYER_NAME], string[100]; GetPlayerName(playerid, name, sizeof(name)); if(inEvent[playerid] != true)return SendClientMessage(playerid, WHITE, "{FF1717}ERROR:{FFFFFF} You're not in an event. Use {FF1717}/ejoin{FFFFFF} to join one."); format(string, sizeof(string), "{FF1717}[EVENT]:{FFFFFF}{%06x} %s{FFFFFF} has left the Event - {FF1717}/eleave", GetPlayerColor(playerid) >>> 8,name); SendClientMessageToAll(0xC4C4C4FF, string); inEvent[playerid] = false; // Setzt den Spieler die zuvor gespeicherten Variablen zurück. SetPlayerPos(playerid, PlayerInfo[playerid][p_X], PlayerInfo[playerid][p_Y], PlayerInfo[playerid][p_Z]); SetPlayerFacingAngle(playerid, PlayerInfo[playerid][p_A]); SetPlayerInterior(playerid, PlayerInfo[playerid][p_Interior]); SetPlayerVirtualWorld(playerid, PlayerInfo[playerid][p_VirtualWorld]); SetPlayerHealth(playerid, PlayerInfo[playerid][p_Health]); SetPlayerArmour(playerid, PlayerInfo[playerid][p_Armour]); GivePlayerWeapon(playerid,PlayerInfo[playerid][weapons], PlayerInfo[playerid][ammo]); for(new i=0; i < MAX_PLAYERS; i++)if(!IsPlayerConnected(i) || IsPlayerAdmin(i))continue; ShowPlayerNameTagForPlayer(playerid, i, 1), SendClientMessageToAll(COLOR_RED, "Die Nametags werden wieder eingeblendet."); return 1; }
-
Sollen die Nametags per Befehl versteckt werden oder sollen sie direkt zum Serverstart verschwinden?
-
Wie lade ich eine Boolean Variable aus der MySQL Datenbank?
Mit cache_get_field_content_int(... bekomme ich immer tag mismatch. Wird es mit cache_get_field_content(... funktionieren? -
-
Es wird nur ein Fahrzeug gespeichert also der Infernus, der Sultan wird nicht gespeichert.
-
-
Eigentlich soll geprüft werden ob das Fahrzeug dem Spieler gehört.
Die Variablen werden mit der cache-id der Datenbank definiert.
-
Mein Fehler! Normalerweise muss es so aussehen.
if(VehicleInfo[i][v_Besitzer] != PlayerInfo[playerid][p_ID])continue;Weil in der Variable VehicleInfo[i][v_ID] wird die cache-id gespeichert.
-
-
Vielen dank Jeffry!
Dann wollen wir mal zurück zum eigentlichen
-
Ja würde es.
-
@[LnD]JustMe.77 meinst du ein Callback der vor einem Befehl Aufgerufen wird?
Beispiel: Du gibst ein Befehl ein, Callback wird aufgerufen ( evtl. Abfragen ausgeführt im Callback ), dann wird Befehl zu Ende ausgeführt.
Dieses Callback gibt es aber nur beim Command-Prozessor: ocmd, sobald ich weiß.
Habe ich aber auch nur durch Jeffry kennengelernt. -
Du musst die zuvor gespeicherten Spieler-Variablen den Spieler wiedergeben.
C
Alles anzeigenCMD:eleave(playerid,params[]) { new name[MAX_PLAYER_NAME], string[100]; GetPlayerName(playerid, name, sizeof(name)); if(inEvent[playerid] != true)return SendClientMessage(playerid, WHITE, "{FF1717}ERROR:{FFFFFF} You're not in an event. Use {FF1717}/ejoin{FFFFFF} to join one."); format(string, sizeof(string), "{FF1717}[EVENT]:{FFFFFF}{%06x} %s{FFFFFF} has left the Event - {FF1717}/eleave", GetPlayerColor(playerid) >>> 8,name); SendClientMessageToAll(0xC4C4C4FF, string); inEvent[playerid] = false; // Setzt den Spieler die zuvor gespeicherten Variablen zurück. SetPlayerPos(playerid, PlayerInfo[playerid][p_X], PlayerInfo[playerid][p_Y], PlayerInfo[playerid][p_Z]); SetPlayerFacingAngle(playerid, PlayerInfo[playerid][p_A]); SetPlayerInterior(playerid, PlayerInfo[playerid][p_Interior]); SetPlayerVirtualWorld(playerid, PlayerInfo[playerid][p_VirtualWorld]); SetPlayerHealth(playerid, PlayerInfo[playerid][p_Health]); SetPlayerArmour(playerid, PlayerInfo[playerid][p_Armour]); return 1; } CMD:erem(playerid,params[]) { for(new i = 0; i < MAX_PLAYERS; i++) { if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue; if(IsPlayerInRangeOfPoint(i, 5, 1869.0564,-2499.7913,5048.4761)) { //SetPlayerPos(i, 1857.0629,-2477.5789,5048.4761); SendClientMessage(i,WHITE,"{FF1717}Wrong answer!"); PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0); // Setzt den Spieler die zuvor gespeicherten Variablen zurück. SetPlayerPos(i, PlayerInfo[i][p_X], PlayerInfo[i][p_Y], PlayerInfo[i][p_Z]); SetPlayerFacingAngle(i, PlayerInfo[i][p_A]); SetPlayerInterior(i, PlayerInfo[i][p_Interior]); SetPlayerVirtualWorld(i, PlayerInfo[i][p_VirtualWorld]); SetPlayerHealth(i, PlayerInfo[i][p_Health]); SetPlayerArmour(i, PlayerInfo[i][p_Armour]); } } return 1; }
-
Müsste so funktionieren.
Unter den VariablenC
Alles anzeigenenum Enum_Player { Float:p_Health, Float:p_Armour, Float:p_X, Float:p_Y, Float:p_Z, Float:p_A, p_Interior, p_VirtualWorld } new PlayerInfo[MAX_PLAYERS][Enum_Player];
OnPlayerConnectC
Alles anzeigenpublic OnPlayerConnect(playerid) { PlayerInfo[playerid][p_Health] = 0.0; PlayerInfo[playerid][p_Armour] = 0.0; PlayerInfo[playerid][p_X] = 0.0; PlayerInfo[playerid][p_Y] = 0.0; PlayerInfo[playerid][p_Z] = 0.0; PlayerInfo[playerid][p_A] = 0.0; PlayerInfo[playerid][p_Interior] = 0; PlayerInfo[playerid][p_VirtualWorld] = 0; return 1; }
Dein Befehl
C
Alles anzeigenCMD:ejoin(playerid,params[]) { new name[MAX_PLAYER_NAME], string[100]; GetPlayerName(playerid, name, sizeof(name)); if(inEvent[playerid] != false)return SendClientMessage(playerid, COLOR_GREY, "Error: Du bist schon in einem Event."); // Übersetzen 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); 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); 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; return 1; }
Wenn das Event vorbei ist, musst du dann nur noch die Variablen auf den Spieler überschreiben.
Also mit SetPlayerPos(... und so weiter.// Edit
Habe etwas im Befehl geändert, musst du bei bedarf noch bei dir umändern. -
Meinst du mit zurücksetzen, alle Variablen auf 0 bzw leer.
Oder den Spielern den Werten der Variablen wiedergeben? -
Habe nun einige Callbacks Schritt für Schritt ausgeklammert, aber es hat sich leider nichts getan.
-
@Jeffry darf ich dir eine PN mit dem Script (1300 Zeilen) schicken, damit du es dir mal selbst anschauen kannst ? -
-
Ich habe keine Schleifen im public OnPlayerConnect.
Das einzigste was drin ist, sind Variablen Zurücksetzungen, die TextDraws meines Tachos und kleinere Dinge.Ansonsten habe ich einige Sachen vom Plugin TSConnector ausgeklammert, weil das Plugin den Serverstart auf einige Sekunden verlangsamt hat.
Da mein public. Aber ich denke nicht das es daran liegen könnte.
Ich habe ja auch schon bisschen nach dem Problem gegoogelt.C
Alles anzeigenpublic OnPlayerConnect(playerid) { SetPlayerColor(playerid, 0xFFFFFFFF); PlayerInfo[playerid][p_ID] = 0; PlayerInfo[playerid][p_LoggedIn] = false; PlayerInfo[playerid][p_TSOnline] = false; PlayerInfo[playerid][p_Level] = 0; PlayerInfo[playerid][p_Schritt] = 0; PlayerInfo[playerid][p_Bargeld] = 0; PlayerInfo[playerid][p_Kills] = 0; PlayerInfo[playerid][p_Deaths] = 0; PlayerInfo[playerid][p_Skin] = 0; PlayerInfo[playerid][p_Bankkonto] = 0; PlayerInfo[playerid][p_Admin] = 0; PlayerInfo[playerid][p_Name] = 0; Supmobil[playerid] = -1; GetPlayerName(playerid, PlayerInfo[playerid][p_Name], MAX_PLAYER_NAME); format(PlayerInfo[playerid][p_UID], 28, ""); new log[145]; format(log, sizeof(log), "%s ist nun mit "S_NAME" verbunden.", GetName(playerid)); Log("ConnectedPlayers", log); Tacho[playerid][0] = CreatePlayerTextDraw(playerid, 2.666665, 146.844390, "Name:"); PlayerTextDrawLetterSize(playerid, Tacho[playerid][0], 0.196999, 0.965332); PlayerTextDrawAlignment(playerid, Tacho[playerid][0], 1); PlayerTextDrawColor(playerid, Tacho[playerid][0], -1); PlayerTextDrawSetShadow(playerid, Tacho[playerid][0], 0); PlayerTextDrawSetOutline(playerid, Tacho[playerid][0], 1); PlayerTextDrawBackgroundColor(playerid, Tacho[playerid][0], 51); PlayerTextDrawFont(playerid, Tacho[playerid][0], 1); PlayerTextDrawSetProportional(playerid, Tacho[playerid][0], 1); PlayerTextDrawHide(playerid, Tacho[playerid][0]); Tacho[playerid][1] = CreatePlayerTextDraw(playerid, 89.333335, 165.766662, "usebox"); PlayerTextDrawLetterSize(playerid, Tacho[playerid][1], 0.000000, 1.619136); PlayerTextDrawTextSize(playerid, Tacho[playerid][1], -0.333333, 0.000000); PlayerTextDrawAlignment(playerid, Tacho[playerid][1], 1); PlayerTextDrawColor(playerid, Tacho[playerid][1], 0); PlayerTextDrawUseBox(playerid, Tacho[playerid][1], true); PlayerTextDrawBoxColor(playerid, Tacho[playerid][1], 102); PlayerTextDrawSetShadow(playerid, Tacho[playerid][1], 0); PlayerTextDrawSetOutline(playerid, Tacho[playerid][1], 0); PlayerTextDrawFont(playerid, Tacho[playerid][1], 0); PlayerTextDrawHide(playerid, Tacho[playerid][1]); Tacho[playerid][2] = CreatePlayerTextDraw(playerid, 8.666681, 167.585174, "Motor"); PlayerTextDrawLetterSize(playerid, Tacho[playerid][2], 0.162666, 1.031703); PlayerTextDrawAlignment(playerid, Tacho[playerid][2], 1); PlayerTextDrawColor(playerid, Tacho[playerid][2], -1); PlayerTextDrawSetShadow(playerid, Tacho[playerid][2], 0); PlayerTextDrawSetOutline(playerid, Tacho[playerid][2], 1); PlayerTextDrawBackgroundColor(playerid, Tacho[playerid][2], 51); PlayerTextDrawFont(playerid, Tacho[playerid][2], 1); PlayerTextDrawSetProportional(playerid, Tacho[playerid][2], 1); PlayerTextDrawHide(playerid, Tacho[playerid][2]); Tacho[playerid][3] = CreatePlayerTextDraw(playerid, 36.333320, 167.585174, "Licht"); PlayerTextDrawLetterSize(playerid, Tacho[playerid][3], 0.162665, 1.031170); PlayerTextDrawAlignment(playerid, Tacho[playerid][3], 1); PlayerTextDrawColor(playerid, Tacho[playerid][3], -1); PlayerTextDrawSetShadow(playerid, Tacho[playerid][3], 0); PlayerTextDrawSetOutline(playerid, Tacho[playerid][3], 1); PlayerTextDrawBackgroundColor(playerid, Tacho[playerid][3], 51); PlayerTextDrawFont(playerid, Tacho[playerid][3], 1); PlayerTextDrawSetProportional(playerid, Tacho[playerid][3], 1); PlayerTextDrawHide(playerid, Tacho[playerid][3]); Tacho[playerid][4] = CreatePlayerTextDraw(playerid, 59.666675, 167.585174, "Tueren"); PlayerTextDrawLetterSize(playerid, Tacho[playerid][4], 0.162665, 1.031170); PlayerTextDrawAlignment(playerid, Tacho[playerid][4], 1); PlayerTextDrawColor(playerid, Tacho[playerid][4], -1); PlayerTextDrawSetShadow(playerid, Tacho[playerid][4], 0); PlayerTextDrawSetOutline(playerid, Tacho[playerid][4], 1); PlayerTextDrawBackgroundColor(playerid, Tacho[playerid][4], 51); PlayerTextDrawFont(playerid, Tacho[playerid][4], 1); PlayerTextDrawSetProportional(playerid, Tacho[playerid][4], 1); PlayerTextDrawHide(playerid, Tacho[playerid][4]); return 1; }
-
-
Ändert sich leider nichts.
PC habe ich auch schon neugestartet und am Script habe ich so eig. nichts weiteres verändert.