Dann poste die Funktion.
Beiträge von Jeffry
-
-
#include <a_samp>
#define MAX_MACHINES 10 // CHANGE IF YOU'RE USING A STREAMER AND WILLING TO ADD MORE
#define MACHINE_CASH 5 // Cost - Default is $1//**VARIABLES**//
enum fMachines
{
Float:fmX,
Float:fmY,
Float:fmZ,
Float:fmrZ,
fmType
};
new FoodMachines[MAX_MACHINES][fMachines];
new Machine = -1;
new SprunkMachine[MAX_MACHINES];
new CandyMachine[MAX_MACHINES];AddSprunkMachine(Float:X,Float:Y,Float:Z,Float:rX,Float:rY,Float:rZ)
{
Machine++;
SprunkMachine[Machine] = CreateObject(955,X,Y,Z,rX,rY,rZ);
FoodMachines[Machine][fmX] = X;
FoodMachines[Machine][fmY] = Y;
FoodMachines[Machine][fmZ] = Z;
FoodMachines[Machine][fmrZ] = rZ;
FoodMachines[Machine][fmType] = 1;
}AddCandyMachine(Float:X,Float:Y,Float:Z,Float:rX,Float:rY,Float:rZ)
{
Machine++;
CandyMachine[Machine] = CreateObject(956,X,Y,Z,rX,rY,rZ);
FoodMachines[Machine][fmX] = X;
FoodMachines[Machine][fmY] = Y;
FoodMachines[Machine][fmZ] = Z;
FoodMachines[Machine][fmrZ] = rZ;
FoodMachines[Machine][fmType] = 2;
}stock GetPlayerMachine(playerid)
{
new Float:x, Float:y;
for(new i = 0; i < Machine+1; i++)
{
x = FoodMachines[i][fmX] + (1.0 * floatsin(-FoodMachines[i][fmrZ], degrees));
y = FoodMachines[i][fmY] + (1.0 * floatcos(-FoodMachines[i][fmrZ], degrees));
if(IsPlayerInRangeOfPoint(playerid, 0.8, x, y, FoodMachines[i][fmZ])) return i;
}
return -1;
}forward MachineAnimation(playerid, anim);
public MachineAnimation(playerid, anim)
{
if (anim == 1)
{
ApplyAnimation(playerid,"VENDING","VEND_Drink2_P",4.1,0,1,1,1,1);
SetTimerEx("MachineAnimation",1000,0,"dd",playerid,0);
}
else if (anim == 2)
{
ApplyAnimation(playerid,"VENDING","VEND_Eat_P",4.1,0,1,1,1,1);
SetTimerEx("MachineAnimation",1000,0,"dd",playerid,0);
}
else ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0);
return 1;
}public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (newkeys & KEY_SECONDARY_ATTACK)
{
new id = GetPlayerMachine(playerid);
if(id != -1)
{
MachineAnimation(playerid, FoodMachines[id][fmType]);
//Geld abziehen
//Health geben
}
}
return 1;
} -
In dem UPDATE-Query das du ausführst werden ja die Daten an die Tabelle übergeben. Das Query kann bei der Übergabe keine Spalte "raketen" (etc) finden, in der Tabelle. Daher kommt der Fehler.
Die "Field List" sind praktisch alle Spalten in der Tabelle. -
Und wo setzt du das? Mit dieser einen Zeile ist nichts anzufangen, da musst du schon mehr Informationen geben.
Poste einfach die Codes, die erkennen sollen, dass du in einer Zone bist. -
Also abgestürzt ist der Server nicht als du den Login Befehl eingegeben hast.
Die Spalten die bei "Error: Unknown column" angegeben wurden sind in deiner Tabelle nicht vorhanden, füge die hinzu. -
Lade dir das crashdetect Plugin herunter und füge es in deinen Server ein. Dann gebe den Befehl ein und poste was im Log steht.
http://forum.sa-mp.com/showthread.php?t=262796 -
Wie setzt du den Wert von CZ[playerid][zid] überhaupt?
-
Dann hat CZ[playerid][zid] den Wert -1.
ocmd:cflagge(playerid, params[])
{
new query[500], Float:x, Float:y, Float:z;
if(CZ[playerid][create] != 1) return SendClientMessage(playerid, COLOR_WHITE, "Um eine Gangzone zu erstellen, benutze '/creategangzone'!");
if(!M_IsPlayerInAnyZone(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Du bist in keiner Gangzone!");
if(CZ[playerid][zid] < 0) return SendClientMessage(playerid, COLOR_WHITE, "Du bist in keiner CZ!");
GetPlayerPos(playerid, x, y, z);
GZ[CZ[playerid][zid]][flagge_x] = x, GZ[CZ[playerid][zid]][flagge_y] = y, GZ[CZ[playerid][zid]][flagge_z] = z, CZ[playerid][create] = 0;
GZ[CZ[playerid][zid]][pickup] = CreatePickup(1314, 1, x, y, z, 0);
GZ[CZ[playerid][zid]][label] = Create3DTextLabel("Tippe '/angriff', um das Gebiet anzugreifen.\nTippe '/flagge' | Y/Z, um die Flagge zu erobern.", COLOR_WHITE, x, y, z, 20, 0);
format(query, sizeof(query), "INSERT INTO gangfight (owner, maxX, maxY, minX, minY, flaggeX, flaggeY, flaggeZ, erstellt) VALUES ('%s', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%d')",
GZ[CZ[playerid][zid]][owner], GZ[CZ[playerid][zid]][max_x], GZ[CZ[playerid][zid]][max_y], GZ[CZ[playerid][zid]][min_x], GZ[CZ[playerid][zid]][min_y], GZ[CZ[playerid][zid]][flagge_x], GZ[CZ[playerid][zid]][flagge_y], GZ[CZ[playerid][zid]][flagge_z], CZ[playerid][zid]);
mysql_pquery(handle, query);
return SendClientMessage(playerid, COLOR_WHITE, "Du hast die Zone erfolgreich erstellt.");
} -
Lade dir das crashdetect Plugin herunter und füge es in deinen Server ein. Dann gebe den Befehl ein und poste was im Log steht.
http://forum.sa-mp.com/showthread.php?t=262796 -
stock GetFraktion(playerid)
{
//GetPVarInt(playerid, "Fraktion"); Vorher
return SpielerInfo[playerid][sGang];
} -
Das Problem war ein Klammerfehler in OnPlayerDeath, verursacht durch einen alten Überbleibsel an Code. Dieser wurde entfernt.
Alle Errors wurden dadurch behoben, Thema ist erledigt.
-
Das Problem wurde behoben.
Problem war, dass eine falsche Query ID (777 anstatt 1234) angegeben wurde, beim Laden der Fahrzeuge, zudem hat in der sscanf Funktion ein Wert gefehlt (ganz am Anfang ein Integer).Funktioniert nun wie gewünscht.
-
-
PlayerTextDrawSetString(playerid, pTextHUD[playerid][4],Spieler[playerid][pWanteds]);
zu:
new str[5];
format(str, sizeof(str), "%d", Spieler[playerid][pWanteds]);
PlayerTextDrawSetString(playerid, pTextHUD[playerid][4],str); -
Eine random Zahl zwischen 15 und 25 (max = 24?) generierst du so:
new rand = random(10) + 15; -
ocmd:tv(playerid, params[])
{
new pID;
new name[MAX_PLAYER_NAME];
new string[128];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"Du bist kein Teammitglied !");
if(sscanf(params,"u",pID)) return SendClientMessage(playerid,-1,"Verwendung: /tv <ID>");
if(!IsPlayerConnected(pID) || pID == INVALID_PLAYER_ID || IsPlayerAdmin(pID) || pID == playerid) return SendClientMessage(playerid,error_rot, "Diesen Spieler gibt es nicht, er ist ein Admin oder er ist nicht online !");
if(tv[playerid] != -1) return SendClientMessage(playerid,error_rot,"Du beobachtest schon einen, benutze /tvoff um die Beobachtung abzubrechen");
GetPlayerName(pID,name,sizeof(name));
format(string,sizeof(string),"Du beobachtest nun den Spieler %s",name);
SendClientMessage(playerid,spec_blau,string);
tv[playerid] = pID;
//Im Car
if(IsPlayerInAnyVehicle(pID))
{
TogglePlayerSpectating(playerid, 1);
PlayerSpectateVehicle(playerid,GetPlayerVehicleID(pID));
}
//Fuß
else
{
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid,pID);
}
return 1;
}ocmd:tvoff(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"Du bist kein Teammitglied !");
if(tv[playerid] != -1)
{
TogglePlayerSpectating(playerid, 0);
SetCameraBehindPlayer(playerid);
SpawnPlayer(playerid);
SendClientMessage(playerid,spec_blau,"Du beobachtest nun keinen mehr !");
tv[playerid] = -1;
}
else
{
SendClientMessage(playerid,error_rot,"Du Spectatest keinen !");
}
return 1;
}Und bei OnPlayerSpawn:
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && tv[i] == playerid)
{
if(IsPlayerInAnyVehicle(playerid))
{
TogglePlayerSpectating(i, 1);
PlayerSpectateVehicle(i,GetPlayerVehicleID(playerid));
}
//Fuß
else
{
TogglePlayerSpectating(i, 1);
PlayerSpectatePlayer(i,playerid);
}
}
}Bei OnPlayerConnect:
tv[playerid] = -1;Die Deklaration:
new tv[MAX_PLAYERS] = {-1,...}; -
CMD:sellhouse(playerid, params[])
{
for(new i; i != MAX_HOUSES; i++)
{
if(!HouseInfo[i][hSQLid])continue;
if(!IsPlayerInRangeOfPoint(playerid, 5, HouseInfo[i][hExitX], HouseInfo[i][hExitY], HouseInfo[i][hExitZ]))continue;
if(!strcmp(pInfo[playerid][pName], HouseInfo[i][hOwner], true))continue;
if(!strlen(HouseInfo[i][hOwner]))continue;
pInfo[playerid][pMoney] += HouseInfo[i][hPrice]/2;
GivePlayerMoney(playerid, HouseInfo[i][hPrice]/2);
strmid("", pInfo[playerid][pName], 0, MAX_PLAYER_NAME, MAX_PLAYER_NAME);
UpdateHouse(i);
SaveHouse(i);
new string[128];
format(string, sizeof string, " Du hast das Haus erfolgreich für $%i verkauft.",HouseInfo[i][hPrice]);
return SCM(playerid, COLOR_LIGHTGREEN, string);
}
return SCM(playerid, COLOR_WHITE, INFOTEXT"Du besitzt noch kein Haus.");
}Sonst wird es direkt beendet, wenn ein Haus dem Spieler nicht gehört.
-
1.)
Da wäre es hilfreich zu wissen, was du als letztes verändert hast.2.)
Lasse beim Dialog den Parameter für den zweiten Button leer, also so:
..., "Ok", ""); -
if(GetPlayerVehicleID(playerid) == 498)
zu:
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 498) -
SetTimerEx("HausTorZu", 20000, false, "d", i);
Und dann:
forward HausTorZu(id);
public HausTorZu(id)
{
MoveObject(TorInfo[id][t_objectid],TorInfo[id][t_x],TorInfo[id][t_y],TorInfo[id][t_z],3.0);
return 1;
}