enum e_Gangzone
{
gOwner,
Float:gMinX,
Float:gMinY,
Float:gMaxX,
Float:gMaxY,
gRunning,
gScore1,
gScore2,
gAttacker
}
new Gangzones[MAX_GANGZONES][e_Gangzone] = {
{0,1856.0,-1132.0,2063.0,-1257.0,0,0,0,0},
{0,0.0,0.0,0.0,0.0,0,0,0,0}
};
enum e_Gangzone
{
gOwner,
Float:gMinX,
Float:gMinY,
Float:gMaxX,
Float:gMaxY,
gRunning,
gScore1,
gScore2,
gAttacker
}
new Gangzones[MAX_GANGZONES][e_Gangzone] = {
{0,1856.0,-1132.0,2063.0,-1257.0,0,0,0,0},
{0,0.0,0.0,0.0,0.0,0,0,0,0}
};
Geht immer noch nicht
// aus Versehen als erledigt markiert
Tag,
habe folgendes Problem, dass er mir immer sagt, dass ich in keinem Gebiet bin.
Code:
stock IsPlayerInGangzone(playerid)
{
for(new i;i<sizeof(Gangzones);i++)
{
new Float:GetX,Float:GetY,Float:GetZ;
GetPlayerPos(playerid,GetX,GetY,GetZ);
if(Gangzones[i][gMinX] < GetX && Gangzones[i][gMaxX] > GetX && Gangzones[i][gMinY] < GetY && Gangzones[i][gMaxY] > GetY)
{
return i;
}
return -1;
}
return -1;
}
CMD:invade(playerid)
{
if(!IsLoggedIn(playerid))return 1;
if(Spieler[playerid][pFraktion] == 1)return SendClientMessage(playerid, COLOR_GREY, "** Du bist in keiner Gang oder Mafia!");
if(Spieler[playerid][pFraktion] == 3)return SendClientMessage(playerid, COLOR_GREY, "** Du bist in keiner Gang oder Mafia!");
if(Spieler[playerid][pRank] < 7)return SendClientMessage(playerid, COLOR_GREY, "** Du bist kein Co-Leader oder höher.");
if(IsPlayerInGangzone(playerid) > -1)
{
new string[128];
new zone = IsPlayerInGangzone(playerid);
if(Gangzones[zone][gRunning] == 1)return SendClientMessage(playerid,COLOR_GREY,"** Das Gebiet wird bereits angegriffen!");
if(Gangzones[zone][gOwner] == Spieler[playerid][pFraktion]) return SendClientMessage(playerid,COLOR_GREY,"** Ihr seid bereits im Besitz dieses Gebietes.");
Gangzones[zone][gAttacker] = Spieler[playerid][pFraktion];
Gangzones[zone][gRunning] = 1;
SetTimerEx("Gangfight",1800000,0,"i",zone);
format(string, sizeof(string), "[ GANGFIGHT ] Die Fraktion %s greift ein Gebiet der Fraktion %s an!", GetFraktionName(Gangzones[zone][gAttacker]), GetFraktionName(Gangzones[zone][gOwner]));
SendClientMessageToAll(COLOR_ORANGE, string);
}else{
SendClientMessage(playerid, COLOR_GREY, "** Du bist in keinem Gebiet.");
}
return 1;
}
Sagt mir immer, dass ich in keinem Gebiet drin bin?
enum e_Gangzone
{
gOwner,
Float:gMinX,
Float:gMinY,
Float:gMaxX,
Float:gMaxY,
gRunning,
gScore1,
gScore2,
gAttacker
}
new Gangzones[MAX_GANGZONES][e_Gangzone] = {
{0,1856.0,-1132.0,2063.0,-1257.0,0,0,0,0},
{0,0.0,0.0,0.0,0.0,0,0,0,0}
};
new Gangzone[1];
public OnPlayerSpawn(playerid)
{
PlayerTextDrawHide(playerid, pTextTime[playerid][0]);
PlayerTextDrawHide(playerid, pTextTime[playerid][1]);
PlayerTextDrawHide(playerid, pTextTime[playerid][2]);
PlayerTextDrawHide(playerid, pTextHUD[playerid][17]);
PlayerTextDrawShow(playerid, pTextHUD[playerid][17]);
for(new i; i<sizeof(Gangzones); i++)
{
new color;
if(Gangzones[i][gOwner] == 2){
color = 0x57575757;
}
if(Gangzones[i][gOwner] == 4){
color = 0x23C70202;
}
GangZoneShowForPlayer(playerid, Gangzone[i], color);
}
new datumstring[100], uhrstring[100], framesstring[100], bankstring[100];
format(datumstring, sizeof(datumstring), "%02d.%02d.%04d", tag, monat, jahr);
Seitdem ich diesen for(new-Teil eingefügt habe, geht das OnPlayerSpawn nicht mehr richtig?
Also alles danach wird nicht ausgeführt.
Alles anzeigenExqoolz erstellst du die Box auch als Erstes?
-------------------------------------------------------------------------------------------------------
new len = strlen(inputtext), pass[16];
PlayerInfo[playerid][dPassword] = len;
Wenn ich dPassword ausgeben lasse, gibt er nichts aus. Hoffe das mir jemand helfen kann.
Mit freundlichen Grüßen
Grapefruit
Jap
Weiß jemand, woran das oben rechts liegen kann, dass die Texte hinter der Box sind?
Ich lasse die Box immer als Erstes anzeigen?
Jeffry:
Wahrscheinlich ist dein Script auf einer veralteten Version.
Sprich 0.3z anstatt 0.3.7 etc.
Bin mir grade nicht sicher ob ich das wieder auf sscanf schieben kann.
Versuch mal folgendes. Ändere das erste
if(sscanf(params,"s[32]",enter))
zu:
if(sscanf(params,"s[32]I(0)",enter,wert))
Geht, danke
K
Alles anzeigenDann musst du die Größe angeben.
s -> s[32] in sscanf.
Spoiler anzeigen CMD:treasury(playerid,params[])
{
if(!IsLoggedIn(playerid))return 1;
if(Spieler[playerid][pAdmin] < 6)return SendClientMessage(playerid, COLOR_GREY, "** Du besitzt nicht die benötigten Rechte.");
new enter[32], wert, string[128];
if(sscanf(params,"s[32]",enter))
{
SendClientMessage(playerid, COLOR_GREY, "** Benutze /treasury [balance/deposit/withdraw/set] [value]");
return 1;
}
if(strcmp(enter, "balance", true) == 0)
{
format(string, sizeof(string), "* In der Staatskasse sind %i$.", Others[Staatskasse]);
SendClientMessage(playerid, COLOR_AM, string);
return 1;
}
if(strcmp(enter, "deposit", true) == 0)
{
if(sscanf(params, "s[32]i", enter, wert))return SendClientMessage(playerid, COLOR_GREY, "** Benutze /treasury [balance/deposit/withdraw/set] [value]");
format(string, sizeof(string), "* %s %s hat %i$ in die Staatskasse eingezahlt.", GetPlayerAdminName(playerid), GetName(playerid), wert);
SendAdminMessage(COLOR_AM, string);
Others[Staatskasse] += wert;
GiveMoney(playerid, -wert);
return 1;
}
if(strcmp(enter, "withdraw", true) == 0)
{
if(sscanf(params, "s[32]i", enter, wert))return SendClientMessage(playerid, COLOR_GREY, "** Benutze /treasury [balance/deposit/withdraw/set] [value]");
format(string, sizeof(string), "* %s %s hat %i$ von der Staatskasse abgehoben.", GetPlayerAdminName(playerid), GetName(playerid), wert);
SendAdminMessage(COLOR_AM, string);
Others[Staatskasse] -= wert;
GiveMoney(playerid, wert);
return 1;
}
if(strcmp(enter, "set", true) == 0)
{
if(sscanf(params, "s[32]i", enter, wert))return SendClientMessage(playerid, COLOR_GREY, "** Benutze /treasury [balance/deposit/withdraw/set] [value]");
format(string, sizeof(string), "* %s %s hat den Kontostand der Staatskasse auf %i$ gesetzt.", GetPlayerAdminName(playerid), GetName(playerid), wert);
SendAdminMessage(COLOR_AM, string);
Others[Staatskasse] = wert;
return 1;
}
return 1;
}
Klappt leider nicht
D
Nutzt du das sscanf Plugin oder die stock Funktion?
Das sscanf2 Plugin nutze ich.
CMD:treasury(playerid,params[])
{
if(!IsLoggedIn(playerid))return 1;
if(Spieler[playerid][pAdmin] < 6)return SendClientMessage(playerid, COLOR_GREY, "** Du besitzt nicht die benötigten Rechte.");
new enter[128], wert, string[128];
if(sscanf(params,"s",enter))
{
SendClientMessage(playerid, COLOR_GREY, "** Benutze /treasury [balance/deposit/withdraw/set] [value]");
return 1;
}
if(strcmp(enter, "balance", true) == 0)
{
format(string, sizeof(string), "* In der Staatskasse sind %i$.", Others[Staatskasse]);
SendClientMessage(playerid, COLOR_AM, string);
return 1;
}
if(strcmp(enter, "deposit", true) == 0)
{
if(sscanf(params, "si", enter, wert))return SendClientMessage(playerid, COLOR_GREY, "** Benutze /treasury [balance/deposit/withdraw/set] [value]");
format(string, sizeof(string), "* %s %s hat %i$ in die Staatskasse eingezahlt.", GetPlayerAdminName(playerid), GetName(playerid), wert);
SendAdminMessage(COLOR_AM, string);
Others[Staatskasse] += wert;
GiveMoney(playerid, -wert);
return 1;
}
if(strcmp(enter, "withdraw", true) == 0)
{
if(sscanf(params, "si", enter, wert))return SendClientMessage(playerid, COLOR_GREY, "** Benutze /treasury [balance/deposit/withdraw/set] [value]");
format(string, sizeof(string), "* %s %s hat %i$ von der Staatskasse abgehoben.", GetPlayerAdminName(playerid), GetName(playerid), wert);
SendAdminMessage(COLOR_AM, string);
Others[Staatskasse] -= wert;
GiveMoney(playerid, wert);
return 1;
}
if(strcmp(enter, "set", true) == 0)
{
if(sscanf(params, "si", enter, wert))return SendClientMessage(playerid, COLOR_GREY, "** Benutze /treasury [balance/deposit/withdraw/set] [value]");
format(string, sizeof(string), "* %s %s hat den Kontostand der Staatskasse auf %i$ gesetzt.", GetPlayerAdminName(playerid), GetName(playerid), wert);
SendAdminMessage(COLOR_AM, string);
Others[Staatskasse] = wert;
return 1;
}
return 1;
}
Nur /treasury balance geht
Poste mal den log.
Fehler doch nicht gefunden. Im Serverlog ist nichts.
MySQL-Log:
[14:42:02] [DEBUG] mysql_format - connection: 1, len: 256, format: "INSERT INTO `script_cmdlog` (cmd, name) VALUES ('%s', '%s')"
[14:42:02] [DEBUG] mysql_tquery - connection: 1, query: "INSERT INTO `script_cmdlog` (cmd, name) VALUES ('/addfcar', 'Exq", callback: "(null)", format: "(null)"
[14:42:02] [DEBUG] CMySQLQuery::CMySQLQuery() - constructor called
[14:42:02] [DEBUG] mysql_tquery - scheduling query "INSERT INTO `script_cmdlog` (cmd, name) VALUES ('/addfcar', 'Exqool')"..
[14:42:02] [DEBUG] CMySQLQuery::Execute[()] - starting query execution
[14:42:02] [DEBUG] CMySQLQuery::Execute[()] - query was successful
[14:42:02] [DEBUG] CMySQLQuery::Execute[()] - no callback specified, skipping result saving
[14:42:02] [DEBUG] CMySQLQuery::Execute[()] - data being passed to ProcessCallbacks()
[14:42:02] [DEBUG] CMySQLQuery::~CMySQLQuery() - deconstructor called
[14:42:05] [DEBUG] mysql_format - connection: 1, len: 512, format: "INSERT INTO `script_fvehicles` (`vehFraktion`, `modelid`, `vehPosX`, `vehPosY`, `vehPosZ`, `vehPosA`, `vehInterior`, `vehWorld`,..."
[14:42:05] [DEBUG] mysql_tquery - connection: 1, query: "INSERT INTO `script_fvehicles` (`vehFraktion`, `modelid`, `vehPo", callback: "insertDB", format: "d"
[14:42:05] [DEBUG] CMySQLQuery::CMySQLQuery() - constructor called
[14:42:05] [DEBUG] mysql_tquery - scheduling query "INSERT INTO `script_fvehicles` (`vehFraktion`, `modelid`, `vehPosX`, `vehPosY`, `vehPosZ`, `vehPosA`, `vehInterior`, `vehWorld`, `vehHealth`, `vehNumberPlate`, `vehPaintjob`, `vehPreis`, `vehColor1`, `vehColor2`, `vehNeonID`, `vehFuel`) VALUES ('1', '596', '1528.869263', '-1679.037598', '5.890625', '243.600937', '0', '0', '1000.000000', '{B22222}LSPD 72', '-1', '0', '0', '1', '0', '1115815936')"..
[14:42:05] [DEBUG] CMySQLQuery::Execute[insertDB(d)] - starting query execution
[14:42:05] [DEBUG] CMySQLQuery::Execute[insertDB(d)] - query was successful
[14:42:05] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
[14:42:05] [DEBUG] CMySQLQuery::Execute[insertDB(d)] - data being passed to ProcessCallbacks()
[14:42:05] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `script_fvehicles`", callback: "LoadFVehicles", format: "(null)"
[14:42:05] [DEBUG] CMySQLQuery::CMySQLQuery() - constructor called
[14:42:05] [DEBUG] mysql_tquery - scheduling query "SELECT * FROM `script_fvehicles`"..
[14:42:05] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `script_fvehicles`", callback: "LoadFVehicles", format: "(null)"
[14:42:05] [DEBUG] CMySQLQuery::CMySQLQuery() - constructor called
[14:42:05] [DEBUG] mysql_tquery - scheduling query "SELECT * FROM `script_fvehicles`"..
[14:42:05] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `script_fvehicles`", callback: "LoadFVehicles", format: "(null)"
[14:42:05] [DEBUG] CMySQLQuery::CMySQLQuery() - constructor called
[14:42:05] [DEBUG] mysql_tquery - scheduling query "SELECT * FROM `script_fvehicles`"..
[14:42:05] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `script_fvehicles`", callback: "LoadFVehicles", format: "(null)"
[14:42:05] [DEBUG] CMySQLQuery::CMySQLQuery() - constructor called
[14:42:05] [DEBUG] mysql_tquery - scheduling query "SELECT * FROM `script_fvehicles`"..
[14:42:05] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `script_fvehicles`", callback: "LoadFVehicles", format: "(null)"
[14:42:05] [DEBUG] CMySQLQuery::CMySQLQuery() - constructor called
Alles anzeigen
Sobald ich ein Fraktionsfahrzeug erstelle, crashe ich, also man kann keine Befehle mehr eingeben - nichts, aber Server ist noch an!
Die Erstellmeldung kommt nicht.
Weiß jemand evtl. warum?
http://pastebin.com/q4hgLjHF
#edit: nach kurzer Zeit Server komplett down.
Ich möchte hier mal an dieser Stelle ein Lob an Jeffry: aussprechen.
Er ist nett, hilft sehr schnell und erklärt auch alles
Möglicherweise liegt es daran, dass im format vor den beiden SendAdminMessage 4 Platzhalter drin sind (%s), du aber nur 2 Variablen hinten drin stehen hast.
pID muss zudem auf den Platzhalter %d zugreifen.
Achso danke, muss mal nicht so hastig scripten
Kann mir jemand sagen, warum bei diesen Commands mein Server crasht?
CMD:banip(playerid, params[])
{
if(!IsLoggedIn(playerid))return 1;
new pID, grund[64], string[128];
if(Spieler[playerid][pAdmin] < 3)return SendClientMessage(playerid, COLOR_GREY, ERROR_ADMIN);
if(sscanf(params, "s[128]s[64]", pID, grund))return SendClientMessage(playerid, COLOR_GREY, "** Benutze /banip [IP-Adresse] [Grund]");
format(string, sizeof(string),"banip %s", pID);
SendRconCommand(string);
SendRconCommand("reloadbans");
format(string, sizeof(string), "* %s %s hat die IP '%s' gebannt, Grund: %s", pID, grund);
SendAdminMessage(COLOR_AM, string);
return 1;
}
CMD:unbanip(playerid, params[])
{
if(!IsLoggedIn(playerid))return 1;
new pID, grund[64], string[128];
if(Spieler[playerid][pAdmin] < 3)return SendClientMessage(playerid, COLOR_GREY, ERROR_ADMIN);
if(sscanf(params, "s[128]s[64]", pID, grund))return SendClientMessage(playerid, COLOR_GREY, "** Benutze /unbanip [IP-Adresse] [Grund]");
format(string, sizeof(string),"unbanip %s", pID);
SendRconCommand(string);
SendRconCommand("reloadbans");
format(string, sizeof(string), "* %s %s die IP '%s' entbannt, Grund: %s", pID, grund);
SendAdminMessage(COLOR_AM, string);
return 1;
}
new dPID;
Das musst du löschen, das gehört ja in das enum.
Also das weg und im enum
dPID,
hinzufügen.
Ok, geht. Danke dir!
In dem enum Fehlt:
dPID,
Dann kommt leider das:
C:\Users\ZAFER\Desktop\samp\gamemodes\self.pwn(1128) : error 021: symbol already defined: "dPID"
C:\Users\ZAFER\Desktop\samp\gamemodes\self.pwn(12524) : error 032: array index out of bounds (variable "dPickUp")
Hi, habe mal wieder ein Problem
enum dPickUpInfo
{
dPmID,
dPtype,
Float:dPpx,
Float:dPpy,
Float:dPpz,
dPvw
}
new dPickUp[MAX_DPICKUPS][dPickUpInfo];
new dPID;
public LoadDPickUps()
{
new rows,fields;
cache_get_data(rows, fields);
new pck = 0;
if(rows)
{
while(pck < rows)
{
dPickUp[pck][dPmID] = cache_get_field_content_int(pck, "modelid");
dPickUp[pck][dPtype] = cache_get_field_content_int(pck, "type");
dPickUp[pck][dPpx] = cache_get_field_content_float(pck, "x");
dPickUp[pck][dPpy] = cache_get_field_content_float(pck, "y");
dPickUp[pck][dPpz] = cache_get_field_content_float(pck, "z");
dPickUp[pck][dPvw] = cache_get_field_content_int(pck, "vw");
dPickUp[pck][dPID] = CreatePickup(dPickUp[pck][dPmID],dPickUp[pck][dPtype],dPickUp[pck][dPpx],dPickUp[pck][dPpy],dPickUp[pck][dPpz],dPickUp[pck][dPvw]);
pck++;
}
}
printf("[LOAD] Dynamische Pickups wurden geladen (%i/%i)", rows, MAX_DPICKUPS);
return 1;
}
Kriege hier ein 213 tag mismatch: dPickUp[pck][dPID] = CreatePickup(dPickUp[pck][dPmID],dPickUp[pck][dPtype],dPickUp[pck][dPpx],dPickUp[pck][dPpy],dPickUp[pck][dPpz],dPickUp[pck][dPvw]);
Weiß aber nicht warum, Floats sind doch richtig?