Ja es ist immer noch so, ist das jetzt wirklich ein Fehler von Samp oder nicht
Zeig mal deinen Code, wie sieht es denn jetzt aus?
Ja es ist immer noch so, ist das jetzt wirklich ein Fehler von Samp oder nicht
Zeig mal deinen Code, wie sieht es denn jetzt aus?
Zolltor1 = CreateDynamicObject(968, 2231.835205, -2213.075439, 13.255665, 0.000000, 270, 135.000000, -1, -1, -1, 300.00, 300.00);
ocmd:zolltor(playerid,params[])
{
//if(pInfo[playerid][pJob] ==1)
if(IsPlayerInRangeOfPoint(playerid,10.0,2234.0056,-2216.0217,13.5469))
MoveDynamicObject(Zolltor1,2231.8352, -2213.0754, 13.2556+0.0001,0.0001,0, 0, 135);
SetTimerEx("@checkZone", 3000, 0, "i", playerid); //Alle 3 Sekunden, packste in den Befehl
//SendClientMessage(playerid,-1,"{bc4343}Du bist kein Mitarbeiter vom Zoll und kannst das Tor nicht öffnen.");
return 1;
}
@checkZone(i);@checkZone(i)
{
return (!IsPlayerConnected(i) || !IsPlayerInRangeOfPoint(i, 10.0,2234.0056,-2216.0217,13.5469)) ? Zollzu() : SetTimerEx("@checkZone", 3000, 0, "i", i);
}
forward Zollzu ();
public Zollzu ()
{
MoveDynamicObject(Zolltor1,2231.8352, -2213.0754, 13.2556,0.0001, 0, 270, 135);
return 1;
}
Alles anzeigen
Okay, also das liegt daran, dass du die Float-Werte nicht sauber genug verarbeitest.
Kannst du aber schön dynamisieren, hier:
ocmd:zolltor(playerid,params[])
{
//if(pInfo[playerid][pJob] ==1)
if(!IsPlayerInRangeOfPoint(playerid,10.0,2234.0056,-2216.0217,13.5469)) return 1;
MoveDynamicObjectRot(Zolltor1, 0, 0, 135);
SetTimerEx("@checkZone", 3000, 0, "i", playerid); //Alle 3 Sekunden, packste in den Befehl
//SendClientMessage(playerid,-1,"{bc4343}Du bist kein Mitarbeiter vom Zoll und kannst das Tor nicht öffnen.");
return 1;
}
@checkZone(i);@checkZone(i)
{
return (!IsPlayerConnected(i) || !IsPlayerInRangeOfPoint(i, 10.0,2234.0056,-2216.0217,13.5469)) ? Zollzu() : SetTimerEx("@checkZone", 3000, 0, "i", i);
}
stock MoveDynamicObjectRot(obj, Float:rX, Float:rY, Float:rZ)
{
new Float:x,Float:y,Float:z;
GetDynamicObjectPos(obj,x,y,z);
MoveDynamicObject(obj,x,y,z+0.0001,0.0001,rX,rY,rZ);
return 1;
}
forward Zollzu ();
public Zollzu ()
{
MoveDynamicObjectRot(Zolltor1, 0, 270, 135);
return 1;
}
Alles anzeigen
Aber hier macht er jedes mal die Z Koordinate +0.0001 wenn ich das dann paar mal mache schwebt meine Schranke ![]()
Aber hier macht er jedes mal die Z Koordinate +0.0001 wenn ich das dann paar mal mache schwebt meine Schranke
Ah ja, sry grad nicht dran gedacht:
ocmd:zolltor(playerid,params[])
{
//if(pInfo[playerid][pJob] ==1)
if(!IsPlayerInRangeOfPoint(playerid,10.0,2234.0056,-2216.0217,13.5469)) return 1;
MoveDynamicObjectRot(Zolltor1, 0, 0, 135, true);
SetTimerEx("@checkZone", 3000, 0, "i", playerid); //Alle 3 Sekunden, packste in den Befehl
//SendClientMessage(playerid,-1,"{bc4343}Du bist kein Mitarbeiter vom Zoll und kannst das Tor nicht öffnen.");
return 1;
}
@checkZone(i);@checkZone(i)
{
return (!IsPlayerConnected(i) || !IsPlayerInRangeOfPoint(i, 10.0,2234.0056,-2216.0217,13.5469)) ? Zollzu() : SetTimerEx("@checkZone", 3000, 0, "i", i);
}
stock MoveDynamicObjectRot(obj, Float:rX, Float:rY, Float:rZ, bool:open)
{
new Float:x,Float:y,Float:z;
GetDynamicObjectPos(obj,x,y,z);
MoveDynamicObject(obj,x,y,z+((open)?(0.0001):(-0.0001)),0.0001,rX,rY,rZ);
return 1;
}
forward Zollzu ();
public Zollzu ()
{
MoveDynamicObjectRot(Zolltor1, 0, 270, 135, false);
return 1;
}
Alles anzeigen
Hey,
Ich habe mal eine Kurze frage... iwie kriegt nicht die Person der den Contract hat den Label sondern ein anderer Spieler warum?
ocmd:contract(playerid, params[])
{
new pID, betrag, string[128];
if(PlayerInfo[playerid][pFraktion] == 15)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du kannst keine Auftragsmorde erstellen.");
if(sscanf(params, "ui", pID, betrag))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00CC00}/contract [SpielerID/Name] [Betrag]");
if(!IsLoggedIn(pID))return SendClientMessage(playerid, COLOR_WHITE, ERROR_OFFLINE);
if(PlayerInfo[pID][pFraktion] == 15)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du kannst keine Auftragsmorde auf deine Mitglieder machen.");
if(PlayerInfo[pID][pFraktion] == 5 || PlayerInfo[pID][pFraktion] == 6 || PlayerInfo[pID][pFraktion] == 16)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Auftragsmorde auf Sanitäter, Ordnungsbeamte und News Reporter sind nicht möglich.");
if(PlayerInfo[pID][pLevel] < 2)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler muss mind. Level 2 sein.");
if(PlayerInfo[playerid][pLevel] < 2)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du musst mind. Level 2 sein.");
if(GetMoney(playerid) < betrag)return SendClientMessage(playerid, COLOR_WHITE, ERROR_MONEY);
if(betrag < 5000)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Betrag muss mindestens $5.000 sein.");
format(string, sizeof(string), "{33CCFF}Du hast einen Auftragsmord auf %s für $%d erstellt.", GetName(pID), betrag);
SendClientMessage(playerid, COLOR_WHITE, string);
GiveMoney(playerid, -betrag);
format(string, sizeof(string), "{FFFF00}Ein neuer Auftragsmord verfügbar auf %s für $%d!", GetName(pID), (PlayerInfo[pID][pContract]+betrag));
SendFraktionMessage(15, COLOR_WHITE, string);
OnContractChange(playerid, PlayerInfo[pID][pContract], (PlayerInfo[pID][pContract]+betrag));
PlayerInfo[pID][pContract] += betrag;
return 1;
}
Alles anzeigen
public OnContractChange(playerid, oldbetrag, newbetrag)
{
new string[64];
for(new i=0;i<GetMaxPlayers();i++)
{
if(IsLoggedIn(i))
{
if(IsPlayerStreamedIn(playerid, i))
{
if(PlayerInfo[i][pFraktion] == 15)
{
if(newbetrag > 0 && oldbetrag == 0){
for(new a=0;a<MAX_CTLABEL;a++)
{
if(PlayerInfo[i][pCTLabelCreated][a] == 0){
format(string, sizeof(string), "{FFFF00}[%d] %s\nKopfgeld: %d$", playerid, GetName(playerid), newbetrag);
PlayerInfo[i][pCTLabel][a] = CreateDynamic3DTextLabel(string, COLOR_WHITE, 0.0, 0.0, 0.0, 10.0, playerid, INVALID_VEHICLE_ID, 0, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid), i);
PlayerInfo[i][pCTLabelID][a] = playerid;
PlayerInfo[i][pCTLabelCreated][a] = 1;
Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, PlayerInfo[i][pCTLabel][a], E_STREAMER_ATTACH_OFFSET_Z, 0.7);
return 1;
}
}
}
else if (newbetrag > 0 && oldbetrag > 0){
for(new a=0;a<MAX_CTLABEL;a++)
{
if(PlayerInfo[i][pCTLabelCreated][a] == 1 && PlayerInfo[i][pCTLabelID][a] == playerid){
format(string, sizeof(string), "{FFFF00}[%d] %s\nKopfgeld: %d$", playerid, GetName(playerid), newbetrag);
UpdateDynamic3DTextLabelText(PlayerInfo[i][pCTLabel][a], COLOR_WHITE, string);
return 1;
}
}
}
else if(oldbetrag > 0 && newbetrag <= 0)
{
for(new a=0;a<MAX_CTLABEL;a++)
{
if(PlayerInfo[i][pCTLabelCreated][a] == 1 && PlayerInfo[i][pCTLabelID][a] == playerid)
{
PlayerInfo[i][pCTLabelID][a] = INVALID_PLAYER_ID;
PlayerInfo[i][pCTLabelCreated][a] = 0;
DestroyDynamic3DTextLabel(PlayerInfo[i][pCTLabel][a]);
return 1;
}
}
}
}
}
}
}
return 1;
}
Alles anzeigen
Wo Liegt mein Fehler ?
In dem Log Ordner von Mysql wird auch nichts geschrieben
Wo Liegt mein Fehler ?
Bist du sicher, dass da ein Fehler denn ist?!
Sieht doch alles richtig aus, wird das wirklich nicht gelöscht?
Dann kopier den Query mal 1:1 in die SQL Konsole von PHPMyAdmin, dann sagt er die ob es geht oder nicht ![]()
Ich habe mal eine Kurze frage
Naja..so kurz ist die ja nicht gerade ![]()
OnContractChange(playerid, PlayerInfo[pID][pContract], (PlayerInfo[pID][pContract]+betrag));
Ich glaube diese Zeile ist falsch, versuch mal:
OnContractChange(pID, PlayerInfo[pID][pContract], (PlayerInfo[pID][pContract]+betrag));
Weil, ansonsten bekommt ja der, der den contract gesetzt hat, das Label.
Kurze frage
Habe das Problem mit Cooked:
Möchte so die gekochten Fische anzeigen:
-> Gekochte Fisch Anzeige
ocmd:cooked(playerid)
{
SendClientMessage(playerid, COLOR_WHITE, "|____________________Fische____________________|");
for(new i=1, string[128]; i<6; i++)
{
if(PlayerInfo[playerid][pCookID][i] == -1) format(string, sizeof(string), "** (%d) Fisch: Nicht vorhanden", i);
else format(string, sizeof(string), "{AFAFAF}** (%d) Fisch: %s (%d LBS)", i, Fische[PlayerInfo[playerid][pFishID][i]], PlayerInfo[playerid][pCookHP][i]);
SendClientMessage(playerid, COLOR_WHITE, "|______________________________________________|");
}
return 1;
}
Alles anzeigen
-> So Kocht er Fische das Funktioniert.
ocmd:cook(playerid, params[])
{
new fishID, string[128];
if(sscanf(params, "i", fishID))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00CC00}/cook [Fisch Nummer]");
if(fishID<1||fishID>5)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Wähle einen Fisch zwischen 1-5 aus.");
if(!IsAtCookPlace(playerid))return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Hier kannst du nicht kochen.");
if(PlayerInfo[playerid][pFishID][fishID] != -1)
{
for(new cookID=1;cookID<MAX_FISHING_FISHES;cookID++)
{
if(PlayerInfo[playerid][pCookID][cookID] == -1)
{
PlayerInfo[playerid][pCookID][cookID] = PlayerInfo[playerid][pFishID][fishID];
PlayerInfo[playerid][pFishID][fishID] = -1;
PlayerInfo[playerid][pCookHP][cookID] = PlayerInfo[playerid][pFishweight][fishID]/3;
format(string, sizeof(string), "{33CCFF}%s mit %d LBS gekocht. (Gibt dir %dHP)", Fische[PlayerInfo[playerid][pCookID][cookID]], PlayerInfo[playerid][pFishweight][fishID], PlayerInfo[playerid][pCookHP][cookID]);
SendClientMessage(playerid, COLOR_WHITE, string);
return 1;
}
}
return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Keinen freien Platz zum Kochen!");
}
else if(PlayerInfo[playerid][pFishID][fishID] == -1)
{
SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Diesen Fisch besitzt du nicht.");
}
return 1;
}
Alles anzeigen
Gibt es ein Include wo ich über die X,Y,Z Cordinaten die Zone herrausbekomme ?
@DomeTastisch:
Weil ich nicht die Cordinaten von ein Spieler habe sondern von Häusern oder so und davon die Zone brauche.
Dann schreib sie halt um. ![]()
Das ding ist, das Include macht das Über Gangzonen, wenn der Spieler eine Zone betritt dann wird die Zwischengespeichert und die wird dann später nur ausgegeben.
Hey, ich möchte das so machen, ich möchte noch ein Objekt mit dem selben Befehl bewegen, geht das überhaupt?
Zolltor2 = CreateDynamicObject(9093, 2178.190185, -2254.855224, 15.883447, 0.000000, 0.000000, 135.000000, -1, -1, -1, 300.00, 300.00);
RangeOfPoint = 2179.1099,-2255.8748,14.7734
ocmd:zolltor(playerid,params[])
{
if(pInfo[playerid][pJob] ==1)
{
if(!IsPlayerInRangeOfPoint(playerid,10.0,2234.0056,-2216.0217,13.5469)) return 1;
MoveDynamicObjectRot(Zolltor1, 0, 0, 135, true);
SetTimerEx("@checkZone", 3000, 0, "i", playerid); //Alle 3 Sekunden, packste in den Befehl
}else{
SendClientMessage(playerid,-1,"{bc4343}Du bist kein Mitarbeiter vom Zoll und kannst das Tor nicht öffnen.");
}
return 1;
}
@checkZone(i);@checkZone(i)
{
return (!IsPlayerConnected(i) || !IsPlayerInRangeOfPoint(i, 10.0,2234.0056,-2216.0217,13.5469)) ? Zollzu() : SetTimerEx("@checkZone", 3000, 0, "i", i);
}
stock MoveDynamicObjectRot(obj, Float:rX, Float:rY, Float:rZ, bool:open)
{
new Float:x,Float:y,Float:z;
GetDynamicObjectPos(obj,x,y,z);
MoveDynamicObject(obj,x,y,z+((open)?(0.0001):(-0.0001)),0.0001,rX,rY,rZ);
return 1;
}
forward Zollzu ();
public Zollzu ()
{
MoveDynamicObjectRot(Zolltor1, 0, 270, 135, false);
return 1;
}
Alles anzeigen
Hier, jetzt haste ein dynamisches Zoll System:
#define E:: e_z
enum E::Tor
{
E::id,
Float:E::x,
Float:E::y,
Float:E::z,
Float:E::from_rX,
Float:E::from_rY,
Float:E::from_rZ,
Float:E::to_rX,
Float:E::to_rY,
Float:E::to_rZ
};
stock const zollTore[][e_zTor] = {
{Zolltor1, 2234.0056,-2216.0217,13.546, 0.0,270.0,135.0, 0.0,0.0,135.0},
{Zolltor2, 2179.1099,-2255.8748,14.7734, 0.0,0.0,135.0, 0.0,0.0,0.0} //Musst noch angeben, in welche Rotation gedreht werden soll
};
ocmd:zolltor(playerid,params[])
{
if(pInfo[playerid][pJob] != 1) return SendClientMessage(playerid,-1,"{bc4343}Du bist kein Mitarbeiter vom Zoll und kannst das Tor nicht öffnen.");
new i = GetZollStation(playerid);
if(i == -1) return SendClientMessage(playerid,-1,"Du befindest dich an keinem Zoll Tor!");
MoveDynamicObjectRot(zollTore[i][E::id], zollTore[i][E::to_rX], zollTore[i][E::to_rY], zollTore[i][E::to_rZ], true);
SetTimerEx("@checkZone", 3000, 0, "ii", playerid, i);
return 1;
}
stock GetZollStation(playerid)
{
for(new i; i<sizeof(zollTore); i++)
{
if(IsPlayerInRangeOfPoint(playerid,10.0,zollTore[i][E::x],zollTore[i][E::y],zollTore[i][E::z])) return i;
}
return -1;
}
@checkZone(p,i);@checkZone(p,i)
{
return (!IsPlayerConnected(p) || !IsPlayerInRangeOfPoint(p, 10.0,zollTore[i][E::x],zollTore[i][E::y],zollTore[i][E::z])) ? Zollzu(i) : SetTimerEx("@checkZone", 3000, 0, "ii", p,i);
}
stock MoveDynamicObjectRot(obj, Float:rX, Float:rY, Float:rZ, bool:open)
{
new Float:x,Float:y,Float:z;
GetDynamicObjectPos(obj,x,y,z);
MoveDynamicObject(obj,x,y,z+((open)?(0.0001):(-0.0001)),0.0001,rX,rY,rZ);
return 1;
}
forward Zollzu (i);
public Zollzu (i)
{
MoveDynamicObjectRot(zollTore[i][E::id], zollTore[i][E::from_rX], zollTore[i][E::from_rY], zollTore[i][E::from_rZ], false);
return 1;
}
Alles anzeigen
Jetzt musst du nur oben in dein Array ein Zolltor hinzufügen und fertig ![]()
Ich kann das nicht benutzen, das andee "Zolltor" hat eine andere Objektid. Das 2. Tor hat eine andere Objektid, schlimm?
(177) : error 008: must be a constant expression; assumed zero
(179) : error 010: invalid function or declaration
(2425) : warning 204: symbol is assigned a value that is never used: "Zolltor2"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Errors.
new Zolltor1;
new Zolltor2;
enum E::Tor
{
E::id,
Float:E::x,
Float:E::y,
Float:E::z,
Float:E::from_rX,
Float:E::from_rY,
Float:E::from_rZ,
Float:E::to_rX,
Float:E::to_rY,
Float:E::to_rZ
};
stock const zollTore[][e_zTor] = {
{Zolltor1, 2234.0056,-2216.0217,13.546, 0.0,270.0,135.0, 0.0,0.0,135.0},
{Zolltor2, 2179.1099,-2255.8748,19.7734, 0.0,0.0,135.0, 0.0,0.0,0.0} //Musst noch angeben, in welche Rotation gedreht werden soll
};
Alles anzeigen
Zolltor1 = CreateDynamicObject(968, 2231.835205, -2213.075439, 13.255665, 0.000000, 270, 135.000000, -1, -1, -1, 300.00, 300.00);
Zolltor2 = CreateDynamicObject(9093, 2178.190185, -2254.855224, 15.883447, 0.000000, 0.000000, 135.000000, -1, -1, -1, 300.00, 300.00);
//EDIT
ich will noch bei Zolltor2 ein Ingamesound abspielen. Und sind ja nur die 2 Tore lohnt sich das, dafür es dynamisch zu machen?
Ich kann das nicht benutzen, das andee "Zolltor" hat eine andere Objektid. Das 2. Tor hat eine andere Objektid, schlimm?
Nein ist es nicht.
Sry hab vergessen, dass das so in Pawn ja nicht geht, schreib es mal so:
#define E:: e_z
enum E::Tor
{
Float:E::x,
Float:E::y,
Float:E::z,
Float:E::from_rX,
Float:E::from_rY,
Float:E::from_rZ,
Float:E::to_rX,
Float:E::to_rY,
Float:E::to_rZ
};
stock const zollTore[][e_zTor] = {
{2234.0056,-2216.0217,13.546, 0.0,270.0,135.0, 0.0,0.0,135.0},
{2179.1099,-2255.8748,14.7734, 0.0,0.0,135.0, 0.0,0.0,0.0} //Musst noch angeben, in welche Rotation gedreht werden soll
};
new ZollTor[2];
ocmd:zolltor(playerid,params[])
{
if(pInfo[playerid][pJob] != 1) return SendClientMessage(playerid,-1,"{bc4343}Du bist kein Mitarbeiter vom Zoll und kannst das Tor nicht öffnen.");
new i = GetZollStation(playerid);
if(i == -1) return SendClientMessage(playerid,-1,"Du befindest dich an keinem Zoll Tor!");
MoveDynamicObjectRot(ZollTor[i], zollTore[i][E::to_rX], zollTore[i][E::to_rY], zollTore[i][E::to_rZ], true);
SetTimerEx("@checkZone", 3000, 0, "ii", playerid, i);
return 1;
}
stock GetZollStation(playerid)
{
for(new i; i<sizeof(zollTore); i++)
{
if(IsPlayerInRangeOfPoint(playerid,10.0,zollTore[i][E::x],zollTore[i][E::y],zollTore[i][E::z])) return i;
}
return -1;
}
@checkZone(p,i);@checkZone(p,i)
{
return (!IsPlayerConnected(p) || !IsPlayerInRangeOfPoint(p, 10.0,zollTore[i][E::x],zollTore[i][E::y],zollTore[i][E::z])) ? Zollzu(i) : SetTimerEx("@checkZone", 3000, 0, "ii", p,i);
}
stock MoveDynamicObjectRot(obj, Float:rX, Float:rY, Float:rZ, bool:open)
{
new Float:x,Float:y,Float:z;
GetDynamicObjectPos(obj,x,y,z);
MoveDynamicObject(obj,x,y,z+((open)?(0.0001):(-0.0001)),0.0001,rX,rY,rZ);
return 1;
}
forward Zollzu (i);
public Zollzu (i)
{
MoveDynamicObjectRot(ZollTor[i], zollTore[i][E::from_rX], zollTore[i][E::from_rY], zollTore[i][E::from_rZ], false);
return 1;
}
Alles anzeigen
und die Zuweisung mit den Objekten machst du dann so:
ZollTor[0] = CreateDynamicObject(...); //da wo du jetzt ZollTor1 hast
//und dann eben das selbe nochmal für ZollTor[1]
ich will noch bei Zolltor2 ein Ingamesound abspielen.
Nur da, oder bei beiden?
Im Endeffekt, wenn du wirklich nur 2 ZollTore haben willst...ist das System n bisschen over...aber im Endeffekt spielt das jetzt keine Rolle.