Wahrscheinlich existiert der Ordner Logs nicht ![]()
mfg. ![]()
Wahrscheinlich existiert der Ordner Logs nicht ![]()
mfg. ![]()
Pickups erscheinen nur unter "Ongamemodeinit" sorry wenn das nicht zum Thema gehört. Keine Lust alles zu lesen
Schwachsinn!
Schau mal die Parameter an und setz da wo VirtualWorld oder Interior steht -1, damit es in allen Welten angezeigt wird ![]()
mfg. ![]()
Das Print gib auch nix aus und in der db sind nur die coords
Schau mal auf meinen Command *Facepalm*...
kopiere den mal 1zu1... ![]()
Wenn ich das so mache steht da nix drin also es passiert schon was aber das %s steht im Label nicht drin
![]()
...daas ist komisch, das müsste eigentlich funktionieren :o
Gib dir das mal mit nem print aus oder schau mal in die Datenbank, wird es da angezeigt? ![]()
Eingebe passiert nix weil ich die parameter überschreite aber wie mach ich das ich auch ein Leerzeichen drin haben darf?
Das kannst du so machen:
ocmd:cfb(playerid,params[])
{
if(!IstAdmin(playerid,2)) return ErrorA;
new Float:pos[3],str[256];
if(sInfo[playerid][pLogged]==false) return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
if(!params[0]) return SendClientMessage(playerid,GRAU,"Benutze: /cfb FraktionsName");
format(str,sizeof(str),"{FFFFFF}Eingang '{FF0000}%s{FFFFFF}'\nBenutze ENTER",params);
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
Create3DTextLabel(str,0xFFFFFFFF,pos[0],pos[1],pos[2],5.0,0,0);
CreatePickup(1559,23,pos[0],pos[1],pos[2],-1);
mysql_SetString("FrakSet","Label",str,"Label",str);
return 1;
}
mfg. ![]()
Schreib es so:
ocmd:cfb(playerid,params[])
{
if(!IstAdmin(playerid,2)) return ErrorA;
new Float:pos[3],labelname[128],str[320];
if(sInfo[playerid][pLogged]==false) return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
if(sscanf(params,"s",labelname)) return SendClientMessage(playerid,GRAU,"Benutze: /cfb FraktionsName");
format(str,sizeof(str),"{FFFFFF}Eingang '{FF0000}%s{FFFFFF}'\nBenutze ENTER",labelname);
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
Create3DTextLabel(str,0xFFFFFFFF,pos[0],pos[1],pos[2],5.0,0,0);
CreatePickup(1559,23,pos[0],pos[1],pos[2],-1);
mysql_SetString("FrakSet","Label",str,"Label",str);
return 1;
}
mfg. ![]()
Bitte Poste mal deinen ganzen Befehl + die Deklaration der Variable..man blickt sonst nicht durch was du da vor hast ![]()
mfg. ![]()
Als ich ein selbst gemapptes Remake des SFPD Interiors, den ich dort als LSPD Interior verwendet habe, entfernt habe, kam dieses Problem nicht mehr vor. Der genaue Grund blieb mir jedoch ein Rätsel.
Wahrscheinlich hast du einen Streamer verwendet und da lag das Problem
Wenn du die Objekte mit CreateObject erstellst, bleiben diese permanent da, dann würde das funktionieren.
Aber bei einem Streamer sobald keiner in der Nähe dieser Objekte ist, verschwinden diese ja...->Die Autos aber nicht somit fallen diese, kommst du nun wieder in die Nähe dieser Objekte, stapeln sich wegen dem Respawn die Autos auf einem Punkt ![]()
mfg. ![]()
Würde das auch gehen einfach genau unter dem Boden einen zweiten Boden zu mappen?
Theoretisch ja, aber das ist etwas unschön... ![]()
Also, das liegt daran, dass warum auch immer die Objekte da langsam streamen (wenn man diesen Standard Interior verlässt), sprich sobald du aus dem Haus kommst, ist dieser Boden da noch nicht gestreamt, aber die Fahrzeuge, somit fallen diese da kein Boden vorhanden ist nach unten, ab einer gewissen tiefe, respawnen die Fahrzeuge wieder oben auf dem gestreamten Objekt -> leider alle aufeinander...
So um diesen Bug zu beheben muss man nichts weiter tun, als abzufragen, ob der Spieler gerade aus diesem Interior kommt, wenn ja ruft man einen Timer auf der nach ~500ms einfach alle Groove Street Cars neu spawnen lässt bis auf die wo jemand drinnen sitzt ![]()
mfg. ![]()
ZitatMetin2 ist mit mehreren Sprachen geschrieben, welche zusammen ein Programm ergeben.
Metin2 wurde ursprünglich für Windows2000/XP entwickelt. Bisher sind keine Mac oder Linux Versionen erschienen.
Die .exe-Datei welche das Programm an sich ist, wurde in C++ verfasst. Die Version ist noch unbekannt, aber es liegt auch noch kein offizieller Source der .exe vor und wird wahrscheinlich auch nicht publiziert werden.
Die anderen Dateien die wir im 1. Unterpunkt entpackt haben und sich im Root-Archiv befanden sind in Python 2.2 geschrieben.
Selbst die Fenster die man bei Metin2 sieht (Inventarfenster usw.) haben eine eigene Sprache. Beziehungsweise wurden sie so programmiert, dass sie zwar keine eigenständigen Programme hervorbingen können, aber vom Client interpretiert und angezeigt werden.
Serverseitig wurde Metin2 für die Plattform FreeBSD entwickelt welche auf UNIX basiert.
Quelle: http://www.elitepvpers.com/for…grammierung-teil-1-a.html
mfg. ![]()
Etwas einfacher gehalten.
Allerdings sind das nur X und Y Achse...die Z Achse fehlt ![]()
mfg. ![]()
also so?:
Nein, so:
//Oben ins Script
new objID;
//Dein CMD
if(!strcmp("/sperre", cmdtext, true))
{
if(!IstSpielerInFraktion(playerid, 0)) return SendClientMessage(playerid,DROT,"Du darfst diesen Befehl nicht benutzen!");
if(objID) return DestroyObject(objID),objID=0,SendClientMessage(playerid,DROT,"Du hast das Objekt erfolgreich entfernt!");
new Float:Q[6];
GetCamerFrontVector(0,Q[0],Q[1],Q[2],Q[3],Q[4],Q[5],5.0); //5.0 ist die distanz wenn du sie erhöhst, ist das Objekt weiter entfernt!
objID = CreateObject([modelid des Objekts], Q[0], Q[1], Q[2], 0.0, 0.0, 0.0);
return 1;
}
und dann nur noch die modelid eintragen und fertig ![]()
//Edit: hatte noch was vergessen ![]()
mfg. ![]()
Geb dir doch mal mit nem print_r aus, was überhaupt da drinnen steht..und da du Strings vergleichst, nutze doch mal strcmp ![]()
mfg. ![]()
Jetzt muss nur noch das so gemacht werden, dass vor einem das Objekt steht, aber wie?
Ich bin mal so freundlich und helfe dir ![]()
//Schreibe das oben in dein Script
#define GetCamerFrontVector(%0,%1,%2,%3,%4,%5,%6,%7) \
GetPlayerCameraPos(%0,%1,%2,%3),GetPlayerCameraFrontVector(%0,%4,%5,%6), \
(%1)+=floatmul(%4,%7),(%2)+=floatmul(%5,%7),(%3)+=floatmul(%6,%7)
//Und dann dein Command
if(!strcmp("/sperre", cmdtext, true))
{
if(!IstSpielerInFraktion(playerid, 0)) return SendClientMessage(playerid,DROT,"Du darfst diesen Befehl nicht benutzen!");
new Float:Q[6];
GetCamerFrontVector(0,Q[0],Q[1],Q[2],Q[3],Q[4],Q[5],5.0); //5.0 ist die distanz wenn du sie erhöhst, ist das Objekt weiter entfernt!
CreateObject([modelid des Objekts], Q[0], Q[1], Q[2], 0.0, 0.0, 0.0);
return 1;
}
Ist aus dem Kopf geschrieben, sollte allerdings funktionieren ![]()
mfg. ![]()
Schwabbelchen aka Kaliber, zeig ihm doch bitte nicht, wie man eine hässliche Schleife macht. :b
for (new i = 0; i < MAX_PLAYERS; i++)
Wieso hässlich?
Die Schleife ist schneller ![]()
Die Funktion sollte so aussehen:
stock GetPlayerID(const accname[]) {
new sname[MAX_PLAYER_NAME],i;
for(; i<MAX_PLAYERS; i++) {
if(!IsPlayerConnected(i)) continue;
GetPlayerName(i,sname,sizeof(sname));
if(!strcmp(accname,sname)) return i;
}
return -1;
}
mfg. ![]()
...Falsches Passwort oder Falscher Benutzername... ![]()
Nicht dini_Get, sondern dini_Int ![]()
mfg. ![]()
Das liegt daran, dass du eine Klammer weglöschst, einfach so löschen, dann geht es:
Function CreateRoadblock(Object,Float:x,Float:y,Float:z,Float:Angle)
{
/*for(new i = 0; i < sizeof(Roadblocks); i++)
{
if(Roadblocks[i][sCreated] == 0)
{
Roadblocks[i][sCreated] = 1;
Roadblocks[i][sX] = x;
Roadblocks[i][sY] = y;
Roadblocks[i][sZ] = z-0.7;
Roadblocks[i][sObject] = CreateDynamicObject(Object, x, y, z-0.9, 0, 0, Angle);
return 1;
}
} */
return 0;
}
mfg. ![]()